程光偉 陳玲玲
(西安工業(yè)大學(xué)電子信息工程學(xué)院 西安 710021)
?
高速圖像采集系統(tǒng)中的SDRAM緩存模塊設(shè)計(jì)*
程光偉陳玲玲
(西安工業(yè)大學(xué)電子信息工程學(xué)院西安710021)
摘要在數(shù)字視頻圖像采集及其實(shí)時(shí)顯示系統(tǒng)中,由于前端傳感器采集速度過(guò)快,一般與后端顯示系統(tǒng)時(shí)鐘不匹配,大量的數(shù)據(jù)需要先進(jìn)行緩存再輸入給后端的顯示模塊。針對(duì)以上問(wèn)題,在研究SDRAM原理和時(shí)序的基礎(chǔ)上,采用verilog語(yǔ)言,成功實(shí)現(xiàn)基于FPGA的SDRAM控制器設(shè)計(jì),同時(shí)利用FIFO緩存數(shù)據(jù)很好地解決了前端數(shù)據(jù)采集和后端視頻顯示異步時(shí)鐘域的數(shù)據(jù)交換問(wèn)題,實(shí)現(xiàn)了SDRAM緩存數(shù)據(jù)的功能。論文詳細(xì)介紹各模塊的原理和實(shí)現(xiàn)方法,實(shí)驗(yàn)仿真及結(jié)果表明,設(shè)計(jì)實(shí)現(xiàn)的SDRAM雙端口控制器,具有電路簡(jiǎn)單、工作可靠等優(yōu)點(diǎn),封裝后可以應(yīng)用在別的視頻圖像采集系統(tǒng)的項(xiàng)目中,可縮短開(kāi)發(fā)周期。
關(guān)鍵詞FPGA技術(shù); SDRAM控制器; FIFO緩存; 異步時(shí)鐘; 跨時(shí)鐘域傳輸
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ù)速度很快,為了同步實(shí)現(xiàn)傳感器采集的視頻圖像與VGA的顯示,需要將傳感器捕獲后的數(shù)據(jù)交給VGA進(jìn)行實(shí)時(shí)顯示[1]。傳感器采集的數(shù)據(jù)經(jīng)捕獲、解碼后輸出給VGA,但由于VGA的驅(qū)動(dòng)時(shí)鐘往往與像素時(shí)鐘不同步,無(wú)法實(shí)現(xiàn)實(shí)時(shí)顯示。這時(shí),就要處理不同時(shí)鐘域的數(shù)據(jù)交互問(wèn)題,由于要處理的數(shù)據(jù)量非常大,對(duì)實(shí)時(shí)性要求比較高,且采集圖像的速度和后期處理數(shù)據(jù)的速度不匹配,所以采用SDRAM作為緩存器,實(shí)現(xiàn)跨時(shí)鐘域的數(shù)據(jù)交互問(wèn)題。
FPGA具有運(yùn)行速度快、可重復(fù)編程、集成度高等優(yōu)點(diǎn),是進(jìn)行原始設(shè)計(jì)最理想的載體。為此,以實(shí)時(shí)圖像采集顯示系統(tǒng)中數(shù)據(jù)緩存為應(yīng)用背景,提出一種基于FPGA的SDRAM控制器設(shè)計(jì),同時(shí)利用FIFO很好地解決前端數(shù)據(jù)采集和后端視頻顯示異步時(shí)鐘域數(shù)據(jù)的交換問(wèn)題,實(shí)現(xiàn)了SDRAM緩存數(shù)據(jù)的功能。
2SDRAM緩存模塊設(shè)計(jì)
2.1總體框圖設(shè)計(jì)
在高速數(shù)據(jù)通信系統(tǒng)中,數(shù)據(jù)輸入模塊與數(shù)據(jù)輸出模塊之間主要有數(shù)據(jù)緩存(寫(xiě)FIFO,讀FIFO)模塊和SDRAM控制器組成。盡管SDRAM在同一時(shí)間只能進(jìn)行讀操作或?qū)懖僮?但分別有兩個(gè)異步FIFO作為緩存,所以采用SDRAM存儲(chǔ)器實(shí)現(xiàn)了跨時(shí)鐘域數(shù)據(jù)的交互。SDRAM緩存模塊總體框圖如圖1所示。
圖1 緩存模塊總體框圖
各模塊之間通過(guò)鎖相環(huán)PLL解決時(shí)鐘同步問(wèn)題[2]。以下分別介紹SDRAM控制器的實(shí)現(xiàn)和雙端口讀寫(xiě)操作的實(shí)現(xiàn)。
2.2SDRAM控制器的實(shí)現(xiàn)
2.2.1SDRAM簡(jiǎn)介
SDRAM采用Hynix公司的HY57V283220T-6型號(hào),它支持166MHz、133MHz、125MHz三種時(shí)鐘頻率。采用了86引腳的TSOP封裝,工作電壓為3.3V。采用同步接口的方式,所有的信號(hào)都是在時(shí)鐘的上升沿觸發(fā)。具有32位的數(shù)據(jù)總線和12位的地址總線,其中地址總線是時(shí)分復(fù)用的,存儲(chǔ)架構(gòu)為(1M×4)×32bit。
與各種SDRAM一樣,這種SDRAM具有以下幾個(gè)特點(diǎn): 1) 采取行列地址復(fù)用原則,SDRAM的地址線在不同的命令下提供不同的地址,行列地址復(fù)用13根地址線[3]。 2) 需要定時(shí)刷新。 3) 在進(jìn)行讀寫(xiě)時(shí),需先激活行。換頁(yè)讀寫(xiě)時(shí)要預(yù)充電關(guān)閉的行,然后再激活新的行進(jìn)行讀寫(xiě)。 4) SDRAM正常工作之前配置模式寄存器。SDRAM具有較多的控制命令,具體命令如表1所示。
表1 配置命令表
SDRAM在每次開(kāi)機(jī)進(jìn)入正常工作狀態(tài)之前,需要進(jìn)行芯片的初始化,依次為:200μs輸入穩(wěn)定期,所有L-BANK的預(yù)充電,八個(gè)刷新周期和模式寄存器設(shè)置(MRS),其關(guān)鍵在于模式寄存器的設(shè)置,用于設(shè)定SDRAM的操作模式,CAS潛伏期,突發(fā)方式和突發(fā)長(zhǎng)度。當(dāng)SDRAM進(jìn)入MRS時(shí),地址線上即為MRS操作碼,具體參數(shù)設(shè)置如表2所示。在視頻系統(tǒng)中數(shù)據(jù)的讀出和寫(xiě)入往往是連續(xù)的,因此若要使SDRAM的帶寬最大化,應(yīng)當(dāng)使SDRAM工作在全頁(yè)模式下。
表2模式寄存器操作參數(shù)表
2.2.2SDRAM控制器方案
SDRAM控制器針對(duì)SDRAM的指令操作特點(diǎn),為SDRAM提供同步命令接口和時(shí)序邏輯控制[4],圖2為SDRAM控制器的接口原理圖。
圖2 SDRAM控制器接口原理圖
接口信號(hào)介紹:
1) 與主機(jī)接口信號(hào):CLK:系統(tǒng)時(shí)鐘信號(hào);RESET:系統(tǒng)復(fù)位信號(hào);CMD[2∶0]:譯碼指令;CMDACK:指令應(yīng)答信號(hào),通知主機(jī)命令已被SDRAM執(zhí)行;ADDR:地址線,根據(jù)具體情況確定位數(shù),這里采用22位,A21、A20代表Bank地址;A19~A8代表行地址;A7~A0代表列地址;DATAIN/DATAOU:輸入、輸出數(shù)據(jù)總線;DM:數(shù)據(jù)掩碼;
2) 與SDRAM接口信號(hào):SADDR:12位地址線,在讀、寫(xiě)操作時(shí),地址線分時(shí)復(fù)用為行地址和列地址;BA:Bank地址;CS:片選信號(hào);CKE:時(shí)鐘使能信號(hào);RAS、CAS、WE:命令控制信號(hào);DQM:SDRAM數(shù)據(jù)掩碼;DQ:雙向數(shù)據(jù)線;
SDRAM控制器時(shí)序控制模塊由命令接口、控制接口和數(shù)據(jù)位寬控制共三部分組成[5]。
1) 命令接口模塊對(duì)輸入進(jìn)去的cmd等命令進(jìn)行解析,輸出相應(yīng)的指令給控制模塊,此外在命令接口模塊還包含對(duì)SDRAM模式寄存器的設(shè)置,可以設(shè)置SDRAM的突發(fā)讀寫(xiě)長(zhǎng)度和預(yù)充電周期等[6]。
2) 控制接口模塊則直接通過(guò)相關(guān)命令實(shí)現(xiàn)SDRAM的操作時(shí)序。該模塊在上電初期,首先進(jìn)行SDRAM的初始化,初始化完成后才開(kāi)始正常的讀/寫(xiě)操作。這里取SDRAM(HY57V283220T-6)每隔15μs刷新一次,其依據(jù)為其存儲(chǔ)體中電容的數(shù)據(jù)有效保存期上限為64ms,刷新命令一次對(duì)一行有效,而其每頁(yè)有4096行,因此刷新速度應(yīng)快于64ms/4096=15.6μs,這里取15μs。工作狀態(tài)包括:空閑狀態(tài)(W_IDLE)、自刷新?tīng)顟B(tài)(W_AR)、行選通狀(W_ACTIVE)、行選通周期狀態(tài)(W_TRCD)、讀數(shù)據(jù)狀態(tài)(W_READ)、讀潛伏期狀態(tài)(W_CL)、N個(gè)數(shù)據(jù)讀出期狀態(tài)(W_RD)、讀后預(yù)充電狀態(tài)(W_RWAIT)、寫(xiě)數(shù)據(jù)狀態(tài)(W_RITE)、N個(gè)數(shù)據(jù)寫(xiě)入期狀態(tài)(W_WD)、寫(xiě)回狀態(tài)(W_TDAL),狀態(tài)機(jī)如圖3[7]。
圖3 SDRAM控制器狀態(tài)機(jī)
3) 數(shù)據(jù)位寬控制模塊主要是在write和read命令期間處理數(shù)據(jù)的路徑操作。模塊數(shù)據(jù)線用來(lái)傳輸從SDRAM讀出數(shù)據(jù)和向SDRAM寫(xiě)入的數(shù)據(jù)。數(shù)據(jù)位寬控制模塊還可以接收主機(jī)輸入的數(shù)據(jù)掩碼,進(jìn)而控制SDRAM I/O緩沖的低字節(jié)和高字節(jié)。
2.3雙端口讀寫(xiě)操作的實(shí)現(xiàn)
要想實(shí)現(xiàn)SDRAM的緩存和解決前端數(shù)據(jù)采集和后端視頻顯示異步時(shí)鐘域數(shù)據(jù)的交換問(wèn)題,還要在SDRAM控制器前后加入一個(gè)寫(xiě)入端口和讀取端口。這里的雙端口包括寫(xiě)的WR_FIFO和一個(gè)讀取的RD_FIFO,兩個(gè)FIFO可以通過(guò)QUARTUS 2中IP核例化得到。寫(xiě)端口WR_FIFO的輸入數(shù)據(jù)是圖像傳感器的數(shù)據(jù),而其輸出數(shù)據(jù)是寫(xiě)入到SDRAM中的,其輸入時(shí)鐘頻率由圖像傳感器的數(shù)據(jù)傳輸率決定,輸出時(shí)鐘頻率采用125MHz[8]。讀端口RD_FIFO的輸入數(shù)據(jù)來(lái)自SDRAM,輸入時(shí)鐘頻率為125MHz,而且其輸出數(shù)據(jù)送往VGA顯示器,輸出頻率有顯示模式?jīng)Q定。接收的圖像數(shù)據(jù)存入WR_FIFO中[9],端口仲裁器會(huì)將其寫(xiě)入到SDRAM中,并在適當(dāng)?shù)臅r(shí)候?qū)D像數(shù)據(jù)送往RD_FIFO,這樣VGA顯示所需的數(shù)據(jù)就可以從RD_FIFO中讀取了。雙端口的FIFO讀/寫(xiě)控制主要包括:
1) 當(dāng)有外部數(shù)據(jù)寫(xiě)入請(qǐng)求時(shí),寫(xiě)入數(shù)據(jù)到WR_FIFO緩存;
2) 當(dāng)有外部數(shù)據(jù)讀取請(qǐng)求時(shí),輸出RD_FIFO中緩存的數(shù)據(jù)[10];
3) 當(dāng)WR_FIFO中的數(shù)據(jù)大于256個(gè)時(shí),請(qǐng)求SDRAM寫(xiě)入,等到響應(yīng)時(shí)開(kāi)始突發(fā)寫(xiě)入一頁(yè)數(shù)據(jù);
4) 當(dāng)RD_FIFO中的數(shù)據(jù)小于256個(gè)時(shí),請(qǐng)求SDRAM讀取,等到響應(yīng)時(shí)開(kāi)始開(kāi)始突發(fā)讀取一頁(yè)數(shù)據(jù)。
圖4給出WR_FIFO的操作時(shí)序流程圖,RD_FIFO的時(shí)序流程與WR_FIFO的流程相似。
圖4 WR_FIFO操作時(shí)序
盡管SDRAM在同一時(shí)間只能進(jìn)行讀操作或?qū)懖僮?但分別有兩個(gè)異步FIFO作為緩存,所以采用SDRAM存儲(chǔ)器實(shí)現(xiàn)了跨時(shí)鐘域數(shù)據(jù)的交互。
3設(shè)計(jì)實(shí)現(xiàn)及時(shí)序特性
筆者在Quartus11.0環(huán)境下進(jìn)行設(shè)計(jì)輸入,用Modelsim工具進(jìn)行仿真驗(yàn)證。圖5是Modelsim工具對(duì)SDRAM控制器的功能仿真結(jié)果,圖中顯示了SDRAM數(shù)據(jù)讀寫(xiě)時(shí)序,SDRAM芯片各控制信號(hào)的狀態(tài)。其中clk是時(shí)鐘信號(hào),rst_n是復(fù)位信號(hào),低電平有效,bank_switch_falg是bank之間切換的標(biāo)記信號(hào),frame_write_done是讀信號(hào),frame_read_done是寫(xiě)信號(hào)。圖中顯示了SDRAM數(shù)據(jù)讀寫(xiě)時(shí)序,SDRAM芯片各控制信號(hào)的狀態(tài)。該控制器應(yīng)用于圖像采集和顯示系統(tǒng)中,完全能夠滿足實(shí)時(shí)數(shù)據(jù)存儲(chǔ)和處理的要求。
圖5 SDRAM控制器的功能仿真結(jié)果
4結(jié)語(yǔ)
實(shí)現(xiàn)了基于FPGA的高速數(shù)據(jù)采集系統(tǒng)中的SDRAM緩存模塊,采用verilog語(yǔ)言,在ALTERA公司的FPGA(EP2C35F672C6)芯片上成功實(shí)現(xiàn)SDRAM控制器,同時(shí)利用FIFO很好地解決前端數(shù)據(jù)采集和后端視頻顯示異步時(shí)鐘域數(shù)據(jù)的交換問(wèn)題,實(shí)現(xiàn)了SDRAM緩存數(shù)據(jù)的功能。對(duì)于SDRAM的數(shù)據(jù)讀/寫(xiě)操作而言,只需要進(jìn)行簡(jiǎn)單的FIFO操作,就能實(shí)現(xiàn)海量數(shù)據(jù)的讀寫(xiě),解決了高速采集實(shí)時(shí)顯示系統(tǒng)中數(shù)據(jù)緩存的問(wèn)題。利用FPGA實(shí)現(xiàn)SDRAM雙端口控制器,不僅可以根據(jù)實(shí)際需求靈活進(jìn)行配置,降低專(zhuān)用集成電路的設(shè)計(jì)風(fēng)險(xiǎn),而且具有電路簡(jiǎn)單、工作可靠等優(yōu)點(diǎn)。該技術(shù)同樣可以作為IP核應(yīng)用于不同的數(shù)據(jù)緩存與傳輸系統(tǒng)中,有助于大大縮短產(chǎn)品的開(kāi)發(fā)周期。
參 考 文 獻(xiàn)
[1] 項(xiàng)力領(lǐng),劉智,楊陽(yáng),等.單片SDRAM的數(shù)據(jù)讀寫(xiě)乒乓操作設(shè)計(jì)[J].長(zhǎng)春理工大學(xué)學(xué)報(bào)(自然科學(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í)鐘管理器的設(shè)計(jì)與實(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è)計(jì)[D].成都:西南交通大學(xué),2014.
DUAN Lei. DSP and FPGA-based image processing circuit board hardware design[D]. Chengdu: Southwest Jiaotong University,2014.
[4] 曹新莉,蔣飛,朱曄.基于CPLD與SDRAM的視頻信號(hào)采集系統(tǒng)設(shè)計(jì)[J].電力自動(dòng)化設(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ì)[J].硅谷,2013,(7):24-25.
JIA Weiqi. Design of SDRAM Controller Based on programmable logic device[J]. Silicon Valley,2013,(7):24-25.
[6] 劉延飛,楊鐵阡,李琪,等.多總線地面測(cè)試設(shè)備中雙SDRAM控制器的設(shè)計(jì)[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ì)方案[J].兵工自動(dòng)化,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控制器的實(shí)現(xiàn)[J].電氣自動(dòng)化,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è)計(jì)與實(shí)現(xiàn)[D].武漢:華中科技大學(xué),2011.
CHEN Shaoming. Packet buffer Design and Implementation in IPQAM[D]. Wuhan: Huazhong University of Science and Technology,2011.
中圖分類(lèi)號(hào)TP332
DOI:10.3969/j.issn.1672-9722.2016.03.034
作者簡(jiǎn)介:程光偉,男,副教授,研究方向:通信與電子信息。陳玲玲,女,碩士研究生,研究方向:FPGA控制信號(hào)采集。
收稿日期:2015年9月10日,修回日期:2015年10月24日