王國忠,劉 磊,儲成群,任勇峰,焦新泉
(中北大學(xué),電子測試技術(shù)國家重點實驗室,山西太原 030051)
隨著大數(shù)據(jù)智能化時代的到來,以及工業(yè)4.0的提出,智能化系統(tǒng)對圖像分辨率的要求越來越高,即圖像采集系統(tǒng)需要傳輸?shù)臄?shù)據(jù)量越來越大。數(shù)據(jù)傳輸?shù)乃俣群途彌_區(qū)的大小是圖像采集系統(tǒng)中非常重要的一部分,如果緩沖的速度與傳輸?shù)乃俣炔黄ヅ涞脑挘蜁箶?shù)據(jù)丟失或者堵塞,因此需要對整個系統(tǒng)進行綜合設(shè)計。
系統(tǒng)總體方案設(shè)計如圖1所示,由圖像采集模塊、數(shù)據(jù)處理模塊、數(shù)據(jù)傳輸模塊3部分組成。圖像采集模塊采集模擬數(shù)據(jù),并轉(zhuǎn)化為數(shù)字圖像數(shù)據(jù)傳輸給數(shù)據(jù)處理模塊;數(shù)據(jù)處理模塊接收圖像數(shù)據(jù),經(jīng)處理后轉(zhuǎn)存到緩沖芯片DDR2 SDRAM中,同時接收上位機下發(fā)命令,把數(shù)據(jù)實時上傳;數(shù)據(jù)傳輸模塊把數(shù)據(jù)上傳到上位機軟件進行圖像顯示,并負責(zé)上位機與FPGA之間的通信。
本系統(tǒng)采用MT9P031圖像傳感器作為本系統(tǒng)數(shù)據(jù)采集模塊,把高速圖像數(shù)據(jù)實時上傳給數(shù)據(jù)處理模塊[1]。數(shù)據(jù)處理模塊把數(shù)據(jù)重新編幀后轉(zhuǎn)存到DDR2 SDRAM中。數(shù)據(jù)傳輸模塊采用USB3.0傳輸,把圖像數(shù)據(jù)實時上傳到上位機軟件,在數(shù)據(jù)編碼方面,USB3.0采用了安全性更高的8b/10b編碼,使用這種編碼方式可以保持電路中的直流平衡,從而提高可靠性;在邏輯設(shè)計中,采用手動DMA模式,提高了傳輸速度,同時提高了數(shù)據(jù)傳輸?shù)恼_率以及可靠性[2]。
FPGA作為整個系統(tǒng)的硬件控制核心,是整個系統(tǒng)數(shù)據(jù)傳輸?shù)闹修D(zhuǎn)站,其主要功能是實現(xiàn)各模塊之間的數(shù)據(jù)交換和接口時序等協(xié)調(diào)控制。同時FPGA既要實現(xiàn)與USB控制芯片CYUSB3014連接,也要與DDR2連接,因此本系統(tǒng)選擇I/O口豐富、內(nèi)部資源多、處理速度快的EP3C40F484C6N作為控制中心。該芯片內(nèi)部具有較多的RAM容量,利用IP核可以搭建邏輯控制模塊,如FIFO緩沖模塊,PLL鎖相環(huán)等。
圖1 總體方案設(shè)計
圖2 DDR2與FPGA硬件連接圖
本系統(tǒng)為了防止有效數(shù)據(jù)在FIFO中積累而丟失,設(shè)計了外置DDR2 SDRAM緩沖模塊,用來存儲海量的圖像數(shù)據(jù)。圖2為DDR2與FPGA的硬件連接圖。選用MT47H128M16RT-25EC作為DDR2 的芯片,其內(nèi)存為2 Gbit,數(shù)據(jù)位寬為16 bit,內(nèi)部有8個塊,能以內(nèi)部控制總線4倍的速度工作,還能以外部總線4倍的速度進行讀寫操作。CK和CKN為時鐘差分線,在他們的相交處均有數(shù)據(jù)傳輸,即在CLK的上升沿和下降沿均有數(shù)據(jù)傳輸。A[13:0]為列地址,BA[2:0]為塊地址,對DDR2進行數(shù)據(jù)讀寫時,首先發(fā)送要讀取或?qū)懭氲木唧w地址。D[15:0]為16位數(shù)據(jù)線。CKE,ODT,CS分別為DDR2的控制信號線,對DDR2進行讀寫操作時,首先要激活時鐘使能信號線(CKE)和片選信號線(CS),ODT為一種新技術(shù)叫片內(nèi)終結(jié)電阻,通過控制該信號,來實現(xiàn)對匹配電阻的值及其開關(guān)狀態(tài)進行控制,從而達到讀寫信號的完整性。RAS,WE,CAS為命令信號線,通過這3條命令FPGA控制DDR2的讀寫。采用UDQS和UDQSN、LDQS和LDQSN作為雙向差分信號線,寫數(shù)據(jù)時由FPGA發(fā)出,讀數(shù)據(jù)時由DDR2發(fā)出,可以減少信號間串?dāng)_的影響,同時減少信號輸出脈寬對工作電壓和溫度穩(wěn)定性的依賴。UDM,LDM在進行突發(fā)傳輸時,可屏蔽掉不存儲的數(shù)據(jù)[3]。
本系統(tǒng)采用CYUSB3014作為USB3.0的控制芯片,該芯片具有高度集成的靈活特性,具有一個可進行數(shù)據(jù)并行讀寫的通用可編程接口GPIFⅡ,其內(nèi)部同時集成了USB3.0和USB2.0物理層(PHY)以及32位ARM926EJ-S微處理器,具有強大的數(shù)據(jù)處理能力。GPIFⅡ接口可進行8位、16位、32位數(shù)據(jù)傳輸,可實現(xiàn)與FPGA之間無縫連接;GPIFⅡ為一種可編程狀態(tài)機,其接口即可作為主控制器也可作為從器件,并行和串行接口均可通過該接口實現(xiàn)。本系統(tǒng)將CYUSB3014配置為32位并行的SLAVE FIFO模式,實現(xiàn)與FPGA之間的高速圖像數(shù)據(jù)傳輸,F(xiàn)PGA通過GPIFⅡ接口可訪問其內(nèi)部32個緩沖區(qū)[4]。
圖3為USB3.0周圍的硬件電路。如圖3所示,GPIFⅡ的32位數(shù)據(jù)總線直接與FPGA的I/0口相連,而在CYUSB3014內(nèi)部GPIFⅡ直接連接到了DMA通道上。SLCS為片選信號,系統(tǒng)開始工作時被激活。PKTEND為短包數(shù)據(jù)發(fā)送結(jié)束信號,當(dāng)一包數(shù)據(jù)結(jié)束時該信號有效。FLAGA和FLAGB為DMA通道對應(yīng)的緩沖區(qū)空滿狀態(tài)的標(biāo)志信號,由CYUSB3014芯片發(fā)出,F(xiàn)PGA接收。SLWR為寫使能信號,當(dāng)通過USB3.0讀取數(shù)據(jù)時,該信號使能有效,GPIFⅡ隨之將數(shù)據(jù)通過DMA通道存入到對應(yīng)的緩沖區(qū)中。SLOE為讀使能信號,即FPGA發(fā)出讀請求時,該信號使能有效同時驅(qū)動數(shù)據(jù)總線DQT翻轉(zhuǎn)。A(1∶0)為線程選擇信號,通過改變它的數(shù)值,對GPIFⅡ內(nèi)部的4個獨立進程進行選擇,從而實現(xiàn)選用那個DMA通道進行數(shù)據(jù)傳輸。
圖3 USB3.0硬件電路圖
SLRD為讀請求信號,當(dāng)該信號有效時,F(xiàn)PGA讀取GPIFⅡ接口的數(shù)據(jù)。PCLK與FPGA的CLK相連,提供最高可達100 MHz的接口頻率。
圖3中的24FC1025T-I/SN是容量為1 024KB的EEPROM,用于存儲USB3.0的固件程序,通過I2C總線與CYUSB3014相連。而I2C總線是由一條數(shù)據(jù)線和一條時鐘線構(gòu)成,根據(jù)I2C總線規(guī)范,總線空閑時必須為高電平,所以本設(shè)計通過2.21 kΩ電阻連接至3.3 V電源上拉。NCP361SN1G為過壓保護芯片,CYUSB3014的VBUS引腳的最大輸入電壓為6 V,而在USB接口上VBUS的供電電壓最大可達9 V,因此為了保護CYUSB3014的VBUS免受損壞,本設(shè)計增加了過壓保護芯片。同時為了使輸入電壓穩(wěn)定,在VBUS串聯(lián)一個2.2 μH的電感。使用2.2 μH的電感與105電容并聯(lián),同時將USB插座上的“屏蔽”引腳接地,實現(xiàn)隔離屏蔽的作用。本系統(tǒng)選用四通道的SP3010-04UTG作為SSRX+、SSRX-、SSTX+、SSTX-的外部ESD器件,它具有高性能、低電容的特性,其保護電平為±8 kV接觸放電和±15kV氣隙放電[5]。
DDR2 SDRAM的讀寫控制是整個系統(tǒng)的關(guān)鍵。在系統(tǒng)上電后,DDR2 SDRAM內(nèi)部需要進行一系列復(fù)雜的初始化操作,才能開始正常工作。具體操作為:預(yù)充電→空命令→配置外部寄存器→空命令→配置內(nèi)部寄存器→預(yù)充電→空命令→自動刷新→空命令→開始接收命令。在正常開始工作,每次讀寫切換和行、塊地址變化時,必須通過預(yù)充電來關(guān)閉當(dāng)前讀寫的存儲單元,同時在進行新的操作時,需要先激活要讀寫的存儲單元所在的地址[6]。
圖4 DDR2邏輯設(shè)計圖
由于DDR2 SDRAM只有一套數(shù)據(jù)、地址和控制總線,在某一時刻只能讀或者寫,因此本文采用輸入FIFO和輸出FIFO對DDR2 SDRAM進行分時復(fù)用讀寫控制[7]。DDR2 SDRAM的讀寫邏輯控制如圖4所示,通過判斷DDR2 SDRAM內(nèi)部的控制信號,來控制FIFO的讀寫。當(dāng)上位機發(fā)出采集命令時,圖像采集前端配置完寄存器之后開始采集圖像數(shù)據(jù),DDR2 SDRAM控制器通過監(jiān)測場同步信號的到來,把圖像數(shù)據(jù)不斷存入輸入FIFO中,當(dāng)FIFO中達到一次突發(fā)傳輸數(shù)據(jù)量2 KB時,DDR2 SDRAM控制器發(fā)出寫命令,并一次性讀完輸入FIFO中的所有數(shù)據(jù),DDR2 SDRAM控制器不斷監(jiān)測輸入FIFO的數(shù)據(jù)量并發(fā)出寫命令。因為圖像數(shù)據(jù)有場消隱和行消隱的時間,在此期間對DDR2 SDRAM進行寫操作,且寫的速率比較快,因此在一定系統(tǒng)時鐘條件下,圖像采集前端不會出現(xiàn)數(shù)據(jù)堵塞。
當(dāng)上位機發(fā)出讀取數(shù)據(jù)的命令時,DDR2 SDRAM控制器首先檢測輸入FIFO的狀態(tài),在空信號有效時DDR2 SDRAM一次性向輸出FIFO寫入2 KB數(shù)據(jù),此時用戶通過輸出FIFO進行數(shù)據(jù)讀取。當(dāng)FIFO中的數(shù)據(jù)即將讀完時,DDR2 SDRAM一次性向輸出FIFO寫入2 KB數(shù)據(jù),然后通過USB3.0把圖像數(shù)據(jù)不斷上傳到上位機,其實際傳輸速度達390 MB/s,因此不會出現(xiàn)丟數(shù)的情況。
本系統(tǒng)采取手動DMA傳輸模式,用來將GPIFⅡ接口連接至內(nèi)部緩沖器和USB3.0數(shù)據(jù)傳輸接口,通過手動DMA模式可以控制圖像數(shù)據(jù)的傳輸速度,從而保證了數(shù)據(jù)的可靠傳輸。該模式可以把其中2個線程中共32個緩沖器分別分配到輸入和輸出DMA通道上,緩沖器的容量通過USB3.0的傳輸速度來設(shè)置。圖5為DMA通道的設(shè)計圖[8]。
如圖5所示,設(shè)計中只用了GPIFⅡ 4個線程中的2個,線程0和線程1,并且采用了默認的對應(yīng)關(guān)系,套接字0與線程0相對應(yīng);套接字1與線程1相對應(yīng)[9]。線程的切換是FPGA通過控制USB_A0和USB_A1信號來實現(xiàn),當(dāng)為00時,選擇線程0;當(dāng)為01時,選擇線程1。套接字是外部硬件與內(nèi)部緩沖區(qū)之間的橋梁,即套接字可以看作是外設(shè)的接口,每個硬件模塊有其固定的套接字。其中每個描述符存有緩沖區(qū)的地址和緩沖區(qū)的容量,以及指向下一個描述符的指針。
圖5 DMA通道的設(shè)計圖
在邏輯設(shè)計中,將USB_FLGA和USB_FLGB均設(shè)置為低電平有效,故當(dāng)其為低電平時,它們指示緩沖區(qū)進入滿狀態(tài)[10]。本設(shè)計FPGA通過從設(shè)備FIFO控制USB3.0進行突發(fā)傳輸,圖6為32位數(shù)據(jù)總線突發(fā)傳輸?shù)倪壿嫹治鰞x截圖,在突發(fā)傳輸過程中,為了保證數(shù)據(jù)連續(xù)輸出,USB_RD和USB_OE始終保持有效,只要一行圖像數(shù)據(jù)寫入完成,就對DDR2 SDRAM進行讀操作。這樣一來DMA緩沖區(qū)就不會出現(xiàn)滿狀態(tài),即整個過程USB_FLGA和USB_FLGB一直為高電平,為了避免DMA通道的失鎖以及對上次數(shù)據(jù)的清空處理,本設(shè)計采用了每次重新寫入數(shù)據(jù)時,再次激活GPIFⅡ接口的思想,即USB_CS信號在USB_WR從低電平變?yōu)楦唠娖綍r,重新被激活。
圖6 突發(fā)傳輸?shù)倪壿媹D
本系統(tǒng)圖像采集模塊采集到的圖像分辨率為2 048×1 536,幀頻為21 fps,且顯示為256級8位灰度圖像,因此每秒采集的數(shù)據(jù)量為63 MB(2 048×1 536×21B)。DDR2工作在125 MHz時鐘下,其傳輸速度峰值高達500 MB/s(125 MHz×2B×2),通過邏輯分析儀發(fā)現(xiàn)突發(fā)傳輸1行圖像數(shù)據(jù)需要512個系統(tǒng)時鐘,而DDR2自動刷新、預(yù)充電、狀態(tài)信息等消耗50個系統(tǒng)時鐘,因此DDR2實際平均數(shù)據(jù)吞吐量為500 MB/s×512/(512+50)≈456 MB/s。USB3.0數(shù)據(jù)傳輸速度為390 MB/s,通過理論分析,本系統(tǒng)可以正常工作。而且經(jīng)過長時間重復(fù)測試,在沒有上位機引起其他開銷的情況下,采集的圖像如圖7所示。其畫面清晰、流暢,且實時性較好,證明了本系統(tǒng)能夠?qū)崟r進行圖像數(shù)據(jù)上傳,且穩(wěn)定可靠。
本設(shè)計中,采用了占用資源少、支持熱插拔、可連接多個設(shè)備的USB3.0數(shù)據(jù)總線和緩沖速度快的DDR2緩沖器,設(shè)計了高速圖像傳輸系統(tǒng),大幅提高了圖像數(shù)據(jù)的傳輸速度和存儲空間,在邏輯設(shè)計中采用了手動DMA模式,實現(xiàn)了海量圖像數(shù)據(jù)的傳輸,確保了高清圖像的實時顯示。
圖7 圖像截圖