為什么2440與SDRAM地址線(xiàn)錯(cuò)兩位相連?
為什么2440與SDRAM地址線(xiàn)錯(cuò)兩位相連?
網(wǎng)上說(shuō),錯(cuò)兩位是為了32位對(duì)齊(地址為8位數(shù)據(jù)地址,2440位寬為32,錯(cuò)兩位,一次跳4byte)。
下面是聽(tīng)南方大哥的教程時(shí)記錄的:
由于兩個(gè)內(nèi)存合起來(lái)“數(shù)據(jù)位寬”是32位。32時(shí),地址總線(xiàn)的地址LADDR0和LADDR1不需要使用。
內(nèi)存是32位數(shù)據(jù)寬度,2440的 LADDR0和LADDR1就不用接,從LARRD2開(kāi)始接到內(nèi)存的A0一直往下接。 內(nèi)存是16位數(shù)據(jù)寬度,2440的LADDR0不用接,從LADDR1開(kāi)始接到內(nèi)存的A0一直往下接。 內(nèi)存是8位數(shù)據(jù)寬度,2440就從LADDR0開(kāi)如接到8位位寬的內(nèi)存的A0一直往下接。
原因:2440的地址單位是“字節(jié)”。如果內(nèi)存芯片位寬是32位(即讀或?qū)憙?nèi)存一次都是得到4字節(jié)),這時(shí)CPU發(fā)出0,1,2,3這4個(gè)地址,都是訪(fǎng)問(wèn)到這個(gè)內(nèi)存芯片的同一個(gè)單元,返回則都是返回同一個(gè)4字節(jié)的數(shù)據(jù)(CPU訪(fǎng)問(wèn)內(nèi)存某些地址上的數(shù)據(jù),訪(fǎng)問(wèn)內(nèi)存上某地址后取到地址上的數(shù)據(jù))。這樣CPU發(fā)出的0,1,2,3這4個(gè)地址就對(duì)應(yīng)了內(nèi)存上的同一塊。 CPU發(fā)出0~3這4個(gè)地址去訪(fǎng)問(wèn)內(nèi)存中數(shù)據(jù),而內(nèi)存只能夠以32位來(lái)訪(fǎng)問(wèn),返回的永遠(yuǎn)是4字節(jié),接收的也永遠(yuǎn)是4字節(jié)。這樣對(duì)于CPU發(fā)出的0~3這4個(gè)地址,都是返回4個(gè)字節(jié)給CPU。而CPU如何處理返回的數(shù)據(jù)則是CPU 的事情,假如CPU其實(shí)只是想要返回4字節(jié)中的1個(gè)字節(jié),則這就要CPU內(nèi)部的存儲(chǔ)管理器去把返回4字節(jié)中想要的1字節(jié)挑出來(lái)。那去“硬件連線(xiàn)”上來(lái)看就是把0,1這兩個(gè)地址(LADDR0-1)忽略掉,因?yàn)椴还躄ADDR0和 LADDR1如何變化,訪(fǎng)問(wèn)到32位位寬內(nèi)存的都是同一個(gè)地址,起作用的都是LADDR2之后的地址。 只是我不知道如何計(jì)算,這里 忽略 LADDR0-1,是如何計(jì)算出來(lái)的?
回復(fù):為什么2440與SDRAM地址線(xiàn)錯(cuò)兩位相連?
你把一個(gè)地址代進(jìn)去試試看,比如CPU發(fā)出0X10000、0X10001這兩個(gè)地址,ADDR1、ADDR0分別為00、01,但是由于ADDR0、ADDR1不接到外部的芯片上,所以訪(fǎng)問(wèn)到的都是芯片上第(0x10000 >> 2)個(gè)單元