DSP片外高速海量SDRAM存儲系統(tǒng)設計
1 IS42S16400芯片簡介
IS42S16400是ISSI公司推出的一種單片存儲容量高達64Mb(即8MB)的16位字寬高速SDRAM芯片。SDRAM的主要特點是:①同步訪問,讀寫操作需要時鐘;②動態(tài)存儲,芯片需要定時刷新。IS42S16400采用CMOS工藝,它的同步接口和完全流水線的內部結構使其擁有極大的數(shù)據(jù)傳輸速率,可以工作在高達133MHz時鐘頻率下,刷新頻率每64ms為4096次。該SDRAM芯片內部有4個存儲體(bank),通過行、列地址分時復用系統(tǒng)地址總線,對不同存儲體內不同頁面的具體存儲單元進行讀寫訪問尋址。在進行讀操作之間,必須預先激活SDRAM內對應的存儲體,并選擇存儲器的某一行,然后送入列地址讀取需要的數(shù)據(jù)。從輸出列地址到SDRAM返回相應數(shù)據(jù)之間存在一個存取延遲。如果訪問新的頁面,則先需要關閉所有的存儲體,否則已打開的頁面將一直有效。在寫操作之前,由于已經(jīng)預先激活了有關的行地址,因此可以在輸出列地址的同時輸出數(shù)據(jù),沒有延遲。IS42S16400提供自刷新模式的設置,可以使芯片運行在低功耗的狀態(tài)下,從而大大減少嵌入式系統(tǒng)的功率消耗。
2 C6201與SDRAM的外部存儲器接口
DSP芯片訪問片外存儲器時必須通過外部存儲器接口EMIF(External Memory Interface)。C6000系列DSPs的EMIF具有很強的接口能力,不僅具有很高的數(shù)據(jù)吞吐率(最高達1200MB/s),而且可以與目前幾乎所有類型的存儲器直接接口。在C6201系統(tǒng)中,提供了4個彼此獨立的外存接口(CEx)。除CE1空間只支持異步接口外,所有的外部CEx空間都支持對SDRAM的直接接口。表1總結了C620X DSPs的EMIF所兼容的SDRAM配置。表2給出了C6000系列DSPs的EMIF所支持的SDRAM控制命令。
2.1 SDRAM的刷新
為了提高存儲容量,SDRAM采用硅片電容來存儲信息。隨著時間的推移,必須給電容重新充電才能保持電容里的數(shù)據(jù)信息,這就是所謂的“刷新”,它的存在也使得SDRAM的應用變的略顯復雜,帶來了一定的應用難度。
C6000系列DSPs有專門的SDRAM控制寄存器(SDTCL)和SDRAM時序控制寄存器(SDTIM),用來進行SDRAM的各種時序控制,大大減輕了設計人員的開發(fā)難度,SDCTL寄存器中的RFEN位控制是否由EMIF完成對SDRAM的刷新。如果RFEN=1,EMIF會控制向所有的SDRAM空間發(fā)出刷新命令(REFR);而SDTIM寄存器中的PERIOD位段則控制具體的刷新周期。
在REFR命令之前,會自動插入一個DCAB命令,以保證刷新過程中所有的SDRAM都處于未激活狀態(tài)。DCAB命令之后,EMIF開始按照SDTIM寄存器中PERD字段設置的值進行定時刷新。刷新前后,頁面信息會變?yōu)闊o效。
對于C620X,EMIF SDRAM控制模塊內部有一個2位的計數(shù)器,用來監(jiān)測提交的刷新申請的次數(shù)。每提交一個申請,計數(shù)器加1;每次刷新周期之后,計數(shù)器減1。復位時,計數(shù)器自動置為11b,以保證在存取訪問之前先進行若干次刷新。計數(shù)器自動置為11b,代表緊急刷新狀態(tài),此時頁面信息寄存器變無效,迫使控制器關閉當前的SDRAM頁面。然后,EMIF SDRAM控制器在DCAB命令后執(zhí)行3次REFR命令,使計數(shù)器的值減為0,再繼續(xù)完成余下的存取操作。
2.2 SDRAM的初始化
當某個CE空間配置為SDRAM空間后,必須首先進行初始化。用戶不需要控制初始化的每一個步驟,只需要向EMIF SDCTL寄存器的INIT位寫1,申請對SDRAM作初始化。然后,EMIF就會自動完成所需要的各步操作。初始化操作不能在進行SDRAM存取過程中進行。整個初始化過程包括下面幾個步驟:
①對所有的SDRAM空間發(fā)出DCAB命令;
?、趫?zhí)行3個REFR命令;
?、蹖λ械腟DRAM空間發(fā)出MRS命令。
2.3 頁面邊界控制
SDRAM屬于分頁存儲器,EMIF的SDRAM控制器會監(jiān)測訪問SDRAM時行地址的情況,避免訪問時發(fā)生行越界。為了完成這一任務,EMIF在內部有四個頁面寄存器,自動保存當前打開的行地址,然后與后續(xù)存取訪問的地址進行比較。需要說明的是,當前存取操作結束并不會引起SDRAM中已經(jīng)激活的行被立即關閉,EMIF的控制原則是維持當前的打開狀態(tài),除非必須關閉。這樣做的好處是可以減少關閉/重新打開之間的命令切換時間,使接口在存儲器訪問的控制過程中充分利用地址信息。
對于C620X,每個CE空間包含1個頁面寄存器(只對配置為SDRAM空間有效),因此C620X每個CE空間1次只能激活1頁。進行比較的地址位數(shù)取決于SDCTL寄存器中SDWID位的值。如果SDWID=0,該CE空間構成頁面的大小為512,比較的邏輯地址是位23~11;如果SDWID=1,該CE空間SDRAM構成頁面的大小為256,比較的邏輯地址是位23~10。一旦發(fā)現(xiàn)存取訪問發(fā)生了頁面越界,EMIF會自動執(zhí)行DCAB操作,然后再開始新的行訪問。
2.4 訪問地址的移位
由于SDRAM行邏輯地址與列邏輯地址復用相同的EMIF引腳,所以EMIF接口需要對行地址與列地址進行相應的移位處理。地址的移位處理由SDCRL寄存器中的SDWID位控制。
另外,對于SDRAM,因為輸入地址也是控制信號,因此需要說明以下幾點:
①RAS有效期間的高位地址信號會被EMIF內部SDRAM控制器鎖存,以保證執(zhí)行READ和WRT命令時選通正確的bank;
?、赗EAD/WRT操作期間,EMIF會保持pre-charge信號為低(C620X是SDA10),以防止READ/WRT命令執(zhí)行后發(fā)生auto-pre-charge操作。
2.5 接口時序的設計
對于C620X,EMIF與SDRAM的接口時序由SDCTL寄存器控制。EMIF提供了5個時序參數(shù),其中3個在SDCTL寄存器中設置,另外2個為固定值,如表3所列。在分析接口時序的配合情況時,需要計算“富裕時間”tmargin的大小,這是在考慮了SDRAM芯片的器件手冊提供的最壞情況之后,得到的時序上的一個裕量,至于tmargin值的大小,是系統(tǒng)設計層需要考慮的問題,具體要求隨不同的系統(tǒng)而異,而且與印制板的實際布線情況以及負載的情況密切相關。
3 系統(tǒng)設計中IS42S16400芯片的應用
3.1 C6201與IS42S16400的接口實現(xiàn)
由于IS42S16400屬于16位字寬的64Mb SDRAM芯片,而C6201的EMIF只提供32位字寬的同步外存儲接口,為了使整個系統(tǒng)的存儲空間保持連續(xù),使用2片SDRAM與DSP芯片組成實際大小為16MB的外部存儲系統(tǒng),如圖1所示。圖1中IS42S16400芯片各引腳含義如下:CS,片選;CLK,系統(tǒng)同步時鐘;RAS,行地址選擇;CAS,列地址選擇;WE,讀/寫使能;CKE,時鐘使能,DQMU、DQML,高低字節(jié)使能;A[13:12],Bank地址選擇線;A[11:0]行、列地址先;DQ[15:0],雙向數(shù)據(jù)端口。
由圖1可以看出,雖然C6201提供32位地址尋址能力,但是經(jīng)EMIF直接輸出的地址信號只有EA[21:2]。一般情況下,EA2信號對應邏輯地址A2,但這并不意味著DSP芯片訪問外存時只能進行word(32位)的存取,實際內部32位地址的最低2~3位經(jīng)譯碼后由BEx輸出,是能夠控制字節(jié)訪問的。更高位邏輯地址經(jīng)譯碼后輸出CE[3:0]。
在實際的系統(tǒng)實現(xiàn)中,C6201的CLKOUT1時鐘頻率為200MHz,故而SDRAM的實際工作頻率為100MHz,(SDCLK=CLKOUT2=CLKOUT1 frequency/2),即tcyc=10ns。SDRAM被配置在CE2空間(起始邏輯地址為0x02000000)。
3.2 C6201 EMIF SDRAM寄存器設置
表4列出了配置SDRAM需要設置的EMIF寄存器名稱及相應的位或位段。
EMIF全局控制寄存器中的SDCEN位,(位6)設置為1,用來使能SDRAM同步時鐘SDCLK的輸出。EMIFEC2空間控制寄存器中的MTYPE位段(位6~4)設置為011b,用來配置CE2為32位寬的SDRAM空間。由IS42S16400數(shù)據(jù)手冊可查得tRC=70ns、tRP=18ns,tRCD=18ns,故而EMIF SDRAM控制寄存器中的TRC位段(位15~12)應設置為0110b,TRP位段(位19~16)應設置為0001b,TRCD位段(位23~20)應設置為0001b。INIT位(位24)置1,用來強制對SDRAM進行上電初始化。RFEN位(位25)置1,用來使能EMIF對SDRAM的刷新。SDWID位(位26)置1,用來向EMIF表明所使用的SDRAM芯片的字寬為16位,由于IS42S16400的刷新頻率為每64ms4096次,故根據(jù)公式PERIOD=trefresh/tcyc,EMIF SDRAM時序控制寄存器中的PERIOD位段(位11~0)被設置為0x61A。
3.3 CCS開發(fā)環(huán)境中SDRAM配置程序源代碼
TI公司的集成開發(fā)環(huán)境CCS(Code Composer Studio)中,IS42S16400SDRAM芯片的配置程序C代碼如下:
?。nclude<emif.h> … /*其他用戶程序*/ /*讀出EMIF控制寄存器的默認設置*/
unsigned int g_ctrl=GET_REG(EMIF_GCTRL);
unsigned int ce0_ctrl=GET_REG(EMIF_CE0_CTRL);
unsigned int ce1_ctrl=GET_REG(EMIF_CE1_CTRL);
unsigned int ce2_ctrl=GET_REG(EMIF_CE2_CTRL);
unsigned int ce3_ctrl=GET_REG(EMIF_CE3_CTRL);
unsigned int sdram_ctrl=GET_REG(EMIF_SDRAM_CTRL);
unsigned int sdram_ref=GET_REG(EMIF_SDRAM_REF);
/*EMIF全局控制寄存器-使能SDCLK*/
SET_BIT(&g_ctrl,SDCEN);
/*設置CE2為SDRAM空間*/
LOAD_FIELD(&ce2_ctrl,MTYPE_23SDRAM,MTYPE,MTYPE_SZ);
/*設置SDRAM控制寄存器*/
LOAD_FIELD(&sdram_ctrl,6,TRC,TRC_SZ);
LOAD_FIELD(&sdram_ctrl,1,TRP,TRP_SZ);
LOAD_FIELD(&sdram_ctrl,1,TRCD,TRCD_SZ);
SET_BIT(&sdrrm_ctrl,SDWID);
SET_BIT(&sdrrm_ctrl,INIT);
SET_BIT(&sdrrm_ctrl,RFEN);
/*設置SDRAM的刷新周期*/
LOAD_FIELD(&sdram_ref,0x61A,PERIOD,PERIOD_SZ);
/*重配制EMIF控制寄存器*/
emif_inif(g_ctrl,ce0_ctrl,cel_ctrl,ce2_ctrl,ce3_ctrl, sdram_ctrl,sdram_ref);
…/*其他用戶程序*/
結語
以上介紹了TMS320C6201 DSP芯片與SDRAM(IS42S16400)的具體硬件接口實現(xiàn)。由于SDRAM具有的大容量、高速度和低價格的優(yōu)勢,使用SDRAM構建嵌入式應用海量存儲系統(tǒng)會成為一種行之有效的方法。目前該系統(tǒng)已調試完畢。使用SDRAM作為DSP系統(tǒng)外接高速、大容量主存儲器具有非常明顯的優(yōu)勢,充分顯示了SDRAM在嵌入式系統(tǒng)中的良好應用前景。