Cyclone II實現(xiàn)DDR SDRAM接口的方法
在不增加電路板復雜度的情況下要想增強系統(tǒng)性能,改善數(shù)據(jù)位寬是一個有效的手段。通常來說,可以把系統(tǒng)頻率擴大一倍或者把數(shù)據(jù)I/O管腳增加一倍來實現(xiàn)雙倍的數(shù)據(jù)位寬。這兩種方法都是我們不希望用到的,因為它們會增加整個設(shè)計系統(tǒng)的復雜度。在總的數(shù)據(jù)I/O管腳不變的情況下,使用雙數(shù)據(jù)率(DDR)I/O管腳來傳輸和接收數(shù)據(jù)也能夠?qū)崿F(xiàn)雙倍數(shù)據(jù)位寬的要求。DDR器件使用時鐘的兩個沿來傳輸數(shù)據(jù),在時鐘頻率和數(shù)據(jù)I/O管腳不變的前提下,比單沿數(shù)據(jù)傳輸(SDR)器件快了一倍。DDR數(shù)據(jù)傳輸廣泛應用于有快速數(shù)據(jù)傳輸需求的場合,如網(wǎng)絡、通信、存儲和圖像處理等領(lǐng)域。
Cyclone II器件支持如SDR SDRAM,DDR SDRAM,DDR2 SDRAM以及QDRII RAM等外部存儲器接口。下面將著重討論Cyclone II器件如何實現(xiàn)DDR SDRAM接口控制的。
Cyclone II器件有專用的與DDR SDRAM接口的data(DQ),data strobe(DQS),clock管腳。一般是8個DQ信號對應與1個DQS信號,DQS信號和DQ信號從DDR SDRAM輸出時是沿對齊的。進入FPGA后要想實現(xiàn)中心對齊,即DQS的變化沿與DQ的中心對齊,那么必須在FPGA內(nèi)部對DQS做延時處理,如Figure 9-1所示。
DDR輸入接口實現(xiàn)如Figure 9-11所示。這也是一個涉及到異步時鐘域數(shù)據(jù)通信的問題,且看它是如何進行同步的。resynch_clk是FPGA內(nèi)部使用的時鐘,DQS相對與和DQ同步的時鐘。這兩個時鐘其實是同頻不同相,相位偏移肯定是要滿足FPGA的采樣時鐘和數(shù)據(jù)信號中心對齊,這涉及到DDR SDRAM的輸出時鐘信號的相位調(diào)整。
輸入信號DQS經(jīng)過反向延時后與DQ信號中心對齊,然后分別使用方向延時后的DQS信號的下降沿和上升沿鎖存DQ信號前后輸入的數(shù)據(jù)Q0和Q1,同時在上升沿時會對前一級采樣的Q0信號再進行一次鎖存,從而使Q0和Q1信號在被FPGA同步時鐘采樣前達到同頻同相。FPGA內(nèi)部時鐘通過對經(jīng)過處理后的Q0和Q1信號采樣達到了雙沿數(shù)據(jù)輸入的采樣。詳細波形如Figure 9-12所示。
DDR輸出接口實現(xiàn)如Figure 9-14所示。經(jīng)過90度相移的DDR SDRAM時鐘先對FPGA內(nèi)部時鐘域的待輸出信號進行一次鎖存,然后由相移時鐘的高低電平選擇作為當前輸出給DDR SDRAM的數(shù)據(jù)信號。
詳細波形如Figure 9-15所示。[!--empirenews.page--]
雙向接口的實現(xiàn)只是將前面討論的輸入和輸出方式進行綜合。不論是DQ還是DQS信號,在作為FPGA的輸入管腳時,內(nèi)部給這個管腳的賦值為高阻態(tài),從而確保讀取的輸入信號有效。