44b0存儲器擴展徹底研究——nWE, nWBE, nBE三者關(guān)系
2. nWE, nWBE, nBE三者之間的關(guān)系
本文引用地址:http://dyxdggzs.com/article/201611/318888.htm(1)nWE為寫(xiě)使能信號。
(2)nWBE為“寫(xiě)字節使能(write byte enable)”信號,而nBE 為高/低字節選擇信號。nWBE與nBE共用引腳,可以通過(guò)對相關(guān)寄存器設置來(lái)進(jìn)行功能選擇。
(3)什么時(shí)候需要nWBE而不是nWE?
nWE和nWBE都帶有寫(xiě)使能的功能。但既然有nWE,為什么還需要nWBE?這是因為,當使用幾片儲存芯片進(jìn)行數據位擴展時(shí),有時(shí)需要對芯片分開(kāi)寫(xiě)數據,此時(shí)可使用nWBE。
在圖5-4中,僅有一片8bit的ROM,因此僅需要nWE,而不需要nWBE。而在圖5-5中,用了2片8bit的ROM,如果不使用nWBE,則寫(xiě)操作是對2片ROM同時(shí)進(jìn)行的,這樣,當執行寫(xiě)字節指令時(shí)可能會(huì )破壞另一芯片中的數據。(注意nWBE的信號是自動(dòng)產(chǎn)生的。)從這個(gè)角度來(lái)說(shuō),nWBE有字節數據屏蔽的功能。
后面我們也會(huì )看到,SDRAM中有DQM信號也是用來(lái)進(jìn)行數據屏蔽作用的,那么它們之間區別何在?
(4)nWBE, nBE有什么區別?什么時(shí)候應該配置成nBE?
根據手冊描述“nBE[3:0] is the AND signal nWBE[3:0] and nOE”,即nBE是nWBE和nOE的“與”信號,這句話(huà)給了我們非常重要的啟示,應該說(shuō)深刻揭示出了nWBE, nBE之間的本質(zhì)、內涵。
首先看一下真值表:
nWBE | nOE | nBE | 說(shuō)明 |
1 | 1 | 1 | nWBE, nOE均無(wú)效(低電平有效),于是nBE無(wú)效 |
0 | 0 | 0 | nWBE, nOE任意一個(gè)有效(低電平有效),則nBE有效 |
1 | 0 | 0 | |
0 | 1 | 0 |
注意到nWBE[3:0],nOE僅一根信號線(xiàn)。由此可見(jiàn),nBE就是字節選通信號(讀、寫(xiě)選通)。讀的時(shí)候,多片均選通,寫(xiě)的時(shí)候,分片進(jìn)行選通。其實(shí)質(zhì),nBE可看作字節片選信號。
那么,能不能把上圖5-5中nWBE換成nBE?
如果這樣連接,我們思考一下有什么問(wèn)題:注意表格陰影行,當nWBE無(wú)效而nOE有效,nBE有效,這會(huì )使存儲器的nWE有效,致使讀寫(xiě)信號混亂,顯然不行。
事實(shí)上,到底用什么,應該根據存儲器芯片來(lái)決定。
究竟什么時(shí)候需要nBE呢?手冊上給出的SRAM連接圖5-8,5-9給出了示例。同樣我們要問(wèn),圖5-8中能不能把SRAM的nWE接nWBE?
如果這樣接,芯片的nBE信號就無(wú)法解決,因為nBE和nWBE不能同時(shí)工作,這樣就無(wú)法單獨操控片內的高字節與低字節讀寫(xiě)。這里的nBEx就像是片內的高字節與低字節的片選信號。
再問(wèn),能否將圖5-8中nBE信號換成nWBE信號(硬件連接不變,寄存器配置改變)?
當按字節寫(xiě)芯片,沒(méi)有問(wèn)題,這時(shí)候可以產(chǎn)生有效的nWBE信號,以選擇U/L字節;而當需要按字節讀芯片時(shí),nWBE無(wú)效,無(wú)法提供正確的nUB/nLB選擇信號,就無(wú)法讀出數據,可見(jiàn)行不通。注意,似乎無(wú)法真正做到按字節讀芯片,因為只要nOE有效,nBE一定有效,這樣勢必造成nBE0,nBE1同時(shí)有效。即便如此,應該不會(huì )有什么麻煩,大不了將不需要的字節數據丟棄即可。
3.
(1)ROM
(2)SDRAM
注意nSCS[1:0]就是nGSC[7:6],參看三星官方評估板電路圖。
這里重點(diǎn)關(guān)注DQM[3:0]。經(jīng)查2440手冊,DQM與nWBE引腳是復用的。參考友善之臂提供的mini2440手冊中所提供的SDRAM電路(同三星官方):
可見(jiàn),DQM正是連接到了nWBE。又參考SDRAM的數據手冊,對DQM的描述:“Controls output buffers in read mode and masks input data in write mode(即:在讀模式下控制輸出緩沖;在寫(xiě)模式下屏蔽輸入數據。)”。
我們的問(wèn)題是:為什么DQM連的是nWBE而不是nBE?能不能為nBE?
下圖是SDRAM的數據手冊中截取的真值表,從中可以發(fā)現,讀寫(xiě)控制和DQM毫無(wú)關(guān)系。DQM主要在讀、寫(xiě)時(shí)起屏蔽作用。讀-寫(xiě)是通過(guò)nWE的電平狀態(tài)來(lái)控制的。
倘若DQM連nBE,需要寫(xiě)字節屏蔽信號,則與nWBE沒(méi)有分別;讀的時(shí)候,若nWBE無(wú)效,nBE是否有效取決于2440的nOE——如果nOE無(wú)效,那么nBE完全與nWBE一致,而此處確實(shí)不需要nOE,所以我個(gè)人的結論認為它連nBE也是可行的(未知對否?需通過(guò)寫(xiě)程序驗證)。
另外還有個(gè)問(wèn)題:nWBE是什么時(shí)候有效的?讀SDRAM時(shí),需要控制的只是使nWE為高,但這時(shí)候nWBE會(huì )自動(dòng)有效嗎?需要程序控制嗎?(較容易設想的是nWE為低時(shí)nWBE自動(dòng)根據讀寫(xiě)字寬確定是否有效)。這個(gè)問(wèn)題看看2440的時(shí)序圖就了然了。
附2440時(shí)序圖(早沒(méi)發(fā)現它;早發(fā)現它早清楚了J):
另外,ROM/SRAM的時(shí)序圖:
附網(wǎng)友帖子(講得太膚淺):
這個(gè)一點(diǎn)也不復雜。 內存的這種接法,使它可以以8位訪(fǎng)問(wèn),也可以16位訪(fǎng)問(wèn),也可以32位訪(fǎng)問(wèn) 那4個(gè)信號nWBE3~0,正是字節選通控制。 按8位訪(fǎng)問(wèn),也就是代碼中若有: *(unsigned char *) 0x30000000 = 0x78; 就是一個(gè)字節寫(xiě),這時(shí)只有nBWE0信號有效 如果是0x30000001,則只有nBWE1有效(低),其它無(wú)效(高)。 再舉個(gè)例,如果是按16位訪(fǎng)問(wèn)呢? 如果是16位訪(fǎng)問(wèn),代碼一般就是: *(unsigned short *)0x30000000 = 0x1978; 這是一個(gè)16位寫(xiě)。但此時(shí)要注意,最低位必須是0,而不能是1,比如地址0x30000001就會(huì )使CPU異常,因為必須16位對齊! dat16 = *(unsigned short *)0x30000002; 這是一個(gè)16位讀 在16位訪(fǎng)問(wèn)時(shí),0x30000000地址寫(xiě)操作中,nWBE1, 0 = 低,nWBE3, 2 = 高。當0x30000002時(shí),則是nWBE3,2為低,nWBE1,0為高(無(wú)效) 32位時(shí)則是4字節對齊,也就是最低的兩個(gè)地址位A1,A0必須為0,即對于32位訪(fǎng)問(wèn),0x30000001, 0x30000002, 0x30000003都會(huì )導致異常(出錯) 對于32位訪(fǎng)問(wèn),0x30000000的下一個(gè)地址是0x30000004,因為這個(gè)地址是字節地址,但一下子就訪(fǎng)問(wèn)了0x30000000~0x30000003四個(gè)字節,也就是nWBE3~0四個(gè)信號一起反應?。?! 不同的CPU訪(fǎng)問(wèn)的機制是不一樣的,這要具體看手冊了,是分開(kāi)片選的
評論