










文章編號:1005-5630(2024)05-0031-09 DOI:10.3969/j.issn.1005-5630.202310260120
摘要:光芯片是在光纖系統中實現光電信號轉換的重要器件,因此在生產制造完成后需要經過大量測試。集成電路自動測試設備(auto test equipment,ATE)是現今芯片測試中所使用的主要設備,在對光芯片測試時有自動化程度高、精度高、測試范圍廣、速度快等優勢。由于ATE設備每次測試時需要傳輸大量數據,而太長的測試時間會提高測試成本,因此ATE系統對數據的交換速度要求很高。為了提高光芯片測試過程中數據傳輸和存儲的效率,設計了一套基于嵌入式系統芯片和FPGA的高速數據存儲傳輸系統,通過使用增強型直接存儲器訪問模塊驅動GPMC接口以提高傳輸帶寬,在FPGA上優化了數據的傳輸方式以提高DDR3 SDRAM的接口利用率。經過上板測試,單通道下讀寫帶寬分別達到413.3 Mbit/s和984.6 Mbit/s,實現了數據在系統中高速傳輸與穩定存儲。
關鍵詞:ARM;FPGA;嵌入式系統;GPMC;EDMA
中圖分類號:TN 919.6文獻標志碼:A
Design of ATE data storage and transmission system for optical chip testing
JIA Qifan1,JIN Xuanhong1,XIAO Pengcheng2,HE Hangyu1
(1.School of Optical-EleCtrical and Computer Engineering,University of Shanghai for Science andTechnology,Shanghai 200093;
2..School of Microelectronics Fudan University,Shanghai 201203,China)
Abstract:Optical chip is an important device to realize photoelectric signal conversion in optical fiber system,so it needs to undergo a lot of tests after manufacturing.As the main equipment used in chip testing today,integrated circuit automatic test equipment(ATE)has the advantages of high automation,high precision,wide test range and fast speed in the test of optical chip.Since the ATE device generates a great many data each time it is tested,and a long test time will increase the test cost,so the ATE system requires a high data rate.In order to improve the Data transmissionefficiency and storage during optical chip testing,a high-speed data storage and transmission system based on embedded system chip and FPGA was designed.The enhanced direct memory access module was used to drive the GPMC interface to improve the transmission bandwidth,and the data transmission mode was optimized on FPGA to improve the DDR3 SDRAM utilization.After testing on the board,the read and write bandwidth in single channel reaches 413.3 Mbit/s and 984.6 Mbit/s respectively,realizing high-speed transmission and stable storage of data in the system.
Keywords:ARM;FPGA;embedded system;GPMC;EDMA
引言
光芯片在光纖系統中承擔著光電信號轉換的任務,其性能直接決定了光通信系統的傳輸效率。在光纖、4G/5G等網絡系統中,光芯片都是決定信息傳輸速度和可靠性的關鍵。在使用時,光芯片本身的性能和可靠性需要得到充分保障,因此在制造后需要對其各項指標進行充分測試。
自動測試設備(auto test equipment,ATE)是用于對集成電路各項性能進行測試的專用設備,而隨著芯片性能的提升,測試過程中的測試向量和測試數據也隨之增加。在工業生產過程中,ATE設備的使用成本與使用時間直接相關,芯片測試時間過長會導致總成本的提升。因此需要數據帶寬足夠高的存儲傳輸系統,以減少測試過程中在數據傳輸上耗費的時間。
數據存儲傳輸系統的研究是隨著計算機系統的發展而推進的,隨著應用場景的不同已經有很多架構設計可供參考。韓賀松提出了關于AM335X到DDR2存儲芯片的系統架構[1],分別實現了64 Mbit/s和80 Mbit/s的讀寫帶寬。陳韶康采用了使用虛擬儀器技術與以太網通信接口搭建的存儲系統,可以實現252 Mbit/s速率的數據接收[2]。在整個存儲系統中CPU與外部的接口帶寬一般會影響整個系統的傳輸效率,因此對于數據接口的選擇也有很多案例可供參考,采用千兆以太網接口配合DDR3等可以達到950 Mbit/s的數據帶寬[3]。但是由于FPGA內部資源有限而以太網協議較為復雜,在FPGA中集成以太網模塊會占用太多資源影響其他模塊。一些使用GPMC接口設計的系統的數據速率在400 Mbit/s左右[4-6],寫數據帶寬最高達到640 Mbit/s[7]。本文從光芯片測試需求出發、基于ATE設備工作時數據量大、帶寬要求高的特點在GPMC接口協議的基礎上改進FPGA接口電路設計了一套數據存儲系統。
1系統設計
圖1為ATE結構圖,其中CPU為主控芯片,memory system負責ATE中數據的傳輸和存儲,test channel為測試通道,DUT為待測芯片。
本文設計了圖中陰影部分,其中包括在ARM平臺開發的EDMA控制器與GPMC驅動。在FPGA平臺設計的GPMC接口電路和一個MIG_controller,在MIG_controller中集成有一個xilinx公司提供的控制DDR3 SDRAM的MIG IP核。DDR3為外掛的存儲顆粒。
系統中ARM平臺的GPMC接口驅動與FPGA的接口電路負責完成數據傳輸,為了提高傳輸帶寬,使用ARM中集成的EDMA模塊搬運數據,FPGA上接口電路的設計需要考慮3個因素。
1)由于ARM與FPGA之間的信號傳輸距離較長,對于高速信號而言很容易出問題,因此必須在接收端提高抗干擾性能,盡可能消除數據傳輸中的時鐘偏移和電平抖動等因素。
2)由于MIG IP核的數據位寬最大為256 bit,為了盡可能提高MIG IP核的利用率,數據讀寫需要以256 bit為單位進行,而GPMC接口協議中是以16 bit數據位寬以突發傳輸的形式完成,因此在GPMC接口電路中需要完成串并轉換的功能。
3)GPMC數據傳輸工作在GPMC_CLK同步時鐘下,而MIG_controller工作在MIG IP核提供的300 MHz時鐘下,數據在經過接口向MIG核傳輸時必須經過跨時鐘域同步處理。
MIG IP核是由xilinx公司提供的專門用于控制SDRAM的模塊[8-9],可以降低系統開發難度,MIG_controller負責GPMC接口與MIG核之間的協議轉換。設計目標為完成數據在CPU與ATE測試通道之間的通信與存儲,要求寫數據帶寬1 Gbit/s左右,讀數據時由于DDR3 SDRAM返回數據存在一定延時,隨著傳輸周期減小這段延時對帶寬的影響會變大,因此讀數據帶寬目標為400 Mbit/s。
1.1 GPMC接口設計
GPMC接口包括ARM端的EDMA+GPMC驅動和FPGA的GPMC接口電路兩部分,通過EDMA模塊驅動GPMC接口發送讀寫請求,并在FPGA中通過GPMC接口電路完成響應。
1.1.1 EDMA+GPMC驅動設計
GPMC接口協議有多種外接存儲器類型可選,可以自由選擇外掛nor/nand flash,8/16 bit數據位寬;同步/異步傳輸時序等[10]。為了提升帶寬,提高傳輸效率并避免在控制信號上過
多時間,本文在設計嵌入式部分驅動時選用了同步模式下的突發傳輸方式[11]。圖3為地址/數據復用模式下GPMC同步突發寫時序,啟動傳輸時同步時鐘GPMC_CLK開始工作,同時片選信號nCS使能選中FPGA,A[27:17]持續輸出地址高11位,A[16:1]/D[15:0]輸出地址第1位至第16位,由于每次突發發送數據位寬為2 Byte,因此最低位始終為0,FPGA自行處理即可。地址穩定后nADV使能提示FPGA接收地址信息,一個時鐘周期后nADV拉高,讀寫使能信號拉低并開始突發傳輸。突發發送16次后傳輸結束,圖2中僅展示了8次突發,完成一次完整的傳輸大約需20個同步時鐘周期。
GPMC共有7組配置寄存器GPMC_CONFI G1~7,其中GPMC_CONFIG1控制傳輸模式時鐘頻率等,剩下6組主要配置時間參數等信息,為了將接口設置為圖3中的傳輸模式需要設置GPMC_CONFIG1中的READ/WRITEMULTIP-LE=1啟動突發傳輸,READ/WRITETYPE=1開啟同步時鐘,ATTACHEDDEVICEPAGE LENG-TH=2配置突發長度為16、MUXADDDATA=2選擇地址/數據復用模式。
使用EDMA搬運數據時要配置目標地址、源地址以及數據大小[12-13],PaRAM結構體中提供了用于配置這3者的變量。目標地址和源地址在使用時根據讀寫需求在GPMC片選地址和數據物理地址中選擇。對于一維數據在傳輸時aCnt表示每次搬運的字節數,bCnt、cCnt為0會識別成偽傳輸而不會驅動GPMC接口,所以在配置數據大小時將bCnt、cCnt置1,aCnt配置為64,每次會搬運64 Byte數據,在本設計所使用的協議下會觸發兩次GPMC傳輸。
由于芯片IO存在復用功能,打開全局時鐘后首先需要配置pinmux信息啟動GPMC相應引腳的功能。然后使能EDMA控制器和GPMC接口時鐘并配置相應寄存器,最后在EDMA控制器中申請GPMC通道,申請成功后開始傳輸。由于GPMC的從設備不會主動發起傳輸,也就不需要采用EDMA的事件觸發模式,所以采用手動觸發模式啟動傳輸。設置ESR/ESRH寄存器中通道號對應位的寄存器為1即可啟動傳輸。嵌入式系統驅動GPMC接口流程如圖3所示。
1.1.2 GPMC接口電路設計
在使用同步模式傳輸時CPU發送與FPGA接收的時鐘周期需要嚴格對應,對于GPMC接口而言其所接收的信號來自于AM3354開發板,因此信號從嵌入式芯片到FPGA需要經過很長的距離,數據在板間傳輸時很可能會受到來自各方的干擾,使用內部例化計數器的方式在理論上可以實現AM3354和FPGA的時序同步。但是當RTL代碼經過布局布線生成實際電路后,在ARM與FPGA之間、FPGA中各寄存器之間的距離可能會導致時鐘偏斜的產生。如圖4所示,(a)中cs_sit 1在時鐘第二個上升沿時立刻翻轉,由于此時cnt_sit 1采樣到的仍然是1,因此會在下一個上升沿開始計數。(b)中cs_sit2信號的翻轉落后于時鐘信號上升沿,cnt_sit 1的計數情況與(a)相同。(c)中cs_sit2信號的翻轉超前于時鐘信號上升沿,這種情況會導致cnt_sit 1提前開始計數,最終整個傳輸產生混亂。
1)改進接收電路
為了在接收端消除時鐘偏斜造成的影響必須調整接收電路,來自CPU的信號在進入FPGA后會經過圖5所示的由兩個D觸發器和一個與門組成的電路,其中D1、D2采樣兩次輸入信號將信號變化固定在時鐘下降沿。同時再將兩個寄存器的輸出信號相與,用于消除傳輸過程中可能出現的電平抖動,輸入與門a端的信號毛刺會被b端的輸入消除,可以有效提升信號的穩定性。
由于GPMC接口工作在同步時鐘域,mcif_arbiter工作在MIG核提供的用戶時鐘域,邏輯電平兩個不同時鐘域之間直接傳輸會產生亞穩態,對于這種情況如果不予以消除由此產生的錯誤將會順著電路一直向下傳播,導致整個系統無法正常工作[14]。因此在數據緩存完成后必須同步到FPGA的工作時鐘域才能使用。
2)跨時鐘域同步
跨時鐘域信號同步一般采用由三級觸發器串聯組成的電平同步器或經由異步FIFO完成[15-16],但是在多bit信號跨時鐘域同步時直接使用電平同步器會導致數據出錯。所以在FPGA中需要再開辟一個256 bit的存儲空間。以寫為例,當GPMC接口突發完成時會將數據存入這段空間內,再將寫完成信號同步至FPGA的工作時鐘域,arbiter接收到寫完成信號后將存儲空間內的數據取出并向接口模塊發送握手信號示意同步完成,接口模塊收到握手信號后初始化存儲空間和寫完成信號等待下一次傳輸。
3)數據位寬處理
由于AM3354發送的256 bit數據是以每次16 bit的數據位寬突發發送的,而MIG IP核的數據位寬為256 bit,二者物理位寬不匹配。盡管MIG核為用戶提供了mask信號以靈活適應不同位寬,但單次讀寫的位寬太低會對DDR接口利用率產生很大影響,所以需要在GPMC接口中內置一個容量為256 bit的memory型寄存器緩存數據,寫過程中每次突發會使接口內部指針自增,同時緩存地址向高位偏移16 bit,16次突發完成后指針清零并將數據發送至下一模塊。同理,讀操作中每次突發使內部指針自增,同時讀緩存地址向高位偏移16 bit直至讀數據完成。
控制信號經過電路消除偏移和抖動后,在片選信號cs和地址有效信號advn的作用下將地址數據拼接移位,生成的有效地址會先存入跨時鐘域同步模塊等待處理。此時數據在片選和讀寫使能信號oen/wen的作用下進入位寬轉換模塊,位寬轉換模塊會將接收到的數據由16 bit緩存至256 bit后存入跨時鐘域同步模塊,同步模塊將控制信號、地址和數據由GPMC_CLK時鐘域同步到FPGA_CLK時鐘域后發送至MIG_controller。GPMC接口模塊框圖如圖6所示。
1.2 MIG_controller設計
MIG IP核是xilinx官方提供的專門用于控制DDR3 SDRAM的控制器,它可以將用戶發送的讀寫指令轉化為DDR SDRAM的控制指令,并且可以自行完成除讀寫外對DDR SDRAM的其他操作如自刷新、預取等。在使用MIG IP核時只需要設計邏輯控制MIG核即可完成對DDR的操作,使用者可以專注于讀寫操作而無需關注其他指令,大大降低了系統的設計難度。
MIG_controller采用狀態機設計,DDR3 SDRAM在自刷新等操作期間不會接收讀寫指令,如果此時對其進行讀寫將會被忽略。同時讀過程中從讀指令發送到DDR3到返回數據存在一定的延時,所以MIG_controller工作過程中除了讀、寫和空閑3種狀態外還需要添加1個等待狀態防止錯過請求導致系統狀態不正常。MIG_controller工作狀態如圖7所示。
系統初始時處于IDLE狀態,若接收到寫請求則進入WRITE狀態,這意味著此時在GPMC接口中數據已經緩存至256 bit并跨時鐘域同步完成,因此直接從GPMC接口中取出數據通過MIG核發送給DDR3 SDRAM存儲器。若此時DDR3 SDRAM未準備好,則進入WAIT狀態等待。收到讀請求時會先將儲存并同步好的地址取出發送給DDR3 SDRAM并使能gpmc_wait信號與CPU一起進入WAIT狀態。檢測到數據有效信號后會將數據與有效信號同步給GPMC接口。讀寫完成后會重新回到IDLE狀態等待下一次操作。
2板級驗證與分析
圖8為系統實現與驗證平臺,左邊是作為CPU使用的AM3354開發板,右邊為FPGA測試板,由于目前CPU和FPGA處在兩塊獨立的板子上,使用排線連接的情況下,時鐘信號會與控制信號產生耦合現象,因此二者通過杜邦線連接將時鐘線與其他信號線分離。并分別通過XDS100V2仿真器與FPGA下載器與電腦連接,并使用示波器觀察信號輸出分析波形。
在TI的CCS集成開發環境中啟動EDMA向FPGA發送數據進行環回測試,利用vivado中集成的ILA IP核觀察讀寫情況。
2.1寫數據功能驗證
在CPU的L3緩存中申請256 bit的存儲空間,賦值后將其地址設置為源地址并啟動EDMA。在ILA中抓出寫數據波形如圖9所示。
圖9中gpmc_advn使能后gpmc_address中存入地址,由于初始地址為0x000000,因此向高位偏移后不變,在第二次傳輸時地址變化為0x000020。在16個burst傳輸后數據存入同步模塊的wr_data 1寄存器,MIG控制器開始工作,state_start值變為2即進入寫狀態。由于此時DDR3存儲器已經準備好,因此不進入等待直接使能app_wdf_wren并向DDR3中寫入數據完成一次存儲。因為GPMC接收和MIG控制器讀寫是異步工作,所以在數據寫入DDR3的時候不會影響GPMC接口接收。
2.2讀數據與存儲功能驗證
在CPU的L3緩存中申請512k的地址空間并初始化為0,將其首地址作為目標地址,將寫數據時的目標地址作為源地址啟動讀操作即可將寫測試中寫入DDR3的數據讀出。圖10(a)為用ILA抓取到的信號波形,圖10(b)為在筆記本電腦中讀取CPU內存中目標地址中數據。
從圖10(a)中可以看到地址的存儲方式與寫過程相同,地址有效信號去使能之后CPU不再控制gpmc_d信號,此時GPMC_AD上為無效數據。而GPMC接口接收到讀信號時立刻使能wait信號掛起等待,此時state_start寄存器值變為1表示MIG控制器進入WAIT狀態,待app_rd_data_valid提示返回數據有效后wait去使能,MIG_controller變回IDLE狀態。GPMC接口開始向CPU發送數據,此時mcif rd data內存儲的數據會由低位向高位突發發送。證明系統讀數據功能正常。圖10(b)中展示了目標地址中存儲的由源地址讀出的數據,與寫數據時寫入的數據相同,表示寫數據被成功存儲到DDR3 SDRAM中,證明系統數據存儲功能正常。
在板級驗證時選擇了20組地址,分別使用4、8、163種突發長度按上述過程進行測試以驗證系統準確性與魯棒性。每種突發長度共計傳輸2 560 bit,即對DDR3 SDRAM執行10次讀寫操作。使用誤碼率作為測試指標。計算式為
式中:Ne為被傳錯的碼元數;N為傳輸的總碼元數。將實驗結果代入式(1)得到計算結果如表1所示。
實驗結果符合誤碼率標準,表明系統可以穩定運行。
2.3帶寬測量與分析
為了驗證數據帶寬達標,用示波器抓取寫過程中的片選信號波形如圖11所示。
圖12中紅色方框內為時間測量值,其中T1為左側光標所處時間軸位置,T2為右側光標所處時間軸位置,ΔT是T2與T1之差,表示傳輸周期。可以看到從一次片選信號使能到下一次使能經過了260 ns,每次傳輸發送256 bit數據,根據帶寬計算式
式中:B為數據帶寬;n為每次傳輸的數據位寬;T為傳輸周期,將數值代入可得寫數據帶寬為984.6 Mbit/s。
在讀數據時由于需要等待DDR3返回數據,因此帶寬會因為傳輸周期的延長有所降低,用示波器抓取讀數據時的片選波形如圖12所示。
圖12中下方波形為單個傳輸周期的片選信號,可以發現由于等待過程的加入每個讀周期被延長到了617 ns,每次傳輸數據位寬同樣為256 bit,代入式(2)可得讀數據帶寬為413.3 Mbit/s。
由上述測量結果得出本系統寫入速率為984.6 Mbit/s,基本滿足1 Gbit/s左右的寫帶寬需求,在讀數據時等待DDR3返回數據時間約為320 ns,延長了每次讀數據的傳輸周期,導致帶寬降到了400 Mbit/s左右,符合設計預期。
3結論
本文針對光芯片測試與ATE大數據量與高數據帶寬的需求設計了一套數據存儲傳輸系統,系統中包含了EDMA與GPMC驅動、FPGA接口與DDR3控制器。在AM3354芯片上通過EDMA模塊GPMC接口向FPGA讀寫數據,并在GPMC接口中優化了數據傳輸方式以匹配MIG核的數據接口,大大減少了對DDR3接口的請求次數,提高了接口利用率,并在FPGA內完成了數據的跨時鐘域同步,相對于內部集成FIFO的做法節省了大量邏輯資源。
經過上板測試,該系統可以在GPMC同步時鐘下與FPGA工作時鐘下完成數據的跨時鐘域傳輸與存儲。其中單通道寫帶寬達到984.6 Mbit/s,讀帶寬達到了413.3 Mbit/s。寫帶寬相比前文提到的的設計提升很大,但是在讀帶寬方面仍有提升空間,讀數據時間大多消耗在等待DDR3 SDRAM返回數據上,如果能通過預取和ping-pong結構等方式減少DDR3 SDRAM的數據返回時間則讀帶寬也將獲得很大提升。
參考文獻:
[1]韓賀松.嵌入式打印控制器驅動程序設計及應用[D].西安:西安電子科技大學,2015.
[2]陳韶康.無人機載雷達大容量數據存儲系統設計[D].太原:中北大學,2023.
[3]洪方磊,薛萌,郭漢明.基于FPGA的大數據緩存與高速傳輸系統設計[J].軟件導刊,2023,22(8):156–163.
[4]吳奇軒.高精度激光相位測距系統的FPGA實現[D].西安:西安電子科技大學,2020.
[5]張耀飛.多功能一體機嵌入式掃描控制器設計實現[D].西安:西安電子科技大學,2022.
[6]于濮嘉.基于Davinci視頻處理芯片DM8168的發控記錄裝置的設計[D].太原:中北大學,2022.
[7]KRYSZYN J,SMOLIK W,OLSZEWSKI T,et al.Development of electrical capacitance tomograph design in the nuclear and medical electronics division[J].Informatyka,Automatyka,Pomiary w Gospodarce i Ochronie?rodowiska,2017,7(1):111–114.
[8]WANG X D,SHEN L Y,JIA M.The design and optimization of DDR3 controller based on FPGA[C]//Proceedings of the 2017 International Conference on Communications,Signal Processing,and Systems.Singapore:Springer,2019:1744-1750.
[9]YI J H,WANG M F,BAI L D.Design of DDR3 SDRAM read-write controller based on FPGA[J].Journal of Physics:Conference Series,2021,1846(1):012046.
[10]白學喜.基于Linux的FPGA通信技術研究與實現[D].北京:北方工業大學,2014.
[11]刁彥華,賈寶青,王曉君.FPGA與ARM的GPMC總線通信接口設計[J].單片機與嵌入式系統應用,2017,17(3):47–50.
[12]梅熹文.復印機嵌入式控制軟件的設計與實現[D].西安:西安電子科技大學,2017.
[13]陳振嬌,徐新宇,張猛華.EDMA數據傳輸方式在視頻圖像處理系統中的應用[J].電子與封裝,2015,15(4):28–31.
[14]VERMA S,DABARE A S.Understanding clock domain crossing issues[EB/OL].[2007?12?24].https://www.design-reuse.com/articles/17372/clock-domain-crossing.html.
[15]胡龍.基于數字下變頻的多比特數據跨時鐘域設計與驗證[D].西安:西安電子科技大學,2017.
[16]宋文強,胡毅.FPGA跨時鐘域信號同步設計方法研究[J].單片機與嵌入式系統應用,2018,18(9):24–27,81.
(編輯:張磊)