1. 程式人生 > >自己學驅動12——儲存控制器

自己學驅動12——儲存控制器

1.2440的BANK
    2440一共提供給外部8個BANK(BANK0~BANK7),每個BANK均為128MB的地址空間,一共1GB地址空間。2440對外引出了27根地址線ADDR0~ADDR26,這27根地址線的訪問地址大小為128MB,2440對外還引出了8根片選訊號nGCS0~nGCS7,對應於BANK0~BANK7,當訪問BANKx的地址空間時,nGCSx引腳輸出低電平,27根地址線與8根片選訊號(相當於多出3根地址線)共同完成1GB空間的訪問操作。
    2440作為32位的CPU,可以使用的地址範圍理論上為4GB,除去上述用於連線外設的1GB的地址空間外,還有一部分是CPU內部暫存器的地址,剩下的地址空間沒有使用。

2.2440為SDRAM提供的訊號

    BANK0~BANK5的連線方式都是相似的,BANK6連線SDRAM時複雜一點,2440提供了一組用於SDRAM的訊號如下:
    >> SDRAM時鐘有效訊號SCKE;
    >> SDRAM時鐘訊號SCLK0/SCLK1;
    >> 資料掩碼訊號DQM0/DQM1/DQM2/DQM3;
    >> SDRAM片選訊號nSCS0(它與nGCS6是同一引腳的兩個功能);
    >> SDRAM行地址選通脈衝訊號nSRAS;
    >> SDRAM列地址選通脈衝訊號nSCAS;
    >> 寫允許訊號nWE(這個訊號並非專用於SDRAM)。

3.SDRAM內部儲存結構

    SDRAM內部是一個儲存陣列,陣列就如同表格一樣,先指定一個行(Row),再指定一個列(Column),就可以準確地找到所需要的單元格,這就是SDRAM定址的基本原理。這個單元格被稱為儲存單元,這個儲存矩陣就是邏輯Bank(以下簡稱L-Bank),SDRAM一般含有4個L-Bank。

4.SDRAM的訪問步驟
    (1)CPU發出片選訊號nSCS0有效,選中SDRAM晶片。
    (2)SDRAM中有4個L-Bank,需要兩根地址訊號來選中其中一個,假設為ADDR24、ADDR25作為L-Bank的選擇訊號。
    (3)對被選中的晶片進行統一的行/列定址。
     根據SDRAM晶片的列地址線數目設定CPU的相關暫存器之後,CPU就會從32位地址中自動分出L-Bank選擇訊號、行地址訊號以及列地址訊號,然後先後發出行地址訊號和列地址訊號。L-Bank選擇訊號在發出行地址訊號的同時發出,並維持到列地址訊號結束。
    32位寬度時2440的ADDR0與ADDR1均不使用,2440的ADDR2連線SDRAM的ADDR0,實現4位元組對齊訪問。
    (4)找到儲存單元之後,被選中的晶片就要進行統一的資料傳輸。

5.儲存控制器的相關暫存器

    (1)位寬和等待控制暫存器BWSCON
    (2)BANK控制暫存器BANKCONx(x為0~5)
     用來控制BANK0~BANK5外接裝置的訪問時序。
    (3)BANK控制暫存器BANKCONx(x為6~7)
    用來控制BANK6~BANK7外接裝置的訪問時序。
    (4)重新整理控制暫存器REFRESH
    (5)BANKSIZE暫存器
    (6)SDRAM模式設定暫存器MRSRBx(x為6~7)