單片機程序存儲器的擴展
當(dāng)單片機內(nèi)部程序存儲器容量不足時,就需要進行程序存儲器的擴展。單片機的程序存儲器擴展使用只讀存儲器芯片。只讀存儲器ROM中的信息一旦寫入之后就不能隨意更改,即不能在程序運行過程中寫入新的內(nèi)容,而只能讀存儲單元內(nèi)容。因為掉電后ROM中存放的數(shù)據(jù)不會丟失,所以ROM適宜存放程序、常數(shù)、表格等。存儲器擴展的核心問題是存儲器的編址問題。所謂編址就是給存儲單元分配地址。由于存儲器通常由多片芯片組成,因此存儲器的編址分為兩個層次,即存儲器芯片的選擇和存儲器芯片內(nèi)部存儲單元的選擇。一、存儲器編址技術(shù)編址就是給存儲單元分配地址。使用系統(tǒng)提供的地址線,通過適當(dāng)?shù)倪B接,使得一個地址唯一對應(yīng)存儲器中一個存儲單元。存儲器芯片的選擇有兩種方法:
1.線選法----直接以系統(tǒng)的地址作為存儲芯片的片選信號。優(yōu)點是簡單不需增加額外電路,適用于小規(guī)模單片機系統(tǒng)的存儲器擴展;缺點是存儲空間不連續(xù)。
2.譯碼法---使用譯碼器對系統(tǒng)的高位地址進行譯碼,以其譯碼輸出作為存儲芯片的片選信號。優(yōu)點是存儲空間連續(xù),適用于大容量多芯片存儲器擴展;缺點是硬件設(shè)計需要增加譯碼器。
3.譯碼器
譯碼法時需要采用譯碼芯片,常見譯碼芯片有:74LS139(雙2-4譯碼器)和74LS138(3-8譯碼器)等,它們的CMOS型芯片分別是74HC139和74HC138。74LS138如圖1所示。
圖1 74LS138芯片
74LS138的真值表說明了其輸入輸出以及控制信號的關(guān)系,如圖2所示。
圖2 74LS138的真值表 二、EEPROM接口設(shè)計
以2764為例來說明存儲器的擴展接口設(shè)計方法。2764是一種8K×8位的紫外線擦除電可編程只讀存儲器,單一+5V供電,工作電流為100mA,維持電流為50mA,讀出時間最大為250ns。2764為雙列直插式28引腳的標(biāo)準(zhǔn)芯片,容量為8K×8位。其引腳見圖3。
2764在使用時,只能將其所存儲的內(nèi)容讀出。即首先送出要讀出的單元地址,然后使和均有效(低電平),則在芯片的D0~D7數(shù)據(jù)線上就可以輸出要讀出的內(nèi)容。其過程的時序關(guān)系如圖4所示。
圖3 2764引腳圖 圖4 2764時序圖
以下兩個例子均采用2764,分別采用線選法和譯碼法來進行程序存儲器擴展。
例1.采用線選法,使用兩片2764,一共構(gòu)成8K×2=16K的有效地址。
解:2764有13根地址線,分別由P0.0~P0.7、P2.0~P2.4提供,系統(tǒng)的P2.5~P2.7沒有用,采用2片2764構(gòu)成系統(tǒng),則可以使用P2.5~P2.7中的任何2根作為線選線,在本設(shè)計中采用P2.5和 P2.6作為線選線,則可分析得到這2塊芯片的基本地址范圍。
假設(shè)未用地址線取0,則2764(1)的基本地址范圍:4000H~5FFFH。
假設(shè)未用地址線取0,則2764(2)的基本地址范圍:2000H~3FFFH。
圖5 線選法擴展
例2.用EPROM2764擴展生成24KB的程序連續(xù)存儲空間,采用74LS138譯碼,要求該24KB的地址空間從8000H開始編碼。
解:由于1塊2764芯片是8KB,所以要生成24KB的程序存儲空間需要3塊2764芯片;由于生成的是連續(xù)的存儲空間,所以采用譯碼法。地址空間要求從8000H開始編碼,則
2764(1)的基本地址范圍:8000H~9FFFH:
2764(2)的基本地址范圍:A000H~BFFFH:
2764(3)的基本地址范圍:C000H~DFFFH:
觀察3塊芯片的高位地址線A15~A13,并考慮74LS138譯碼器的輸入與輸出之間的關(guān)系(見圖2)可知,3塊2764芯片應(yīng)依次接Y4、Y5、Y6輸出端。擴展電路圖見圖6。
圖6 譯碼法擴展
編輯:admin 最后修改時間:2018-05-08