AMBA-AHB總線SDRAM控制器的設(shè)計(jì)
AMBA 2.0總線為嵌入式微控制器定義了一套片上總線標(biāo)準(zhǔn),因此本設(shè)計(jì)是獨(dú)立設(shè)計(jì)的基于該規(guī)范的外圍IP.
4 SDRAM 控制器系統(tǒng)設(shè)計(jì)架構(gòu)
SDRAM 控制器與AHB 總線接口在整個(gè)系統(tǒng)中的連接關(guān)系如圖3所示。
4.1 AHB-slave總線接口電路
AHB-slave總線接口電路用來實(shí)現(xiàn)SDRAM 控制邏輯與AHB-master之間的信號(hào)傳輸。
按照AMBA 總線規(guī)范要求,AHB 總線從設(shè)備(slave)在總線時(shí)鐘上升沿,HREADY信號(hào)(由從設(shè)備發(fā)出)為高的情況下,必須鎖存來自AHB總線的總線控制信號(hào)、數(shù)據(jù)信號(hào)、地址信號(hào)等,以供內(nèi)部譯碼模塊以及其他各模塊使用。
4.2 總線地址譯碼
AHB 總線可以掛多個(gè)從設(shè)備,如圖3 所示的從機(jī)A,從機(jī)B.因此在一次讀寫操作中,需要對(duì)來自總線的讀寫地址進(jìn)行譯碼,以判斷總線是對(duì)哪個(gè)從設(shè)備進(jìn)行訪問,并產(chǎn)生相應(yīng)的內(nèi)部片選信號(hào)。
4.3 SDRAM控制器
SDRAM 控制器由5個(gè)模塊組成:SDRAM 控制器模塊、控制接口模塊、命令解析模塊、地址數(shù)據(jù)復(fù)用總線模塊和數(shù)據(jù)通路模塊。SDRAM 控制器模塊是頂層模塊,通過例化其他4個(gè)子模塊將其連成一個(gè)整體。
4.3.1 控制接口模塊
控制接口模塊對(duì)來自AHB 總線信號(hào)和SDRAM 控制寄存器的信號(hào)解碼并寄存,傳送已經(jīng)解碼的NOP、WRITEA、READA、REFRESH、PRECHARGE 和LOAD_MODE命令和ADDR給命令解析模塊。
控制接口模塊還含有一個(gè)用于給命令解析模塊產(chǎn)生周期刷新命令的刷新電路,用于給命令模塊發(fā)送刷新請(qǐng)求。收到命令模塊的刷新請(qǐng)求后,減法計(jì)數(shù)器重新裝入數(shù)值,重復(fù)以上過程。
本設(shè)計(jì)所使用的MT48LC16M4A2 型號(hào)SDRAM 存儲(chǔ)器具有每64 ms刷新4 096次的要求,因此由64 ms/4 096=15.625 09 μs知,器件必須至少每15.625 09 μs刷新一次。假如存儲(chǔ)器和SDRAM控制器工作在100 MHz的時(shí)鐘周期下,那么刷新間隔周期的最大數(shù)值是15.625 μs/0.01 μs=1 562 d.
4.3.2 命令解析模塊
命令解析模塊接收控制接口模塊輸出的已經(jīng)解碼的命令和周期性輸出的刷新請(qǐng)求,產(chǎn)生合適的命令給SDRAM器件。從刷新控制邏輯電路發(fā)出的刷新請(qǐng)求比主機(jī)接口的命令的優(yōu)先級(jí)別高,因此模塊還含有一個(gè)簡(jiǎn)易的仲裁電路,用于仲裁主機(jī)的命令和刷新控制邏輯所產(chǎn)生的刷新請(qǐng)求。
在仲裁電路已經(jīng)接受主機(jī)命令后,命令被送到模塊的命令發(fā)生器部分,命令模塊使用3個(gè)移位寄存器來產(chǎn)生命令之間的時(shí)序,一個(gè)移位寄存器用于控制ACT 命令;第二個(gè)用于控制讀或?qū)懨畎l(fā)出的時(shí)間;第三個(gè)用于對(duì)命令的持續(xù)時(shí)間定時(shí),這樣仲裁其就可以判斷最近請(qǐng)求的操作是否已經(jīng)完成。
命令解析模塊所產(chǎn)生的輸出信號(hào)OE用于控制數(shù)據(jù)通路模塊的輸入數(shù)據(jù)通路的三態(tài)緩沖。
4.3.3 地址數(shù)據(jù)復(fù)用總線模塊
該模塊實(shí)現(xiàn)SDRAM的地址復(fù)用,地址的行部分在ACT(RAS)命令時(shí)復(fù)用到SDRAM輸出的A[11:0],地址的列部分在讀(CAS)或?qū)懨顣r(shí)復(fù)用到SDRAM地址線上。
4.3.4 數(shù)據(jù)通路模塊
數(shù)據(jù)通路模塊提供了SDRAM和主機(jī)之間的數(shù)據(jù)接口,負(fù)責(zé)SDRAM控制器與外部SDRAM存儲(chǔ)器之間的數(shù)據(jù)交換,具體說就是在對(duì)SDRAM寫操作時(shí)將來自AHB總線的數(shù)據(jù)放到外部數(shù)據(jù)線上,在對(duì)SDRAM讀操作時(shí),將來自SDRAM的數(shù)據(jù)正確送到AHB總線上。
5 設(shè)計(jì)實(shí)現(xiàn)與仿真結(jié)果
本文使用Micron 公司提供的型號(hào)為MT48LC16M4A2 的Verilog 仿真模型進(jìn)行仿真驗(yàn)證,證明了設(shè)計(jì)的正確性。仿真結(jié)果如圖4,圖5所示,圖4是SDRAM寫操作的仿真時(shí)序圖,即將AHB總線控制操作轉(zhuǎn)化成SDRAM 寫操作指令;圖5 表示的是將寫入SDRAM的數(shù)據(jù)連續(xù)讀出的仿真時(shí)序。
6 結(jié)語(yǔ)
本方案設(shè)計(jì)了一個(gè)基于AMBA-AHB 總線的SDRAM控制器,將AMBA-AHB 總線的控制操作轉(zhuǎn)化成了符合SDRAM 操作規(guī)范的控制指令,最后的仿真波形證實(shí)了該設(shè)計(jì)的正確性。
評(píng)論