DDR SDRAM是建立在SDRAM的基礎(chǔ)上的,但是速度和容量卻有了提高。首先,它使用了更多的先進(jìn)的同步電路。其次,它使用延時(shí)鎖定回路提供一個(gè)數(shù)據(jù)濾波信號(hào)。當(dāng)數(shù)據(jù)有效時(shí),存儲(chǔ)器控制器可使用這個(gè)數(shù)據(jù)濾波信號(hào)精確地定位數(shù)據(jù),每16位輸出一次,并且同步來(lái)自不同的雙存儲(chǔ)器模塊的數(shù)據(jù)。
DDR SDRAM不需要提高時(shí)鐘頻率就能加倍提高SDRAM的速度,因?yàn)樗试S在時(shí)鐘脈沖的上升沿和下降沿讀寫(xiě)數(shù)據(jù)。至于地址和控制信號(hào),還是跟傳統(tǒng)的SDRAM一樣,在時(shí)鐘的上升沿進(jìn)行傳輸。
由于微處理器、DSP等不能直接使用DDR SDRAM,所以本文介紹一種基于FPGA的DDR SDRAM控制電路。
?

?
1 DDR SDRAM控制器的設(shè)計(jì)
1.1總體邏輯圖
DDR SDRAM控制器的總體邏輯圖如圖1所示。主要由DDR控制模塊(Controller)、DDR接口模塊 ddr_interface 以及延時(shí)鎖定回路模塊(DLL)三部分組成。下面詳細(xì)介紹各個(gè)模塊的設(shè)計(jì)。
1.2 DDR控制模塊的設(shè)計(jì)
DDR控制模塊包含了主要的狀態(tài)轉(zhuǎn)換。處理器通過(guò)sys_cmd對(duì)DDR控制模塊寫(xiě)入命令,完成總線(xiàn)仲裁、解釋命令、時(shí)序分配等任務(wù)。當(dāng)DDR接口模塊對(duì)DDR SDRAR數(shù)據(jù)讀寫(xiě)時(shí)便進(jìn)行控制。
控制器的狀態(tài)機(jī)如圖2所示。控制器開(kāi)始設(shè)置在空閑(Idle)狀態(tài),接下去的狀態(tài)根據(jù)控制命令的不同可以是預(yù)充電 Precharge 、導(dǎo)入模式寄存器 Load Mode Register 、刷新 Refresh 、有效 Active 等狀態(tài)。要進(jìn)入讀寫(xiě)數(shù)據(jù)狀態(tài),必須先經(jīng)過(guò)有效狀態(tài)。讀數(shù)據(jù)時(shí),狀態(tài)機(jī)由有效狀態(tài)轉(zhuǎn)換為讀準(zhǔn)備狀態(tài) 然后根據(jù)指令進(jìn)入讀狀態(tài)??刂颇K保持在讀狀態(tài)直到脈沖終止命令觸發(fā)或者數(shù)據(jù)讀完。寫(xiě)的過(guò)程與讀類(lèi)似,在后面的接口模塊中將詳細(xì)介紹。
?

?
1.3 DDR接口模塊
DDR接口模塊負(fù)責(zé)維持外部信號(hào)、DDR控制器與DDR SDRAM之間的雙向數(shù)據(jù)總線(xiàn)信號(hào),保證數(shù)據(jù)和命令能送達(dá)DDR SDRAM。
圖3給出了讀寫(xiě)操作的數(shù)據(jù)流框圖。對(duì)寫(xiě)周期而言,128位的sys_data_i被fpga_clk2x分頻為64位的數(shù)據(jù),通過(guò)lac_clk選擇高低位。為了減小輸入輸出的延遲,數(shù)據(jù)在進(jìn)出模塊時(shí)都將被保存在輸入輸出寄存器中。ddr_write_en產(chǎn)生ddr_dq所需的三態(tài)信號(hào)。
對(duì)于寫(xiě)周期而言,64位的ddr_dq信號(hào)在輸入輸出寄存器被fpga_clk2x觸發(fā)裝配成128位的信號(hào),其中低位信號(hào)在下降沿時(shí)被裝配,高位信號(hào)在上升沿時(shí)被裝配。
圖4給出了一個(gè)典型的寫(xiě)操作的波形圖。在T1期間,寫(xiě)命令、地址和第一個(gè)128位數(shù)據(jù)被分別置于sys_cmd、sys_addr和sys_data_i三個(gè)端口。在T2期間 控制器的狀態(tài)由空閑轉(zhuǎn)變?yōu)橛行?。接下?lái)兩個(gè)周期,控制器給出ACTIVE命令以及行片選地址。再經(jīng)3個(gè)周期的延遲以后,控制器給出WRITEA命令和列片選地址。接下來(lái),ddr_dq和ddr_dqs被設(shè)置成雙倍速率模式。
?

?
1.4 DLL模塊
圖5示出了給FPGA以及DDR SDRAM提供時(shí)鐘信號(hào)的兩個(gè)DLL模塊的結(jié)構(gòu)圖。第一個(gè)DLL模塊,即DLL_EXT給DDR SDRAM提供ddr_clk及ddr_clkb兩個(gè)時(shí)鐘信號(hào),并且接收ddr_clk的反饋。第二個(gè)DLL模塊,即DLL_INT給FPGA提供兩個(gè)內(nèi)部時(shí)鐘信號(hào)fpga_clk和fpga_clk2x,它的反饋信號(hào)來(lái)自fpga_clk。兩個(gè)DLL有著相同的時(shí)鐘輸入,但是不同的反饋信號(hào)保證了輸入時(shí)鐘和FPGA?xí)r鐘以及DDR SDRAM時(shí)鐘之間的零延遲。
?

?
2 實(shí)現(xiàn)
本設(shè)計(jì)選用XILINX公司的Vietex-E系列FPGA來(lái)實(shí)現(xiàn),因?yàn)檫@個(gè)系列內(nèi)嵌的DLL模塊和可選擇輸入輸出.
?

?
結(jié)構(gòu)的特點(diǎn)能極大地方便設(shè)計(jì)。仿真結(jié)果顯示,在133MHz的主頻下,最高能獲得1.6GB/s的速率。
本文給出了基于FPGA的DDR SDRAM控制器的設(shè)計(jì)。從仿真中可以看出,這種結(jié)構(gòu)的DDR控制器有著很高的性能,因此將得到廣泛的應(yīng)用。
電子發(fā)燒友App































評(píng)論