文章編號(hào):1005-5630(2024)05-0031-09 DOI:10.3969/j.issn.1005-5630.202310260120
摘要:光芯片是在光纖系統(tǒng)中實(shí)現(xiàn)光電信號(hào)轉(zhuǎn)換的重要器件,因此在生產(chǎn)制造完成后需要經(jīng)過(guò)大量測(cè)試。集成電路自動(dòng)測(cè)試設(shè)備(auto test equipment,ATE)是現(xiàn)今芯片測(cè)試中所使用的主要設(shè)備,在對(duì)光芯片測(cè)試時(shí)有自動(dòng)化程度高、精度高、測(cè)試范圍廣、速度快等優(yōu)勢(shì)。由于ATE設(shè)備每次測(cè)試時(shí)需要傳輸大量數(shù)據(jù),而太長(zhǎng)的測(cè)試時(shí)間會(huì)提高測(cè)試成本,因此ATE系統(tǒng)對(duì)數(shù)據(jù)的交換速度要求很高。為了提高光芯片測(cè)試過(guò)程中數(shù)據(jù)傳輸和存儲(chǔ)的效率,設(shè)計(jì)了一套基于嵌入式系統(tǒng)芯片和FPGA的高速數(shù)據(jù)存儲(chǔ)傳輸系統(tǒng),通過(guò)使用增強(qiáng)型直接存儲(chǔ)器訪問(wèn)模塊驅(qū)動(dòng)GPMC接口以提高傳輸帶寬,在FPGA上優(yōu)化了數(shù)據(jù)的傳輸方式以提高DDR3 SDRAM的接口利用率。經(jīng)過(guò)上板測(cè)試,單通道下讀寫(xiě)帶寬分別達(dá)到413.3 Mbit/s和984.6 Mbit/s,實(shí)現(xiàn)了數(shù)據(jù)在系統(tǒng)中高速傳輸與穩(wěn)定存儲(chǔ)。
關(guān)鍵詞:ARM;FPGA;嵌入式系統(tǒng);GPMC;EDMA
中圖分類(lèi)號(hào):TN 919.6文獻(xiàn)標(biāo)志碼: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
引言
光芯片在光纖系統(tǒng)中承擔(dān)著光電信號(hào)轉(zhuǎn)換的任務(wù),其性能直接決定了光通信系統(tǒng)的傳輸效率。在光纖、4G/5G等網(wǎng)絡(luò)系統(tǒng)中,光芯片都是決定信息傳輸速度和可靠性的關(guān)鍵。在使用時(shí),光芯片本身的性能和可靠性需要得到充分保障,因此在制造后需要對(duì)其各項(xiàng)指標(biāo)進(jìn)行充分測(cè)試。
自動(dòng)測(cè)試設(shè)備(auto test equipment,ATE)是用于對(duì)集成電路各項(xiàng)性能進(jìn)行測(cè)試的專用設(shè)備,而隨著芯片性能的提升,測(cè)試過(guò)程中的測(cè)試向量和測(cè)試數(shù)據(jù)也隨之增加。在工業(yè)生產(chǎn)過(guò)程中,ATE設(shè)備的使用成本與使用時(shí)間直接相關(guān),芯片測(cè)試時(shí)間過(guò)長(zhǎng)會(huì)導(dǎo)致總成本的提升。因此需要數(shù)據(jù)帶寬足夠高的存儲(chǔ)傳輸系統(tǒng),以減少測(cè)試過(guò)程中在數(shù)據(jù)傳輸上耗費(fèi)的時(shí)間。
數(shù)據(jù)存儲(chǔ)傳輸系統(tǒng)的研究是隨著計(jì)算機(jī)系統(tǒng)的發(fā)展而推進(jìn)的,隨著應(yīng)用場(chǎng)景的不同已經(jīng)有很多架構(gòu)設(shè)計(jì)可供參考。韓賀松提出了關(guān)于AM335X到DDR2存儲(chǔ)芯片的系統(tǒng)架構(gòu)[1],分別實(shí)現(xiàn)了64 Mbit/s和80 Mbit/s的讀寫(xiě)帶寬。陳韶康采用了使用虛擬儀器技術(shù)與以太網(wǎng)通信接口搭建的存儲(chǔ)系統(tǒng),可以實(shí)現(xiàn)252 Mbit/s速率的數(shù)據(jù)接收[2]。在整個(gè)存儲(chǔ)系統(tǒng)中CPU與外部的接口帶寬一般會(huì)影響整個(gè)系統(tǒng)的傳輸效率,因此對(duì)于數(shù)據(jù)接口的選擇也有很多案例可供參考,采用千兆以太網(wǎng)接口配合DDR3等可以達(dá)到950 Mbit/s的數(shù)據(jù)帶寬[3]。但是由于FPGA內(nèi)部資源有限而以太網(wǎng)協(xié)議較為復(fù)雜,在FPGA中集成以太網(wǎng)模塊會(huì)占用太多資源影響其他模塊。一些使用GPMC接口設(shè)計(jì)的系統(tǒng)的數(shù)據(jù)速率在400 Mbit/s左右[4-6],寫(xiě)數(shù)據(jù)帶寬最高達(dá)到640 Mbit/s[7]。本文從光芯片測(cè)試需求出發(fā)、基于ATE設(shè)備工作時(shí)數(shù)據(jù)量大、帶寬要求高的特點(diǎn)在GPMC接口協(xié)議的基礎(chǔ)上改進(jìn)FPGA接口電路設(shè)計(jì)了一套數(shù)據(jù)存儲(chǔ)系統(tǒng)。
1系統(tǒng)設(shè)計(jì)
圖1為ATE結(jié)構(gòu)圖,其中CPU為主控芯片,memory system負(fù)責(zé)ATE中數(shù)據(jù)的傳輸和存儲(chǔ),test channel為測(cè)試通道,DUT為待測(cè)芯片。
本文設(shè)計(jì)了圖中陰影部分,其中包括在ARM平臺(tái)開(kāi)發(fā)的EDMA控制器與GPMC驅(qū)動(dòng)。在FPGA平臺(tái)設(shè)計(jì)的GPMC接口電路和一個(gè)MIG_controller,在MIG_controller中集成有一個(gè)xilinx公司提供的控制DDR3 SDRAM的MIG IP核。DDR3為外掛的存儲(chǔ)顆粒。
系統(tǒng)中ARM平臺(tái)的GPMC接口驅(qū)動(dòng)與FPGA的接口電路負(fù)責(zé)完成數(shù)據(jù)傳輸,為了提高傳輸帶寬,使用ARM中集成的EDMA模塊搬運(yùn)數(shù)據(jù),F(xiàn)PGA上接口電路的設(shè)計(jì)需要考慮3個(gè)因素。
1)由于ARM與FPGA之間的信號(hào)傳輸距離較長(zhǎng),對(duì)于高速信號(hào)而言很容易出問(wèn)題,因此必須在接收端提高抗干擾性能,盡可能消除數(shù)據(jù)傳輸中的時(shí)鐘偏移和電平抖動(dòng)等因素。
2)由于MIG IP核的數(shù)據(jù)位寬最大為256 bit,為了盡可能提高M(jìn)IG IP核的利用率,數(shù)據(jù)讀寫(xiě)需要以256 bit為單位進(jìn)行,而GPMC接口協(xié)議中是以16 bit數(shù)據(jù)位寬以突發(fā)傳輸?shù)男问酵瓿?,因此在GPMC接口電路中需要完成串并轉(zhuǎn)換的功能。
3)GPMC數(shù)據(jù)傳輸工作在GPMC_CLK同步時(shí)鐘下,而MIG_controller工作在MIG IP核提供的300 MHz時(shí)鐘下,數(shù)據(jù)在經(jīng)過(guò)接口向MIG核傳輸時(shí)必須經(jīng)過(guò)跨時(shí)鐘域同步處理。
MIG IP核是由xilinx公司提供的專門(mén)用于控制SDRAM的模塊[8-9],可以降低系統(tǒng)開(kāi)發(fā)難度,MIG_controller負(fù)責(zé)GPMC接口與MIG核之間的協(xié)議轉(zhuǎn)換。設(shè)計(jì)目標(biāo)為完成數(shù)據(jù)在CPU與ATE測(cè)試通道之間的通信與存儲(chǔ),要求寫(xiě)數(shù)據(jù)帶寬1 Gbit/s左右,讀數(shù)據(jù)時(shí)由于DDR3 SDRAM返回?cái)?shù)據(jù)存在一定延時(shí),隨著傳輸周期減小這段延時(shí)對(duì)帶寬的影響會(huì)變大,因此讀數(shù)據(jù)帶寬目標(biāo)為400 Mbit/s。
1.1 GPMC接口設(shè)計(jì)
GPMC接口包括ARM端的EDMA+GPMC驅(qū)動(dòng)和FPGA的GPMC接口電路兩部分,通過(guò)EDMA模塊驅(qū)動(dòng)GPMC接口發(fā)送讀寫(xiě)請(qǐng)求,并在FPGA中通過(guò)GPMC接口電路完成響應(yīng)。
1.1.1 EDMA+GPMC驅(qū)動(dòng)設(shè)計(jì)
GPMC接口協(xié)議有多種外接存儲(chǔ)器類(lèi)型可選,可以自由選擇外掛nor/nand flash,8/16 bit數(shù)據(jù)位寬;同步/異步傳輸時(shí)序等[10]。為了提升帶寬,提高傳輸效率并避免在控制信號(hào)上過(guò)
多時(shí)間,本文在設(shè)計(jì)嵌入式部分驅(qū)動(dòng)時(shí)選用了同步模式下的突發(fā)傳輸方式[11]。圖3為地址/數(shù)據(jù)復(fù)用模式下GPMC同步突發(fā)寫(xiě)時(shí)序,啟動(dòng)傳輸時(shí)同步時(shí)鐘GPMC_CLK開(kāi)始工作,同時(shí)片選信號(hào)nCS使能選中FPGA,A[27:17]持續(xù)輸出地址高11位,A[16:1]/D[15:0]輸出地址第1位至第16位,由于每次突發(fā)發(fā)送數(shù)據(jù)位寬為2 Byte,因此最低位始終為0,F(xiàn)PGA自行處理即可。地址穩(wěn)定后nADV使能提示FPGA接收地址信息,一個(gè)時(shí)鐘周期后nADV拉高,讀寫(xiě)使能信號(hào)拉低并開(kāi)始突發(fā)傳輸。突發(fā)發(fā)送16次后傳輸結(jié)束,圖2中僅展示了8次突發(fā),完成一次完整的傳輸大約需20個(gè)同步時(shí)鐘周期。
GPMC共有7組配置寄存器GPMC_CONFI G1~7,其中GPMC_CONFIG1控制傳輸模式時(shí)鐘頻率等,剩下6組主要配置時(shí)間參數(shù)等信息,為了將接口設(shè)置為圖3中的傳輸模式需要設(shè)置GPMC_CONFIG1中的READ/WRITEMULTIP-LE=1啟動(dòng)突發(fā)傳輸,READ/WRITETYPE=1開(kāi)啟同步時(shí)鐘,ATTACHEDDEVICEPAGE LENG-TH=2配置突發(fā)長(zhǎng)度為16、MUXADDDATA=2選擇地址/數(shù)據(jù)復(fù)用模式。
使用EDMA搬運(yùn)數(shù)據(jù)時(shí)要配置目標(biāo)地址、源地址以及數(shù)據(jù)大小[12-13],PaRAM結(jié)構(gòu)體中提供了用于配置這3者的變量。目標(biāo)地址和源地址在使用時(shí)根據(jù)讀寫(xiě)需求在GPMC片選地址和數(shù)據(jù)物理地址中選擇。對(duì)于一維數(shù)據(jù)在傳輸時(shí)aCnt表示每次搬運(yùn)的字節(jié)數(shù),bCnt、cCnt為0會(huì)識(shí)別成偽傳輸而不會(huì)驅(qū)動(dòng)GPMC接口,所以在配置數(shù)據(jù)大小時(shí)將bCnt、cCnt置1,aCnt配置為64,每次會(huì)搬運(yùn)64 Byte數(shù)據(jù),在本設(shè)計(jì)所使用的協(xié)議下會(huì)觸發(fā)兩次GPMC傳輸。
由于芯片IO存在復(fù)用功能,打開(kāi)全局時(shí)鐘后首先需要配置pinmux信息啟動(dòng)GPMC相應(yīng)引腳的功能。然后使能EDMA控制器和GPMC接口時(shí)鐘并配置相應(yīng)寄存器,最后在EDMA控制器中申請(qǐng)GPMC通道,申請(qǐng)成功后開(kāi)始傳輸。由于GPMC的從設(shè)備不會(huì)主動(dòng)發(fā)起傳輸,也就不需要采用EDMA的事件觸發(fā)模式,所以采用手動(dòng)觸發(fā)模式啟動(dòng)傳輸。設(shè)置ESR/ESRH寄存器中通道號(hào)對(duì)應(yīng)位的寄存器為1即可啟動(dòng)傳輸。嵌入式系統(tǒng)驅(qū)動(dòng)GPMC接口流程如圖3所示。
1.1.2 GPMC接口電路設(shè)計(jì)
在使用同步模式傳輸時(shí)CPU發(fā)送與FPGA接收的時(shí)鐘周期需要嚴(yán)格對(duì)應(yīng),對(duì)于GPMC接口而言其所接收的信號(hào)來(lái)自于AM3354開(kāi)發(fā)板,因此信號(hào)從嵌入式芯片到FPGA需要經(jīng)過(guò)很長(zhǎng)的距離,數(shù)據(jù)在板間傳輸時(shí)很可能會(huì)受到來(lái)自各方的干擾,使用內(nèi)部例化計(jì)數(shù)器的方式在理論上可以實(shí)現(xiàn)AM3354和FPGA的時(shí)序同步。但是當(dāng)RTL代碼經(jīng)過(guò)布局布線生成實(shí)際電路后,在ARM與FPGA之間、FPGA中各寄存器之間的距離可能會(huì)導(dǎo)致時(shí)鐘偏斜的產(chǎn)生。如圖4所示,(a)中cs_sit 1在時(shí)鐘第二個(gè)上升沿時(shí)立刻翻轉(zhuǎn),由于此時(shí)cnt_sit 1采樣到的仍然是1,因此會(huì)在下一個(gè)上升沿開(kāi)始計(jì)數(shù)。(b)中cs_sit2信號(hào)的翻轉(zhuǎn)落后于時(shí)鐘信號(hào)上升沿,cnt_sit 1的計(jì)數(shù)情況與(a)相同。(c)中cs_sit2信號(hào)的翻轉(zhuǎn)超前于時(shí)鐘信號(hào)上升沿,這種情況會(huì)導(dǎo)致cnt_sit 1提前開(kāi)始計(jì)數(shù),最終整個(gè)傳輸產(chǎn)生混亂。
1)改進(jìn)接收電路
為了在接收端消除時(shí)鐘偏斜造成的影響必須調(diào)整接收電路,來(lái)自CPU的信號(hào)在進(jìn)入FPGA后會(huì)經(jīng)過(guò)圖5所示的由兩個(gè)D觸發(fā)器和一個(gè)與門(mén)組成的電路,其中D1、D2采樣兩次輸入信號(hào)將信號(hào)變化固定在時(shí)鐘下降沿。同時(shí)再將兩個(gè)寄存器的輸出信號(hào)相與,用于消除傳輸過(guò)程中可能出現(xiàn)的電平抖動(dòng),輸入與門(mén)a端的信號(hào)毛刺會(huì)被b端的輸入消除,可以有效提升信號(hào)的穩(wěn)定性。
由于GPMC接口工作在同步時(shí)鐘域,mcif_arbiter工作在MIG核提供的用戶時(shí)鐘域,邏輯電平兩個(gè)不同時(shí)鐘域之間直接傳輸會(huì)產(chǎn)生亞穩(wěn)態(tài),對(duì)于這種情況如果不予以消除由此產(chǎn)生的錯(cuò)誤將會(huì)順著電路一直向下傳播,導(dǎo)致整個(gè)系統(tǒng)無(wú)法正常工作[14]。因此在數(shù)據(jù)緩存完成后必須同步到FPGA的工作時(shí)鐘域才能使用。
2)跨時(shí)鐘域同步
跨時(shí)鐘域信號(hào)同步一般采用由三級(jí)觸發(fā)器串聯(lián)組成的電平同步器或經(jīng)由異步FIFO完成[15-16],但是在多bit信號(hào)跨時(shí)鐘域同步時(shí)直接使用電平同步器會(huì)導(dǎo)致數(shù)據(jù)出錯(cuò)。所以在FPGA中需要再開(kāi)辟一個(gè)256 bit的存儲(chǔ)空間。以寫(xiě)為例,當(dāng)GPMC接口突發(fā)完成時(shí)會(huì)將數(shù)據(jù)存入這段空間內(nèi),再將寫(xiě)完成信號(hào)同步至FPGA的工作時(shí)鐘域,arbiter接收到寫(xiě)完成信號(hào)后將存儲(chǔ)空間內(nèi)的數(shù)據(jù)取出并向接口模塊發(fā)送握手信號(hào)示意同步完成,接口模塊收到握手信號(hào)后初始化存儲(chǔ)空間和寫(xiě)完成信號(hào)等待下一次傳輸。
3)數(shù)據(jù)位寬處理
由于AM3354發(fā)送的256 bit數(shù)據(jù)是以每次16 bit的數(shù)據(jù)位寬突發(fā)發(fā)送的,而MIG IP核的數(shù)據(jù)位寬為256 bit,二者物理位寬不匹配。盡管MIG核為用戶提供了mask信號(hào)以靈活適應(yīng)不同位寬,但單次讀寫(xiě)的位寬太低會(huì)對(duì)DDR接口利用率產(chǎn)生很大影響,所以需要在GPMC接口中內(nèi)置一個(gè)容量為256 bit的memory型寄存器緩存數(shù)據(jù),寫(xiě)過(guò)程中每次突發(fā)會(huì)使接口內(nèi)部指針自增,同時(shí)緩存地址向高位偏移16 bit,16次突發(fā)完成后指針清零并將數(shù)據(jù)發(fā)送至下一模塊。同理,讀操作中每次突發(fā)使內(nèi)部指針自增,同時(shí)讀緩存地址向高位偏移16 bit直至讀數(shù)據(jù)完成。
控制信號(hào)經(jīng)過(guò)電路消除偏移和抖動(dòng)后,在片選信號(hào)cs和地址有效信號(hào)advn的作用下將地址數(shù)據(jù)拼接移位,生成的有效地址會(huì)先存入跨時(shí)鐘域同步模塊等待處理。此時(shí)數(shù)據(jù)在片選和讀寫(xiě)使能信號(hào)oen/wen的作用下進(jìn)入位寬轉(zhuǎn)換模塊,位寬轉(zhuǎn)換模塊會(huì)將接收到的數(shù)據(jù)由16 bit緩存至256 bit后存入跨時(shí)鐘域同步模塊,同步模塊將控制信號(hào)、地址和數(shù)據(jù)由GPMC_CLK時(shí)鐘域同步到FPGA_CLK時(shí)鐘域后發(fā)送至MIG_controller。GPMC接口模塊框圖如圖6所示。
1.2 MIG_controller設(shè)計(jì)
MIG IP核是xilinx官方提供的專門(mén)用于控制DDR3 SDRAM的控制器,它可以將用戶發(fā)送的讀寫(xiě)指令轉(zhuǎn)化為DDR SDRAM的控制指令,并且可以自行完成除讀寫(xiě)外對(duì)DDR SDRAM的其他操作如自刷新、預(yù)取等。在使用MIG IP核時(shí)只需要設(shè)計(jì)邏輯控制MIG核即可完成對(duì)DDR的操作,使用者可以專注于讀寫(xiě)操作而無(wú)需關(guān)注其他指令,大大降低了系統(tǒng)的設(shè)計(jì)難度。
MIG_controller采用狀態(tài)機(jī)設(shè)計(jì),DDR3 SDRAM在自刷新等操作期間不會(huì)接收讀寫(xiě)指令,如果此時(shí)對(duì)其進(jìn)行讀寫(xiě)將會(huì)被忽略。同時(shí)讀過(guò)程中從讀指令發(fā)送到DDR3到返回?cái)?shù)據(jù)存在一定的延時(shí),所以MIG_controller工作過(guò)程中除了讀、寫(xiě)和空閑3種狀態(tài)外還需要添加1個(gè)等待狀態(tài)防止錯(cuò)過(guò)請(qǐng)求導(dǎo)致系統(tǒng)狀態(tài)不正常。MIG_controller工作狀態(tài)如圖7所示。
系統(tǒng)初始時(shí)處于IDLE狀態(tài),若接收到寫(xiě)請(qǐng)求則進(jìn)入WRITE狀態(tài),這意味著此時(shí)在GPMC接口中數(shù)據(jù)已經(jīng)緩存至256 bit并跨時(shí)鐘域同步完成,因此直接從GPMC接口中取出數(shù)據(jù)通過(guò)MIG核發(fā)送給DDR3 SDRAM存儲(chǔ)器。若此時(shí)DDR3 SDRAM未準(zhǔn)備好,則進(jìn)入WAIT狀態(tài)等待。收到讀請(qǐng)求時(shí)會(huì)先將儲(chǔ)存并同步好的地址取出發(fā)送給DDR3 SDRAM并使能gpmc_wait信號(hào)與CPU一起進(jìn)入WAIT狀態(tài)。檢測(cè)到數(shù)據(jù)有效信號(hào)后會(huì)將數(shù)據(jù)與有效信號(hào)同步給GPMC接口。讀寫(xiě)完成后會(huì)重新回到IDLE狀態(tài)等待下一次操作。
2板級(jí)驗(yàn)證與分析
圖8為系統(tǒng)實(shí)現(xiàn)與驗(yàn)證平臺(tái),左邊是作為CPU使用的AM3354開(kāi)發(fā)板,右邊為FPGA測(cè)試板,由于目前CPU和FPGA處在兩塊獨(dú)立的板子上,使用排線連接的情況下,時(shí)鐘信號(hào)會(huì)與控制信號(hào)產(chǎn)生耦合現(xiàn)象,因此二者通過(guò)杜邦線連接將時(shí)鐘線與其他信號(hào)線分離。并分別通過(guò)XDS100V2仿真器與FPGA下載器與電腦連接,并使用示波器觀察信號(hào)輸出分析波形。
在TI的CCS集成開(kāi)發(fā)環(huán)境中啟動(dòng)EDMA向FPGA發(fā)送數(shù)據(jù)進(jìn)行環(huán)回測(cè)試,利用vivado中集成的ILA IP核觀察讀寫(xiě)情況。
2.1寫(xiě)數(shù)據(jù)功能驗(yàn)證
在CPU的L3緩存中申請(qǐng)256 bit的存儲(chǔ)空間,賦值后將其地址設(shè)置為源地址并啟動(dòng)EDMA。在ILA中抓出寫(xiě)數(shù)據(jù)波形如圖9所示。
圖9中g(shù)pmc_advn使能后gpmc_address中存入地址,由于初始地址為0x000000,因此向高位偏移后不變,在第二次傳輸時(shí)地址變化為0x000020。在16個(gè)burst傳輸后數(shù)據(jù)存入同步模塊的wr_data 1寄存器,MIG控制器開(kāi)始工作,state_start值變?yōu)?即進(jìn)入寫(xiě)狀態(tài)。由于此時(shí)DDR3存儲(chǔ)器已經(jīng)準(zhǔn)備好,因此不進(jìn)入等待直接使能app_wdf_wren并向DDR3中寫(xiě)入數(shù)據(jù)完成一次存儲(chǔ)。因?yàn)镚PMC接收和MIG控制器讀寫(xiě)是異步工作,所以在數(shù)據(jù)寫(xiě)入DDR3的時(shí)候不會(huì)影響GPMC接口接收。
2.2讀數(shù)據(jù)與存儲(chǔ)功能驗(yàn)證
在CPU的L3緩存中申請(qǐng)512k的地址空間并初始化為0,將其首地址作為目標(biāo)地址,將寫(xiě)數(shù)據(jù)時(shí)的目標(biāo)地址作為源地址啟動(dòng)讀操作即可將寫(xiě)測(cè)試中寫(xiě)入DDR3的數(shù)據(jù)讀出。圖10(a)為用ILA抓取到的信號(hào)波形,圖10(b)為在筆記本電腦中讀取CPU內(nèi)存中目標(biāo)地址中數(shù)據(jù)。
從圖10(a)中可以看到地址的存儲(chǔ)方式與寫(xiě)過(guò)程相同,地址有效信號(hào)去使能之后CPU不再控制gpmc_d信號(hào),此時(shí)GPMC_AD上為無(wú)效數(shù)據(jù)。而GPMC接口接收到讀信號(hào)時(shí)立刻使能wait信號(hào)掛起等待,此時(shí)state_start寄存器值變?yōu)?表示MIG控制器進(jìn)入WAIT狀態(tài),待app_rd_data_valid提示返回?cái)?shù)據(jù)有效后wait去使能,MIG_controller變回IDLE狀態(tài)。GPMC接口開(kāi)始向CPU發(fā)送數(shù)據(jù),此時(shí)mcif rd data內(nèi)存儲(chǔ)的數(shù)據(jù)會(huì)由低位向高位突發(fā)發(fā)送。證明系統(tǒng)讀數(shù)據(jù)功能正常。圖10(b)中展示了目標(biāo)地址中存儲(chǔ)的由源地址讀出的數(shù)據(jù),與寫(xiě)數(shù)據(jù)時(shí)寫(xiě)入的數(shù)據(jù)相同,表示寫(xiě)數(shù)據(jù)被成功存儲(chǔ)到DDR3 SDRAM中,證明系統(tǒng)數(shù)據(jù)存儲(chǔ)功能正常。
在板級(jí)驗(yàn)證時(shí)選擇了20組地址,分別使用4、8、163種突發(fā)長(zhǎng)度按上述過(guò)程進(jìn)行測(cè)試以驗(yàn)證系統(tǒng)準(zhǔn)確性與魯棒性。每種突發(fā)長(zhǎng)度共計(jì)傳輸2 560 bit,即對(duì)DDR3 SDRAM執(zhí)行10次讀寫(xiě)操作。使用誤碼率作為測(cè)試指標(biāo)。計(jì)算式為
式中:Ne為被傳錯(cuò)的碼元數(shù);N為傳輸?shù)目偞a元數(shù)。將實(shí)驗(yàn)結(jié)果代入式(1)得到計(jì)算結(jié)果如表1所示。
實(shí)驗(yàn)結(jié)果符合誤碼率標(biāo)準(zhǔn),表明系統(tǒng)可以穩(wěn)定運(yùn)行。
2.3帶寬測(cè)量與分析
為了驗(yàn)證數(shù)據(jù)帶寬達(dá)標(biāo),用示波器抓取寫(xiě)過(guò)程中的片選信號(hào)波形如圖11所示。
圖12中紅色方框內(nèi)為時(shí)間測(cè)量值,其中T1為左側(cè)光標(biāo)所處時(shí)間軸位置,T2為右側(cè)光標(biāo)所處時(shí)間軸位置,ΔT是T2與T1之差,表示傳輸周期。可以看到從一次片選信號(hào)使能到下一次使能經(jīng)過(guò)了260 ns,每次傳輸發(fā)送256 bit數(shù)據(jù),根據(jù)帶寬計(jì)算式
式中:B為數(shù)據(jù)帶寬;n為每次傳輸?shù)臄?shù)據(jù)位寬;T為傳輸周期,將數(shù)值代入可得寫(xiě)數(shù)據(jù)帶寬為984.6 Mbit/s。
在讀數(shù)據(jù)時(shí)由于需要等待DDR3返回?cái)?shù)據(jù),因此帶寬會(huì)因?yàn)閭鬏斨芷诘难娱L(zhǎng)有所降低,用示波器抓取讀數(shù)據(jù)時(shí)的片選波形如圖12所示。
圖12中下方波形為單個(gè)傳輸周期的片選信號(hào),可以發(fā)現(xiàn)由于等待過(guò)程的加入每個(gè)讀周期被延長(zhǎng)到了617 ns,每次傳輸數(shù)據(jù)位寬同樣為256 bit,代入式(2)可得讀數(shù)據(jù)帶寬為413.3 Mbit/s。
由上述測(cè)量結(jié)果得出本系統(tǒng)寫(xiě)入速率為984.6 Mbit/s,基本滿足1 Gbit/s左右的寫(xiě)帶寬需求,在讀數(shù)據(jù)時(shí)等待DDR3返回?cái)?shù)據(jù)時(shí)間約為320 ns,延長(zhǎng)了每次讀數(shù)據(jù)的傳輸周期,導(dǎo)致帶寬降到了400 Mbit/s左右,符合設(shè)計(jì)預(yù)期。
3結(jié)論
本文針對(duì)光芯片測(cè)試與ATE大數(shù)據(jù)量與高數(shù)據(jù)帶寬的需求設(shè)計(jì)了一套數(shù)據(jù)存儲(chǔ)傳輸系統(tǒng),系統(tǒng)中包含了EDMA與GPMC驅(qū)動(dòng)、FPGA接口與DDR3控制器。在AM3354芯片上通過(guò)EDMA模塊GPMC接口向FPGA讀寫(xiě)數(shù)據(jù),并在GPMC接口中優(yōu)化了數(shù)據(jù)傳輸方式以匹配MIG核的數(shù)據(jù)接口,大大減少了對(duì)DDR3接口的請(qǐng)求次數(shù),提高了接口利用率,并在FPGA內(nèi)完成了數(shù)據(jù)的跨時(shí)鐘域同步,相對(duì)于內(nèi)部集成FIFO的做法節(jié)省了大量邏輯資源。
經(jīng)過(guò)上板測(cè)試,該系統(tǒng)可以在GPMC同步時(shí)鐘下與FPGA工作時(shí)鐘下完成數(shù)據(jù)的跨時(shí)鐘域傳輸與存儲(chǔ)。其中單通道寫(xiě)帶寬達(dá)到984.6 Mbit/s,讀帶寬達(dá)到了413.3 Mbit/s。寫(xiě)帶寬相比前文提到的的設(shè)計(jì)提升很大,但是在讀帶寬方面仍有提升空間,讀數(shù)據(jù)時(shí)間大多消耗在等待DDR3 SDRAM返回?cái)?shù)據(jù)上,如果能通過(guò)預(yù)取和ping-pong結(jié)構(gòu)等方式減少DDR3 SDRAM的數(shù)據(jù)返回時(shí)間則讀帶寬也將獲得很大提升。
參考文獻(xiàn):
[1]韓賀松.嵌入式打印控制器驅(qū)動(dòng)程序設(shè)計(jì)及應(yīng)用[D].西安:西安電子科技大學(xué),2015.
[2]陳韶康.無(wú)人機(jī)載雷達(dá)大容量數(shù)據(jù)存儲(chǔ)系統(tǒng)設(shè)計(jì)[D].太原:中北大學(xué),2023.
[3]洪方磊,薛萌,郭漢明.基于FPGA的大數(shù)據(jù)緩存與高速傳輸系統(tǒng)設(shè)計(jì)[J].軟件導(dǎo)刊,2023,22(8):156–163.
[4]吳奇軒.高精度激光相位測(cè)距系統(tǒng)的FPGA實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2020.
[5]張耀飛.多功能一體機(jī)嵌入式掃描控制器設(shè)計(jì)實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2022.
[6]于濮嘉.基于Davinci視頻處理芯片DM8168的發(fā)控記錄裝置的設(shè)計(jì)[D].太原:中北大學(xué),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]白學(xué)喜.基于Linux的FPGA通信技術(shù)研究與實(shí)現(xiàn)[D].北京:北方工業(yè)大學(xué),2014.
[11]刁彥華,賈寶青,王曉君.FPGA與ARM的GPMC總線通信接口設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2017,17(3):47–50.
[12]梅熹文.復(fù)印機(jī)嵌入式控制軟件的設(shè)計(jì)與實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2017.
[13]陳振嬌,徐新宇,張猛華.EDMA數(shù)據(jù)傳輸方式在視頻圖像處理系統(tǒng)中的應(yīng)用[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]胡龍.基于數(shù)字下變頻的多比特?cái)?shù)據(jù)跨時(shí)鐘域設(shè)計(jì)與驗(yàn)證[D].西安:西安電子科技大學(xué),2017.
[16]宋文強(qiáng),胡毅.FPGA跨時(shí)鐘域信號(hào)同步設(shè)計(jì)方法研究[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2018,18(9):24–27,81.
(編輯:張磊)