資源描述:
《第2章-IO端口地址譯碼技術(shù)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
第2章IO端口地址譯碼技術(shù)第一頁,編輯于星期五:十五點(diǎn)五十二分。
1§2.1I/O端口概述一。IO端口及其編碼方式內(nèi)存內(nèi)存接口CPU系統(tǒng)總線:地址總線XA19-0,數(shù)據(jù)總線XD7-0,控制總線/XIOR……智能儀器接口通信接口過程控制接口輸入接口輸出接口外存接口數(shù)字化存儲(chǔ)示波器,數(shù)字化萬用表終端調(diào)制解調(diào)器TTY電傳機(jī)A/D轉(zhuǎn)換器開關(guān)量輸入D/A轉(zhuǎn)換器開關(guān)量輸出鍵盤數(shù)字化儀光筆圖形輸入聲音輸入掃描儀點(diǎn)陣打印CRT顯示激光打印液晶顯示噴墨打印繪圖儀X-Y記錄儀硬盤軟盤光盤磁帶系統(tǒng)總線接口第二頁,編輯于星期五:十五點(diǎn)五十二分。
21.IO端口端口是接口電路中能被CPU直接訪問的寄存器的地址。計(jì)算機(jī)給接口電路中的每個(gè)寄存器分配一個(gè)地址。IO操作指CPU對設(shè)備相關(guān)的IO端口的訪問操作,而不是對IO設(shè)備的操作二。IO端口地址編碼方式1、統(tǒng)一編址方式端口地址與存儲(chǔ)器地址統(tǒng)一編址第三頁,編輯于星期五:十五點(diǎn)五十二分。
3譯碼器CPUAB去存儲(chǔ)器芯片去I/O接口芯片Y0---iYi+1---j優(yōu)點(diǎn):指令豐富,電路簡單。缺點(diǎn):外設(shè)占用存儲(chǔ)器空間,內(nèi)存容量減小。第四頁,編輯于星期五:十五點(diǎn)五十二分。
4譯碼器8088CPU(最大模式)系統(tǒng)總線AB去存儲(chǔ)器去I/O接口/Y0-i/Y0-j譯碼器/XMENR/XMEMW/XIOR/XIOW注:最大模式下系統(tǒng)的控制總線來源于總線控制器8288和DMA總線仲裁邏輯2、獨(dú)立編址方式第五頁,編輯于星期五:十五點(diǎn)五十二分。
5優(yōu)點(diǎn):存儲(chǔ)器和外設(shè)都有自己的地址譯碼器,地址空間獨(dú)立,互不影響。用專用的I/O指令訪問I/O端口。三。獨(dú)立編址方式的端口訪問輸入指令:INAL,n;n為8位IO端口地址INAL,DX;16位地址用DX間址輸出指令:OUTn,ALOUTDX,AL第六頁,編輯于星期五:十五點(diǎn)五十二分。
61.IO地址寬度IO地址在0000H-00FFH,稱為8位地址寬度;IO地址在0100H-FFFFH,稱為16位地址寬度說明:不論IO地址寬度是8位,還是16位,都可以用DX間接尋址;只有IO地址是8位寬度才能直接尋址。2.IO數(shù)據(jù)寬度當(dāng)一次傳輸1個(gè)端口數(shù)據(jù),即8位數(shù)據(jù)時(shí),用AL累加器當(dāng)一次傳輸連續(xù)2個(gè)端口數(shù)據(jù),即16位時(shí),用AX累加器第七頁,編輯于星期五:十五點(diǎn)五十二分。
72.2IO端口地址分配一。IO接口硬件分類系統(tǒng)板(主板)上的IO芯片(如定時(shí)器,并口等等)IO擴(kuò)展槽上的接口控制卡(聲卡、網(wǎng)卡、軟驅(qū)卡、顯卡)二。IO端口地址分配參看表2.1表2.2三。IO端口地址選用的原則被系統(tǒng)配置已經(jīng)占用的不可用計(jì)算機(jī)廠家聲明保留的地址不要使用一般IBM實(shí)驗(yàn)卡用300H-31FH。第八頁,編輯于星期五:十五點(diǎn)五十二分。
82.3I/O端口地址譯碼一。IO地址譯碼電路工作原理及作用輸入信號:地址信號,控制信號輸出信號:“選中”信號。原理:譯碼器根據(jù)地址和控制信號,產(chǎn)生選中信號。不同的地址控制組合,最多只可能使一根“選中”信號有效,該有效的選中信號用于打開它所連接的IO接口芯片的數(shù)據(jù)線與系統(tǒng)線的通路總開關(guān)。地址譯碼器地址信號控制信號“選中”信號第九頁,編輯于星期五:十五點(diǎn)五十二分。
9“地址”信號線“控制”信號線“選中”信號線第十頁,編輯于星期五:十五點(diǎn)五十二分。
10在這一段時(shí)間,3個(gè)控制信號沒有同時(shí)有效,譯碼器“選中”信號線輸出全部無效000000000000111111111111控制信號有效時(shí),地址000時(shí),僅/IOY0有效。其余選中線全無效第十一頁,編輯于星期五:十五點(diǎn)五十二分。
11二。I/O端口地址譯碼方法:1.簡單接口芯片,只含有一個(gè)端口,內(nèi)部不帶帶譯碼器,譯碼器設(shè)計(jì)原則:由“IO地址”信號和“IO讀/寫”控制信號的不同組合實(shí)現(xiàn)??刂菩酒瑑?nèi)寄存器的入口或出口開關(guān)。第十二頁,編輯于星期五:十五點(diǎn)五十二分。
12T1T2T3、TWT40026H號IO端口地址來自CPU內(nèi)AL中的數(shù)據(jù)向IO端口寫數(shù)據(jù)時(shí)(OUT0026H,AL)系統(tǒng)總線時(shí)序(假設(shè)(AL)=22H)CLKXA15-0XREADYXD7-00026H22H第十三頁,編輯于星期五:十五點(diǎn)五十二分。
13T1T2T3、TWT40025H號IO端口地址來自0025H號IO端口的數(shù)據(jù)從IO端口讀出數(shù)據(jù)(INAL,0025H)時(shí)系統(tǒng)總線時(shí)序((25H端口)=11H)CLKXA15-0XREADYXD7-011H0025H第十四頁,編輯于星期五:十五點(diǎn)五十二分。
14外部譯碼器1個(gè)存儲(chǔ)單元(8bit)8個(gè)&&/XIOW/XIORD0-7XA0-15單個(gè)端口IO芯片(如373)內(nèi)部讀寫控制原理圖8個(gè)同時(shí)控制8個(gè)3態(tài)門GOEXD0-7I寫I讀/Y控制線始終保持有效或不帶控制線第十五頁,編輯于星期五:十五點(diǎn)五十二分。
15二。I/O端口地址譯碼方法:2.多端口芯片(內(nèi)部帶譯碼器)由地址信號和控制信號的不同組合實(shí)現(xiàn)。其原則是:(2).低位地址線直接連接到I/O接口芯片,由內(nèi)部譯碼器實(shí)現(xiàn)選中存儲(chǔ)單元或IO端口。例如:8255內(nèi)部有四個(gè)端口寄存器,則至少要留出2低位地址線用于8255內(nèi)部尋找寄存器(1).高位地址與CPU的控制信號組合,經(jīng)外部譯碼電路產(chǎn)生I/O接口芯片的片選信號(/CS),實(shí)現(xiàn)選中芯片(就是打開芯片內(nèi)部譯碼器)。第十六頁,編輯于星期五:十五點(diǎn)五十二分。
16譯碼器1個(gè)存儲(chǔ)單元(8bit)8個(gè)&&/WR/RDD0-7A0~i存儲(chǔ)器或IO接口芯片內(nèi)部讀寫控制原理圖/CS接自外部譯碼器“選中”線8個(gè)同時(shí)控制8個(gè)3態(tài)門內(nèi)部選中線,用于選中1個(gè)IO端口/Y0I寫I讀外部譯碼器XAi+1~9/YnXA0-i第十七頁,編輯于星期五:十五點(diǎn)五十二分。
17譯碼器1個(gè)存儲(chǔ)單元(8bit)8個(gè)&&WRRDD0-7A0-i/CS8個(gè)同時(shí)控制8個(gè)3態(tài)門內(nèi)部選中線,用于選中1個(gè)IO端口外譯碼器/XIOW/XIORXA0-iXAi+1--9多端口芯片與系統(tǒng)總線連接圖XD0-7I寫I讀/Y0/Yn第十八頁,編輯于星期五:十五點(diǎn)五十二分。
18三。IO端口地址譯碼電路設(shè)計(jì)1.固定式端口地址譯碼指一旦譯碼電路設(shè)計(jì)好,接口用到的IO地址不能更改例1某接口的IO端口地址為2F8H,在非DMA期間只讀,為該接口設(shè)計(jì)譯碼器。分析:輸入信號:XA0-XA9,XIOR,XAEN輸出信號:一根選中信號/Y(因?yàn)樵撟g碼器僅為這一個(gè)接口電路服務(wù))輸入輸出邏輯關(guān)系:第十九頁,編輯于星期五:十五點(diǎn)五十二分。
19XA9XA8XA7XA6XA5XA4XA3XA2XA1XA0XAEN/XIOR+/Y當(dāng)XA9-0=2F8H,/XIOR=0,XAEN=0時(shí),/Y=0;否則/Y=1寫出邏輯表達(dá)式:第二十頁,編輯于星期五:十五點(diǎn)五十二分。
20例2。使用74LS138設(shè)計(jì)一個(gè)系統(tǒng)板上IO端口地址譯碼電路,并且讓每個(gè)接口芯片內(nèi)部可以有32個(gè)端口,非DMA期間可以訪問接口芯片。分析:輸入XA9-5,XAEN。因?yàn)榈?位地址用來選中芯片內(nèi)部端口,不作為外部譯碼器的輸入。一片138只能譯碼3位地址,這里用138對XA7-XA5譯碼。輸出8個(gè)芯片選中信號/Y0-/Y7。邏輯關(guān)系:XAEN=0,XA9XA8=00時(shí),使譯碼器工作。XA7-XA5=000時(shí),輸出/Y0=0,其余全無效為1。XA7-XA5=001時(shí),輸出/Y1=0,其余全無效為1XA7-XA5=010時(shí),輸出/Y2=0,其余全無效為1……第二十一頁,編輯于星期五:十五點(diǎn)五十二分。
21參看課本表2.574LS138的邏輯真值表,給出設(shè)計(jì)如下2.可選式端口地址譯碼例3。根據(jù)下圖的可選式地址譯碼電路,分析開關(guān)不同狀態(tài)時(shí),輸出選中信號對應(yīng)的IO地址總結(jié):為單個(gè)端口設(shè)計(jì)譯碼,一般對所有地址線譯碼;為芯片設(shè)計(jì)外部譯碼器,一般對高位地址譯碼,低位地址讓芯片自己內(nèi)部譯碼,選內(nèi)部端口第二十二頁,編輯于星期五:十五點(diǎn)五十二分。
22S0S1S2S3A74LS138/Y0B/Y1C/Y2/Y3/Y4/G2B/Y5/G2A/Y6G1/Y7XA2XA3XA4XA5/XAENA074LS85A1A2A3B0B1B2B3Oa=bIa=bIabVccXA6XA7XA8XA9分析:假如S0S1合上,S3S2斷開。B3-0=1100,只有當(dāng)XA9-6=1100時(shí),74LS85Oa=b端才輸出1。必須要使74LS138工作,則必須/XAEN=0,XA5=0。所以:要/Y0=0,必須XA9-2為11000000要/Y1=0,必須XA9-2為11000001……第二十三頁,編輯于星期五:十五點(diǎn)五十二分。
23選中/Y0的地址是XA9-0為11000000XX,即300H-303H選中/Y1的地址是XA9-0為11000001XX,即304H-307H選中/Y7的地址是XA9-0為11000111XX,即31CH-31FH思考,如果開關(guān)S1S3合上,S2S0斷開,選中/Y0-/Y7的地址分別是什么?第二十四頁,編輯于星期五:十五點(diǎn)五十二分。
24思考:在PC機(jī)上設(shè)計(jì)接口,你設(shè)計(jì)的接口IO地址必須不能與其他設(shè)備接口IO地址沖突,你能想到用什么辦法解決這個(gè)問題?第二十五頁,編輯于星期五:十五點(diǎn)五十二分。
25方案一:先查PC機(jī)硬件說明書,看那些IO地址已經(jīng)被占用。缺點(diǎn)是麻煩,且非PC機(jī)器廠家生產(chǎn)的設(shè)備(如擴(kuò)展接口卡)地址,必須通過查該卡說明書才能了解它占用的IO地址。不可能??!你怎么知道你的卡被客戶裝在哪臺(tái)機(jī)器上?客戶計(jì)算機(jī)上裝了哪些其它廠家的卡,你怎么能預(yù)先知道呢?客戶買了你的卡回家能不能用只有靠運(yùn)氣了!天吶,那怎么辦?!!哇!第二十六頁,編輯于星期五:十五點(diǎn)五十二分。
26方案二:先查PC機(jī)硬件說明書,看哪些IO地址已經(jīng)被PC機(jī)廠家的標(biāo)準(zhǔn)設(shè)備占用。再設(shè)計(jì)一個(gè)可選式譯碼器,萬一和其它廠家的設(shè)備接口沖突,用跳線開關(guān)改變你的IO地址用以避免沖突缺點(diǎn):麻煩,普通客戶買了你的設(shè)備,你要求他回家跳線,對他來說難度太大。在486以前的計(jì)算機(jī)開發(fā)接口就是這么辦的??!也要靠運(yùn)氣哦,萬一怎么調(diào)整也無法避免沖突怎么辦?別想啦,還能怎么辦?退貨,買其他廠家的卡試試運(yùn)氣唄,客戶郁悶?。?!第二十七頁,編輯于星期五:十五點(diǎn)五十二分。
27方案三:設(shè)計(jì)一種系統(tǒng)總線接口,任意一種新設(shè)備接口只要告訴總線接口需要多少IO地址,由系統(tǒng)總線接口自動(dòng)給你分配所需數(shù)量的IO地址且不和已占用的IO地址沖突??偩€接口統(tǒng)管計(jì)算機(jī)中所有IO地址的分配。只要我們能按照這種總線接口設(shè)計(jì)譯碼器,就能保證我們的卡插上任何一臺(tái)這種總線的計(jì)算機(jī)就能用,絕對不會(huì)有地址沖突現(xiàn)象發(fā)生,這就是“即插即用”設(shè)計(jì)技術(shù)!!哇塞!太好了,我喜歡??!就是不會(huì)太難吧?現(xiàn)在的我還有點(diǎn)菜哦?。〔粫?huì)的啦,我們第一次微機(jī)接口實(shí)驗(yàn)就告訴你怎樣在這樣的總線上設(shè)計(jì)譯碼器,真的很爽哦!!第二十八頁,編輯于星期五:十五點(diǎn)五十二分。