《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > 基于DDR2的高速圖像數(shù)據(jù)傳輸系統(tǒng)設(shè)計(jì)
基于DDR2的高速圖像數(shù)據(jù)傳輸系統(tǒng)設(shè)計(jì)
2020年電子技術(shù)應(yīng)用第1期
任勇峰,張澤芳,王國忠,張凱華
中北大學(xué) 電子測(cè)試技術(shù)國家重點(diǎn)實(shí)驗(yàn)室,山西 太原030051
摘要: 在高速圖像數(shù)據(jù)傳輸系統(tǒng)中,針對(duì)圖像數(shù)據(jù)“高吞吐量”與“大容量”數(shù)據(jù)緩存的應(yīng)用需求,提出了一種基于DDR2 SDRAM的高速圖像數(shù)據(jù)傳輸系統(tǒng)設(shè)計(jì)方案。為了滿足圖像數(shù)據(jù)的高吞吐率要求和數(shù)據(jù)緩存的大容量需求,采用了FPGA內(nèi)部FIFO資源搭配片外DDR2的分級(jí)緩存機(jī)制;為了方便對(duì)圖像數(shù)據(jù)的讀寫與地址的管理,對(duì)DDR2內(nèi)部存儲(chǔ)空間進(jìn)行了重新分布。經(jīng)測(cè)試,該系統(tǒng)可在上位機(jī)實(shí)時(shí)顯示圖像數(shù)據(jù),且穩(wěn)定可靠。
中圖分類號(hào): TN919.8
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.190715
中文引用格式: 任勇峰,張澤芳,王國忠,等. 基于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.
Design of high-speed image data transmission system based on DDR2
Ren Yongfeng,Zhang Zefang,Wang Guozhong,Zhang Kaihua
National Key Laboratory for Electronic Measurement Technology,North University of China,Taiyuan 030051,Shanxi
Abstract: In the high-speed image data transmission system, a high-speed image data transmission system design scheme based on DDR2 SDRAM is proposed for the high throughput of image data and the application of "large capacity" data buffer. In order to meet the high throughput requirements of image data and the large capacity requirements of data caching, FPGA internal FIFO resources with off-chip DDR2 hierarchical cache mechanism is adopted. In order to facilitate the reading and writing of image data and the management of addresses, the internal storage space of DDR is redistributed. After testing, the system can display image data in real time on the host computer, which is stable and reliable.
Key words : DDR2;FPGA;hierarchical caching;data transmission

0 引言

    CMOS圖像傳感器憑借著集成度高、功耗小、速度快、成本低、靈活性強(qiáng)等特點(diǎn)[1],在各個(gè)行業(yè)得到了廣泛的應(yīng)用。隨著CMOS傳感器的快速發(fā)展,其幀頻、分辨率等參數(shù)得到了大幅度提升[2]。當(dāng)CMOS傳感器分辨率設(shè)置為2 048×2 048(約400萬像素),幀頻設(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)行快速讀寫操作,對(duì)內(nèi)存的容量和速度提出了較高的要求。

    為了滿足對(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所示。

ck1-t1.gif

    該設(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主要用來解決各個(gè)模塊之間數(shù)據(jù)位寬不一致以及數(shù)據(jù)傳輸速度不匹配的問題,DDR2主要用來滿足高速大容量的數(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讀寫操作不能同時(shí)進(jìn)行,因此需要對(duì)DDR2的地址總線進(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é)省人力、加快開發(fā)速度,采用嵌入FPGA內(nèi)部的DDR2控制器對(duì)DDR2進(jìn)行讀寫操作的控制[5]。

    本設(shè)計(jì)利用FPGA的Bank1控制DDR2,在硬件電路設(shè)計(jì)時(shí)嚴(yán)格遵照固定引腳分配連接FPGA與DDR2,如圖2所示。其中,CK和CKN為時(shí)鐘差分線,數(shù)據(jù)在差分時(shí)鐘相交處進(jìn)行數(shù)據(jù)傳輸;A[13:0]為行列地址復(fù)用線,BA[2:0]為塊地址,在進(jìn)行讀寫操作時(shí),需首先確定數(shù)據(jù)具體地址[6];D[15:0]為數(shù)據(jù)線;CKE、ODT、CS為控制信號(hào)線,其中,ODT為片內(nèi)終結(jié)電阻,通過調(diào)整電阻值來克服片內(nèi)總線上的信號(hào)反射效應(yīng)[3];RAS、WE、CAS為命令信號(hào)線,F(xiàn)PGA通過這3條命令實(shí)現(xiàn)對(duì)DDR2讀寫操作的控制;UDM、LDM為數(shù)據(jù)屏蔽線,可用來屏蔽來自外部的干擾。

ck1-t2.gif

3 關(guān)鍵技術(shù)研究

3.1 DDR2讀寫邏輯設(shè)計(jì)

    數(shù)據(jù)采集模塊在接收到上位機(jī)開始采集指令后,將會(huì)持續(xù)輸出串行數(shù)據(jù),由于FPGA邏輯控制一般處理并行信號(hào),因此需先對(duì)圖像數(shù)據(jù)進(jìn)行串并轉(zhuǎn)換,而后再將其緩存至FIFO_in中。從FIFO_in中讀取圖像數(shù)據(jù)并按照一定格式寫入DDR2中;同時(shí),從DDR2中讀取圖像數(shù)據(jù),利用FIFO_out陣列進(jìn)行位寬轉(zhuǎn)換及速度匹配后,通過千兆以太網(wǎng)傳輸至上位機(jī)軟件[7]。整體邏輯控制框圖如圖3所示。

ck1-t3.gif

3.1.1 寫邏輯設(shè)計(jì)

    圖像采集時(shí)鐘與DDR2的工作時(shí)鐘頻率不同,又由于DDR2只支持突發(fā)寫入,一次寫入256 B的數(shù)據(jù)量,因而設(shè)計(jì)容量為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的參考時(shí)鐘,DDR2開始初始化;待初始化完成后,通過判斷DDR2控制器的寫入命令是否有效,對(duì)DDR2輸入寫命令、突發(fā)長度命令以及命令使能信號(hào)[8];其后,當(dāng)FIFO讀空信號(hào)為‘0’,即該信號(hào)無效時(shí),將DDR2的寫入使能置‘1’,并從FIFO_in中讀取圖像數(shù)據(jù)存入DDR2中,當(dāng)FIFO讀空信號(hào)有效時(shí),停止從FIFO_in中讀取數(shù)據(jù),以確保讀取的數(shù)據(jù)均為有效數(shù)據(jù);最后,通過計(jì)數(shù)信號(hào)判斷一次突發(fā)寫入是否完成。寫DDR2將會(huì)一直持續(xù)到整個(gè)數(shù)據(jù)采集裝置掉電為止。

    此外,為了方便對(duì)圖像數(shù)據(jù)進(jìn)行管理,圖像數(shù)據(jù)以以太網(wǎng)包添加包頭包尾后寫入DDR2中,該過程在一個(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來實(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陣列即可滿足系統(tǒng)對(duì)數(shù)據(jù)傳輸?shù)男枨蟆?/p>

    當(dāng)上位機(jī)接收到千兆以太網(wǎng)下發(fā)的讀取指令后,首先判斷DDR2的寫塊地址是否大于讀塊地址[9],若寫地址塊大于讀地址塊,則讀取的數(shù)據(jù)為有效數(shù)據(jù);而后判斷DDR2控制器的讀取命令是否有效,若有效,輸入對(duì)DDR2的讀取命令、突發(fā)長度命令以及命令使能信號(hào);最后,通過計(jì)數(shù)信號(hào)完成對(duì)FIFO_out陣列的輪換寫入以及讀取操作。

    在往FIFO_out陣列寫數(shù)據(jù)前,通過復(fù)位信號(hào)將FIFO中數(shù)據(jù)清空;寫數(shù)據(jù)同時(shí),將計(jì)數(shù)信號(hào)及地址信息上傳至數(shù)據(jù)傳輸模塊。

    利用邏輯分析儀Chipscope抓取到的DDR2讀寫時(shí)序圖如圖4所示。由圖可得,可以連續(xù)對(duì)DDR2進(jìn)行突發(fā)讀寫操作,并且讀寫可分時(shí)進(jìn)行;往DDR2中寫數(shù)據(jù)時(shí),需要等待圖像傳感器采集滿256 B時(shí)才可突發(fā)寫入;在進(jìn)行讀寫操作之前都要先進(jìn)行命令空信號(hào)判斷。

ck1-t4.gif

3.2 重新分布DDR2存儲(chǔ)空間

    DDR2僅有一組地址總線,讀寫操作不能夠同時(shí)進(jìn)行,所以要對(duì)DDR2的地址總線進(jìn)行分時(shí)復(fù)用[10]??刂艱DR2地址即可實(shí)現(xiàn)對(duì)其內(nèi)部存儲(chǔ)空間的控制,因此,通過更改地址即可完成對(duì)DDR2內(nèi)部存儲(chǔ)空間的重新分布。為了滿足分辨率為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,通過14位行地址與10位列地址判斷讀寫操作的具體地址,其中一個(gè)地址存儲(chǔ)2 B數(shù)據(jù)。為了方便對(duì)數(shù)據(jù)的讀寫以及對(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ā)讀寫的次數(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è)計(jì)中首先判斷是否為最后一行數(shù)據(jù),然后再對(duì)列地址進(jìn)行操作。

    一列數(shù)據(jù)存儲(chǔ)256 B,所以列地址低8位需全部賦值為0;一包數(shù)據(jù)最大需要突發(fā)讀寫35(100011)次,因此列地址總共需要14位,即DDR2存儲(chǔ)空間的10位列地址需擴(kuò)展至14位。由于DDR2控制器的IP核實(shí)際列地址位寬為11位,因而將列地址高3位以行地址高3位的形式輸入到地址控制端口即可完成列地址的擴(kuò)展。DDR2存儲(chǔ)空間經(jīng)過擴(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的高效讀寫性能與片外DDR2大容量存儲(chǔ)的特點(diǎn),形成速率與容量(時(shí)間與空間)的優(yōu)勢(shì)互補(bǔ),很好地滿足了高速圖像數(shù)據(jù)傳輸系統(tǒng)對(duì)于圖像數(shù)據(jù)傳輸?shù)男阅苄枨?。同時(shí),本設(shè)計(jì)通過設(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緩存控制器在無線鏈路圖像跟蹤系統(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ǔ)器讀寫控制與仿真[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屆中國控制與決策會(huì)議論文集(2),2018.

[10] 田杰,王廣龍,喬中濤,等.基于FPGA高速視頻圖像實(shí)時(shí)采集與處理系統(tǒng)設(shè)計(jì)[J].電子器件,2016,39(3):623-627.



作者信息:

任勇峰,張澤芳,王國忠,張凱華

(中北大學(xué) 電子測(cè)試技術(shù)國家重點(diǎn)實(shí)驗(yàn)室,山西 太原030051)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。