S3C2440與SDRAM的地址連線分析
S3C2440有27根地址線ADDR[26:0],8根片選信號(hào)ngcs0-ngcs7,對(duì)應(yīng)bank0-bank7,當(dāng)訪問bankx的地址空間,ngcsx引腳為低電平,選中外設(shè)。
本文引用地址:http://cafeforensic.com/article/201611/322776.htm2^27=2^7 * 2^10 * 2^10 = 128Mbyte
8*128Mbyte = 1Gbyte
所以S3C2440總的尋址空間是1Gbyte。
市面上很少有32位寬度的單片SDRAM,一般選擇2片16位SDRAM擴(kuò)展得到32位SDRAM.
選擇的SDARM是HY57V561620F,4Mbit * 4bank *16,共32Mbyte。
首先了解下SDRAM的尋址原理。
SDRAM內(nèi)部是一個(gè)存儲(chǔ)陣列。可以把它想象成一個(gè)表格。和表格的檢索原理一樣,先指定行,再指定列,就可以準(zhǔn)確找到所需要的存儲(chǔ)單元。這個(gè)表格稱為邏輯BANK。目前的SDRAM基本都是4個(gè)BANK。尋址的流程就是先指定BANK地址,再指定行地址,最后指定列地址。這就是SDRAM的尋址原理。存儲(chǔ)陣列示意圖如下:
查看HY57V561620F的資料,這個(gè)SDRAM有
13根行地址線 RA0-RA12
9根列地址線 CA0-CA8
2根BANK選擇線 BA0-BA1
SDRAM的地址引腳是復(fù)用的,在讀寫SDRAM存儲(chǔ)單元時(shí),操作過程是將讀寫的地址分兩次輸入到芯片中,每一次都由同一組地址線輸入。兩次送到芯片上去的地址分別稱為行地址和列地址。它們被鎖存到芯片內(nèi)部的行地址鎖存器和列地址鎖存器。/RAS是行地址鎖存信號(hào),該信號(hào)將行地址鎖存在芯片內(nèi)部的行地址鎖存器中;/CAS是列地址鎖存信號(hào),該信號(hào)將列地址鎖存在芯片內(nèi)部的列地址鎖存器中。
地址連線如下圖:
SDRAM的A0接S3C2440的ADDR2,很多初學(xué)者都對(duì)這里又疑問。A0為什么不接ADDR0?
要理解這種接法,首先要清楚在CPU的尋址空間中,字節(jié)(8位)是表示存儲(chǔ)容量的唯一單位。
用2片HY57V561620F擴(kuò)展成32位SDRAM,可以認(rèn)為每個(gè)存儲(chǔ)單元是4個(gè)字節(jié)。因此當(dāng)它的地址線A1:A0=01時(shí),處理器上對(duì)應(yīng)的地址線應(yīng)為ADDR3:ADDR2=01(因?yàn)镃PU的尋址空間是以Byte為單位的)。所以SDRAM的A0引腳接到了S3C2440的ADDR2地址線上。
同理,如果用1片HY57V561620F,數(shù)據(jù)線是16位,因?yàn)橐粋€(gè)存儲(chǔ)單元是2個(gè)字節(jié),這時(shí)SDRAM的A0要接到S3C2440的ADDR1上。
也就是說SDRAM的A0接S3C2440的哪一根地址線是根據(jù)整個(gè)SDRAM的數(shù)據(jù)位寬來決定的。
上面的接線圖上,BA0,BA1接ADDR24,ADDR25,為什么用這兩根地址線呢?
BA0~BA1代表了SDRAM的最高地址位。因?yàn)镃PU的尋址空間是以字節(jié)(Byte)為單位的,本系統(tǒng)SDRAM容量為64MByte,那就需要A25~A0(64M=2^26)地址線來尋址,所以BA1~BA0地址線應(yīng)該接到2440的ADDR25~ADDR24引腳上。
13根行地址線+9根列地址線 = 22根。另外HY57V561620F一個(gè)存儲(chǔ)單元是2個(gè)字節(jié),相當(dāng)于有了23根地址線。BA0,BA1是最高地址位,所以應(yīng)該接在ADDR24,ADDR25上。
也就是說SDRAM的BA0,BA1接S3C2440的哪幾根地址線是根據(jù)整個(gè)SDRAM的容量來決定的。
評(píng)論