前言
隨著高速處理器的不斷發(fā)展,嵌入式系統(tǒng)應(yīng)用的領(lǐng)域越來越廣泛,數(shù)字信號處理的規(guī)模也越來越大,,系統(tǒng)中RAM規(guī)模不斷增加,比如視頻監(jiān)控,、圖像數(shù)據(jù)采集等領(lǐng)域,圖像處理的實時性對RAM帶寬的要求不斷增加,,傳統(tǒng)的SDRAM在帶寬上已經(jīng)逐漸無法滿足應(yīng)用要求,,DDR SDRAM(雙倍速率SDRAM)采用在時鐘CLK信號的上升和下降沿,雙沿做數(shù)據(jù)傳輸,;比傳統(tǒng)的SDRAM只在時鐘上升沿傳輸?shù)姆绞?,傳輸帶寬增加了一倍?a class="innerlink" href="http://forexkbc.com/tags/DDR RAM" title="DDR RAM" target="_blank">DDR RAM已開始廣泛應(yīng)用于嵌入式系統(tǒng)中,正逐步取代傳統(tǒng)的SDRAM,。
DDR RAM操作速度的提高,對設(shè)計者來說,,對控制時序的設(shè)計有了更高的要求,;并且,DDR內(nèi)存采用的是支持2.5V電壓的SSTL-Ⅱ標準,,不再是SDRAM使用的3.3V電壓的LVTTL標準,。在很多的處理器上面并不帶有DDR RAM控制器,這對設(shè)計者來說,,使用DDR RAM難度增加,。往往需要在設(shè)計中插入控制器實現(xiàn)微處理器或DSP對存儲器的控制。
現(xiàn)場可編程門陣列(FPGA)已廣泛應(yīng)用于嵌入式系統(tǒng)中?,F(xiàn)在很多FPGA都提供了針對DDR SDRAM的接口特性:其輸入輸出引腳與SSTL-Ⅱ電氣特性兼容,,內(nèi)部提供了DDR觸發(fā)器、鎖相環(huán)等硬件資源,。使用這些特性,,可以比較容易地設(shè)計性能可靠的高速DDR RAM控制器,。本文針對這一問題,介紹一種采用Lattice FPGA與IP來實現(xiàn)DDR RAM控制和驗證的方法,。
LatticeXP
LatticeXP器件將非易失的FLASH單元和SRAM技術(shù)組合在一起,,支持瞬間啟動和無限可重構(gòu)的單芯片解決方案。FLASH單元陣列中保存用戶配置文件,。上電時,,配置文件在1毫秒內(nèi)從FLASH存儲器中被傳送到配置SRAM中,完成瞬時上電,。
器件內(nèi)部分為:PIC (可編程的I/O單元),,非易失的FLASH MEMORY,SYSCONFIG配置端口,,PFU(可編程功能單元),,PLL(模擬鎖相環(huán)),PFF(非RAM/ROM功能可編程邏輯單元),,EBR(嵌入式RAM塊),,JTAG口等幾部分(見圖1)。
圖1 LatticeXP內(nèi)部結(jié)構(gòu)圖
DDR controller IP的生成
IPExpress是Lattice開發(fā)軟件中生成IP模塊的工具,,可根據(jù)用戶設(shè)定的參數(shù)生成IP模塊,,使用非常方便。
點擊啟動IPexpress進入生成界面(見圖2),。在左邊選取DDR SDRAM工程,,在右邊設(shè)置工程名稱和文件保存地址。
圖2 IPexpress界面
點擊下一步,,開始進入?yún)?shù)設(shè)置(見圖3),。這里面進行設(shè)置DDR RAM的行、列的參數(shù),,以及Bank,。這些參數(shù)都是根據(jù)DDR RAM芯片手冊進行設(shè)置。本文中采用的DDR RAM顆粒是現(xiàn)代公司的HY5DU561622,,16M x16,,4bank顆粒。
圖3 DDR RAM的行,、列的參數(shù)配置
下一步,,進行時序延時上面的設(shè)置(見圖4)。
圖4 DDR RAM顆粒時序參數(shù)配置
在這里設(shè)置tRAC(行訪問周期,,RAS Access Cycle/Delay),、tCAC(列訪問周期,CAS Access Cycle/ Delay)等參數(shù),。這些參數(shù),,在DDR RAM顆粒芯片的手冊中都有詳細的列表,。需要特別指出的是,由于芯片提供商會針對不同的DDR標準,,例如DDR400,,DDR333等,給出不同的延時參數(shù),,會是以ns為單位的幾個不同的列表,,需要根據(jù)設(shè)計的不同,參考不同的表格,。因為IP生成器中采用的是單一參數(shù)設(shè)置,,單位采用了CLK為單位,這就需要根據(jù)設(shè)計標準以及時鐘頻率來轉(zhuǎn)換一下,,進行設(shè)定,。本文采用的是DDR266標準,時鐘為133MHz,,對應(yīng)的時鐘周期為1/133MHz,,大約為7.5ns。這樣,,芯片在DDR266標準的TRCD為20ns(最小值),,對應(yīng)到IP的參數(shù)中就是3。其他參數(shù)也是類似的換算,。
設(shè)置完畢以后,,點擊generate,可以生成IP代碼文件,,如圖5,。
圖5 IP生成
DDR controller IP的使用與驗證
生成的DDR Controller IP的接口結(jié)構(gòu)如圖6所示。
圖6 DDR Controller接口
RAM接口根據(jù)信號的定義,,對應(yīng)DDR RAM接口信號,。另一端是用戶接口,包括復位,、時鐘,、地址,、數(shù)據(jù),、讀寫、狀態(tài)信號等,。數(shù)據(jù)通過用戶接口送入,,通過IP控制時序送到DDR RAM對用的地址當中。
對IP的測試,,采用數(shù)據(jù)寫入與讀出進行校驗的方式來實現(xiàn),。測試框圖如圖7所示,。
圖7 測試原理框圖
在FPGA內(nèi)部做兩個RAM區(qū)域,用于數(shù)據(jù)的保存,。這里使用FPGA內(nèi)部的RAM塊,,做了兩塊256×32b大小的RAM存儲區(qū)。編寫FPGA代碼,,做一個簡單的偽隨機序列發(fā)生器,,通過簡單的異或算法,產(chǎn)生32位隨機數(shù)據(jù)序列,。產(chǎn)生的數(shù)據(jù)存入其中一塊RAM當中,,同時也送到IP的用戶接口端,寫入DDR RAM,。
在256深度的存儲區(qū)域?qū)憹M以后,,開始從DDR RAM回讀數(shù)據(jù)。并把讀取的數(shù)據(jù)送到FPGA內(nèi)部另外一塊RAM當中,。兩塊RAM中對用地址的數(shù)據(jù)作比較,。如果數(shù)據(jù)一致,說明DDR RAM讀寫正常,;如果不同,,說明DDR RAM讀寫操作有錯誤。
由于本設(shè)計采用的是DIMM內(nèi)存條512Mb容量,,因此測試時,,數(shù)據(jù)地址采用基址加變址的方式。每一次測試256×32b的數(shù)據(jù)完成后,,循環(huán)進入下一次測試時,,將起始基地址加256,再進行數(shù)據(jù)操作,。這樣最終完整可以掃描512M的數(shù)據(jù)地址空間,,使測試更加完整。這種測試的方法,,采用小塊地址,,多次操作,可以減少FPGA內(nèi)部RAM的使用量,。
本文中編寫的測試代碼采用Verilog語言編寫,,邏輯如圖8。
圖8 測試代碼邏輯狀態(tài)機
硬件測試結(jié)果
本實驗是在Lattice的XP ADVANCED版demo板上進行的,。
采用的FPGA為LFXP10C-5F384,,內(nèi)存條為Kingston 512M筆記本內(nèi)存條,RAM顆粒為現(xiàn)代HY5DU561622。測試DDR266連續(xù)運行2小時,,數(shù)據(jù)無異常,DDR讀寫操作完全正常,。
結(jié)語
在嵌入式系統(tǒng)中應(yīng)用DDR RAM的越來越多,在設(shè)計當中采用FPGA,,不僅設(shè)計靈活,,而且還可以將周邊的數(shù)字器件綜合設(shè)計進入FPGA,大大提高系統(tǒng)設(shè)計的性價比,。
參考文獻:
1. 胡為,,DDR SDRAM在嵌入式系統(tǒng)中的應(yīng)用,單片機與嵌入式系統(tǒng)應(yīng)用,,2006.3
2. LatticeXP family handbook. Lattice SEMICONDUCTOR Co.,2006.6
3. Lattice DDR1/2 controller user guide.Lattice SEMICONDUCTOR Co.,2006.6