久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3941|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

處理器和存儲(chǔ)器的錯(cuò)位相連

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:99624 發(fā)表于 2015-12-27 05:15 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
對(duì)于具體存儲(chǔ)器而言,它的位寬是一定的,所謂位寬,指的是“讀/寫(xiě)操作時(shí),最小的數(shù)據(jù)單元”──別說(shuō)最小單元是“位”,一般存儲(chǔ)器上沒(méi)有單獨(dú)的“位操作”,修改位時(shí)通過(guò)把整個(gè)字節(jié)、字或雙字讀出來(lái)、修改,再回寫(xiě)。對(duì)于處理器來(lái)說(shuō),一個(gè)地址對(duì)應(yīng)的是一個(gè)字節(jié)(8位),也就是說(shuō)處理器的地址線對(duì)應(yīng)的最小數(shù)據(jù)單元是字節(jié)。
       這里需要注意的是,不要把“存儲(chǔ)器的位寬”和“處理器的位數(shù)”這兩個(gè)概念混淆了。存儲(chǔ)器的位寬是讀寫(xiě)存儲(chǔ)器的最小數(shù)據(jù)單元,處理器位數(shù)是處理器可以一次處理的字節(jié)數(shù),32位處理器可以一次處理4字節(jié)數(shù)據(jù)。
     如果處理器最小數(shù)據(jù)單元是8位,存儲(chǔ)器位寬是16位,那在我們寫(xiě)程序時(shí)會(huì)特意進(jìn)行16位操作嗎?顯然不會(huì),我們寫(xiě)代碼時(shí),可不管外設(shè)到底是多少位。這是如何實(shí)現(xiàn)的呢?原因在于有存儲(chǔ)控制器(MemoryController)這個(gè)中間層。
      存儲(chǔ)控制器根據(jù)存儲(chǔ)器的位寬,每次總是讀/寫(xiě)16位數(shù)據(jù)。
      以讀操作為例:
      處理器進(jìn)行8位操作時(shí),它選擇其中的8位返回給處理器;
      處理器進(jìn)行16位操作時(shí),它直接把這16位數(shù)據(jù)返回給處理器;
      處理器進(jìn)行32位操作時(shí),它發(fā)起2次讀/寫(xiě),把結(jié)果組合成32位返回給處理器。
      假設(shè)現(xiàn)在的連線是:處理器的(ADDR1-ADDR20)接到16位的存儲(chǔ)器(A0-A19),即處理器的ADDR0不接──這說(shuō)明:不管ADDR0是0還是1,存儲(chǔ)器接收到的地址是一樣的。處理器發(fā)出地址0bxxxxxxxxx0、0bxxxxxxxxx1時(shí),存儲(chǔ)器看到的都是0bxxxxxxxxx,返回給存儲(chǔ)控制器的都是同一個(gè)16位數(shù)據(jù)。再由MemoryController選擇其中的低8位或高8位給處理器。
       存儲(chǔ)控制器會(huì)做以下事情:
       軟件要讀取地址0上的8位數(shù)據(jù)時(shí),硬件是這樣進(jìn)行的:
        ① MemoryController發(fā)出0b000000000000000000000的地址信號(hào),存儲(chǔ)器的A0-A19線上的信號(hào)是:0b00000000000000000000
        ②存儲(chǔ)器在數(shù)據(jù)總線D0~D15上提供一個(gè)16位的“最小數(shù)據(jù)單元”的數(shù)據(jù);
        ③存儲(chǔ)控制器讀入16位數(shù)據(jù);
        ④存儲(chǔ)控制器把16位數(shù)據(jù)的低8位返回給處理器,就得到了一個(gè)8位數(shù)據(jù)。
       軟件要讀取地址1上的8位數(shù)據(jù)時(shí),硬件是這樣進(jìn)行的:
       ①存儲(chǔ)控制器發(fā)出0b000000000000000000001的地址信號(hào),存儲(chǔ)器的A0-A19線上的信號(hào)是:0b00000000000000000000
       ②存儲(chǔ)器在數(shù)據(jù)總線D0~D15上提供一個(gè)16位的數(shù)據(jù),這是存儲(chǔ)器中的第1個(gè)“最小數(shù)據(jù)單元”
       ③存儲(chǔ)控制器讀入這個(gè)16位數(shù)據(jù)
       ④存儲(chǔ)控制器把這個(gè)16位數(shù)據(jù)的高8位(注意,前面的低8位)返回給處理器,這就是一個(gè)8位數(shù)據(jù)。
      所以:
       外設(shè)位寬是8時(shí),處理器的A0~AXX與外設(shè)的A0~AXX直接相連
       外設(shè)位寬是16時(shí),處理器的A1~AXX與外設(shè)的A0~AYY直接相連,表示不管處理器的A0是0還是1,外設(shè)看到的都是同一個(gè)地址,對(duì)應(yīng)16位的數(shù)據(jù),存儲(chǔ)控制器對(duì)數(shù)據(jù)進(jìn)行選擇或組合,再提供給處理器。
       外設(shè)位寬是32時(shí),處理器的A2~AXX與外設(shè)的A0~AZZ直接相連,表示不管處理器的A0A1是00,01,10還是11,外設(shè)看到的都是同一個(gè)地址,對(duì)應(yīng)32位的數(shù)據(jù),“MemoryController”對(duì)數(shù)據(jù)進(jìn)行選擇或組合,再提供給處理器


ARM與不同位寬存儲(chǔ)器的地址線錯(cuò)位接口 , 外部總線接口深入
ARM是32位,地址空間是2的32次冪,4G地址空間。所有的外設(shè)(FLASH,RAM,SD卡等等)都映射到這4G的空間上。比如大部分ARM7都把RAM映射到0x40000000,所以對(duì)RAM的操作就在0X40000000開(kāi)始的地址上。FLASH從0X0開(kāi)始。使用FLASH還要考慮地址重映射,就是選擇片內(nèi)FLASH或片外FLASH。

  FLASH一般是8位或16位,當(dāng)它接到32位的ARM上時(shí),地址位就會(huì)錯(cuò)位。對(duì)于16位FLASH,F(xiàn)LASH的A0要接ARM的A1。對(duì)于8位FLASH,F(xiàn)LASH的A0要接ARM的A0。ARM的A0對(duì)應(yīng)8位,ARM的A1對(duì)應(yīng)16位,ARM的A2對(duì)應(yīng)32位,如果FLASH是32位,那么FLASH的A0接ARM的A2

32位的FLASH,F(xiàn)LASH的A0要接ARM的A2,因?yàn)?2位地址表示4個(gè)字節(jié),每次要跳4個(gè)字節(jié)的話(huà),那么就是從A2開(kāi)始才變化,A1 A0不變化
16位的FLASH,F(xiàn)LASH的A0要接ARM的A1,因?yàn)?6位地址表示2個(gè)字節(jié),每次要跳2個(gè)字節(jié)的話(huà),那么就是從A1開(kāi)始才變化,A0不變化
8位的FLASH,F(xiàn)LASH的A0要接ARM的A0,因?yàn)?位地址表示1個(gè)字節(jié),每次要跳1個(gè)字節(jié)的話(huà),那么就是從A0開(kāi)始才變化。
    對(duì)于 16位的FLASH ,我們可以這樣認(rèn)為:16位存儲(chǔ)器的設(shè)計(jì)者將低位A[0]省掉了,我們只要讀取一次就可以得到兩個(gè)字節(jié),讀取的
這個(gè)地址對(duì)應(yīng)于ARM發(fā)出的地址的A[21..1],即實(shí)際上是存儲(chǔ)器需要的偶地址(偶地址是針對(duì)ARM發(fā)出的地址而言的)。
   
    LPC2200,S3C2410A,S3C2440等都是上述這樣的,當(dāng)然也有不同的。
   IMX27和BF537這兩款CPU都是不管存儲(chǔ)器是多少位的的,都是直接A0-B0,沒(méi)有任何考慮錯(cuò)位的情況,是因?yàn)樗麄兊拇鎯?chǔ)控制器已經(jīng)內(nèi)部作了處理
了,三星的如S3C2443S3C2450S3C6410等后續(xù)的也都是這樣子了
   再來(lái)看看外部總線配置EMC和外部總線功能引腳的關(guān)系:
    OE:輸出使能OUT EABLE
    WE:WRITEEABLE 寫(xiě)入使能
    CE:chipEABLE 片選
   ALE:地址鎖存使能(ADRESS LOCK EABLE)
   BLS:字節(jié)選擇信號(hào)
   重點(diǎn)看 WE BLS 的關(guān)系
   
   在LPC2200系列ARM中,為了適應(yīng)外部存儲(chǔ)器組的寬度和類(lèi)型,EMC提供了一組字節(jié)選擇信號(hào),要實(shí)現(xiàn)這些功能,需要對(duì)相應(yīng)存儲(chǔ)器配置寄存器中的RBLE位進(jìn)行設(shè)定。
   對(duì)外部存儲(chǔ)器組進(jìn)行寫(xiě)訪問(wèn)時(shí),RBLE位決定WE信號(hào)是否有效;
   對(duì)外部存儲(chǔ)器組進(jìn)行讀訪問(wèn)時(shí),RBLE位決定BLSn信號(hào)是否有效。
   外部存儲(chǔ)器的接口取決于存儲(chǔ)器組的寬度(32位、16位、8位,由BCFG的MW位決定)。而且,存儲(chǔ)器芯片的選擇也需要對(duì)BCFG寄存器的RBLE位進(jìn)行適當(dāng)?shù)脑O(shè)置。選擇8位或者不按字節(jié)區(qū)分的的存儲(chǔ)器的時(shí)候,RBLE位應(yīng)該為0,在讀訪問(wèn)期間EMC將BLS[3:0]拉高。當(dāng)存儲(chǔ)器組為含有字節(jié)選擇選擇輸入的16位或32位存儲(chǔ)器組成的時(shí)候,RBLE位應(yīng)該為1,在讀訪問(wèn)期間EMC將BLS[3:0]拉低。注意這里沒(méi)有對(duì)RBLE為0或1的時(shí)候,寫(xiě)訪問(wèn)期間BLS[3:0]引腳的電平作出交代。
   以16位寬的存儲(chǔ)器組連接16位的存儲(chǔ)器芯片為例(這種情況比較常見(jiàn),周立功的easyarm2200就是這樣的)。很顯然這里RBLE位應(yīng)該為1。
BLS[1]、BLS[0]分別接到了存儲(chǔ)器芯片的UB、LB腳。作為16位的存儲(chǔ)器芯片,要取得16位寬度的字,無(wú)論是讀訪問(wèn)還是寫(xiě)訪問(wèn),UB和LB位都必須為低電平0。作為16位的ram,程序中不可避免的存在對(duì)它的寫(xiě)操作。程序能正常運(yùn)行就說(shuō)明對(duì)它的寫(xiě)操作是成功的?梢赃M(jìn)一步推斷在寫(xiě)訪問(wèn)期間,BLS[1]、BLS[0]是低電平的。當(dāng)存儲(chǔ)器組為含有字節(jié)選擇選擇輸入的16位或32位存儲(chǔ)器組成的時(shí)候,RBLE位應(yīng)該為1,在讀訪問(wèn)期間EMC將BLS[3:0]拉低。在寫(xiě)訪問(wèn)周期EMC同樣是將BLS[3:0]拉低。
這種操作也符合使用8位單片機(jī)時(shí)候的習(xí)慣,WR扮演了“寫(xiě)”的角色。
   
    下面是32位寬的存儲(chǔ)器組連接8位的存儲(chǔ)器芯片,很顯然這里RBLE位應(yīng)該為0。
網(wǎng)友wag提出這樣的問(wèn)題,能否用ARM的WE引腳直接連接到存儲(chǔ)器芯片的WE引腳。有這樣的問(wèn)題可能是源于以前的習(xí)慣,也可能是不清楚RBLE位為0時(shí),寫(xiě)訪問(wèn)期間BLS[3:0]引腳的狀態(tài)。
LPC2210/2220 User Manual上面介紹了RBLE=0的時(shí)候的讀寫(xiě)情況。EMC的WE信號(hào)沒(méi)有被使用。在寫(xiě)周期,BLS[3:0]拉低,將數(shù)據(jù)送到要寫(xiě)入的地址。對(duì)于讀周期,BLS[3:0]拉高。
網(wǎng)友sky421提到“我用的是2214,接一片8位的RAM,寫(xiě)的時(shí)候WE腳不會(huì)有變化,BLS0在變化”
我個(gè)人理解,如果RBLE=0,BLS引腳就取代了WR的功能,WR腳就不可以使用了。
有心的朋友可以用邏輯分析儀測(cè)一下,實(shí)際情況如何,驗(yàn)證一把。
   

總結(jié),當(dāng)RBLE=1,WR有效,BLS充當(dāng)字節(jié)選擇,其隨WR,OE的變化而變化,讀、寫(xiě)操作時(shí)BLS都是低電平,此時(shí)用于有字節(jié)選擇的外部設(shè)備。
     當(dāng)RBLE=0,WR無(wú)效,此時(shí)用于無(wú)字節(jié)選擇的外部設(shè)備,BLS可以充當(dāng)WR信號(hào),而WR 無(wú)效。
不是ARM9S3C2440的,但是有相似之處!

存儲(chǔ)器映射
0-1G(0x0000,0000 -0x3fff,ffff): 片內(nèi)Flash.
1-2G(0x4000,0000 - 0x7fff,ffff):
片內(nèi)RAM.
2-3.5G(0x8000,0000 - 0xbfff,ffff - 0xdfff,ffff):
片外存儲(chǔ)器。
3.5G - 3.75G(0xe000,0000 -0xefff,ffff): VPB外設(shè)。
3.75G - 4G(0xf000,0000 -0xffff,ffff): AHB外設(shè)。
雖然ARM7的尋址空間為4G,但是LPC2200系列只提供A0~A23總共16M的地址。片選信號(hào)CS0 - CS3A24A25的譯碼輸出,將片外存儲(chǔ)區(qū)0x8000,0000 -0x83ff,ffff劃分為bank0 -bank3,16M*4=64M. 4個(gè)bank可以被分別配置為8/16/32位總線寬度。復(fù)位時(shí),bank0的總線寬度由Boot1:0引腳決定, bank132位,bank216位,bank38位。
字節(jié)定位信號(hào)(BLS0 - BLS3)協(xié)調(diào)總線寬度和外存芯片數(shù)據(jù)線寬度。
當(dāng)
Memory字節(jié)寬度器件(如62256)或者未按照字節(jié)區(qū)分的多字節(jié)器件組成時(shí),應(yīng)將RBLE設(shè)置為"0"。此時(shí),讀訪問(wèn)時(shí)EMCBLS0~BLS3拉高。
當(dāng)
Memory含有字節(jié)選擇輸入的16位或32位器件組成時(shí),應(yīng)將RBLE設(shè)置為"1"。此時(shí),讀訪問(wèn)時(shí)EMCBLS0~BLS3拉低。
所以,當(dāng)
Memory62256組成時(shí),由于不需要片內(nèi)字節(jié)選擇輸入,故令RBLE ='0',則BLS0~BLS3只會(huì)與nWR同步,可以代替nWR使用。
但是,當(dāng)
MemoryIS61LV25616AL組成時(shí),由于該芯片有"nLB""nUB"控制低/8位的輸入,故令RBLE ='1',則BLS0~BLS3nRDnWR都會(huì)同步,此時(shí),不可以使用BLS0~BLS3代替nWR信號(hào)。
地址數(shù)據(jù)總線:D0 - D31, A0 - A23, OE, WE, CS0 - CS3, BLS0 -BLS3
啟動(dòng)后由P2.7/P2.6控制引導(dǎo)方式,然后由程序設(shè)置MEMMAP決定中斷向量的映射。
BCFG0 - BCFG3控制讀寫(xiě)延時(shí)和總線寬度。注意復(fù)位后的默認(rèn)值。
PINSEL2控制引腳功能。
Boot Block
LPC2114/2214
BootBlock被固化在最高的Flash塊中,運(yùn)行時(shí)被映射到0x7FFF,E000 -0x7FFFF,FFFF的區(qū)域。而LPC2210沒(méi)有片內(nèi)Flash,但它有8K片內(nèi)ROM存儲(chǔ)了BootBlock,也被映射到0x7FFF,E000處。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:600070 發(fā)表于 2019-8-14 14:18 | 只看該作者
STM32H743這個(gè)芯片外掛的SDRAM是否需要錯(cuò)位鏈接?急急急,哪位大俠幫忙看看!
回復(fù)

使用道具 舉報(bào)

板凳
ID:600070 發(fā)表于 2019-8-14 14:19 | 只看該作者
STM32H7x外掛SDRAM是否需要錯(cuò)位相連?高人指點(diǎn)
回復(fù)

使用道具 舉報(bào)

地板
ID:600070 發(fā)表于 2019-8-14 15:11 | 只看該作者
@徐峰 @軍 請(qǐng)教個(gè)問(wèn)題:關(guān)于743這個(gè)芯片是否需要和外掛的SDRAM地址線錯(cuò)位相連的問(wèn)題,軟件確實(shí)需要處理器32位寬訪問(wèn)外部SDRAM.這個(gè)取決于743內(nèi)部的存儲(chǔ)控制器是否需要硬件地址線錯(cuò)位相連來(lái)實(shí)現(xiàn)32位訪問(wèn)。這塊再幫忙看看。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩国产在线 | 欧美一区二区三区 | 久久国产一区 | 久久美女视频 | 一区二区三区小视频 | 欧美一级在线 | 精品久久久久久一区二区 | 亚洲网站在线观看 | 香蕉久久久 | 精品久久久久久久久久 | 亚洲一区二区中文字幕 | 国产精品中文字幕在线播放 | 精品入口麻豆88视频 | 精品在线一区二区 | 中文字幕国产一区 | 日韩视频免费 | 日韩欧美国产不卡 | 夜夜爽99久久国产综合精品女不卡 | 一级免费毛片 | www.久久 | 日韩一二区 | 日韩在线欧美 | 亚洲专区在线 | 欧美一级二级在线观看 | 亚洲国产成人在线视频 | 久久久久中文字幕 | 久在线 | 国产精品伦理一区二区三区 | 日韩一及片 | 天天操天天摸天天干 | 久久小视频 | 亚洲一区二区三区欧美 | 日韩爱爱网 | 中文在线а√在线8 | 99热视 | 一区二区在线免费观看视频 | 国产一区二区三区www | 久久专区| 国产精品乱码一区二区三区 | 成年网站在线观看 | 中文字幕av在线 |