地址譯碼技術(shù)及存儲(chǔ)器接口課件_第1頁
地址譯碼技術(shù)及存儲(chǔ)器接口課件_第2頁
地址譯碼技術(shù)及存儲(chǔ)器接口課件_第3頁
地址譯碼技術(shù)及存儲(chǔ)器接口課件_第4頁
地址譯碼技術(shù)及存儲(chǔ)器接口課件_第5頁
已閱讀5頁,還剩98頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

地址譯碼技術(shù)及存儲(chǔ)器接口

6.1I/O端口的尋址方式6.1.1I/O端口I/O端口是微處理器CPU與I/O設(shè)備直接通信的地址。實(shí)際應(yīng)用中,通常把I/O接口電路中能被CPU直接訪問的寄存器或某些特定器件稱為端口。CPU通過這些端口發(fā)送命令,讀取狀態(tài)和傳送數(shù)據(jù),因此,一個(gè)接口可有幾個(gè)端口,如命令口、狀態(tài)口、數(shù)據(jù)口等。有的接口包括的端口多(如8255并行接口芯片有4個(gè)端口,8237A芯片內(nèi)有16個(gè)端口),有的端口少(8251、8259A芯片內(nèi)只有兩個(gè)端口)。對端口操作也有所不同,有的端口只能寫或只能讀,有的既可以寫也可以讀。一般一個(gè)端口只能寫入或讀出一種信息,但也有幾種信息共用一個(gè)端口,如8255的一個(gè)命令口可接收兩種不同的命令,8259A的一個(gè)命令口,可接受四種不同的命令等。

6.1I/O端口的尋址方式從編程的角度來看,提供給系統(tǒng)和專用程序調(diào)用的ROM-BIOS中斷功能及對應(yīng)的各個(gè)軟件中斷例程,實(shí)際上都是對指定的I/O接口實(shí)施控制。尤其是當(dāng)你編寫應(yīng)用程序時(shí)要想繞過DOS或ROM-BIOS,直接對硬件設(shè)備編程以達(dá)到高效運(yùn)行的目的,就必然涉及對指定的I/O接口進(jìn)行控制,也就是要通過對I/O接口的端口地址完成讀寫操作。如何實(shí)現(xiàn)對這些端口的訪問,就是所謂I/O端口尋址問題。有兩種尋址方式,一種是端口地址與存儲(chǔ)器地址統(tǒng)一編址,即存儲(chǔ)器映射方式;另一種是I/O端口地址和存儲(chǔ)器地址分開獨(dú)立編址,即I/O映射方式。6.1I/O端口的尋址方式

6.1.2端口地址編址方式

1.統(tǒng)一編址這種方式是從存儲(chǔ)空間劃出一部分地址空間給I/O設(shè)備,把I/O接口中的端口當(dāng)作存儲(chǔ)器單元一樣進(jìn)行訪問,不設(shè)置專門的I/O指令,凡對存儲(chǔ)器可以使用的指令均可用于端口。68系列、65系列微型機(jī)就采用這種方式。統(tǒng)一編址方式由于對I/O設(shè)備的訪問是使用訪問存儲(chǔ)器的指令,指令類型多,功能齊全,這不僅使訪問I/O設(shè)備端口實(shí)現(xiàn)輸入/輸出操作靈活、方便,而且還可以對端口內(nèi)容進(jìn)行算術(shù)邏輯運(yùn)算、移位等。另外,能給端口有較大的編址空間,這對大型控制系統(tǒng)和數(shù)據(jù)通信系統(tǒng)是很有意義的。這種方式的缺點(diǎn)是端口占用了存儲(chǔ)器的地址空間,使存儲(chǔ)器容量減小,另外,指令長度比專門I/O指令要長,因而執(zhí)行時(shí)間較長。6.1I/O端口的尋址方式2.獨(dú)立編址獨(dú)立編址不占用存儲(chǔ)器空間,微處理器設(shè)置專門的輸入/輸出指令來訪問端口,產(chǎn)生專用訪問檢測信號(hào),與地址線結(jié)合,形成一個(gè)獨(dú)立的I/O空間。如Intel系列、Z-80系列機(jī)和大型計(jì)算機(jī)采用這種方式。其最主要的優(yōu)點(diǎn)是:(1)輸入/輸出指令和訪問存儲(chǔ)器指令有明顯的區(qū)別,可使程序編制清晰,便于理解。6.1I/O端口的尋址方式

(2)使用專門的控制信號(hào)和。因此,這種方式要求CPU設(shè)置兩組讀/寫控制信號(hào),即存儲(chǔ)器讀/寫和I/O讀/寫。例如8086/8088最小模式下要用M/引腳和/構(gòu)成兩組控制信號(hào);而在最大模式下,由于引腳不夠用,沒有直接輸出M/、和這些對外設(shè)和存儲(chǔ)器進(jìn)行讀/寫操作的控制信號(hào),而是由S2、S1、S0輸出3個(gè)總線周期狀態(tài)信號(hào)編碼送至總線控制器8288,經(jīng)8288解讀后,再生成存儲(chǔ)器讀/寫(和)和I/O讀/寫(和)兩組控制信號(hào)。其缺點(diǎn)是:輸入/輸出指令類型少,一般只能對端口進(jìn)行傳送操作。6.1I/O端口的尋址方式

6.1.3端口訪問指令80X86CPU構(gòu)成的PC機(jī),CPU外圍接口芯片及I/O接口部件皆采用獨(dú)立的編址方式,采用IN和OUT指令實(shí)現(xiàn)數(shù)據(jù)輸入/輸出操作。以8086/8088為例,其I/O地址空間為64KB,即0000H~0FFFFH(A0~A15),但在IBM-PC/XT機(jī)中,僅使用了A0~A9構(gòu)成的1KBI/O地址空間。其中A9有特殊意義:A9為0的地址是系統(tǒng)板上CPU輔助接口芯片的512個(gè)端口地址;A9為1的地址是I/O通道上的512個(gè)端口地址。6.1I/O端口的尋址方式

(1) 8086/8088采用I/O端口與累加器之間的傳送。在I/O指令中可采用單字節(jié)地址或雙字節(jié)地址尋址方式。若用單字節(jié)地址,則最多可訪問256個(gè)端口。系統(tǒng)主機(jī)板上的I/O端口,采用單字節(jié)地址,并且是直接尋址方式,其指令格式為:輸入IN AX,PORT ;輸入16位數(shù)據(jù)

IN AL,PORT ;輸入8位數(shù)據(jù)輸出 OUT PORT,AX ;輸出16位數(shù)據(jù)

OUT PORT,AL ;輸出8位數(shù)據(jù)6.1I/O端口的尋址方式若用雙字節(jié)地址作為端口地址,則最多可尋址64K個(gè)端口。I/O擴(kuò)展的接口控制卡,采用雙字節(jié)地址,并且是寄存器間接尋址方式,端口地址放在寄存器DX中。其指令格式為:輸入 MOV DX,XXXXH IN AX,DX ;16位傳送或 IN AL,DX ;8位傳送輸出 MOV DX,XXXXH OUT DX,AX ;16位傳送或 OUT DX,AL ;8位傳送6.1I/O端口的尋址方式

(2)80286和80386還支持I/O端口直接與RAM之間的數(shù)據(jù)傳送。輸入 MOV DX,PORT LES DI,BUFFER_IN INSB ;8位傳送

(INSW) ;16位傳送輸出 MOV DX,PORT LDS SI,BUFFER_OUT OUTSB ;8位傳送

(OUTSW);16位傳送6.1I/O端口的尋址方式這里的輸入/輸出是對RAM而言的。輸入時(shí),用DX:DI指向目標(biāo)緩沖區(qū)BUFFER_IN;輸出時(shí),用DX:SI指向源緩沖區(qū)BUFFER_OUT。在INS和OUTS指令前加上重復(fù)前綴REP,則可實(shí)現(xiàn)I/O設(shè)備與RAM之間成批數(shù)據(jù)的傳輸。在PC系列微機(jī)中,不僅匯編語言支持端口的讀/寫操作,C語言、Basic語言等同樣支持端口的讀/寫操作。6.1I/O端口的尋址方式

(3) C語言中的端口讀/寫函數(shù)。在PC系列微機(jī)上運(yùn)行的幾種C語言版本,都支持端口的輸入/輸出操作,C語言中的幾個(gè)庫函數(shù)就是為端口讀/寫設(shè)置的,這些庫函數(shù)實(shí)際上是調(diào)用了匯編的IN/OUT指令,因?yàn)檫@些函數(shù)已存在于C語言的庫函數(shù)中,由于TurboC提供了程序庫支持,使我們可在TurboC集成操作環(huán)境下,從編輯源程序,到編譯、鏈接、執(zhí)行及排錯(cuò)皆可一氣呵成,大大提高程序設(shè)計(jì)效率。在接口設(shè)計(jì)中,常用到的TurboC函數(shù)如下:inportb()outport()clrscr()getch()kbhit()delay()sound()6.1I/O端口的尋址方式

【例6.1】利用inportb()函數(shù)從指定的輸入端口2F0H讀取一個(gè)字節(jié)的數(shù)據(jù),并顯示在屏幕上。Inportb()的原型為:

inport(intport);頭文件為:

dos.h程序:main(){unsignedcharc;c=inport(0x2f0);printf("data=%0x",c);}6.1I/O端口的尋址方式

【例6.2】將一個(gè)字節(jié)輸出到輸出端口360H。outport()的原型:

voidoutportb(intport,unsignedcharvalue);頭文件為:

dos.h程序:main(){outport(0x360,0x55);}6.1I/O端口的尋址方式

(4) 運(yùn)行于Windows9x環(huán)境下的VisualC++程序中,對I/O端口的訪問有兩種方法,第一種方法是在C源程序中嵌入?yún)R編代碼,例如:_asm{movdx,264hmoval,100outdx,al}第二種方法是調(diào)用函數(shù)_inp

和_outp,前者用來讀字節(jié)型端口的數(shù)據(jù),后者將數(shù)據(jù)輸出到字節(jié)型端口。6.1I/O端口的尋址方式

(5) 在Windows2000環(huán)境下,它的安全機(jī)制以及對多種硬件平臺(tái)的支持,使得用戶已不能直接訪問機(jī)器的硬件資源,要和端口打交道,必須編寫相應(yīng)的設(shè)備驅(qū)動(dòng)程序。在將編好的設(shè)備驅(qū)動(dòng)程序安裝之后,在VisualC++源程序中對I/O端口最直接的訪問是調(diào)用控制I/O操作的API函數(shù)(DeviceIoControl)。VisualBasic本身不支持對I/O端口的訪問,可以編寫動(dòng)態(tài)鏈接庫的方法,使其能實(shí)現(xiàn)對I/O端口的訪問。6.1I/O端口的尋址方式6.1.4I/O端口地址分配和選用不同的微機(jī)系統(tǒng)對I/O端口地址的分配是不同的。例如PC系列機(jī)把I/O端口地址空間分成兩部分,即系統(tǒng)板上的I/O芯片和I/O擴(kuò)展槽上的接口控制卡端口地址。PC/XT和PC/AT系統(tǒng)提供了A0~A9這10位地址線作為I/O端口地址,總共1024個(gè)端口。其中,前256個(gè)端口(000~0FFH)供系統(tǒng)板上的I/O接口芯片使用,如表6.1所示;后768個(gè)端口(100~3FFH)為擴(kuò)展槽上的I/O接口控制卡使用,如表6.2所示。兩表中所示的是端口的地址范圍,實(shí)際使用時(shí),有的I/O接口可能僅用到其中的前幾個(gè)地址。6.1I/O端口的尋址方式I/O接口名稱PC/XTPC/ATDMA控制器1000~00FH000~01FHDMA控制器2……0C0~0DFHDMA頁面控制器080~083H080~09FH中斷控制器1020~021H020~03FH中斷控制器2……0A0~0BFH定時(shí)器040~043H040~05FH并行接口芯片060~063H……鍵盤控制器……060~06FHRT/CMOSRAM……070~07FHNMI屏蔽寄存器0A0H……協(xié)處理器……0F0~0FFH表6.1系統(tǒng)板上芯片的端口地址6.1I/O端口的尋址方式I/O接口名稱PC/XTPC/AT游戲控制卡200~20FH200~20FH擴(kuò)展器/接收器210~21FH……并行口控制卡1370~37FH370~37FH并行口控制卡2270~27FH270~27FH串行口控制卡13F8~3FFH3F8~3FFH表6.2擴(kuò)展槽上接口控制卡的端口地址6.1I/O端口的尋址方式I/O接口名稱PC/XTPC/AT串行口控制卡22F0~2FFH2F0~2FFH原型插件板300~31FH300~31FH同步通信卡13A0~3AFH3A0~3AFH同步通信卡2380~38FH380~38FH單顯MDA3B0~3BFH3B0~3BFH彩顯CGA3D0~3DFH3D0~3DFH彩顯EGA/VGA3C0~3CFH3C0~3CFH硬驅(qū)控制卡320~32FH1F0~1FFH軟驅(qū)控制卡3F0~3F7H3F0~3F7H6.1I/O端口的尋址方式只要設(shè)計(jì)I/O接口電路,就必然要使用I/O端口地址。在選定I/O端口地址時(shí)要注意:(1)凡是已被系統(tǒng)配置所占用的地址一律不能使用。(2)原則上講,未被占用的地址用戶可以使用,但對計(jì)算機(jī)廠家申明保留的地址,不要使用,否則,會(huì)發(fā)生I/O端口地址重疊和沖突造成你開發(fā)的產(chǎn)品與系統(tǒng)不兼容而失去使用價(jià)值。(3)一般用戶可使用300~31FH地址,這是IBM-PC系列機(jī)留作實(shí)驗(yàn)卡用的。在用戶可用的I/O地址范圍內(nèi),為了避免與其他用戶開發(fā)的插板發(fā)生地址沖突,最好采用地址開關(guān)。6.2I/O端口地址譯碼6.2.1I/O端口地址譯碼方法每當(dāng)CPU執(zhí)行IN或OUT指令時(shí),就進(jìn)入了I/O端口讀/寫周期,此時(shí)首先是端口地址有效,然后是I/O讀/寫控制信號(hào)或有效,把對端口地址譯碼而產(chǎn)生的譯碼信號(hào)同或結(jié)合起來一同控制對I/O端口的讀或?qū)懖僮鳌5荘C微機(jī)所支持的端口地址數(shù)目很多,每次端口操作是針對哪個(gè)端口呢?這就要根據(jù)對端口地址譯碼所產(chǎn)生的地址選擇信號(hào)來選中指定的端口,然后由或控制其讀或?qū)懖僮?,沒有被選中的端口不產(chǎn)生任何動(dòng)作。6.2I/O端口地址譯碼按照上面分析的原則,似乎就可以進(jìn)行I/O端口的選通與讀/寫操作了。但是,實(shí)際上I/O地址譯碼電路不僅與地址信號(hào)有關(guān),而且還與控制信號(hào)有關(guān),它把地址和控制信號(hào)進(jìn)行組合,產(chǎn)生對芯片的選擇信號(hào)。因此,I/O地址譯碼電路除了要受A0~A9這10根地址線所限定的地址范圍之外,還要考慮下面的一些控制信號(hào),如:利用、信號(hào)控制對端口的讀/寫。用AEN信號(hào)控制非DMA傳送。用信號(hào)控制是8位還是16位的I/O端口。用(或)信號(hào)控制端口奇偶地址。6.2I/O端口地址譯碼由以上分析可知,在設(shè)計(jì)地址譯碼電路時(shí),除了精心選擇地址范圍之外,還要根據(jù)CPU與I/O端口交換數(shù)據(jù)時(shí)的流向(讀/寫),數(shù)據(jù)寬度(8位/16位),以及是否采用奇偶地址的要求來引入相應(yīng)的控制信號(hào),從而形成地址譯碼電路。微機(jī)中包括許多不同的I/O接口,如串行接口、并行接口、磁盤接口、顯示器接口等,但任何時(shí)刻只有一種裝置與CPU通信,外界的各個(gè)外設(shè)均是通過數(shù)據(jù)總線與PC做信息交換,各個(gè)數(shù)據(jù)總線是并接在一起的。那么系統(tǒng)是如何區(qū)分選擇6.2I/O端口地址譯碼

要通信的外設(shè)呢?各個(gè)外設(shè)裝置本身均有一個(gè)控制信號(hào)如片選信號(hào)(CHIPSELECT,),一般低電平有效,例如要選取外設(shè)一做數(shù)據(jù)傳送,則令外設(shè)一的控制信號(hào)有效,則外設(shè)一的內(nèi)部數(shù)據(jù)總線就會(huì)打開,而其他各個(gè)外設(shè)因?yàn)榭刂菩盘?hào)無效而內(nèi)部呈現(xiàn)高阻抗,自然就與系統(tǒng)數(shù)據(jù)總線隔離開來。外設(shè)的控制信號(hào)就是這樣通過I/O地址譯碼而產(chǎn)生的。也就是說,給不同的外設(shè)分配不同的端口地址,而端口地址通過譯碼電路產(chǎn)生控制信號(hào)來選擇外設(shè)。當(dāng)CPU與某外設(shè)進(jìn)行數(shù)據(jù)傳送時(shí),只要在地址總線上送出其相應(yīng)的端口地址,就能選中該外設(shè),再配合其他控制信號(hào),完成數(shù)據(jù)傳送。6.2I/O端口地址譯碼以PC/XT機(jī)為例,8088對外部I/O接口芯片或部件的譯碼是使用A0~A9地址線,結(jié)合、、AEN等控制信號(hào)線來完成的。其中AEN信號(hào)線必須使用。AEN=0時(shí),即不是DMA操作時(shí)譯碼才有效;AEN=1時(shí),即DMA操作時(shí),使譯碼無效,避免在DMA周期影響對外設(shè)的數(shù)據(jù)傳送。譯碼電路在整個(gè)I/O接口電路設(shè)計(jì)中占有重要的地位。譯碼電路的輸出信號(hào),通常是低電平有效,高電平無效。6.2I/O端口地址譯碼6.2.2固定式端口地址譯碼所謂固定譯碼是指接口中用到的端口地址不能更改。一般接口卡中大部分都采用固定式譯碼。

(1) 用門電路進(jìn)行端口地址譯碼。這是一種最基本最簡單的端口地址譯碼方法,它一般采用與門、與非門、反相器及或非門等,如74LS08、74LS32、74LS30等。如圖6.1所示為可譯出2F8H讀操作端口地址的譯碼電路,圖6.1中AEN參加譯碼,它對端口地址譯碼進(jìn)行控制,從而避免了在DMA周期,由DMA控制器對這些I/O端口地址的非DMA傳送方式的外部設(shè)備進(jìn)行讀操作。6.2I/O端口地址譯碼如果接口電路中需要兩個(gè)端口地址,一個(gè)用于輸入,一個(gè)用于輸出,譯碼輸出可用和信號(hào)進(jìn)行控制,以分別實(shí)現(xiàn)讀/寫訪問,此時(shí)的一個(gè)端口地址等效于兩個(gè)端口地址。如圖6.2表示了這種控制電路。6.2I/O端口地址譯碼圖6.12F8H端口譯碼電路6.2I/O端口地址譯碼圖6.22E2H端口讀/寫譯碼電路6.2I/O端口地址譯碼(2)用譯碼器進(jìn)行端口地址譯碼。若接口電路中需要使用多個(gè)端口地址時(shí),則采用譯碼器譯碼比較方便。譯碼器的型號(hào)很多,如3-8譯碼器74LS138,8205;4-16譯碼器74LS154;雙2-4譯碼器74LS139和74LS155等。3-8譯碼器74LS138是最常見的譯碼電路之一,它可以從輸入的3個(gè)代碼(A、B、C)中譯出8個(gè)輸出(Y0~Y7)。它的3個(gè)輸入控制端是G1、、,只有當(dāng)G1=1,==0時(shí),才允許對輸入端A、B、C進(jìn)行譯碼。74LS138的真值表如表6.3所示。6.2I/O端口地址譯碼輸入控制端輸入代碼輸出G1

CBAY7Y6Y5Y4Y3Y2Y1Y0100000111111101000011111110110001011111011100011111101111001001110111110010111011111表6.374LS138輸入/輸出真值表6.2I/O端口地址譯碼輸入控制端輸入代碼輸出10011010111111100111011111110×

××

×

×11111111×1××

×

×11111111×

×1×

×

×111111116.2I/O端口地址譯碼從表6.3中可以看出,當(dāng)滿足控制電平,即把G1接高電平,和接低電平時(shí),則輸出的狀態(tài)由C、B、A這三個(gè)輸入信號(hào)的編碼來決定。如,當(dāng)CBA=000時(shí),Y0=0;當(dāng)CBA=111時(shí),Y7=0,由此可譯出8個(gè)譯碼選通輸出信號(hào)(低電平有效)。當(dāng)控制條件不滿足時(shí),則輸出全為1,不產(chǎn)生譯碼選通輸出信號(hào),即譯碼無效6.2I/O端口地址譯碼如圖6.3所示的電路是PC/XT系統(tǒng)板上的接口控制電路的端口地址譯碼電路。圖中地址線的高5位A5~A9經(jīng)過74LS138譯碼器,分別產(chǎn)生了8237、中斷控制器8259、定時(shí)/計(jì)數(shù)器8253、并行接口8255等接口芯片的片選信號(hào),而地址線的低5位A0~A4作為接口芯片內(nèi)部寄存器的訪問地址。從74LS138譯碼器的真值表可知,當(dāng)?shù)刂肥?00~01XH時(shí),便有輸出為低,選中8237,由于A0~A3未接8237,故8237的端口地址是000~01FH。從其他芯片的端口地址范圍也容易看出,如8259的片選地址是02X~03XH,口地址范圍是020~03FH。6.2I/O端口地址譯碼圖6.3PC/XT系統(tǒng)板上的接口控制電路的端口地址譯碼電路6.2I/O端口地址譯碼6.2.3開關(guān)式可選端口地址譯碼如果用戶要求接口卡的端口地址能適應(yīng)不同的地址分配場合,或?yàn)橄到y(tǒng)以后擴(kuò)充留有余地,則可以使用開關(guān)式端口地址譯碼。這種譯碼方式可以通過開關(guān)使接口卡的I/O端口地址根據(jù)要求加以改變而無須更改電路,其電路結(jié)構(gòu)形式有如下幾種:

(1) 用比較器和地址開關(guān)進(jìn)行地址譯碼。在接口地址譯碼中,可采用比較器,將地址總線上送來的地址,或者某些地址范圍與預(yù)設(shè)的地址或地址范圍進(jìn)行比較。若兩者相等,表示地址總線送來的端口地址為接口地址或接口所用到的端口地址范圍,于是便可以啟動(dòng)接口執(zhí)行預(yù)定的操作。6.2I/O端口地址譯碼常用的比較器有4位比較器74LS85、8位比較器74LS688。對于74LS688,它將輸入的8位數(shù)據(jù)P0~P7與另一8位數(shù)據(jù)Q0~Q7相應(yīng)進(jìn)行比較,可比較大于、小于或等于,在地址譯碼中僅使用比較相等的功能,大于、小于則不同。如圖6.4所示的電路中,把P0~P7連接有關(guān)的地址線和控制線,Q0~Q7連接地址開關(guān),而輸出端P接到譯碼器74LS138的控制端上。根據(jù)比較器的特性,當(dāng)輸入端P0~P7的地址與輸入端Q0~Q7的開關(guān)狀態(tài)一致時(shí),輸出為低電平,使譯碼器進(jìn)行譯碼。因此,使用時(shí)可預(yù)置DIP地址開關(guān)為某一值,得到一組所要求的端口地址。在圖6.4中讓和參加譯碼,分別產(chǎn)生8個(gè)讀/寫端口地址,并且當(dāng)A9=1、AEN=0時(shí)譯碼才有效。6.2I/O端口地址譯碼圖6.4用比較器組成的可選式譯碼電路6.2I/O端口地址譯碼(2)使用跳線的可選式譯碼電路。如果根據(jù)需要,要改變譯碼器的譯出地址,可以用跳線或跳接開關(guān)對譯碼器的輸入地址進(jìn)行反相或不反相的選擇。如果要改變跳線的連接方向,則有多達(dá)1024種選擇。6.3GAL器件在I/O地址譯碼電路中的應(yīng)用

6.3.1GAL器件的特點(diǎn)

1.GAL的基本結(jié)構(gòu)GAL主要是由可編程的與陣列、固定(不可編程)的或陣列、可編程的輸出邏輯宏單元(OLMC)3部分電路組成。GAL是利用EEPROM浮柵技術(shù)制成的器件。目前常用的GAL器件中,普通型器件GAL16V8使用最多。GAL16V8是20腳DIP封裝,如圖6.5所示。GAL20V8是24腳封裝,與GAL16V8相比較,除了容量有所不同外,在結(jié)構(gòu)上沒有太大差別。下面以GAL16V8為例,說明其結(jié)構(gòu)特點(diǎn)如下:6.3GAL器件在I/O地址譯碼電路中的應(yīng)用圖6.5GAL16V8的引腳圖6.3GAL器件在I/O地址譯碼電路中的應(yīng)用

(1)GAL16V8的1~9和11引腳固定作輸入使用,13~18也可以配置成輸入引腳,因此輸入最多可為16個(gè)。GAL16V8最多可配置8個(gè)輸出邏輯宏單元(OLMC12~OLMC19)。這也是GAL16V8命名的由來。(2)GAL16V8的與陣列有64條行線和32條列輸入線,與陣列共分8個(gè)陣列塊。每個(gè)陣列塊有8條行線,每條行線接一個(gè)與門。(3)GAL16V8系列器件的OLMC共有3種工作模式,它們是寄存器模式、復(fù)雜模式、簡單模式。6.3GAL器件在I/O地址譯碼電路中的應(yīng)用

(4)行線是與門的輸入線,列輸入線是輸入信號(hào)提供線。與門輸出的乘積項(xiàng)由行線和列輸入線交叉點(diǎn)處的可編程單元的編程情況決定。應(yīng)須說明,雖然GAL的編程單元不是實(shí)體熔絲,但是編程單元CMOS管的導(dǎo)通恰好同實(shí)體熔絲編程后熔絲保留相對應(yīng),CMOS管截止恰好同實(shí)體熔絲熔斷相對應(yīng)。因此,在研究GAL編程及有關(guān)方面問題時(shí),也借用熔絲這一術(shù)語。(5)1號(hào)引腳(CLK)經(jīng)一級(jí)緩沖器引至OLMC的CK端和OLMC19的M端。6.3GAL器件在I/O地址譯碼電路中的應(yīng)用

2.GAL的特點(diǎn)GAL(GenericArrayLogic)是美國LATTICE公司于20世紀(jì)80年代提出的可編程邏輯器件PLD,它具有如下特點(diǎn):(1) 實(shí)現(xiàn)多種邏輯功能,它可以實(shí)現(xiàn)組合邏輯電路和時(shí)序邏輯電路的多種功能。(2) 采用電擦除工藝,門陣列的每個(gè)單元可以反復(fù)改寫(至少100次),因而整個(gè)器件的邏輯功能可以重新配置,因此它是產(chǎn)品開發(fā)研制中的理想工具。(3) 具有硬件加密單元,可以防止抄襲電路設(shè)計(jì)和非法復(fù)制。(4) 速度高而功耗低,具有高速電擦寫能力,改寫整個(gè)芯片只需數(shù)秒鐘,而功耗只有雙極型邏輯器件的1/2或1/4,緩解了溫升問題。6.3GAL器件在I/O地址譯碼電路中的應(yīng)用

6.3.2GAL器件的開發(fā)過程及工具

1.PLD(GAL)開發(fā)工具PLD之所以能迅速廣泛應(yīng)用,有兩個(gè)主要原因:一是生產(chǎn)廠家不斷推出新品種,使其功能越來越強(qiáng)。二是已具有品種多、使用方便、功用性強(qiáng)的PLD開發(fā)軟件和硬件,用戶設(shè)計(jì)開發(fā)PLD極為方便。PLD開發(fā)系統(tǒng)主要由兩部分組成:硬件、微型計(jì)算機(jī)及編程器;PLD開發(fā)軟件。6.3GAL器件在I/O地址譯碼電路中的應(yīng)用

2.PLD(GAL)器件設(shè)計(jì)的一般步驟一般可按下列步驟進(jìn)行設(shè)計(jì):(1) 設(shè)計(jì)構(gòu)思。即用真值表、邏輯方法和狀態(tài)圖這三種方法中的任一種,將所要設(shè)計(jì)的問題變?yōu)樵O(shè)計(jì)文件。(2) 選擇器件型號(hào)。根據(jù)設(shè)計(jì)文件的要求,選擇合適的工業(yè)器件型號(hào),要考慮到輸入、輸出的引腳數(shù)目,是組合邏輯器件還是時(shí)序邏輯器件等。(3) 將設(shè)計(jì)文件按照所應(yīng)用的HDL語言的要求,寫成源文件,然后上機(jī)編譯、仿真和測試。(4) 編程器編程。將生成的編程文件下載到編程器,對器件編程。此處的編程器件是最終所使用的器件,如GAL16V8、GAL20V8等。6.3GAL器件在I/O地址譯碼電路中的應(yīng)用

3.采用邏輯方程的設(shè)計(jì)方法通常采用的邏輯方程(布爾方程)、真值表和狀態(tài)圖這三種描述方法都各自有其特點(diǎn),我們可選擇其中任一種設(shè)計(jì)方法。下面以邏輯方程的描述方法為例作簡要說明。邏輯方程也叫布爾方程。它是在邏輯表達(dá)式的基礎(chǔ)上以方程式的形式列寫了邏輯函數(shù)的輸入變量與輸出變量之間的邏輯關(guān)系。在采用邏輯方程的設(shè)計(jì)方法時(shí),又采用了一些高級(jí)設(shè)計(jì)語言所能接受的語句,將邏輯方程加以簡化,使其形成了一套簡煉的設(shè)計(jì)方程。在設(shè)計(jì)時(shí),應(yīng)注意以下幾個(gè)問題:(1) 邏輯方程分為兩種:非時(shí)鐘控制的組合輸出方程和時(shí)鐘控制的狀態(tài)輸出方程。組合輸出方程用等號(hào)“=”連接,而狀態(tài)輸出方程則用“:=”連接。比如,F(xiàn)=ABC為組合邏輯輸出方程,其中A、B、C是輸入變量,F(xiàn)是輸出變量。6.3GAL器件在I/O地址譯碼電路中的應(yīng)用

而F:=ABC是狀態(tài)輸出方程,也簡稱為狀態(tài)方程。當(dāng)輸入變量A、B、C狀態(tài)改變后,只有時(shí)鐘信號(hào)作用后F才改變。(2) 在方程式中的元素,既可以是輸入的單個(gè)變量,也可以是一個(gè)用標(biāo)識(shí)符所代表的集合。(3) 在采用邏輯方程時(shí),允許使用語句:IF…THEN…;ELSE…;IF后面的內(nèi)容是邏輯方程實(shí)施的條件,一般為工作狀態(tài)的控制信息,當(dāng)用表達(dá)式列寫時(shí)要用小括號(hào)括起來。THEN和ELSE后面是輸出方程或狀態(tài)方程。“ELSE…;”是語句的轉(zhuǎn)移部分,沒有轉(zhuǎn)移時(shí)可以不用。如IF(A=1)THENQ:=B;ELSEQ:=C;其含義是當(dāng)A=1時(shí),Q在時(shí)鐘作用下轉(zhuǎn)換為狀態(tài)B;A≠1時(shí)Q在時(shí)鐘作用下轉(zhuǎn)換為狀態(tài)C。6.3GAL器件在I/O地址譯碼電路中的應(yīng)用

4.ABEL語言的源文件及特點(diǎn)ABEL語言是美國DATAI/O公司開發(fā)的一種邏輯設(shè)計(jì)軟件,它具有如下特點(diǎn):

(1) 語言適用于各種型號(hào)的PLD器件。

(2) 語言本身高度結(jié)構(gòu)化。

(3) 邏輯描述的形式靈活多樣,可用高級(jí)布爾方程、真值表與狀態(tài)圖3種方法輸入。

(4) 具有仿真和測試的測試向量。

(5) 具有有效的宏指令及指示。6.3GAL器件在I/O地址譯碼電路中的應(yīng)用

module…

模塊開始flag'……' 標(biāo)記title'……' 標(biāo)題"nameDEVICE'devicetype'; 說明使用的工業(yè)器件型號(hào)…device'……';"pinandnodedeclarations; 引腳和結(jié)點(diǎn)定義"namesPINpin#s;"namesNODEnode#s;……pin……;……pin……;"constantdeclarations 常量說明H,L,X=1,0,·X·;6.3GAL器件在I/O地址譯碼電路中的應(yīng)用

……=….….;equations…

布爾方程"name=expression;…=…;enable…=…;…=…;test-vectors 向量測試"inputs outputs([……]->[……])……end…6.3GAL器件在I/O地址譯碼電路中的應(yīng)用

6.3.3采用GAL的I/O地址譯碼電路設(shè)計(jì)

1.應(yīng)用GAL設(shè)計(jì)地址譯碼在使用GAL設(shè)計(jì)地址譯碼器時(shí)應(yīng)注意以下幾點(diǎn):一是根據(jù)選定的GAL器件,根據(jù)ABEL源文件的結(jié)構(gòu)、格式及要求實(shí)現(xiàn)的邏輯功能,編寫出ABEL源文件;二是利用ABEL軟件,對ABEL文件進(jìn)行編譯、化簡、仿真等,最后生成JED編程器下載文件;三是利用編程器把JED文件寫入(“燒入”)GAL器件中。下面以圖6.6所示,對端口2F0H的讀寫控制端口的地址譯碼為例,說明GAL器件在端口地址譯碼中的應(yīng)用。6.3GAL器件在I/O地址譯碼電路中的應(yīng)用

圖6.6端口2F0H譯碼的GAL16V8引腳圖6.3GAL器件在I/O地址譯碼電路中的應(yīng)用

【例6.3】利用GAL設(shè)計(jì)一個(gè)I/O端口地址譯碼電路,實(shí)現(xiàn)對端口2F0H的讀/寫控制。根據(jù)題意,地址譯碼器的輸入包括:10條地址線A0~A9和3條控制線、、AEN,即共13條輸入信號(hào)。譯碼器的輸出為端口2F0H的讀控制信號(hào)R2F0和端口2F0H的寫控制信號(hào)W2F0,即兩條輸出信號(hào)。依據(jù)上面分析,選用GAL16V8便可,GAL16V8的引腳定義如圖6.6所示。在本例中,R2F0、W2F0的邏輯表達(dá)式可作如下描述:

=A9.A8.A7.A6.A5.A4.A3.A2.A1.A0.IOR.AEN=A9.A8.A7.A6.A5.A4.A3.A2.A1.A0.IOW.AEN根據(jù)上面分析及ABEL語言的語法規(guī)則、文件結(jié)構(gòu),便可寫出對2F0H端口的讀、寫控制的ABEL源文件如下所示:6.3GAL器件在I/O地址譯碼電路中的應(yīng)用

modul–decodertitle'addressdecoderforport2f0h'decoderdevice'P16V8C';X,C,L,H=·X·,·C·,0,1;A0,A1,A2,A3,A4,A5,A6 pin1,2,3,4,5,6,7;A7,A8,A9,AEN,IOR,IOW pin8,9,11,13,14,15;W2f0,R2f0pin18,19;Add=[A9,A8,A7,A6,A5,A4,A3,A2,A1,A0];"R2F0=2f0h*/IOR*/AEN"W2F0=2f0h*/IOW*/AENequations!R2F0=A9&!A8&A7&A6&A5&A4&!A3&!A2&!A1&!A0&!AEN&!IOR;!W2F0=A9&!A8&A7&A6&A5&A4&!A3&!A2&!A1&A0&!AEN&!IOW;end-decoder6.3GAL器件在I/O地址譯碼電路中的應(yīng)用

2.GAL的開發(fā)及使用中應(yīng)注意的問題

(1)GAL開發(fā)的軟件和硬件需求。

①建立用戶源文件。

②編譯用戶源文件。

(2)器件編程。

①在專用的軟件系統(tǒng)環(huán)境下,啟動(dòng)編程器,使計(jì)算機(jī)和編程器進(jìn)行通信,將JEDEC數(shù)據(jù)文件下載到編程器上。6.3GAL器件在I/O地址譯碼電路中的應(yīng)用

② 選擇目標(biāo)器件的制造廠家、型號(hào)進(jìn)行器件匹配。

③ 將GAL器件插入插座并鎖緊,這一步必須注意芯片引腳序號(hào)與插座引腳號(hào)要對應(yīng),否則器件可能被毀壞。

④下載編程,即將下載到編程器上的JEDEC數(shù)據(jù)文件寫入到GAL芯片中。6.3GAL器件在I/O地址譯碼電路中的應(yīng)用

(3) 實(shí)際功能驗(yàn)證。將芯片從編程器取下,放入到實(shí)驗(yàn)電路中或?qū)嶋H工作的系統(tǒng)中進(jìn)行實(shí)際功能驗(yàn)證,如果功能正確,說明開發(fā)工作結(jié)束;如果功能驗(yàn)證不正確,則還要返回到第一步重新修改設(shè)計(jì)。

(4) GAL器件的供電電源要加去耦電容。GAL器件接入到系統(tǒng)電路時(shí),在GAL的Vcc引腳和地之間要并接一個(gè)0.1μF左右的電容器去耦,以此提高GAL器件工作的可靠性。

(5) GAL器件不用端的處理。GAL器件的不使用管腳切忌懸空,一律要求接地或接Vcc。否則會(huì)引起附加干擾,影響整個(gè)芯片的性能。6.3GAL器件在I/O地址譯碼電路中的應(yīng)用

(6) 充分利用內(nèi)部反饋。在利用GAL器件進(jìn)行邏輯設(shè)計(jì)時(shí),常常遇到利用中間輸出變量。所謂中間輸出變量,是指不是真正輸出到外界的變量??梢詫⒅虚g輸出變量設(shè)置在不同的輸出端上,然后利用內(nèi)部反饋緩沖器將其引入到與陣列重新組成邏輯操作。

(7)防止I/O引腳過壓。當(dāng)I/O引腳加入高于Vcc或低于地電平的電壓時(shí),在該I/O引腳上會(huì)產(chǎn)生latch-up(鎖死)現(xiàn)象,結(jié)果損壞內(nèi)部的CMOS管。一般要求輸入信號(hào)的高、低電平偏差在允許值0.5V以內(nèi),同時(shí)要注意GAL芯片未加電源電壓以前不要加輸入信號(hào)。6.3GAL器件在I/O地址譯碼電路中的應(yīng)用

(8) 保證GAL輸入引腳的信號(hào)上升沿和下降沿。GAL的輸入引腳所加信號(hào)的上升沿和下降沿太慢會(huì)將噪聲引入芯片內(nèi),引起誤翻轉(zhuǎn)。如果已知輸入信號(hào)上升沿和下降沿太慢時(shí),可將信號(hào)先經(jīng)過一級(jí)施密特觸發(fā)器,信號(hào)經(jīng)整形后再輸入到GAL的輸入端。

(9) 必須嚴(yán)格遵循GAL電源的最大上升時(shí)間規(guī)定。許多PLD器件在加電期間要完成寄存器的加電復(fù)位操作,GAL器件也是如此。太緩慢的電源電壓上升率會(huì)給噪聲引入GAL芯片造成可乘之機(jī)。

6.3GAL器件在I/O地址譯碼電路中的應(yīng)用

(10)注意GAL輸入端參數(shù)對外電路的影響。在用GAL實(shí)現(xiàn)單穩(wěn)和振蕩器時(shí),GAL的輸入電阻和電容會(huì)對單穩(wěn)和振蕩器的參數(shù)產(chǎn)生影響,在選擇單穩(wěn)和振蕩器參數(shù)時(shí)要考慮GAL芯片輸入/輸出的影響,最好通過實(shí)驗(yàn)確定其參數(shù)。

(11)修改GAL邏輯設(shè)計(jì)。在修改用GAL實(shí)現(xiàn)的邏輯電路設(shè)計(jì)時(shí),不要直接修改JED文件,而要先修改源文件,然后再對修改后的源文件進(jìn)行編譯,重新得到修改后的熔絲圖和JED文件。6.3GAL器件在I/O地址譯碼電路中的應(yīng)用

(12)選用合適的GAL編程寫入器。有些GAL編程器對與之配合的計(jì)算機(jī)的主頻要求不同,有些GAL編程器在586個(gè)人計(jì)算機(jī)上能正確對GAL芯片編程寫入,而在PⅡ個(gè)人計(jì)算機(jī)上反而不能正確對GAL芯片編程寫入,在選購編程器時(shí)必須注意編程器對個(gè)人計(jì)算機(jī)的時(shí)鐘頻率匹配問題。

(13)關(guān)于解決乘積項(xiàng)不足問題。當(dāng)某一輸出邏輯宏單元的乘積項(xiàng)不足時(shí),可以借用另外宏單元實(shí)現(xiàn)擴(kuò)充乘積項(xiàng)的邏輯操作,然后將其輸出再反饋到乘積項(xiàng)不足宏單元的與陣列輸入。6.3GAL器件在I/O地址譯碼電路中的應(yīng)用

(14)GAL的上電復(fù)位。GAL16V8和GAL20V8器件編程后都要進(jìn)行功能驗(yàn)證,上電之前,如果芯片工作在寄存器模式下,必須將11腳(GAL16V8)或13腳(GAL20V8)接低電平或接地。上電之后,工作在寄存器模式下的各輸出邏輯宏單元中的D觸發(fā)器的Q端應(yīng)復(fù)位成“0”,相應(yīng)的輸出引腳應(yīng)為高電平。如果狀態(tài)正確,可繼續(xù)進(jìn)行功能驗(yàn)證,否則,說明編程有誤或芯片出了問題。6.4半導(dǎo)體存儲(chǔ)器接口6.4.1半導(dǎo)體存儲(chǔ)器接口的基本技術(shù)存儲(chǔ)器與CPU的連接可以從以下幾個(gè)方面考慮。

1.信號(hào)線連接要求存儲(chǔ)器芯片的外部引腳分為數(shù)據(jù)線(DB)、地址線(AB)和控制線(CB)。CPU對存儲(chǔ)器的讀寫操作首先是向地址線發(fā)地址信號(hào),然后向控制線發(fā)讀/寫信號(hào),最后在數(shù)據(jù)線上傳送數(shù)據(jù)信息。同時(shí),每一片存儲(chǔ)器芯片的地址線、數(shù)據(jù)線和控制線都必須和CPU建立正確的連接,才能進(jìn)行正確的操作。CPU與存儲(chǔ)器的連接就是指地址線、數(shù)據(jù)線和控制線的連接。6.4半導(dǎo)體存儲(chǔ)器接口數(shù)據(jù)線的連接:一般系統(tǒng)的數(shù)據(jù)總線與存儲(chǔ)器的數(shù)據(jù)線相連接。地址線的連接:存儲(chǔ)器與CPU地址總線的連接必須滿足對芯片所分配的地址范圍的要求。CPU發(fā)出的地址信號(hào)必須實(shí)現(xiàn)兩種選擇,首先對存儲(chǔ)器芯片的選擇,使相關(guān)芯片的片選端有效,稱為片選;然后在選中的芯片內(nèi)部再選擇某一存儲(chǔ)單元,稱為字選。片選信號(hào)和字選信號(hào)均由CPU發(fā)出的地址信號(hào)經(jīng)譯碼電路產(chǎn)生。字選信號(hào)由存儲(chǔ)器芯片的內(nèi)部譯碼電路產(chǎn)生,這部分譯碼電路不須用戶設(shè)計(jì)??刂凭€的連接:系統(tǒng)控制線的讀/寫控制需要與存儲(chǔ)器芯片的控制線連接。6.4半導(dǎo)體存儲(chǔ)器接口這里介紹外部譯碼電路的三種譯碼方法。

1) 線性選擇法這種方法直接用CPU地址總線中的某一高位線作為存儲(chǔ)器芯片的片選信號(hào),簡稱為線性選擇法。線性選擇法的優(yōu)點(diǎn)是連接簡單,片選信號(hào)的產(chǎn)生不需要復(fù)雜的邏輯電路,只用一條地址線與的簡單組合就可產(chǎn)生有效的。例如,某一計(jì)算機(jī)共有16條地址線,只需接入1KB的RAM和1KB的ROM。因此可以確定,當(dāng)?shù)刂贩秶笕鐖D6.7所示時(shí),字選線為10條,可用A0~A9充當(dāng)。若用A10作片選,則RAM和ROM的地址為圖中的第一組;當(dāng)用A11作片選時(shí),地址范圍如圖中的第二組。6.4半導(dǎo)體存儲(chǔ)器接口從圖6.7可知,A11作片選時(shí),RAM和ROM的地址不連續(xù)。同理,用A12~A15中的任一條作片選,RAM和ROM的地址間隙更大。圖中用A11作片選時(shí),RAM和ROM的地址不連續(xù),其范圍是將A10作為“0”考慮給出的,當(dāng)A10為“1”時(shí)也應(yīng)尋址到這些RAM和ROM。另外,A12~A15當(dāng)取值為非全0時(shí),如果譯碼電路未對這些高位地址線進(jìn)行管理,則將出現(xiàn)另外許多組地址,這種情況稱為地址的多義性。6.4半導(dǎo)體存儲(chǔ)器接口圖6.7線選法控制電路及地址分配6.4半導(dǎo)體存儲(chǔ)器接口由以上分析可知,當(dāng)采用線選法時(shí),若低位地址線用于字選,高位地址線用作線選,且高位地址未全部用完而又沒有對其實(shí)施控制時(shí),出現(xiàn)地址的不連續(xù)和多義性,這是線性法的兩大缺點(diǎn)。線選法還有另一種局限,即使所有的高位地址線都用作線選,其能尋址的存儲(chǔ)空間也十分有限。在大系統(tǒng)中,線選法有限的尋址能力限制了存儲(chǔ)器系統(tǒng)的擴(kuò)展,這也是它的一個(gè)弱點(diǎn)。6.4半導(dǎo)體存儲(chǔ)器接口2) 部分譯碼法用部分高位地址進(jìn)行譯碼產(chǎn)生片選信號(hào)。如圖6.8所示采用6116存儲(chǔ)器芯片(2KB×8)用部分譯碼法實(shí)現(xiàn)的8KB存儲(chǔ)器。只用A12、A11的高位地址來譯碼實(shí)現(xiàn)對4個(gè)芯片的選中。要選中芯片0#時(shí),應(yīng)使A12、A11為低電平,譯碼器的有效,相應(yīng)的芯片0#的片選信號(hào)有效,選中芯片0#。其地址分配和有效地址對應(yīng)表如表6.4所示。6.4半導(dǎo)體存儲(chǔ)器接口圖6.8部分譯碼法存儲(chǔ)器譯碼系統(tǒng)電路6.4半導(dǎo)體存儲(chǔ)器接口A12A11有效芯片地址范圍000#0000H~07FFH011#0800H~0FFFH102#1000H~17FFH113#1800H~1FFFH表6.4地址分配和有效地址對照表6.4半導(dǎo)體存儲(chǔ)器接口3) 全譯碼法全譯碼法將高位地址全部作為譯碼器輸入,用譯碼器的輸出作為片選信號(hào)。這種尋址方法中,低位地址線用作字選,與芯片的地址輸入端直接相連;高位地址線全部連接譯碼電路,用來生成片選信號(hào)。這樣,所有的地址線均參與片內(nèi)或片外的地址譯碼,不會(huì)產(chǎn)生地址的多義性和不連續(xù)性,全譯碼法的存儲(chǔ)器系統(tǒng)的電路如圖6.9所示。6.4半導(dǎo)體存儲(chǔ)器接口圖6.9全譯碼存儲(chǔ)器系統(tǒng)電路6.4半導(dǎo)體存儲(chǔ)器接口如圖6.9所示的存儲(chǔ)系統(tǒng)大小為12KB,其中低8KB為EPROM,由兩片2732A(4KB×8位)芯片組成,地址范圍為0000H~1FFFH(其中,2732A(1)為0000H~0FFFH,2732A(2)為1000H~1FFFH);高4KB為RAM,由兩片6116(2KB×8位)芯片組成,地址范圍為2000H~2FFFH(其中,6116(1)為2000H~27FFH,6116(2)為2800H~2FFFH)。CPU為8位機(jī)型(如Z-80),16根地址線A0~A15全部參加譯碼。其中,每片EPROM為4KB,故A0~A11用作片內(nèi)字選,A12~A15用作片選;RAM每片為2KB,A0~A10用作片內(nèi)字選,A11~A15用作片選。為寫控制信號(hào),為讀控制信號(hào),為存儲(chǔ)器選通信號(hào),3條信號(hào)線均為CPU輸出,低電平有效。從圖6.9所示可見,地址線全部參加譯碼,故地址不會(huì)出現(xiàn)多義性。6.4半導(dǎo)體存儲(chǔ)器接口

2.地址分配要求系統(tǒng)內(nèi)存通常分為ROM和RAM兩部分。其中ROM用于存放系統(tǒng)監(jiān)控程序等固化程序及常數(shù),RAM可分為系統(tǒng)區(qū)和用戶區(qū)兩部分。系統(tǒng)區(qū)是監(jiān)控程序或操作系統(tǒng)存放數(shù)據(jù)的區(qū)域,用戶區(qū)分為程序區(qū)和數(shù)據(jù)區(qū)兩部分,分別用于存放用戶程序和數(shù)據(jù),所以,內(nèi)存分配是一個(gè)重要的問題。就目前而言,單片的存儲(chǔ)器芯片容量有限,計(jì)算機(jī)的內(nèi)存儲(chǔ)器系統(tǒng)需要由多個(gè)芯片組成。因此,針對存儲(chǔ)器地址的分配,要知道哪些地址區(qū)域需要ROM,哪些區(qū)域需要RAM,即在具體電路中需要明確地址譯碼與片選信號(hào)的產(chǎn)生。以Intel8086CPU為例,根據(jù)Intel8086CPU的特性,高地址區(qū)域應(yīng)該是ROM區(qū)域,因?yàn)镮ntel8086CPU復(fù)位后執(zhí)行的第一條指令一定在該區(qū)域;而低地址區(qū)域必須連接RAM芯片作為RAM系統(tǒng)區(qū),因?yàn)榈偷刂穮^(qū)域是CPU存放中斷向量表等信息的系統(tǒng)區(qū)。6.4半導(dǎo)體存儲(chǔ)器接口3.驅(qū)動(dòng)能力考慮在CPU的設(shè)計(jì)中,一般輸出線的直流負(fù)載能力為帶一個(gè)TTL負(fù)載,而在連接中,CPU的每一根地址線或數(shù)據(jù)線,都有可能連接多片存儲(chǔ)器芯片。所以,在存儲(chǔ)器芯片與CPU的連接過程中,要考慮CPU外接有多少個(gè)存儲(chǔ)器芯片及CPU與存儲(chǔ)器芯片間的物理距離等因素。現(xiàn)在的存儲(chǔ)器芯片都為MOS電路,直流負(fù)載很小,主要的負(fù)載是電容負(fù)載,因此在小型系統(tǒng)中,CPU可以與存儲(chǔ)器芯片直接相連,在較大的系統(tǒng)中,就要考慮CPU是否需要加緩沖器,由緩沖器的輸出帶負(fù)載。6.4半導(dǎo)體存儲(chǔ)器接口6.4.2靜態(tài)RAM與CPU的連接靜態(tài)RAM有多種型號(hào),6264是一個(gè)典型的8KB×8的SRAM芯片,有數(shù)據(jù)線8位D7~D0,地址線13位A12~A0,內(nèi)部主要包括256×256的存儲(chǔ)器矩陣、行列地址譯碼器及數(shù)據(jù)輸入輸出控制邏輯電路。在存儲(chǔ)器讀周期,選中單元的8位數(shù)據(jù)經(jīng)I/O控制電路輸出;在存儲(chǔ)器寫周期,外部8位數(shù)據(jù)經(jīng)輸入數(shù)據(jù)控制電路的I/O控制電路寫到所選中的存儲(chǔ)單元中。當(dāng)片選信號(hào)無效時(shí),芯片數(shù)據(jù)線呈高阻狀態(tài)。如圖6.10所示是6264芯片的引腳圖,表6.5提供了6264芯片引腳與芯片工作狀態(tài)的關(guān)系。6.4半導(dǎo)體存儲(chǔ)器接口圖6.106264引腳圖6.4半導(dǎo)體存儲(chǔ)器接口片選輸出控制寫信號(hào)工作狀態(tài)001存儲(chǔ)器讀010存儲(chǔ)器寫1××未選中表6.56264引腳功能與芯片工作狀態(tài)6.4半導(dǎo)體存儲(chǔ)器接口通常一片存儲(chǔ)器芯片的存儲(chǔ)容量不可能正好是CPU的內(nèi)存尋址范圍。當(dāng)單片RAM不能滿足存儲(chǔ)容量的要求時(shí),這時(shí)可把多個(gè)單片RAM進(jìn)行組合,擴(kuò)展成大容量存儲(chǔ)器。多片存儲(chǔ)芯片的組合,可能是為了滿足CPU數(shù)據(jù)線寬度的需要,也可能是為了給CPU提供更大的存儲(chǔ)空間。前者是對數(shù)據(jù)線的擴(kuò)展,后者是對地址線的擴(kuò)展。在實(shí)際應(yīng)用中,常常需要對這兩方面同時(shí)進(jìn)行擴(kuò)展。6.4半導(dǎo)體存儲(chǔ)器接口1.位擴(kuò)展如圖6.11所示為1024×1的存儲(chǔ)器芯片與8位CPU的連接。由于每片存儲(chǔ)器芯片只有1位數(shù)據(jù)線,因此需要8片存儲(chǔ)器芯片,才能滿足CPU的8位數(shù)據(jù)線的要求,每一片存儲(chǔ)器芯片連接1位數(shù)據(jù)線。在這種結(jié)構(gòu)中,每片存儲(chǔ)器芯片除了數(shù)據(jù)線連至CPU不同位的數(shù)據(jù)線外,地址線和控制線的連接都是相同的,因?yàn)?片芯片為一組,一旦被選中,則同時(shí)工作,或者輸入,或者輸出。6.4半導(dǎo)體存儲(chǔ)器接口圖6.11用1024×1位的芯片組成1KBRAM6.4半導(dǎo)體存儲(chǔ)器接口

2.字?jǐn)U展如圖6.12所示是由兩片6264靜態(tài)RAM構(gòu)成的16KB存儲(chǔ)器。低位地址線A12~A0直接連至每一片6264芯片的地址輸入端,高位地址線經(jīng)譯碼以后產(chǎn)生片選信號(hào),分別連接到兩片6264的片選輸入端。地址譯碼器74LS138是一個(gè)常用的3-8譯碼器,當(dāng)?shù)刂稟19~A16=1110時(shí),該譯碼器被選中,也就是說,該譯碼器Y7~Y0輸出的地址范圍為0E0000H~0EFFFFH。其中,當(dāng)A15~A13=000時(shí),Y0輸出有效,其地址范圍為0E0000~0E1FFFH;當(dāng)A15~A13=001時(shí),Y1輸出有效,其地址范圍為0E2000H~0E3FFFH。至于6264存儲(chǔ)器芯片的數(shù)據(jù)線和控制線,則直接與CPU的數(shù)據(jù)線及對應(yīng)控制線相連接即可。6.4半導(dǎo)體存儲(chǔ)器接口圖6.12兩片6264靜態(tài)RAM構(gòu)成的16KB存儲(chǔ)器6.4半導(dǎo)體存儲(chǔ)器接口從圖6.12所示可知,CPU的地址線A12~A0負(fù)責(zé)了芯片內(nèi)部存儲(chǔ)單元的尋址,而不同存儲(chǔ)芯片的選擇,則是由地址線A19~A13來完成的。只有當(dāng)A19~A13=1110000時(shí),選中第一片RAM芯片;當(dāng)A19~A13=1110001時(shí),選中第二片RAM芯片。兩者的區(qū)別在于地址線A13=0或1。6.4半導(dǎo)體存儲(chǔ)器接口

控制信號(hào)的連接時(shí)必須注意:(1)CPU的寫信號(hào)與RAM芯片的寫信號(hào)相連接,CPU的讀信號(hào)與RAM芯片的讀信號(hào)或輸出控制信號(hào)相連接。如果某些RAM芯片的讀寫控制信號(hào)是合為一根的信號(hào)線,則可根據(jù)其電平要求連接CPU的寫信號(hào)線或讀信號(hào)線。(2)為了區(qū)別于I/O訪問,保證只有在存儲(chǔ)器讀或?qū)懖僮髌陂g才能訪問到存儲(chǔ)器芯片,所以CPU與存儲(chǔ)器的接口電路中要體現(xiàn)存儲(chǔ)器訪問這一操作性質(zhì),例如將M/信號(hào)參與控制用于片選的地址譯碼器,以保證只有在存儲(chǔ)器訪問期間地址譯碼器才工作。6.4半導(dǎo)體存儲(chǔ)器接口6.4.3動(dòng)態(tài)RAM與CPU的連接4164就是一個(gè)64KB×1的DRAM芯片,外部有8位地址輸入線提供行地址和列地址、一位數(shù)據(jù)輸入線和一位數(shù)據(jù)輸出線及行列地址選通信號(hào)線等。如圖6.13所示是4164的外部引腳圖,如圖6.14所示是4164芯片的內(nèi)部結(jié)構(gòu)圖。6.4半導(dǎo)體存儲(chǔ)器接口圖6.134164的外部引腳6.4半導(dǎo)體存儲(chǔ)器接口圖6.144164芯片的內(nèi)部結(jié)構(gòu)圖6.4半導(dǎo)體存儲(chǔ)器接口64KB的存儲(chǔ)器是由4個(gè)128×128存儲(chǔ)矩陣構(gòu)成的,通過最高位的行地址和列地址選擇不同的存儲(chǔ)矩陣。每個(gè)128×128存儲(chǔ)矩陣有7位行地址和7位列地址進(jìn)行選擇。7位行地址線經(jīng)過譯碼產(chǎn)生128條選擇線,分別選擇128行;7位列地址經(jīng)過譯碼后也產(chǎn)生128條選擇線,分別選擇128列。6.4半導(dǎo)體存儲(chǔ)器接口4164的外部引腳有:A7~A0:地址輸入。DIN:數(shù)據(jù)輸入線。DOUT:數(shù)據(jù)輸出線。:行地址選通,該信號(hào)有效,地址線輸入行地址。:列地址選通,該信號(hào)有效,地址線輸入列地址。:寫信號(hào),當(dāng)芯片選中時(shí),低電平表示寫狀態(tài),高電平表示讀狀態(tài)。由于動(dòng)態(tài)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論