程光偉 陳玲玲
(西安工業(yè)大學(xué)電子信息工程學(xué)院 西安 710021)
?
高速圖像采集系統(tǒng)中的SDRAM緩存模塊設(shè)計*
程光偉陳玲玲
(西安工業(yè)大學(xué)電子信息工程學(xué)院西安710021)
摘要在數(shù)字視頻圖像采集及其實時顯示系統(tǒng)中,由于前端傳感器采集速度過快,一般與后端顯示系統(tǒng)時鐘不匹配,大量的數(shù)據(jù)需要先進(jìn)行緩存再輸入給后端的顯示模塊。針對以上問題,在研究SDRAM原理和時序的基礎(chǔ)上,采用verilog語言,成功實現(xiàn)基于FPGA的SDRAM控制器設(shè)計,同時利用FIFO緩存數(shù)據(jù)很好地解決了前端數(shù)據(jù)采集和后端視頻顯示異步時鐘域的數(shù)據(jù)交換問題,實現(xiàn)了SDRAM緩存數(shù)據(jù)的功能。論文詳細(xì)介紹各模塊的原理和實現(xiàn)方法,實驗仿真及結(jié)果表明,設(shè)計實現(xiàn)的SDRAM雙端口控制器,具有電路簡單、工作可靠等優(yōu)點,封裝后可以應(yīng)用在別的視頻圖像采集系統(tǒng)的項目中,可縮短開發(fā)周期。
關(guān)鍵詞FPGA技術(shù); SDRAM控制器; FIFO緩存; 異步時鐘; 跨時鐘域傳輸
SDRAM Cache Design of High-speed Image Acquisition System
CHENG GuangweiCHEN Lingling
(Electronic Information Engineering Institute, Xi’an Technological University, Xi’an710021)
AbstractIn the digital video image acquisition and real-time display system, since the front sensor collects too fast, usually with back-end display system clock does not match the amount of data you need to re-enter the cache to the backend of the display module. To solve these problems, on the basic research of principles and timing of SDRAM, using verilog language, the successful implementation of FPGA-based controller design of SDRAM, while taking advantage of a good solution to data FIFO buffer data acquisition front-end and back-end video display asynchronous clock domains data exchange problem, the function of SDRAM cache data is realized. Details are presented below principles and implementation methods, simulation and experimental results show that each module, SDRAM dual-port controller design implemented with a simple circuit, reliable work, etc., can be applied in the project after the package other video image acquisition system, the development cycle can be shorten.
Key WordsFPGA technology, control of SDRAM, FIFO buffer, asynchronous clock, transfer cross clock domain
Class NumberTP332
1引言
在數(shù)字視頻圖像采集及其顯示系統(tǒng)中,前端的傳感器一般為高速傳感器,采集數(shù)據(jù)速度很快,為了同步實現(xiàn)傳感器采集的視頻圖像與VGA的顯示,需要將傳感器捕獲后的數(shù)據(jù)交給VGA進(jìn)行實時顯示[1]。傳感器采集的數(shù)據(jù)經(jīng)捕獲、解碼后輸出給VGA,但由于VGA的驅(qū)動時鐘往往與像素時鐘不同步,無法實現(xiàn)實時顯示。這時,就要處理不同時鐘域的數(shù)據(jù)交互問題,由于要處理的數(shù)據(jù)量非常大,對實時性要求比較高,且采集圖像的速度和后期處理數(shù)據(jù)的速度不匹配,所以采用SDRAM作為緩存器,實現(xiàn)跨時鐘域的數(shù)據(jù)交互問題。
FPGA具有運行速度快、可重復(fù)編程、集成度高等優(yōu)點,是進(jìn)行原始設(shè)計最理想的載體。為此,以實時圖像采集顯示系統(tǒng)中數(shù)據(jù)緩存為應(yīng)用背景,提出一種基于FPGA的SDRAM控制器設(shè)計,同時利用FIFO很好地解決前端數(shù)據(jù)采集和后端視頻顯示異步時鐘域數(shù)據(jù)的交換問題,實現(xiàn)了SDRAM緩存數(shù)據(jù)的功能。
2SDRAM緩存模塊設(shè)計
2.1總體框圖設(shè)計
在高速數(shù)據(jù)通信系統(tǒng)中,數(shù)據(jù)輸入模塊與數(shù)據(jù)輸出模塊之間主要有數(shù)據(jù)緩存(寫FIFO,讀FIFO)模塊和SDRAM控制器組成。盡管SDRAM在同一時間只能進(jìn)行讀操作或?qū)懖僮?但分別有兩個異步FIFO作為緩存,所以采用SDRAM存儲器實現(xiàn)了跨時鐘域數(shù)據(jù)的交互。SDRAM緩存模塊總體框圖如圖1所示。

圖1 緩存模塊總體框圖
各模塊之間通過鎖相環(huán)PLL解決時鐘同步問題[2]。以下分別介紹SDRAM控制器的實現(xiàn)和雙端口讀寫操作的實現(xiàn)。
2.2SDRAM控制器的實現(xiàn)
2.2.1SDRAM簡介
SDRAM采用Hynix公司的HY57V283220T-6型號,它支持166MHz、133MHz、125MHz三種時鐘頻率。采用了86引腳的TSOP封裝,工作電壓為3.3V。采用同步接口的方式,所有的信號都是在時鐘的上升沿觸發(fā)。具有32位的數(shù)據(jù)總線和12位的地址總線,其中地址總線是時分復(fù)用的,存儲架構(gòu)為(1M×4)×32bit。
與各種SDRAM一樣,這種SDRAM具有以下幾個特點: 1) 采取行列地址復(fù)用原則,SDRAM的地址線在不同的命令下提供不同的地址,行列地址復(fù)用13根地址線[3]。 2) 需要定時刷新。 3) 在進(jìn)行讀寫時,需先激活行。換頁讀寫時要預(yù)充電關(guān)閉的行,然后再激活新的行進(jìn)行讀寫。 4) SDRAM正常工作之前配置模式寄存器。SDRAM具有較多的控制命令,具體命令如表1所示。

表1 配置命令表
SDRAM在每次開機進(jìn)入正常工作狀態(tài)之前,需要進(jìn)行芯片的初始化,依次為:200μs輸入穩(wěn)定期,所有L-BANK的預(yù)充電,八個刷新周期和模式寄存器設(shè)置(MRS),其關(guān)鍵在于模式寄存器的設(shè)置,用于設(shè)定SDRAM的操作模式,CAS潛伏期,突發(fā)方式和突發(fā)長度。當(dāng)SDRAM進(jìn)入MRS時,地址線上即為MRS操作碼,具體參數(shù)設(shè)置如表2所示。在視頻系統(tǒng)中數(shù)據(jù)的讀出和寫入往往是連續(xù)的,因此若要使SDRAM的帶寬最大化,應(yīng)當(dāng)使SDRAM工作在全頁模式下。
表2模式寄存器操作參數(shù)表

2.2.2SDRAM控制器方案
SDRAM控制器針對SDRAM的指令操作特點,為SDRAM提供同步命令接口和時序邏輯控制[4],圖2為SDRAM控制器的接口原理圖。

圖2 SDRAM控制器接口原理圖
接口信號介紹:
1) 與主機接口信號:CLK:系統(tǒng)時鐘信號;RESET:系統(tǒng)復(fù)位信號;CMD[2∶0]:譯碼指令;CMDACK:指令應(yīng)答信號,通知主機命令已被SDRAM執(zhí)行;ADDR:地址線,根據(jù)具體情況確定位數(shù),這里采用22位,A21、A20代表Bank地址;A19~A8代表行地址;A7~A0代表列地址;DATAIN/DATAOU:輸入、輸出數(shù)據(jù)總線;DM:數(shù)據(jù)掩碼;
2) 與SDRAM接口信號:SADDR:12位地址線,在讀、寫操作時,地址線分時復(fù)用為行地址和列地址;BA:Bank地址;CS:片選信號;CKE:時鐘使能信號;RAS、CAS、WE:命令控制信號;DQM:SDRAM數(shù)據(jù)掩碼;DQ:雙向數(shù)據(jù)線;
SDRAM控制器時序控制模塊由命令接口、控制接口和數(shù)據(jù)位寬控制共三部分組成[5]。
1) 命令接口模塊對輸入進(jìn)去的cmd等命令進(jìn)行解析,輸出相應(yīng)的指令給控制模塊,此外在命令接口模塊還包含對SDRAM模式寄存器的設(shè)置,可以設(shè)置SDRAM的突發(fā)讀寫長度和預(yù)充電周期等[6]。
2) 控制接口模塊則直接通過相關(guān)命令實現(xiàn)SDRAM的操作時序。該模塊在上電初期,首先進(jìn)行SDRAM的初始化,初始化完成后才開始正常的讀/寫操作。這里取SDRAM(HY57V283220T-6)每隔15μs刷新一次,其依據(jù)為其存儲體中電容的數(shù)據(jù)有效保存期上限為64ms,刷新命令一次對一行有效,而其每頁有4096行,因此刷新速度應(yīng)快于64ms/4096=15.6μs,這里取15μs。工作狀態(tài)包括:空閑狀態(tài)(W_IDLE)、自刷新狀態(tài)(W_AR)、行選通狀(W_ACTIVE)、行選通周期狀態(tài)(W_TRCD)、讀數(shù)據(jù)狀態(tài)(W_READ)、讀潛伏期狀態(tài)(W_CL)、N個數(shù)據(jù)讀出期狀態(tài)(W_RD)、讀后預(yù)充電狀態(tài)(W_RWAIT)、寫數(shù)據(jù)狀態(tài)(W_RITE)、N個數(shù)據(jù)寫入期狀態(tài)(W_WD)、寫回狀態(tài)(W_TDAL),狀態(tài)機如圖3[7]。

圖3 SDRAM控制器狀態(tài)機
3) 數(shù)據(jù)位寬控制模塊主要是在write和read命令期間處理數(shù)據(jù)的路徑操作。模塊數(shù)據(jù)線用來傳輸從SDRAM讀出數(shù)據(jù)和向SDRAM寫入的數(shù)據(jù)。數(shù)據(jù)位寬控制模塊還可以接收主機輸入的數(shù)據(jù)掩碼,進(jìn)而控制SDRAM I/O緩沖的低字節(jié)和高字節(jié)。
2.3雙端口讀寫操作的實現(xiàn)
要想實現(xiàn)SDRAM的緩存和解決前端數(shù)據(jù)采集和后端視頻顯示異步時鐘域數(shù)據(jù)的交換問題,還要在SDRAM控制器前后加入一個寫入端口和讀取端口。這里的雙端口包括寫的WR_FIFO和一個讀取的RD_FIFO,兩個FIFO可以通過QUARTUS 2中IP核例化得到。寫端口WR_FIFO的輸入數(shù)據(jù)是圖像傳感器的數(shù)據(jù),而其輸出數(shù)據(jù)是寫入到SDRAM中的,其輸入時鐘頻率由圖像傳感器的數(shù)據(jù)傳輸率決定,輸出時鐘頻率采用125MHz[8]。讀端口RD_FIFO的輸入數(shù)據(jù)來自SDRAM,輸入時鐘頻率為125MHz,而且其輸出數(shù)據(jù)送往VGA顯示器,輸出頻率有顯示模式?jīng)Q定。接收的圖像數(shù)據(jù)存入WR_FIFO中[9],端口仲裁器會將其寫入到SDRAM中,并在適當(dāng)?shù)臅r候?qū)D像數(shù)據(jù)送往RD_FIFO,這樣VGA顯示所需的數(shù)據(jù)就可以從RD_FIFO中讀取了。雙端口的FIFO讀/寫控制主要包括:
1) 當(dāng)有外部數(shù)據(jù)寫入請求時,寫入數(shù)據(jù)到WR_FIFO緩存;
2) 當(dāng)有外部數(shù)據(jù)讀取請求時,輸出RD_FIFO中緩存的數(shù)據(jù)[10];
3) 當(dāng)WR_FIFO中的數(shù)據(jù)大于256個時,請求SDRAM寫入,等到響應(yīng)時開始突發(fā)寫入一頁數(shù)據(jù);
4) 當(dāng)RD_FIFO中的數(shù)據(jù)小于256個時,請求SDRAM讀取,等到響應(yīng)時開始開始突發(fā)讀取一頁數(shù)據(jù)。
圖4給出WR_FIFO的操作時序流程圖,RD_FIFO的時序流程與WR_FIFO的流程相似。

圖4 WR_FIFO操作時序
盡管SDRAM在同一時間只能進(jìn)行讀操作或?qū)懖僮?但分別有兩個異步FIFO作為緩存,所以采用SDRAM存儲器實現(xiàn)了跨時鐘域數(shù)據(jù)的交互。
3設(shè)計實現(xiàn)及時序特性
筆者在Quartus11.0環(huán)境下進(jìn)行設(shè)計輸入,用Modelsim工具進(jìn)行仿真驗證。圖5是Modelsim工具對SDRAM控制器的功能仿真結(jié)果,圖中顯示了SDRAM數(shù)據(jù)讀寫時序,SDRAM芯片各控制信號的狀態(tài)。其中clk是時鐘信號,rst_n是復(fù)位信號,低電平有效,bank_switch_falg是bank之間切換的標(biāo)記信號,frame_write_done是讀信號,frame_read_done是寫信號。圖中顯示了SDRAM數(shù)據(jù)讀寫時序,SDRAM芯片各控制信號的狀態(tài)。該控制器應(yīng)用于圖像采集和顯示系統(tǒng)中,完全能夠滿足實時數(shù)據(jù)存儲和處理的要求。

圖5 SDRAM控制器的功能仿真結(jié)果
4結(jié)語
實現(xiàn)了基于FPGA的高速數(shù)據(jù)采集系統(tǒng)中的SDRAM緩存模塊,采用verilog語言,在ALTERA公司的FPGA(EP2C35F672C6)芯片上成功實現(xiàn)SDRAM控制器,同時利用FIFO很好地解決前端數(shù)據(jù)采集和后端視頻顯示異步時鐘域數(shù)據(jù)的交換問題,實現(xiàn)了SDRAM緩存數(shù)據(jù)的功能。對于SDRAM的數(shù)據(jù)讀/寫操作而言,只需要進(jìn)行簡單的FIFO操作,就能實現(xiàn)海量數(shù)據(jù)的讀寫,解決了高速采集實時顯示系統(tǒng)中數(shù)據(jù)緩存的問題。利用FPGA實現(xiàn)SDRAM雙端口控制器,不僅可以根據(jù)實際需求靈活進(jìn)行配置,降低專用集成電路的設(shè)計風(fēng)險,而且具有電路簡單、工作可靠等優(yōu)點。該技術(shù)同樣可以作為IP核應(yīng)用于不同的數(shù)據(jù)緩存與傳輸系統(tǒng)中,有助于大大縮短產(chǎn)品的開發(fā)周期。
參 考 文 獻(xiàn)
[1] 項力領(lǐng),劉智,楊陽,等.單片SDRAM的數(shù)據(jù)讀寫乒乓操作設(shè)計[J].長春理工大學(xué)學(xué)報(自然科學(xué)版),2013,36(5):140-143.
XIANG Liling, LIU Zhi, YANG Yang, et al. Monolithic SDRAM data read and write operations pong design[J]. Changchun University of Technology(Natural Science),2013,36(5):140-143.
[2] 李文昌,李平,楊志明.FPGA芯片內(nèi)數(shù)字時鐘管理器的設(shè)計與實現(xiàn)[J].半導(dǎo)體技術(shù),2011,(11):848-852
LI Wenchang, LI Ping, YANG Zhiming. Design and Implementation of FPGA chip digital clock management[J]. Semiconductor Technology,2011,(11):848-852.
[3] 段雷.基于DSP+FPGA的圖像處理電路板硬件設(shè)計[D].成都:西南交通大學(xué),2014.
DUAN Lei. DSP and FPGA-based image processing circuit board hardware design[D]. Chengdu: Southwest Jiaotong University,2014.
[4] 曹新莉,蔣飛,朱曄.基于CPLD與SDRAM的視頻信號采集系統(tǒng)設(shè)計[J].電力自動化設(shè)備,2007,27(9):100-103.
CAO Xinli, JIANG Fei, ZHU Ye. Video Signal Acquisition System Based on CPLD and SDRAM[J]. Electric Power Automation Equipment,2007,27(9):100-103.
[5] 賈偉琦.基于可編程邏輯器件的SDRAM控制器的設(shè)計[J].硅谷,2013,(7):24-25.
JIA Weiqi. Design of SDRAM Controller Based on programmable logic device[J]. Silicon Valley,2013,(7):24-25.
[6] 劉延飛,楊鐵阡,李琪,等.多總線地面測試設(shè)備中雙SDRAM控制器的設(shè)計[J].電訊技術(shù),2011,51(4):31-34.
LIU Yanfei, YANG Tieqian, LI Qi, et al. Design of dual SDRAM Controller in multi-bus ground test equipment[J]. Telecommunication Engineering,2011,51(4):31-34.
[7] 侯宏錄,張文芳.基于FPGA的SDRAM控制器設(shè)計方案[J].兵工自動化,2012,31(2):57-60.
HOU Honglu, ZHANG Wenfang. SDRAM controller design based on FPGA[J]. Ordnance Industry Automation,2012,31(2):57-60.
[8] 康磊,雒明世.基于FPGA的雙端口SDRAM控制器的實現(xiàn)[J].電氣自動化,2013,35(4):97-99.
KANG Lei, LUO Mingshi. Achieve SDRAM controller based on FPGA dual-port[J]. Electric Automation,2013,35(4):97-99.
[9] 戈志偉.面向CIS圖像處理SoC的算法、架構(gòu)及復(fù)雜多媒體SoC中通信網(wǎng)絡(luò)研究[D].天津:天津大學(xué),2011.
GE Zhiwei. CIS image-oriented research SoC network algorithms, architecture, and complex multimedia SoC communication process[D]. Tianjin: Tianjin University,2011.
[10] 陳少明.IPQAM中的包緩存器設(shè)計與實現(xiàn)[D].武漢:華中科技大學(xué),2011.
CHEN Shaoming. Packet buffer Design and Implementation in IPQAM[D]. Wuhan: Huazhong University of Science and Technology,2011.
中圖分類號TP332
DOI:10.3969/j.issn.1672-9722.2016.03.034
作者簡介:程光偉,男,副教授,研究方向:通信與電子信息。陳玲玲,女,碩士研究生,研究方向:FPGA控制信號采集。
收稿日期:2015年9月10日,修回日期:2015年10月24日