一種DSP內(nèi)嵌DARAM的電路設(shè)計與ADvance MS仿真驗證
摘要:介紹了一種DSP芯片內(nèi)嵌DARAM的電路結(jié)構(gòu),詳細分析了接口電路中各個模塊的功能,包括地址譯碼電路,字線譯碼電路,位線選擇電路及控制電路四部分內(nèi)容。著重介紹了控制電路的原理,及如何實現(xiàn)一個周期“雙存取”的功能。利用數(shù)模混合仿真工具ADvance MS對整體電路進行仿真,結(jié)果證明DARAM可以在一個時鐘周期內(nèi)完成一次讀和一次寫操作,實現(xiàn)預(yù)期的功能,為DSP設(shè)計乃至SOC的設(shè)計工作提供了參考。
在復(fù)雜的系統(tǒng)級微處理器設(shè)計中,存儲器負責(zé)系統(tǒng)程序和數(shù)據(jù)的儲存,是整個系統(tǒng)的重要組成部分,在CPU執(zhí)行指令的過程中,要經(jīng)常被訪問存儲器,所以存儲器的讀寫速度會影響指令執(zhí)行的速度。RAM是系統(tǒng)芯片中常用的存儲器,用來存放數(shù)據(jù),普通的RAM在一個時鐘周期內(nèi)只能進行一次讀或?qū)懖僮鳎碈PU在一個時鐘周期內(nèi)只能訪問存儲器一次,稱為單存取隨機存儲器(Single-Access On-Chip RAM),而雙存取隨機存儲器(Dual-Access On-Chip RAM)可以在一個吋鐘周期內(nèi)進行數(shù)據(jù)的讀和寫兩次操作。利用DARAM一個周期內(nèi)“雙存取”的特點,可以大幅提高CPU執(zhí)行指令的速度,進而提高整個系統(tǒng)的性能。
1 DARAM整體電路
DARAM整體電路如圖1所示,該DARAM的大小為256字x 16位,用來存儲數(shù)據(jù),輸入信號為兩相不交疊時鐘SCLOCK1和SCLOCK2,數(shù)據(jù)寫總線DWE,數(shù)據(jù)讀地址總線DRA和數(shù)據(jù)寫地址總線DWA,讀使能R_en和寫使能W_en(高電平有效),輸出信號為數(shù)據(jù)讀總線DRD。
DARAM的存儲陣列根據(jù)地址的高低分為大小相等的兩塊,接口電路主要包括地址譯碼、地址選擇、字線譯碼、位線選擇和控制電路幾個部分。其中,控制電路中的讀寫使能信號與內(nèi)部時鐘共同作用產(chǎn)生的脈沖信號,會使地址選擇電路在一個時鐘周期內(nèi)的高低電平部分,分別輸出讀地址和寫地址,這樣就可以使位線選擇電路在一個周期內(nèi)進行讀寫兩次操作,這是接口電路中的重要部分,也是隨機存儲器可以進行“雙存取”的關(guān)鍵。
2 DARAM電路設(shè)計
2.1 地址譯碼
該DARAM的物理地址為0300H-03FFH,所以讀寫地址的高8位必須為“0000_0011”,地址譯碼電路的功能就是判斷高8位地址是否匹配,如果地址匹配W_en和R_en才會輸入到控制電路。
2.2 控制電路
控制電路實現(xiàn)的功能有:產(chǎn)生內(nèi)部時鐘,讀寫脈沖信號和預(yù)充電控制信號OE。
圖2中SCLOCK1和SCLOCK2高電平不交疊,當(dāng)SCLOCK1為高時輸出0,SCLOCK2為高時輸出1,都為低時輸出保持不變,這樣兩相時鐘就轉(zhuǎn)換成一相內(nèi)部時鐘CLK,如圖3。
圖4產(chǎn)生的讀寫脈沖信號Rs與Ws會控制地址選擇模塊。W_en經(jīng)過一個高電平觸發(fā)的觸發(fā)器,是為了寄存半個周期的時間,使輸出的讀脈沖Rs和寫脈沖Ws交替產(chǎn)生,形成單周期雙脈沖,是可以實現(xiàn)“雙存取”的關(guān)鍵。
圖5電路中,當(dāng)進行讀操作時,R_en為高,在時鐘上跳的瞬間,由于邏輯門的延遲,輸出信號會出現(xiàn)一小段低電平,之后再升高,這樣就產(chǎn)生了一個很窄的脈沖Rss,見圖6。類似的,由SCLOCK2和W_en也會產(chǎn)生寫信號窄脈沖Wss。
Rss與Wss并不是最后控制讀寫放大器的控制脈沖,因為讀出與寫入數(shù)據(jù)的時間很關(guān)鍵,也就是說脈沖的寬度要很精確,讀脈沖如果過寬的話不僅會增大靈敏放大器的能量消耗,也會減慢數(shù)據(jù)讀出的速度,時間要恰好使位線上的電壓可以滿足靈敏放大器的靈敏度,而寫脈沖如果太窄,數(shù)據(jù)會無法寫入,所以要設(shè)計的恰到好處。
圖7所示電路可以產(chǎn)生讀寫控制脈沖和預(yù)充電控制信號。RSE是讀脈沖,WSE是寫脈沖,OE是預(yù)充電控制信號,由讀寫地址的第7位A7選擇要控制的存儲塊。負載電容的大小就決定了讀寫脈沖的寬度,所以需經(jīng)過精確設(shè)計。最終輸出的波形如圖8。
2.3 地址選擇
由控制電路產(chǎn)生的Rs和Ws會控制DRA和DWA低8位的傳輸,使兩條地址總線有選擇性的輸出,產(chǎn)生一條8位的讀寫地址總線,其中地址[1:0]經(jīng)過譯碼會控制四條位線,進行位線選擇,地址[6:2]會進行字線譯碼,地址經(jīng)過控制電路產(chǎn)生存儲陣列的塊選擇信號。
2.4 位線選擇與存儲陣列
位線選擇電路包括讀寫放大器和多路選擇器。圖9為一個位線選擇單元,根據(jù)最低兩位數(shù)據(jù)地址來選擇4組位線,由讀寫控制脈沖RSE和WSE決定對位線進行讀或?qū)懖僮?。這就意味著在一個周期內(nèi),并不是對任意兩個讀寫地址都可以進行操作,也就是說,進行“雙存取”的兩個地址必須相近,這也是可以實現(xiàn)“雙存取”的關(guān)鍵。
存儲陣列的結(jié)構(gòu)如圖10。存儲單元為常用的6管SRAM單元,進行讀寫操作時,OE由低變高,預(yù)充電管關(guān)閉,通過讀寫放大器對位線的充電與放電來實現(xiàn)數(shù)據(jù)讀寫。
3 仿真驗證
為了使仿真結(jié)果準(zhǔn)確,輸入波形應(yīng)該與實際情況一致,先用ModelSim對整體DSP芯片進行仿真,然后觀察DARAM的輸入端,按照所得的輸入信號再單獨對DARAM進行仿真,由于電路中既有數(shù)字電路也有模擬電路,所以采用數(shù)模混合仿真的方法,用ADvance MS對該電路進行仿真。仿真波形如圖11。
在4個時鐘周期內(nèi),對DARAM進行三次寫操作和三次讀操作,數(shù)據(jù)在SCLOCK2上升沿時寫入,在SCLOCK1上升沿時讀出,在第二個周期與第三個周期內(nèi),W_en和R_en同時使能,也就是要在一個周期內(nèi)進行兩次操作,進行“雙存取”。從兩塊存儲陣列中讀出的數(shù)據(jù)分別為DRD0和DRD1,可以看出,DRD0依次讀出的三組數(shù)據(jù)0123H、4567H和89ABH即為前一周期寫入的數(shù)據(jù),說明此電路可以正確的讀寫數(shù)據(jù),也可以在一個周期內(nèi)完成一次讀操作和一次寫操作。
4 結(jié)束語
本文以一款國外公司的DSP為例,介紹了其內(nèi)嵌的一塊DARAM的整體電路,給出了關(guān)鍵部分的具體電路,并結(jié)合仿真波形,詳細介紹了電路的工作原理,最后采用數(shù)?;旌戏抡娴姆椒?,用ADvance MS對整體的電路進行仿真,結(jié)果證明此電路可以實現(xiàn)一個周期內(nèi)的“雙存取”功能,可以為DSP乃至SOC中存儲器接口電路的設(shè)計提供一種參考。