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