現(xiàn)代的處理器(SoC)或DSP都內(nèi)建有內(nèi)存控制器,,它是外部SDRAM、FLASH,、EEPROM,、SRAM……等內(nèi)存的控制接口。但不同處理器內(nèi)部的內(nèi)存控制方式都不盡相同,,而且它們的控制程序大部分都位于開機(jī)程序內(nèi),,皆屬于匯編語言,所以常令人不知所云,。
SDRAM的規(guī)格
現(xiàn)代的處理器并不需要額外的外部器件,,就可以直接將外部內(nèi)存連接至處理器的腳位上。但是,,在選擇SDRAM時,,還是必須考慮下列幾項(xiàng)因素:
● 工作電壓
● 最大的工作頻率
● 最大的記憶容量
● I/O大小和排數(shù)(bank number)
● “列地址閃控(column address strobe;CAS)”的延遲(latency)
● 刷新(refresh)的速率
● 分頁大小(page size)
● 初始化的順序(sequency):可程序化的順序是MRS=>REF(refresh)或REF=>MRS。
上述參數(shù)都列在SDRAM規(guī)格中,,它們必須能符合處理器內(nèi)部的內(nèi)存控制器之要求,,惟有如此,才不需要額外的外部器件,,否則就必須另外設(shè)計(jì)邏輯電路來銜接,。在圖1中,SDRAM-B無法符合ADSP-TS201S處理器的內(nèi)存控制器的要求,。因?yàn)镾DRAM-B的“突發(fā)資料組之寬度(burst length)”是1,,而不是“全分頁”;而且SDRAM-B的分頁大小是2048字組(word或16bits),但是ADSP-TS201S處理器最多只能支持1024字組,。所以,,相較之下,應(yīng)該SDRAM-A才對。
緩存器的設(shè)定
與其它控制器一樣,,處理器內(nèi)部的內(nèi)存控制器也需要透過緩存器(register)去設(shè)定它的組態(tài)與功能,。根據(jù)圖1的規(guī)格,可以設(shè)定ADSP-TS201S處理器的“SDRAM控制緩存器(SDRCON)”,。SDRCON緩存器的初始值是0,,表示SDRAM是在禁能(disable)狀態(tài)。圖2是SDRCON緩存器的每個位的名稱,。
1. 位0(SDRAM ENABLE):設(shè)為1時,,表示有SDRAM存在。
2. 位1~2(CAS LATENCY;CL):表示當(dāng)讀取(read)命令發(fā)出之后,,至數(shù)據(jù)出現(xiàn)時之間的時間,。它與寫入作業(yè)無關(guān)。此值可以在SDRAM規(guī)格表中查到,,如圖3所示,。假設(shè)外部總線速率是100MHz,則CL應(yīng)設(shè)為2,。有些SDRAM的時序參數(shù)(例如:CL,、tRAS,、tRP…..等)是根據(jù)不同的傳輸速率和速率等級(speed grade)而定的,。
3.位3(PIPE DEPTH):當(dāng)有數(shù)個SDRAM并排使用時,可能需要外部緩沖存儲器(buffer),,這時,,此位必須設(shè)為1。不過,,如果SDRAM腳位上的電容值遠(yuǎn)低于30pF,,則此位可以設(shè)為0。
4.位4~5(PAGE BOUNDARY):分頁邊界,,是用來定義分頁的大小,,單位是字組。此值與“列的地址(column addresses)”數(shù)目相等,。圖4是SDRAM-A的規(guī)格,,從中可以查出:列地址的總數(shù)目是256(A0~A7),因此,,分頁大小是256,。
5. 位7~8(REFRESH RATE):這個值能決定處理器內(nèi)部的刷新計(jì)數(shù)器(refresh counter)之值,好讓處理器的速率能與外部SDRAM所需的刷新速率相配合,。于圖4中,,刷新計(jì)數(shù)值是4K;而且在SDRAM規(guī)格中,會經(jīng)常見到:64ms,4096 cycle refresh或者4096 cycles/64ms或15.6μs/row,。刷新速率的計(jì)算公式是:cycles=SOCCLK×tREF/Rows,,其中,SOCCLK是處理器的CPU速率,,tREF是SDRAM刷新間隔(refresh period),,Rows是行地址的位數(shù)目。假設(shè)SOCCLK等于250MHz,,由上述公式可以求得刷新速率等于3900周期(cycles),。因此,實(shí)際的刷新速率必須等于或小于3900周期,,但是ADSP-TS201S處理器的內(nèi)存控制器最多只支持3700周期,,所以此值要設(shè)定為3700。
6. 位9~10(PRC TO RAS DELAY):此參數(shù)決定SDRAM的Precharge到RAS之間的延遲時間,,也就是tRP,,如圖5所示。圖6是SDRAM的時序規(guī)格范例,,其中,,傳輸率屬-6等級者,它的最小tRP值是18ns,,若使用100MHz速率,,則至少需要1.8周期(100MHz×18ns=1.8)。因此,,tRP應(yīng)該設(shè)為2周期,。
7. 位11~13(RAS TO PRC DELAY):此參數(shù)決定RAS到Precharge之間的延遲時間,也就是tRAS,。如圖6所示,,最小的tRAS值是42ns,若使用100MHz速率,,則至少需要4.2周期,。因此,tRAS應(yīng)該設(shè)為5周期,。
8. 位14(INIT SEQUENCE):它決定SDRAM于開機(jī)時的初始化程序,。若此程序是:在開機(jī)后100μs內(nèi),至少必須執(zhí)行一個COMMAND INHIBIT或NOP命令,,之后,,執(zhí)行PRECHARGE命令,此時,,SDRAM是處于閑置(idle)狀態(tài),。然后,執(zhí)行兩個AUTO-REFRESH,再設(shè)定“模式緩存器(mode register)”,。最后,,才能執(zhí)行讀寫作業(yè)。這表示此SDRAM的初始化時間至少需要:PRE+2×Autorefresh+MRS(mode register set),。