51單片機教程:?jiǎn)纹瑱C存儲器結構
讓我們看圖2。單片機里面都有這樣的存儲器,這是一個(gè)存儲器的示意圖:一個(gè)存儲器就象一個(gè)個(gè)的小抽屜,一個(gè)小抽屜里有八個(gè)小格子,每個(gè)小格子就是用來(lái)存放“電荷”的,電荷通過(guò)與它相連的電線(xiàn)傳進(jìn)來(lái)或釋放掉,至于電荷在小格子里是怎樣存的,就不用我們操心了,你能把電線(xiàn)想象成水管,小格子里的電荷就象是水,那就好理解了。存儲器中的每個(gè)小抽屜就是一個(gè)放數據的地方,我們稱(chēng)之為一個(gè)“單元”。
有了這么一個(gè)構造,我們就能開(kāi)始存放數據了,想要放進(jìn)一個(gè)數據12,也就是00001100,我們只要把第二號和第三號小格子里存滿(mǎn)電荷,而其它小格子里的電荷給放掉就行了(看圖3)??墒菃?wèn)題出來(lái)了,看圖2,一個(gè)存儲器有好多單元,線(xiàn)是并聯(lián)的,在放入電荷的時(shí)候,會(huì )將電荷放入所有的單元中,而釋放電荷的時(shí)候,會(huì )把每個(gè)單元中的電荷都放掉,這樣的話(huà),不管存儲器有多少個(gè)單元,都只能放同一個(gè)數,這當然不是我們所希望的,因此,要在結構上稍作變化,看圖2,在每個(gè)單元上有個(gè)控制線(xiàn),我想要把數據放進(jìn)哪個(gè)單元,就給一個(gè)信號這個(gè)單元的控制線(xiàn),這個(gè)控制線(xiàn)就把開(kāi)關(guān)打開(kāi),這樣電荷就能自由流動(dòng)了,而其它單元控制線(xiàn)上沒(méi)有信號,所以開(kāi)關(guān)不打開(kāi),不會(huì )受到影響,這樣,只要控制不一樣單元的控制線(xiàn),就能向各單元寫(xiě)入不一樣的數據了,同樣,如果要某個(gè)單元中取數據,也只要打開(kāi)對應的控制開(kāi)關(guān)就行了。
2、存儲器譯碼
那么,我們怎樣來(lái)控制各個(gè)單元的控制線(xiàn)呢?這個(gè)還不簡(jiǎn)單,把每個(gè)單元元的控制線(xiàn)都引到集成電路的外面不就行了嗎?事情可沒(méi)那么簡(jiǎn)單,一片27512存儲器中有65536個(gè)單元,把每根線(xiàn)都引出來(lái),這個(gè)集成電路就得有6萬(wàn)多個(gè)腳?不行,怎么辦?要想法減少線(xiàn)的數量。我們有一種辦法稱(chēng)這為譯碼,簡(jiǎn)單介紹一下:一根線(xiàn)能代表2種狀態(tài),2根線(xiàn)能代表4種狀態(tài),3根線(xiàn)能代表幾種,256種狀態(tài)又需要幾根線(xiàn)代表?8種,8根線(xiàn),所以65536種狀態(tài)我們只需要16根線(xiàn)就能代表了。
3、存儲器的選片及總線(xiàn)的概念
至此,譯碼的問(wèn)題解決了,讓我們再來(lái)關(guān)注另外一個(gè)問(wèn)題。送入每個(gè)單元的八根線(xiàn)是用從什么地方來(lái)的呢?它就是從計算機上接過(guò)來(lái)的,一般地,這八根線(xiàn)除了接一個(gè)存儲器之外,還要接其它的器件,如圖4所示。這樣問(wèn)題就出來(lái)了,這八根線(xiàn)既然不是存儲器和計算機之間專(zhuān)用的,如果總是將某個(gè)單元接在這八根線(xiàn)上,就不好了,比如這個(gè)存儲器單元中的數值是0FFH另一個(gè)存儲器的單元是00H,那么這根線(xiàn)到底是處于高電平,還是低電平?豈非要打架看誰(shuí)歷害了?所以我們要讓它們分離。辦法當然很簡(jiǎn)單,當外面的線(xiàn)接到集成電路的管腳進(jìn)來(lái)后,不直接接到各單元去,中間再加一組開(kāi)關(guān)(參考圖4 )就行了。平時(shí)我們讓開(kāi)關(guān)關(guān)閉著(zhù),如果確實(shí)是要向這個(gè)存儲器中寫(xiě)入數據,或要從存儲器中讀出數據,再讓開(kāi)關(guān)接通就行了。這組開(kāi)關(guān)由三根引線(xiàn)選擇:讀控制端、寫(xiě)控制端和片選端。要將數據寫(xiě)入片中,先選中該片,然后發(fā)出寫(xiě)信號,開(kāi)關(guān)就合上了,并將傳過(guò)來(lái)的數據(電荷)寫(xiě)入片中。如果要讀,先選中該片,然后發(fā)出讀信號,開(kāi)關(guān)合上,數據就被送出去了。注意圖4,讀和寫(xiě)信號同時(shí)還接入到另一個(gè)存儲器,但是由于片選端不一樣,所以雖有讀或寫(xiě)信號,但沒(méi)有片選信號,所以另一個(gè)存儲器不會(huì )“誤會(huì )”而開(kāi)門(mén),造成沖突。那么會(huì )不一樣時(shí)選中兩片芯片呢?只要是設計好的系統就不會(huì ),因為它是由計算控制的,而不是我們人來(lái)控制的,如果真的出現同時(shí)出現選中兩片的情況,那就是電路出了故障了,這不在我們的討論之列。
從上面的介紹中我們已經(jīng)看到,用來(lái)傳遞數據的八根線(xiàn)并不是專(zhuān)用的,而是很多器件大家共用的,所以我們稱(chēng)之為數據總線(xiàn),總線(xiàn)英文名為BUS,總即公交車(chē)道,誰(shuí)者能走。而十六根地址線(xiàn)也是連在一起的,稱(chēng)之為地址總線(xiàn)。
評論