2. nWE, nWBE, nBE三者之間的關(guān)系
本文引用地址:http://www.eepw.com.cn/article/201611/318888.htm(1)nWE為寫使能信號。
(2)nWBE為“寫字節(jié)使能(write byte enable)”信號,而nBE 為高/低字節(jié)選擇信號。nWBE與nBE共用引腳,可以通過對相關(guān)寄存器設(shè)置來進(jìn)行功能選擇。
(3)什么時候需要nWBE而不是nWE?
nWE和nWBE都帶有寫使能的功能。但既然有nWE,為什么還需要nWBE?這是因為,當(dāng)使用幾片儲存芯片進(jìn)行數(shù)據(jù)位擴展時,有時需要對芯片分開寫數(shù)據(jù),此時可使用nWBE。
在圖5-4中,僅有一片8bit的ROM,因此僅需要nWE,而不需要nWBE。而在圖5-5中,用了2片8bit的ROM,如果不使用nWBE,則寫操作是對2片ROM同時進(jìn)行的,這樣,當(dāng)執(zhí)行寫字節(jié)指令時可能會破壞另一芯片中的數(shù)據(jù)。(注意nWBE的信號是自動產(chǎn)生的。)從這個角度來說,nWBE有字節(jié)數(shù)據(jù)屏蔽的功能。
后面我們也會看到,SDRAM中有DQM信號也是用來進(jìn)行數(shù)據(jù)屏蔽作用的,那么它們之間區(qū)別何在?
(4)nWBE, nBE有什么區(qū)別?什么時候應(yīng)該配置成nBE?
根據(jù)手冊描述“nBE[3:0] is the AND signal nWBE[3:0] and nOE”,即nBE是nWBE和nOE的“與”信號,這句話給了我們非常重要的啟示,應(yīng)該說深刻揭示出了nWBE, nBE之間的本質(zhì)、內(nèi)涵。
首先看一下真值表:
nWBE | nOE | nBE | 說明 |
1 | 1 | 1 | nWBE, nOE均無效(低電平有效),于是nBE無效 |
0 | 0 | 0 | nWBE, nOE任意一個有效(低電平有效),則nBE有效 |
1 | 0 | 0 | |
0 | 1 | 0 |
注意到nWBE[3:0],nOE僅一根信號線。由此可見,nBE就是字節(jié)選通信號(讀、寫選通)。讀的時候,多片均選通,寫的時候,分片進(jìn)行選通。其實質(zhì),nBE可看作字節(jié)片選信號。
那么,能不能把上圖5-5中nWBE換成nBE?
如果這樣連接,我們思考一下有什么問題:注意表格陰影行,當(dāng)nWBE無效而nOE有效,nBE有效,這會使存儲器的nWE有效,致使讀寫信號混亂,顯然不行。
事實上,到底用什么,應(yīng)該根據(jù)存儲器芯片來決定。
究竟什么時候需要nBE呢?手冊上給出的SRAM連接圖5-8,5-9給出了示例。同樣我們要問,圖5-8中能不能把SRAM的nWE接nWBE?
如果這樣接,芯片的nBE信號就無法解決,因為nBE和nWBE不能同時工作,這樣就無法單獨操控片內(nèi)的高字節(jié)與低字節(jié)讀寫。這里的nBEx就像是片內(nèi)的高字節(jié)與低字節(jié)的片選信號。
再問,能否將圖5-8中nBE信號換成nWBE信號(硬件連接不變,寄存器配置改變)?
當(dāng)按字節(jié)寫芯片,沒有問題,這時候可以產(chǎn)生有效的nWBE信號,以選擇U/L字節(jié);而當(dāng)需要按字節(jié)讀芯片時,nWBE無效,無法提供正確的nUB/nLB選擇信號,就無法讀出數(shù)據(jù),可見行不通。注意,似乎無法真正做到按字節(jié)讀芯片,因為只要nOE有效,nBE一定有效,這樣勢必造成nBE0,nBE1同時有效。即便如此,應(yīng)該不會有什么麻煩,大不了將不需要的字節(jié)數(shù)據(jù)丟棄即可。
3.
(1)ROM
(2)SDRAM
注意nSCS[1:0]就是nGSC[7:6],參看三星官方評估板電路圖。
這里重點關(guān)注DQM[3:0]。經(jīng)查2440手冊,DQM與nWBE引腳是復(fù)用的。參考友善之臂提供的mini2440手冊中所提供的SDRAM電路(同三星官方):
可見,DQM正是連接到了nWBE。又參考SDRAM的數(shù)據(jù)手冊,對DQM的描述:“Controls output buffers in read mode and masks input data in write mode(即:在讀模式下控制輸出緩沖;在寫模式下屏蔽輸入數(shù)據(jù)。)”。
我們的問題是:為什么DQM連的是nWBE而不是nBE?能不能為nBE?
下圖是SDRAM的數(shù)據(jù)手冊中截取的真值表,從中可以發(fā)現(xiàn),讀寫控制和DQM毫無關(guān)系。DQM主要在讀、寫時起屏蔽作用。讀-寫是通過nWE的電平狀態(tài)來控制的。
倘若DQM連nBE,需要寫字節(jié)屏蔽信號,則與nWBE沒有分別;讀的時候,若nWBE無效,nBE是否有效取決于2440的nOE——如果nOE無效,那么nBE完全與nWBE一致,而此處確實不需要nOE,所以我個人的結(jié)論認(rèn)為它連nBE也是可行的(未知對否?需通過寫程序驗證)。
另外還有個問題:nWBE是什么時候有效的?讀SDRAM時,需要控制的只是使nWE為高,但這時候nWBE會自動有效嗎?需要程序控制嗎?(較容易設(shè)想的是nWE為低時nWBE自動根據(jù)讀寫字寬確定是否有效)。這個問題看看2440的時序圖就了然了。
附2440時序圖(早沒發(fā)現(xiàn)它;早發(fā)現(xiàn)它早清楚了J):
另外,ROM/SRAM的時序圖:
附網(wǎng)友帖子(講得太膚淺):
這個一點也不復(fù)雜。 內(nèi)存的這種接法,使它可以以8位訪問,也可以16位訪問,也可以32位訪問 那4個信號nWBE3~0,正是字節(jié)選通控制。 按8位訪問,也就是代碼中若有: *(unsigned char *) 0x30000000 = 0x78; 就是一個字節(jié)寫,這時只有nBWE0信號有效 如果是0x30000001,則只有nBWE1有效(低),其它無效(高)。 再舉個例,如果是按16位訪問呢? 如果是16位訪問,代碼一般就是: *(unsigned short *)0x30000000 = 0x1978; 這是一個16位寫。但此時要注意,最低位必須是0,而不能是1,比如地址0x30000001就會使CPU異常,因為必須16位對齊! dat16 = *(unsigned short *)0x30000002; 這是一個16位讀 在16位訪問時,0x30000000地址寫操作中,nWBE1, 0 = 低,nWBE3, 2 = 高。當(dāng)0x30000002時,則是nWBE3,2為低,nWBE1,0為高(無效) 32位時則是4字節(jié)對齊,也就是最低的兩個地址位A1,A0必須為0,即對于32位訪問,0x30000001, 0x30000002, 0x30000003都會導(dǎo)致異常(出錯) 對于32位訪問,0x30000000的下一個地址是0x30000004,因為這個地址是字節(jié)地址,但一下子就訪問了0x30000000~0x30000003四個字節(jié),也就是nWBE3~0四個信號一起反應(yīng)?。?! 不同的CPU訪問的機制是不一樣的,這要具體看手冊了,是分開片選的
關(guān)鍵詞: 44b0存儲器擴展nWEnWBEnB
網(wǎng)站首頁 |網(wǎng)站簡介 | 關(guān)于我們 | 廣告業(yè)務(wù) | 投稿信箱
Copyright © 2000-2020 hngelin.com All Rights Reserved.
中國網(wǎng)絡(luò)消費網(wǎng) 版權(quán)所有 未經(jīng)書面授權(quán) 不得復(fù)制或建立鏡像
聯(lián)系郵箱:920 891 263@qq.com
葵青区| 荆州市| 铜鼓县| 习水县| 濮阳市| 泗洪县| 苏尼特左旗| 瓦房店市| 托里县| 宁远县| 肃宁县| 北流市| 班玛县| 静宁县| 即墨市| 隆安县| 德令哈市| 永昌县| 马龙县| 英山县| 贺州市| 安吉县| 北辰区| 天峻县| 恩施市| 买车| 元谋县| 兖州市| 土默特右旗| 福州市| 武定县| 南丰县| 安化县| 西盟| 临朐县| 林州市| 宜章县| 河南省| 邹城市| 疏勒县| 定边县|