當(dāng)單片機(jī)內(nèi)部程序存儲(chǔ)器容量不足時(shí),就需要進(jìn)行程序存儲(chǔ)器的擴(kuò)展。單片機(jī)的程序存儲(chǔ)器擴(kuò)展使用只讀存儲(chǔ)器芯片。只讀存儲(chǔ)器rom中的信息一旦寫(xiě)入之后就不能隨意更改,即不能在程序運(yùn)行過(guò)程中寫(xiě)入新的內(nèi)容,而只能讀存儲(chǔ)單元內(nèi)容。因?yàn)榈綦姾髍om中存放的數(shù)據(jù)不會(huì)丟失,所以rom適宜存放程序、常數(shù)、表格等。存儲(chǔ)器擴(kuò)展的核心問(wèn)題是存儲(chǔ)器的編址問(wèn)題。所謂編址就是給存儲(chǔ)單元分配地址。由于存儲(chǔ)器通常由多片芯片組成,因此存儲(chǔ)器的編址分為兩個(gè)層次,即存儲(chǔ)器芯片的選擇和存儲(chǔ)器芯片內(nèi)部存儲(chǔ)單元的選擇。
一、存儲(chǔ)器編址技術(shù)
編址就是給存儲(chǔ)單元分配地址。使用系統(tǒng)提供的地址線,通過(guò)適當(dāng)?shù)倪B接,使得一個(gè)地址唯一對(duì)應(yīng)存儲(chǔ)器中一個(gè)存儲(chǔ)單元。存儲(chǔ)器芯片的選擇有兩種方法:
1.線選法----直接以系統(tǒng)的地址作為存儲(chǔ)芯片的片選信號(hào)。優(yōu)點(diǎn)是簡(jiǎn)單不需增加額外電路,適用于小規(guī)模單片機(jī)系統(tǒng)的存儲(chǔ)器擴(kuò)展;缺點(diǎn)是存儲(chǔ)空間不連續(xù)。
2.譯碼法---使用譯碼器對(duì)系統(tǒng)的高位地址進(jìn)行譯碼,以其譯碼輸出作為存儲(chǔ)芯片的片選信號(hào)。優(yōu)點(diǎn)是存儲(chǔ)空間連續(xù),適用于大容量多芯片存儲(chǔ)器擴(kuò)展;缺點(diǎn)是硬件設(shè)計(jì)需要增加譯碼器。
3.譯碼器
譯碼法時(shí)需要采用譯碼芯片,常見(jiàn)譯碼芯片有:74ls139(雙2-4譯碼器)和74ls138(3-8譯碼器)等,它們的cmos型芯片分別是74hc139和74hc138。74ls138如圖1所示。
圖1 74ls138芯片
74ls138的真值表說(shuō)明了其輸入輸出以及控制信號(hào)的關(guān)系,如圖2所示。
圖2 74ls138的真值表
二、eeprom接口設(shè)計(jì)
以2764為例來(lái)說(shuō)明存儲(chǔ)器的擴(kuò)展接口設(shè)計(jì)方法。2764是一種8k×8位的紫外線擦除電可編程只讀存儲(chǔ)器,單一+5v供電,工作電流為100ma,維持電流為50ma,讀出時(shí)間最大為250ns。2764為雙列直插式28引腳的標(biāo)準(zhǔn)芯片,容量為8k×8位。其引腳見(jiàn)圖3。
2764在使用時(shí),只能將其所存儲(chǔ)的內(nèi)容讀出。即首先送出要讀出的單元地址,然后使和均有效(低電平),則在芯片的d0~d7數(shù)據(jù)線上就可以輸出要讀出的內(nèi)容。其過(guò)程的時(shí)序關(guān)系如圖4所示。
圖3 2764引腳圖 圖4 2764時(shí)序圖
以下兩個(gè)例子均采用2764,分別采用線選法和譯碼法來(lái)進(jìn)行程序存儲(chǔ)器擴(kuò)展。
例1.采用線選法,使用兩片2764,一共構(gòu)成8k×2=16k的有效地址。
解:2764有13根地址線,分別由p0.0~p0.7、p2.0~p2.4提供,系統(tǒng)的p2.5~p2.7沒(méi)有用,采用2片2764構(gòu)成系統(tǒng),則可以使用p2.5~p2.7中的任何2根作為線選線,在本設(shè)計(jì)中采用p2.5和p2.6作為線選線,則可分析得到這2塊芯片的基本地址范圍。
假設(shè)未用地址線取0,則2764(1)的基本地址范圍:4000h~5fffh。
假設(shè)未用地址線取0,則2764(2)的基本地址范圍:2000h~3fffh。
圖5 線選法擴(kuò)展
例2.用eprom2764擴(kuò)展生成24kb的程序連續(xù)存儲(chǔ)空間,采用74ls138譯碼,要求該24kb的地址空間從8000h開(kāi)始編碼。
解:由于1塊2764芯片是8kb,所以要生成24kb的程序存儲(chǔ)空間需要3塊2764芯片;由于生成的是連續(xù)的存儲(chǔ)空間,所以采用譯碼法。地址空間要求從8000h開(kāi)始編碼,則
2764(1)的基本地址范圍:8000h~9fffh:
2764(2)的基本地址范圍:a000h~bfffh:
2764(3)的基本地址范圍:c000h~dfffh:
觀察3塊芯片的高位地址線a15~a13,并考慮74ls138譯碼器的輸入與輸出之間的關(guān)系(見(jiàn)圖2)可知,3塊2764芯片應(yīng)依次接y4、y5、y6輸出端。擴(kuò)展電路圖見(jiàn)圖6。
圖6 譯碼法擴(kuò)展