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