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