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