接口是CPU和外設(shè)之間的連接設(shè)備,用于緩存和轉(zhuǎn)發(fā)數(shù)據(jù)。
為什么需要接口?
(1)解決主機(jī)CPU和外圍設(shè)備之間的時(shí)序配合和通信聯(lián)絡(luò)問題
主機(jī)的CPU是高速處理器件,比如8086-1的主頻為10MHz,1個(gè)時(shí)鐘周期僅為100ns,一個(gè)最基本的總線周期為400ns。而外圍設(shè)備的工作速度比CPU的速度慢得多。如常規(guī)外圍設(shè)備中的電傳打字機(jī)傳送信息的速度是毫秒級(jí);工業(yè)控制設(shè)備中的爐溫控制采樣周期是秒級(jí)。為保證CPU的工作效率并適應(yīng)各種外圍設(shè)備的速度配合要求,應(yīng)在CPU和外圍設(shè)備間增設(shè)一個(gè)I/O接口電路,滿足兩個(gè)不同速度系統(tǒng)的異步通信聯(lián)絡(luò)。
I/O接口電路為完成時(shí)序配合和通信聯(lián)絡(luò)功能,通常都設(shè)有數(shù)據(jù)鎖存器、緩沖器、狀態(tài)寄存器以及中斷控制電路等。通過接口電路,CPU通常采用查詢或中斷控制方式為慢速外圍設(shè)備提供服務(wù),就可保證CPU和外圍設(shè)備間異步而協(xié)調(diào)的工作,既滿足了外圍設(shè)備的要求,又提高了CPU的利用率。
(2)解決CPU和外圍設(shè)備之間的數(shù)據(jù)格式轉(zhuǎn)換和匹配問題
CPU是按并行處理設(shè)計(jì)的高速處理器件,即CPU只能讀入和輸出并行數(shù)據(jù)。但是,實(shí)際上要求其發(fā)送和接收的數(shù)據(jù)格式卻不僅僅是并行的,在許多情況下是串行的。例如,為了節(jié)省傳輸導(dǎo)線,降低成本,提高可靠性,機(jī)間距離較長的通信都采用串行通信。又如,由光電脈沖編碼器輸出的反饋信號(hào)是串行的脈沖列,步進(jìn)電動(dòng)機(jī)要求提供串行脈沖等等。這就要求應(yīng)將外部送往計(jì)算機(jī)的串行格式的信息轉(zhuǎn)換成CPU所能接收的并行格式,也要將CPU送往外部的并行格式的信息轉(zhuǎn)換成與外圍設(shè)備相容的串行格式,并且要以雙方相匹配的速率和電平實(shí)現(xiàn)信息的傳送。這些功能在CPU控制下主要由相應(yīng)的接口芯片來完成。
(3)解決CPU的負(fù)載能力和外圍設(shè)備端口選擇問題
即使是CPU和某些外圍設(shè)備之間僅僅進(jìn)行并行格式的信息交換,一般也不能將各種外圍設(shè)備的數(shù)據(jù)線、地址線直接掛到CPU的數(shù)據(jù)總線和地址總線上。這里主要存在兩個(gè)問題,一是CPU總線的負(fù)載能力的問題:二是外圍設(shè)備端口的選擇問題。因?yàn)檫^多的信號(hào)線直接接到CPU總線上,必將超過CPU總線的負(fù)載能力,采用接口電路可以分擔(dān)CPU總線的負(fù)載,使CPU總線不致于超負(fù)荷運(yùn)行,造成工作不可靠。CPU和所有外圍設(shè)備交換信息都是通過雙向數(shù)據(jù)總線進(jìn)行的,如果所有外圍設(shè)備的數(shù)據(jù)線都直接接到CPU的數(shù)據(jù)總線上,數(shù)據(jù)總線上的信號(hào)將是混亂的,無法區(qū)分是送往哪一個(gè)外圍設(shè)備的數(shù)據(jù)還是來自哪一個(gè)外圍設(shè)備的數(shù)據(jù)。只有通過接口電路中具有三態(tài)門的輸出鎖存器或輸入緩沖器,再將外圍設(shè)備數(shù)據(jù)線接到CPU數(shù)據(jù)總線上,通過控制三態(tài)門的使能(選通)信號(hào),才能使CPU的數(shù)據(jù)總線在某一時(shí)刻只接到被選通的那一個(gè)外圍設(shè)備的數(shù)據(jù)線上,這就是外圍設(shè)備端口的選址問題。使用可編程并行接口電路或鎖存器、緩沖器就能方便的解決上述問題。
此外,接口電路可實(shí)現(xiàn)端口的可編程功能以及錯(cuò)誤檢測功能。一個(gè)端口通過軟件設(shè)置既可作為輸入口又可作為輸出口,或者作為位控口,使用非常靈活方便。同時(shí),多數(shù)用于串行通信的可編程接口芯片都具有傳輸錯(cuò)誤檢測功能,如可進(jìn)行奇/偶校驗(yàn)、冗余校驗(yàn)等。
接口硬件包含哪些部分?
(1)基本邏輯電路
命令寄存器
狀態(tài)寄存器
數(shù)據(jù)緩沖寄存器
(2)端口地址譯碼電路
根據(jù)地址總線上的信號(hào)確定是否選中該接口的某個(gè)寄存器(端口)
(3)供選電路
與其它部件的連接電路,如與中斷控制器連接以實(shí)現(xiàn)中斷方式的數(shù)據(jù)傳送。
接口軟件有什么功能?
一個(gè)完整的設(shè)備接口程序包括:
(1)初始化程序段
(2)傳送設(shè)置程序段
(3)主控程序段
(4)結(jié)束程序段
(5)人機(jī)接口程序段
設(shè)備驅(qū)動(dòng)程序就是一種標(biāo)準(zhǔn)化的接口軟件。
接口電路有哪些形式?
固定式結(jié)構(gòu):SSI,MSI (IC)
半固定結(jié)構(gòu):GAL, PAL
可編程結(jié)構(gòu):可編程芯片
CPU如何與接口進(jìn)行數(shù)據(jù)交換?
查詢方式:CPU<>接口 先確認(rèn)外設(shè)已準(zhǔn)備好,才進(jìn)行傳送
中斷方式:CPU<>接口 為避免不斷讀取狀態(tài)位檢查設(shè)備是否已準(zhǔn)備好而造成等待循環(huán),當(dāng)輸入設(shè)備準(zhǔn)備好時(shí),才向CPU發(fā)中斷請求,CPU響應(yīng)后轉(zhuǎn)入執(zhí)行中斷服務(wù)程序。
DMA方式:存儲(chǔ)器<>接口 接口<>接口 存儲(chǔ)器<>存儲(chǔ)器
I/O端口
什么是I/O端口?
CPU與外設(shè)通信時(shí),傳送的數(shù)據(jù)信息,狀態(tài)信息和控制信息分別進(jìn)入接口電路中不同的寄存器,通常將這些寄存器和它們的控制邏輯統(tǒng)稱為I/O端口(Port),CPU可對(duì)端口中的信息直接進(jìn)行讀寫。
數(shù)據(jù)端口:存放數(shù)據(jù),是主機(jī)和外設(shè)之間交換的基本信息,長度一般為1-2字節(jié),主要起數(shù)據(jù)緩沖的作用。
狀態(tài)端口:指示外設(shè)的當(dāng)前狀態(tài),每種狀態(tài)用1位表示,每個(gè)外設(shè)可以有幾個(gè)狀態(tài)位,由CPU讀取以測試或檢查外設(shè)的狀態(tài)。最常用的狀態(tài)位有準(zhǔn)備就緒位(Ready),忙碌位(Busy)和錯(cuò)誤位(Error)。
命令端口:也稱為控制端口,用來存放CPU向接口發(fā)出的各種命令和控制字,以便控制接口或設(shè)備的動(dòng)作。常見的命令信息位有啟動(dòng)位,停止位,允許中斷位等。
I/O端口編址方式
數(shù)據(jù)信息,狀態(tài)信息和控制信息的含義各不相同,但在微機(jī)系統(tǒng)中,CPU通過接口與外設(shè)交換數(shù)據(jù)時(shí),只有輸入(IN)和輸出(OUT)兩種指令,所以只能把狀態(tài)信息和命令信息也都當(dāng)作數(shù)據(jù)信息來傳送。
I/O端口的編址方式: 存儲(chǔ)器映象尋址方式和I/O指令尋址方式。
存儲(chǔ)器映象尋址方式(Memory Mapped I/O):把每一個(gè)I/O端口都看作一個(gè)存儲(chǔ)單元,并與存儲(chǔ)單元一樣統(tǒng)一編址,可使用訪問存儲(chǔ)器映象的所有指令來訪問I/O端口。
I/O單獨(dú)編址方式:對(duì)系統(tǒng)中的輸入輸出端口地址單獨(dú)編址,構(gòu)成一個(gè)I/O地址空間,不占用存儲(chǔ)空間,用專門的IN和OUT指令來訪問這種具有獨(dú)立地址空間的端口。8080/Z80/8088和8086等都采用此種方式。8086用地址總線的低16位來尋址I/O端口,可尋址的端口數(shù)最大可達(dá)到65536個(gè)。
I/O指令
如何訪問I/O端口?通過執(zhí)行I/O指令。
Intel 8086的I/O指令有哪些?
IN AL, PORT8 ;AL《(PORT8)
IN AL, DX ;AL《(DX)
OUT PORT8, AL ;(PORT8)《AL
OUT DX, AL ;(DX)《AL
其中,PORT8表示8位端口地址, PORT16表示16位端口地址,AX可以替代AL。
例如,MOV DX, 300H ; DX《300H
IN AL, DX ; AL《(DX)
MOV DX, 301H ; DX《301H
OUT DX, AL ; (DX)《AL
IN AX, 80H ; AL 《80H AH 《81H
I/O端口地址譯碼原理
如何在CPU執(zhí)行I/O指令時(shí)可以訪問到相應(yīng)端口地址的I/O端口?設(shè)計(jì)I/O端口地址譯碼線路。
如何設(shè)計(jì)I/O端口地址譯碼電路?通過地址總線和控制總線產(chǎn)生端口芯片的選擇信號(hào)(CS)。
I/O端口地址譯碼電路分類
端口地址譯碼電路的種類:
固定式單端口地址譯碼 采用門電路或譯碼器進(jìn)行譯碼,設(shè)計(jì)完畢后端口地址不能更改。
可選式端口地址譯碼 通過比較器和譯碼器等組成,端口地址可以通過DIP開關(guān)進(jìn)行更改。
采用可編程邏輯陣列實(shí)現(xiàn)邏輯電路
固定式單端口地址譯碼(1)
固定式單端口地址譯碼(2)
固定式單端口地址譯碼(3)
3-8譯碼器譯碼電路
接口的輸入輸出方法
(1)無條件傳送方式
也稱為同步傳送方式,主要用于對(duì)簡單外設(shè)進(jìn)行操作。對(duì)這類外設(shè),在任何時(shí)刻均已準(zhǔn)備好數(shù)據(jù)或處于接收數(shù)據(jù)狀態(tài),如LED顯示器的明滅控制(如下圖所示)
(2)查詢方式
執(zhí)行讀端口指令不斷查詢接口狀態(tài),若接口準(zhǔn)備好, 則可以執(zhí)行I/O指令輸出數(shù)據(jù)到接口或或從接口讀入數(shù)據(jù)。
(3)中斷方式
接口準(zhǔn)備好之后,便請求CPU中斷現(xiàn)在執(zhí)行的程序,轉(zhuǎn)而為之服務(wù)。
(4) DMA方式
當(dāng)外設(shè)有大量數(shù)據(jù)需要與主存儲(chǔ)器交換時(shí),DMA控制器向CPU申請接管總線,若成功,則控制外設(shè)與主存儲(chǔ)器直接交換數(shù)
DMA方式讀磁盤的過程
系統(tǒng)啟動(dòng)時(shí),3個(gè)開關(guān)打向上端,總線與CPU/存儲(chǔ)器/外設(shè)連接,并由CPU來控制,進(jìn)行DMA傳輸前,首先初始化8237A DMA控制器,設(shè)定傳送數(shù)據(jù)的計(jì)數(shù)器,起始地址,DMA通道和傳送方式。
CPU向磁盤控制器發(fā)出讀盤命令,磁盤控制器讀出數(shù)據(jù)。
磁盤控制器準(zhǔn)備好數(shù)據(jù)后,向DMA控制器發(fā)送一個(gè)DMA請求信號(hào)DREQ,DMA控制器送一個(gè)保持請求信號(hào)HRQ到CPU的HOLD輸入端,CPU發(fā)回保持響應(yīng)信號(hào)HLDA信號(hào),中止當(dāng)前程序運(yùn)營。DMA控制器收到HLDA后,將3個(gè)總線開關(guān)置向下方,讓總線與CPU脫開而與DMA控制器相連。
DMA控制器取得總線控制權(quán)后,通過地址總線向存儲(chǔ)器發(fā)送地址信號(hào),并向磁盤控制器發(fā)出DMA確認(rèn)信號(hào)DACK。
DMA控制器使控制總線上IOR#和MEMW#信號(hào)有效,使得磁盤控制器能向數(shù)據(jù)總線輸出數(shù)據(jù)字節(jié),并使存儲(chǔ)器單元能夠被寫入。
完成一個(gè)字節(jié)傳送后,DMA控制器自動(dòng)修改內(nèi)部寄存器的內(nèi)容并指向下一個(gè)字節(jié)的地址,通過計(jì)數(shù)器的遞減完成所有數(shù)據(jù)的傳送。
DMA傳送結(jié)束后,DMA控制器撤銷它對(duì)CPU發(fā)出的保持信號(hào)HRQ,并釋放總線。
CPU在每一個(gè)非鎖定時(shí)鐘周期結(jié)束后,都檢測HOLD引腳看是否有DMA信號(hào)。
-
接口設(shè)計(jì)
+關(guān)注
關(guān)注
2文章
195瀏覽量
29807 -
dma
+關(guān)注
關(guān)注
3文章
556瀏覽量
100323 -
狀態(tài)寄存器
+關(guān)注
關(guān)注
0文章
38瀏覽量
7062 -
命令寄存器
+關(guān)注
關(guān)注
0文章
1瀏覽量
1243
原文標(biāo)題:接口設(shè)計(jì)
文章出處:【微信號(hào):mcu168,微信公眾號(hào):硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
評(píng)論