文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.190715
中文引用格式: 任勇峰,,張澤芳,,王國(guó)忠,等. 基于DDR2的高速圖像數(shù)據(jù)傳輸系統(tǒng)設(shè)計(jì)[J].電子技術(shù)應(yīng)用,,2020,,46(1):62-65.
英文引用格式: Ren Yongfeng,Zhang Zefang,,Wang Guozhong,,et al. Design of high-speed image data transmission system based on DDR2[J]. Application of Electronic Technique,2020,,46(1):62-65.
0 引言
CMOS圖像傳感器憑借著集成度高,、功耗小,、速度快、成本低,、靈活性強(qiáng)等特點(diǎn)[1],,在各個(gè)行業(yè)得到了廣泛的應(yīng)用。隨著CMOS傳感器的快速發(fā)展,,其幀頻,、分辨率等參數(shù)得到了大幅度提升[2]。當(dāng)CMOS傳感器分辨率設(shè)置為2 048×2 048(約400萬(wàn)像素),,幀頻設(shè)置為20 f/s時(shí),,CMOS圖像傳感器每秒產(chǎn)生的圖像數(shù)據(jù)量可達(dá)80 MB,這意味著圖像數(shù)據(jù)傳輸系統(tǒng)需在短時(shí)間內(nèi)對(duì)大量數(shù)據(jù)進(jìn)行快速讀寫(xiě)操作,,對(duì)內(nèi)存的容量和速度提出了較高的要求,。
為了滿(mǎn)足對(duì)高速圖像數(shù)據(jù)的傳輸要求,在綜合考慮帶寬,、速率,、數(shù)據(jù)存儲(chǔ)容量、成本,、功耗等因素后[3],,本設(shè)計(jì)選用DDR2作為數(shù)據(jù)緩存單元。本文提出的分布式三級(jí)數(shù)據(jù)緩存結(jié)構(gòu),,結(jié)合了FPGA內(nèi)部FIFO的高數(shù)據(jù)吞吐量與片外DDR2大容量的特點(diǎn),,很好地解決了高速圖像數(shù)據(jù)的緩存難題,實(shí)現(xiàn)了圖像數(shù)據(jù)的實(shí)時(shí)顯示,。
1 系統(tǒng)總體方案設(shè)計(jì)
本文介紹的基于DDR2的高速圖像數(shù)據(jù)傳輸系統(tǒng)能夠?qū)崟r(shí)顯示數(shù)據(jù)采集前端接收的圖像數(shù)據(jù),,該系統(tǒng)的總體結(jié)構(gòu)框圖如圖1所示。
該設(shè)計(jì)由數(shù)據(jù)采集,、數(shù)據(jù)緩存,、數(shù)據(jù)傳輸[4]共3個(gè)模塊構(gòu)成。數(shù)據(jù)采集模塊利用CMOS圖像傳感器進(jìn)行圖像數(shù)據(jù)的采集,,采集到的信號(hào)為串行信號(hào),;數(shù)據(jù)緩存模塊利用FPGA片內(nèi)FIFO資源與片外DDR2進(jìn)行圖像數(shù)據(jù)的緩存,其中,,F(xiàn)IFO主要用來(lái)解決各個(gè)模塊之間數(shù)據(jù)位寬不一致以及數(shù)據(jù)傳輸速度不匹配的問(wèn)題,,DDR2主要用來(lái)滿(mǎn)足高速大容量的數(shù)據(jù)緩存要求,;數(shù)據(jù)傳輸模塊利用千兆以太網(wǎng)將圖像數(shù)據(jù)以巨型幀格式發(fā)送至上位機(jī)軟件并進(jìn)行實(shí)時(shí)顯示。
該設(shè)計(jì)選用的DDR2存儲(chǔ)容量為2 Gbit,,有8個(gè)Bank存儲(chǔ)塊,,由于DDR2讀寫(xiě)操作不能同時(shí)進(jìn)行,因此需要對(duì)DDR2的地址總線(xiàn)進(jìn)行分時(shí)復(fù)用,,以提高其數(shù)據(jù)帶寬利用率,。為了適應(yīng)不同分辨率的圖像數(shù)據(jù),,設(shè)計(jì)了圖像參數(shù)計(jì)算模塊以得到不同分辨率下的圖像數(shù)據(jù)量以及各個(gè)參數(shù),,從而對(duì)DDR2存儲(chǔ)空間的重新分布提供理論基礎(chǔ)。同時(shí),,重新分布DDR2的存儲(chǔ)空間可實(shí)現(xiàn)對(duì)圖像數(shù)據(jù)的便捷式管理與控制,。
2 數(shù)據(jù)緩存模塊硬件電路設(shè)計(jì)
本設(shè)計(jì)選用的DDR2芯片為Micron公司生產(chǎn)的MT47H128M16RT,該芯片在時(shí)鐘上升沿與下降沿同時(shí)進(jìn)行數(shù)據(jù)的傳輸,,因而其傳輸速度為普通存儲(chǔ)器件的兩倍,。DDR2控制器邏輯設(shè)計(jì)復(fù)雜,為了節(jié)省人力,、加快開(kāi)發(fā)速度,,采用嵌入FPGA內(nèi)部的DDR2控制器對(duì)DDR2進(jìn)行讀寫(xiě)操作的控制[5]。
本設(shè)計(jì)利用FPGA的Bank1控制DDR2,,在硬件電路設(shè)計(jì)時(shí)嚴(yán)格遵照固定引腳分配連接FPGA與DDR2,,如圖2所示。其中,,CK和CKN為時(shí)鐘差分線(xiàn),,數(shù)據(jù)在差分時(shí)鐘相交處進(jìn)行數(shù)據(jù)傳輸;A[13:0]為行列地址復(fù)用線(xiàn),,BA[2:0]為塊地址,,在進(jìn)行讀寫(xiě)操作時(shí),需首先確定數(shù)據(jù)具體地址[6],;D[15:0]為數(shù)據(jù)線(xiàn),;CKE、ODT,、CS為控制信號(hào)線(xiàn),,其中,ODT為片內(nèi)終結(jié)電阻,,通過(guò)調(diào)整電阻值來(lái)克服片內(nèi)總線(xiàn)上的信號(hào)反射效應(yīng)[3],;RAS、WE,、CAS為命令信號(hào)線(xiàn),,F(xiàn)PGA通過(guò)這3條命令實(shí)現(xiàn)對(duì)DDR2讀寫(xiě)操作的控制,;UDM、LDM為數(shù)據(jù)屏蔽線(xiàn),,可用來(lái)屏蔽來(lái)自外部的干擾,。
3 關(guān)鍵技術(shù)研究
3.1 DDR2讀寫(xiě)邏輯設(shè)計(jì)
數(shù)據(jù)采集模塊在接收到上位機(jī)開(kāi)始采集指令后,將會(huì)持續(xù)輸出串行數(shù)據(jù),,由于FPGA邏輯控制一般處理并行信號(hào),,因此需先對(duì)圖像數(shù)據(jù)進(jìn)行串并轉(zhuǎn)換,而后再將其緩存至FIFO_in中,。從FIFO_in中讀取圖像數(shù)據(jù)并按照一定格式寫(xiě)入DDR2中,;同時(shí),從DDR2中讀取圖像數(shù)據(jù),,利用FIFO_out陣列進(jìn)行位寬轉(zhuǎn)換及速度匹配后,,通過(guò)千兆以太網(wǎng)傳輸至上位機(jī)軟件[7]。整體邏輯控制框圖如圖3所示,。
3.1.1 寫(xiě)邏輯設(shè)計(jì)
圖像采集時(shí)鐘與DDR2的工作時(shí)鐘頻率不同,,又由于DDR2只支持突發(fā)寫(xiě)入,一次寫(xiě)入256 B的數(shù)據(jù)量,,因而設(shè)計(jì)容量為2 KB的異步FIFO可將串并轉(zhuǎn)換輸出的并行數(shù)據(jù)進(jìn)行緩沖,,F(xiàn)IFO_in既能夠滿(mǎn)足數(shù)據(jù)緩存,又可以防止數(shù)據(jù)溢出,。
系統(tǒng)上電開(kāi)始工作,,F(xiàn)PGA為DDR2提供125 MHz的參考時(shí)鐘,DDR2開(kāi)始初始化,;待初始化完成后,,通過(guò)判斷DDR2控制器的寫(xiě)入命令是否有效,對(duì)DDR2輸入寫(xiě)命令,、突發(fā)長(zhǎng)度命令以及命令使能信號(hào)[8],;其后,當(dāng)FIFO讀空信號(hào)為‘0’,,即該信號(hào)無(wú)效時(shí),,將DDR2的寫(xiě)入使能置‘1’,并從FIFO_in中讀取圖像數(shù)據(jù)存入DDR2中,,當(dāng)FIFO讀空信號(hào)有效時(shí),,停止從FIFO_in中讀取數(shù)據(jù),以確保讀取的數(shù)據(jù)均為有效數(shù)據(jù),;最后,,通過(guò)計(jì)數(shù)信號(hào)判斷一次突發(fā)寫(xiě)入是否完成。寫(xiě)DDR2將會(huì)一直持續(xù)到整個(gè)數(shù)據(jù)采集裝置掉電為止,。
此外,,為了方便對(duì)圖像數(shù)據(jù)進(jìn)行管理,,圖像數(shù)據(jù)以以太網(wǎng)包添加包頭包尾后寫(xiě)入DDR2中,該過(guò)程在一個(gè)獨(dú)立的進(jìn)程中實(shí)現(xiàn),。
3.1.2 讀邏輯控制
本設(shè)計(jì)利用千兆以太網(wǎng)作為傳輸方式將數(shù)據(jù)上傳至上位機(jī)軟件,,所涉及的千兆以太網(wǎng)包大小為9 014 B,位寬為8 bit,,不支持突發(fā)傳輸,,所以為了與前級(jí)實(shí)現(xiàn)更好的匹配,設(shè)計(jì)FIFO來(lái)實(shí)現(xiàn)數(shù)據(jù)的緩沖,。DDR2與千兆以太網(wǎng)時(shí)鐘均為125 MHz,,由于DDR2的傳輸速度可達(dá)456 MB/s,而千兆以太網(wǎng)傳輸速率為125 MB/s,,因此設(shè)置4個(gè)容量為16 KB的FIFO陣列即可滿(mǎn)足系統(tǒng)對(duì)數(shù)據(jù)傳輸?shù)男枨蟆?/p>
當(dāng)上位機(jī)接收到千兆以太網(wǎng)下發(fā)的讀取指令后,,首先判斷DDR2的寫(xiě)塊地址是否大于讀塊地址[9],若寫(xiě)地址塊大于讀地址塊,,則讀取的數(shù)據(jù)為有效數(shù)據(jù);而后判斷DDR2控制器的讀取命令是否有效,,若有效,,輸入對(duì)DDR2的讀取命令、突發(fā)長(zhǎng)度命令以及命令使能信號(hào),;最后,,通過(guò)計(jì)數(shù)信號(hào)完成對(duì)FIFO_out陣列的輪換寫(xiě)入以及讀取操作。
在往FIFO_out陣列寫(xiě)數(shù)據(jù)前,,通過(guò)復(fù)位信號(hào)將FIFO中數(shù)據(jù)清空,;寫(xiě)數(shù)據(jù)同時(shí),將計(jì)數(shù)信號(hào)及地址信息上傳至數(shù)據(jù)傳輸模塊,。
利用邏輯分析儀Chipscope抓取到的DDR2讀寫(xiě)時(shí)序圖如圖4所示,。由圖可得,可以連續(xù)對(duì)DDR2進(jìn)行突發(fā)讀寫(xiě)操作,,并且讀寫(xiě)可分時(shí)進(jìn)行,;往DDR2中寫(xiě)數(shù)據(jù)時(shí),需要等待圖像傳感器采集滿(mǎn)256 B時(shí)才可突發(fā)寫(xiě)入,;在進(jìn)行讀寫(xiě)操作之前都要先進(jìn)行命令空信號(hào)判斷,。
3.2 重新分布DDR2存儲(chǔ)空間
DDR2僅有一組地址總線(xiàn),讀寫(xiě)操作不能夠同時(shí)進(jìn)行,,所以要對(duì)DDR2的地址總線(xiàn)進(jìn)行分時(shí)復(fù)用[10],。控制DDR2地址即可實(shí)現(xiàn)對(duì)其內(nèi)部存儲(chǔ)空間的控制,,因此,,通過(guò)更改地址即可完成對(duì)DDR2內(nèi)部存儲(chǔ)空間的重新分布,。為了滿(mǎn)足分辨率為2 048×2 048的圖像數(shù)據(jù)以巨型幀格式進(jìn)行傳輸,本設(shè)計(jì)對(duì)DDR2存儲(chǔ)空間進(jìn)行了擴(kuò)展,。
本設(shè)計(jì)使用的DDR2的存儲(chǔ)容量為2 Gbit,,內(nèi)部含有8個(gè)Bank,通過(guò)14位行地址與10位列地址判斷讀寫(xiě)操作的具體地址,,其中一個(gè)地址存儲(chǔ)2 B數(shù)據(jù),。為了方便對(duì)數(shù)據(jù)的讀寫(xiě)以及對(duì)地址的管理,本設(shè)計(jì)利用一個(gè)地址存儲(chǔ)1 B數(shù)據(jù),,一個(gè)列地址存儲(chǔ)256 B數(shù)據(jù),,一個(gè)行地址存儲(chǔ)一包圖像數(shù)據(jù),以行地址為尋址的主地址方式進(jìn)行數(shù)據(jù)存儲(chǔ),。在一包數(shù)據(jù)中,,除協(xié)議占用的50 B外,剩余8 964 B均為圖像數(shù)據(jù),。
圖像參數(shù)計(jì)算模塊可計(jì)算不同分辨率下的一幅圖像要傳輸?shù)陌鼣?shù),,一包數(shù)據(jù)需要突發(fā)讀寫(xiě)的次數(shù)以及最后一包數(shù)據(jù)需要突發(fā)讀寫(xiě)的次數(shù)等參數(shù),通過(guò)一幅圖像最后一包的行地址來(lái)判斷該幅圖像是否傳輸完成,。
文中數(shù)據(jù)采集模塊采集到的圖像數(shù)據(jù)的分辨率為2 048×2 048,,一幅圖像需要傳輸467包余8 116 B,一包數(shù)據(jù)需要突發(fā)讀寫(xiě)的次數(shù)為35次,,最后一包數(shù)據(jù)需要突發(fā)讀寫(xiě)的次數(shù)為31次余180 B,,因此可通過(guò)最后一行列地址與其他行列地址是否相同來(lái)判斷數(shù)據(jù)是否有效。在DDR讀寫(xiě)邏輯設(shè)計(jì)中首先判斷是否為最后一行數(shù)據(jù),,然后再對(duì)列地址進(jìn)行操作,。
一列數(shù)據(jù)存儲(chǔ)256 B,所以列地址低8位需全部賦值為0,;一包數(shù)據(jù)最大需要突發(fā)讀寫(xiě)35(100011)次,,因此列地址總共需要14位,即DDR2存儲(chǔ)空間的10位列地址需擴(kuò)展至14位,。由于DDR2控制器的IP核實(shí)際列地址位寬為11位,,因而將列地址高3位以行地址高3位的形式輸入到地址控制端口即可完成列地址的擴(kuò)展。DDR2存儲(chǔ)空間經(jīng)過(guò)擴(kuò)展后,,當(dāng)行地址小于468,,列地址增加至35時(shí),行地址加1列地址歸0,;當(dāng)行地址增加至468,,列地址增加至32時(shí),行地址歸0塊地址加1,。所以在邏輯設(shè)計(jì)中首先判斷是否為最后一行數(shù)據(jù),,然后再對(duì)列地址進(jìn)行分別增加,。
4 結(jié)果分析
本設(shè)計(jì)數(shù)據(jù)采集模塊采集的圖像數(shù)據(jù)分辨率為2 048×2 048,幀頻為20 f/s,,即1 s可產(chǎn)生80 MB的圖像數(shù)據(jù),;在數(shù)據(jù)緩存模塊中,DDR2的工作時(shí)鐘為125 MHz,,再考慮到自動(dòng)刷新及預(yù)充電等消耗的時(shí)鐘,,實(shí)際平均數(shù)據(jù)吞吐量為456 MB/s;數(shù)據(jù)傳輸模塊中,,以太網(wǎng)傳輸速度為125 MB/s,;經(jīng)測(cè)試,該設(shè)計(jì)能夠正常工作,,上位機(jī)可實(shí)時(shí)顯示數(shù)據(jù)采集模塊采集的圖像數(shù)據(jù),,且穩(wěn)定可靠。
5 結(jié)論
本設(shè)計(jì)以FPGA為核心,,對(duì)圖像數(shù)據(jù)流進(jìn)行整體邏輯設(shè)計(jì),,采用三級(jí)數(shù)據(jù)緩存機(jī)制,利用FPGA內(nèi)部FIFO的高效讀寫(xiě)性能與片外DDR2大容量存儲(chǔ)的特點(diǎn),,形成速率與容量(時(shí)間與空間)的優(yōu)勢(shì)互補(bǔ),,很好地滿(mǎn)足了高速圖像數(shù)據(jù)傳輸系統(tǒng)對(duì)于圖像數(shù)據(jù)傳輸?shù)男阅苄枨蟆M瑫r(shí),,本設(shè)計(jì)通過(guò)設(shè)計(jì)圖像參數(shù)計(jì)算模塊,可應(yīng)對(duì)不同分辨率的圖像數(shù)據(jù),,增強(qiáng)了該設(shè)計(jì)的可操作性和可移植性,。
參考文獻(xiàn)
[1] 葉威,肖康,,康冰鋒,,等.CMOS傳感器在航空攝影測(cè)量中的應(yīng)用[J].測(cè)繪通報(bào),2017(8):150-151.
[2] 丁寧,,常玉春,,趙健博,等.基于USB 3.0的高速CMOS圖像傳感器數(shù)據(jù)采集系統(tǒng)[J].吉林大學(xué)學(xué)報(bào)(工學(xué)版),,2018,,48(4):1298-1304.
[3] 周彬,宋茂忠,,熊駿,,等.基于FPGA和DDR2的北斗導(dǎo)航信號(hào)模擬[J].電子設(shè)計(jì)工程,2016,,24(6):138-141.
[4] 王昊.基于FPGA的千兆以太網(wǎng)高速圖像采集與傳輸系統(tǒng)的設(shè)計(jì)[D].呼和浩特:內(nèi)蒙古大學(xué),,2017.
[5] 袁鑫,,盧磊,景彥哲.基于FPGA的DDR2緩存控制器在無(wú)線(xiàn)鏈路圖像跟蹤系統(tǒng)中的應(yīng)用[J].導(dǎo)航與控制,,2016,,15(4):63-69,7.
[6] 段岑林.DDR2 SDRAM控制器的設(shè)計(jì)與實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),,2018.
[7] 高俊嶺,,陳志飛,章佩佩.基于FPGA的實(shí)時(shí)視頻圖像采集處理系統(tǒng)設(shè)計(jì)[J].電子技術(shù)應(yīng)用,,2018,,44(2):10-12,19.
[8] 王曉鵬.基于FPGA片內(nèi)存儲(chǔ)器讀寫(xiě)控制與仿真[J].農(nóng)村經(jīng)濟(jì)與科技,,2018,,29(14):296.
[9] WANG H,WENG Z,,LI Y.Design of high-speed image acquisition system based on FPGA[C].第30屆中國(guó)控制與決策會(huì)議論文集(2),,2018.
[10] 田杰,王廣龍,,喬中濤,,等.基于FPGA高速視頻圖像實(shí)時(shí)采集與處理系統(tǒng)設(shè)計(jì)[J].電子器件,2016,,39(3):623-627.
作者信息:
任勇峰,,張澤芳,王國(guó)忠,,張凱華
(中北大學(xué) 電子測(cè)試技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室,,山西 太原030051)