高速圖像處理系統(tǒng)中DDR2-SDRAM接口的設(shè)計(jì)
摘要:為了滿足高速圖像處理系統(tǒng)中需要高接口帶寬和大容量存儲(chǔ)的目的,采用了FPGA外接DDR2-SDRAM的設(shè)計(jì)方法,提出一種基于VHDL語(yǔ)言的DDR2-SDRAM控制器的方案,針對(duì)高速圖像處理系統(tǒng)中的具體情況,在Xilinx的ML506開發(fā)板上搭建了簡(jiǎn)單的圖像處理系統(tǒng)平臺(tái)并進(jìn)行了連續(xù)讀/寫標(biāo)準(zhǔn)VGA格式圖像數(shù)據(jù)的實(shí)驗(yàn),在顯示端得到了清晰不掉幀的圖像結(jié)果,具有結(jié)構(gòu)簡(jiǎn)單和高速存取圖像的特點(diǎn)。
關(guān)鍵詞:圖像處理;DDR2-SDRAM控制器;FPGA;緩存設(shè)計(jì)
0 引言
隨著電子信息技術(shù)的快速發(fā)展,數(shù)字信號(hào)處理技術(shù)的應(yīng)用越來(lái)越廣泛,一般而言,同屬于數(shù)字信號(hào)處理的圖像系統(tǒng)處理帶寬遠(yuǎn)高于控制及雷達(dá)信號(hào)處理系統(tǒng)??刂祁I(lǐng)域的信號(hào)采樣頻率一般低于1 MHz,雷達(dá)信號(hào)采樣頻率可以高達(dá)幾百M(fèi)Hz,但經(jīng)過(guò)硬件(ASIC)下變頻處理后,也不高于1 MHz。而圖像系統(tǒng)的處理帶寬一般在幾十兆至幾百兆字節(jié)每秒。所以高處理帶寬是圖像處理系統(tǒng)設(shè)計(jì)中必須考慮的問(wèn)題,高處理帶寬帶來(lái)的另外一個(gè)問(wèn)題是緩存設(shè)計(jì),顯然系統(tǒng)中的緩存也應(yīng)該具有較高帶寬。同時(shí)在圖像處理系統(tǒng)中,特別是高幀頻圖像處理系統(tǒng)中是需要大容量緩存的。控制及雷達(dá)領(lǐng)域一般需要的緩存為幾KB到幾十KB,而圖像處理至少需要2幀圖像以實(shí)現(xiàn)乒乓緩存,在圖像處理時(shí)間超過(guò)幀獲取時(shí)間時(shí),需要3幀緩存以保證系統(tǒng)累積丟幀而非一旦超時(shí)就發(fā)生丟幀。
在實(shí)際工作中,高幀頻圖像的高處理帶寬和大存儲(chǔ)需求往往需要結(jié)合起來(lái)考慮,集中體現(xiàn)在外掛緩存的選擇與設(shè)計(jì)上,較成熟的方案有SRAM,SDRAM,DDR,DDR2,DDR3等,其中DDR3有最高接口帶寬和存儲(chǔ)深度,考慮到具體情況,選用僅次于DDR3的DDR2與FPGA實(shí)現(xiàn)接口,可以滿足高速圖像處理系統(tǒng)對(duì)高接口帶寬和大容量存儲(chǔ)的要求。
DDR2 SDRAM是由JEDEC(電子設(shè)備工程聯(lián)合委員會(huì))進(jìn)行開發(fā)的內(nèi)存技術(shù)標(biāo)準(zhǔn),工作電壓是1.8 V,采用了在時(shí)鐘的上升/下降沿同時(shí)進(jìn)行數(shù)據(jù)傳輸?shù)幕痉绞?。DDR2具有4 b預(yù)讀取速度,即DDR2內(nèi)存每個(gè)時(shí)鐘能夠以4倍外部總線的速度讀/寫數(shù)據(jù),同時(shí)DDR2的數(shù)據(jù)傳輸可以支持400 MHz,533 MHz,667 MHz的傳輸率。
文中在介紹DDR2的工作原理的基礎(chǔ)上,給出了一個(gè)用VHDL語(yǔ)言設(shè)計(jì)的DDR2 SDRAM控制器的方法,并且提出了一種在高速圖像處理系統(tǒng)中DDR2 SDRAM的應(yīng)用方案,同時(shí)在Virtex-5系列的FPGA上得到了實(shí)現(xiàn)。
1 DDR2-SDRAM控制器的操作原理與設(shè)計(jì)
1.1 DDR2-SDRAM的操作原理
DDR2 SDRAM是運(yùn)用DDR結(jié)構(gòu)來(lái)達(dá)到高速操作。本文采用的DDR2-SDRAM是Micron的MT4H3264HY-53ED3。這款DDR2的存儲(chǔ)空間為256 MB,由4片容量為512 Mb的內(nèi)存芯片構(gòu)成。每個(gè)芯片的數(shù)據(jù)位寬為16 b,有4 bank,13條行地址線,10條列地址線,因此每個(gè)內(nèi)存芯片容量為8 192×
1 024×4×16 b,即512 Mb。4片組成起來(lái)就構(gòu)成了MT4H3264HY-53ED3的64 b位寬。
DDR2 SDRAM的操作主要通過(guò)以下控制信號(hào)給出:行地址選擇信號(hào)(),列地址選擇信號(hào)(),寫使能信號(hào)(),時(shí)針使能信號(hào)(CKE),片選擇信號(hào)()。各種指令不同的組合方式完成不同的功能。表1為各種指令完成的組合方式。
1.1.1 Load Mode指令
用來(lái)配置DDR2內(nèi)存的模式寄存器,包括一個(gè)主模式寄存器及3個(gè)擴(kuò)展模式寄存器,它們被用來(lái)設(shè)定內(nèi)存的工作方式,包括突發(fā)長(zhǎng)度的選擇、突發(fā)的類型、CAS延遲、CAS附加延遲、DLL使能、ODT設(shè)置、OCD設(shè)置以及DQS設(shè)置等。
1.1.2 Precharge指令
預(yù)充電指令是用來(lái)重新激活bank中已經(jīng)打開的行。在預(yù)充電指令發(fā)出后,當(dāng)前bank必須等待一個(gè)特定的時(shí)間(tRP)后才可以再次激活。
1.1.3 自動(dòng)刷新指令
DDR2 SDRAM內(nèi)存需要每7.8μs刷新一次。自動(dòng)刷新不需要外部提供行地址信息,DDR2 SDRAM內(nèi)部有一個(gè)行地址生成器(也稱刷新計(jì)數(shù)器)用來(lái)自動(dòng)的依次生成行地址。由于刷新是針對(duì)一行中所有的存儲(chǔ)體進(jìn)行,所以無(wú)需列地址。在進(jìn)入自動(dòng)刷新模式前,所有的bank必須都處于預(yù)充電狀態(tài),自動(dòng)刷新指令在預(yù)充電指令后延遲tRP才能給出。
1.1.4 Active指令
Active用來(lái)激活bank中的某一行。在對(duì)DDR2內(nèi)存進(jìn)行讀/寫之前,都必須執(zhí)行該指令把bank中的某一行激活。激活命令到讀/寫命令之間的最小延遲由AL決定,當(dāng)AL為0時(shí),最小延遲由tRCD(RAS to CAS delay)決定。當(dāng)AL不為0時(shí),激活命令到讀/寫命令之間的最小延遲就可以不受tRCD限制,讀/寫命令可以提前,但其實(shí)最后數(shù)據(jù)的讀/寫并不提前,這樣可以提高總線的利用率。
需要注意的是,當(dāng)要激活同一bank中不同的行時(shí),必須先對(duì)原來(lái)激活的行進(jìn)行預(yù)充電,才能激活新的行。同一bank中連續(xù)的active命令之間的間隔必須受tRC(RAS cycle time)的控制。
評(píng)論