0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

讀懂命令寄存器狀態(tài)寄存器在接口設(shè)計(jì)中的作用

GReq_mcu168 ? 來源:互聯(lián)網(wǎng) ? 作者:佚名 ? 2017-11-16 09:50 ? 次閱讀

接口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):可編程芯片

智能型結(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)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 接口設(shè)計(jì)
    +關(guān)注

    關(guān)注

    2

    文章

    195

    瀏覽量

    29807
  • dma
    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)載請注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    解析CPU寄存器

    8位寄存器16位寄存器,而16位寄存器32位寄存器
    發(fā)表于 09-19 10:10 ?3876次閱讀

    寄存器是什么?怎么操作寄存器點(diǎn)亮LED燈?

    寄存器,是集成電路中非常重要的一種存儲(chǔ)單元,通常由觸發(fā)組成。集成電路設(shè)計(jì),寄存器可分為電路內(nèi)部使用的
    的頭像 發(fā)表于 07-21 16:59 ?3807次閱讀
    <b class='flag-5'>寄存器</b>是什么?怎么操作<b class='flag-5'>寄存器</b>點(diǎn)亮LED燈?

    寄存器,寄存器是什么意思

    寄存器,寄存器是什么意思 寄存器定義  寄存器是中央處理內(nèi)的組成部分。寄存器是有限存貯容量
    發(fā)表于 03-08 14:26 ?2.2w次閱讀

    寄存器作用有哪些?

    寄存器作用有哪些? 寄存器用途  1.可將寄存器內(nèi)的數(shù)據(jù)執(zhí)行算術(shù)及邏輯運(yùn)算;  2.存于寄存器內(nèi)的地址可用來指向
    發(fā)表于 03-08 14:35 ?1.6w次閱讀

    數(shù)據(jù)寄存器,數(shù)據(jù)寄存器是什么意思

    數(shù)據(jù)寄存器,數(shù)據(jù)寄存器是什么意思 數(shù)據(jù)寄存器數(shù)據(jù)寄存器包括累加AX、基址寄存器BX、計(jì)數(shù)
    發(fā)表于 03-08 14:38 ?1.2w次閱讀

    移位寄存器,移位寄存器是什么意思

    移位寄存器,移位寄存器是什么意思 移位寄存器_
    發(fā)表于 03-08 14:50 ?1.7w次閱讀

    寄存器與移位寄存器

    寄存器與移位寄存器:介紹寄存器原理和移位寄存器的原理及實(shí)現(xiàn)。
    發(fā)表于 05-20 11:47 ?0次下載

    移位寄存器怎么用_如何使用移位寄存器_移位寄存器的用途

    移位寄存器是一個(gè)具有移位功能的寄存器,是指寄存器中所存的代碼能夠移位脈沖的作用下依次左移或右移。本文主要介紹了移位
    發(fā)表于 12-22 15:49 ?2w次閱讀

    ARM通用寄存器狀態(tài)寄存器詳解

    筆者來聊聊ARM通用寄存器以及狀態(tài)寄存器的認(rèn)識(shí)與理解。
    的頭像 發(fā)表于 01-06 14:58 ?6841次閱讀

    單片機(jī)工作寄存器作用 單片機(jī)常用專用寄存器

    除了通用寄存器(如累加、通用寄存器等),單片機(jī)還會(huì)有特定功能的寄存器,如定時(shí)
    的頭像 發(fā)表于 04-08 14:46 ?7216次閱讀

    淺析寄存器作用及應(yīng)用

    寄存器是計(jì)算機(jī)內(nèi)部最快的存儲(chǔ)器件之一,其計(jì)算機(jī)具有重要的作用。本文將從寄存器作用、應(yīng)用和分
    的頭像 發(fā)表于 04-09 18:44 ?1w次閱讀

    CPSR寄存器和APSR寄存器的組成

    程序狀態(tài)寄存器作用就是反映處理狀態(tài)信息。程序運(yùn)行期間我們可以通過查看程序
    的頭像 發(fā)表于 10-20 11:38 ?4184次閱讀
    CPSR<b class='flag-5'>寄存器</b>和APSR<b class='flag-5'>寄存器</b>的組成

    寄存器分為基本寄存器和什么兩種

    寄存器是計(jì)算機(jī)中用于存儲(chǔ)數(shù)據(jù)的高速存儲(chǔ)單元,它們是CPU內(nèi)部的重要組成部分。寄存器可以分為基本寄存器和擴(kuò)展寄存器兩種類型。 一、基本寄存器
    的頭像 發(fā)表于 07-12 10:31 ?1003次閱讀

    寄存器的類型和作用

    計(jì)算機(jī)科學(xué)寄存器(Register)是一種高速存儲(chǔ)單元,它位于CPU內(nèi)部,與CPU的運(yùn)算單元和邏輯控制單元緊密相連。寄存器的主要作用
    的頭像 發(fā)表于 09-05 14:11 ?830次閱讀

    接口的控制與狀態(tài)寄存器什么作用

    的行為并獲取硬件的狀態(tài)信息。 接口的控制與狀態(tài)寄存器作用 現(xiàn)代計(jì)算機(jī)系統(tǒng)
    的頭像 發(fā)表于 10-17 10:42 ?226次閱讀