主頁 > 作業系統 > 微機原理與系統設計筆記5 | 總線及其形成

微機原理與系統設計筆記5 | 總線及其形成

2023-02-20 06:20:07 作業系統


  • 打算整理匯編語言與介面微機這方面的學習記錄,本部分介紹8086的總線,

  • 參考資料

    • 西電《微機原理與系統設計》周佳社
    • 西交《微機原理與介面技術》
    • 課本《匯編語言與介面技術》王讓定
    • 小甲魚《匯編語言》

1. 總線定義與分類

講道理這部分學校老師不強調這個,尤其是引腳(說我們記不住),而視頻里老師講得很多,

總線是計算機系統中傳輸各類資訊的公共通道,按照功能層次,有四類:

  1. 片內總線

    連接集成電路芯片內部各個功能單元的資訊通路,

  2. 元件級總線(板內總線)

    連接同一個插板內各個元件的總線,類似于PCB板上的走線,

  3. 內總線/系統總線(版級總線)

    連接各個插件板(微處理之間器、主存盤器、I/O介面)之間的通路,PCI、ISA、STD總線就是這一層次,

    本章涉及也是這一層次的總線,

  4. 外總線/通信總線(I/O總線)

    連接微機主體與I/O設備、儀表以及其他微機的總線,

視頻里老師就講到這里,課本上后面又講解了幾個系統總線,我對PCI比較感興趣,作業系統課程設計也用到了這個總線,不過微機角度的PCI主要是結構、時序方面,對編程要求不大,

  • 上圖5.1是一個具備PCI總線的典型結構,里面有3個總線(HOST PCI ISA)以及3個橋設備
  • HOST總線也稱存盤總線,連接微處理器、Cache、記憶體
  • PCI總線連接高速I/O介面,因此這些設備也稱為PCI設備
  • HOST橋:也叫PCI總線控制器,連接HOST和PCI,
  • PCI-PCI橋:擴展PCI總線,
  • PCI-ISA橋:擴展接入標準,符合ISA的設備也可以接入系統,
  • 橋設備的用處:
    • 地址空間映射
    • 資料緩沖,因為PCI總線基本是突發事件傳送,沒有緩沖,加上橋設備可以處理時序、流量等更多情況,
    • 實作不同層次總線的協議和電平轉換,

2. 幾種常用芯片

這塊沒學過,應該電信方面的數電學過,數字邏輯沒有講過,匯編這門課也沒有講(好像),不整理了,總而總之,這幾個芯片是用于總線驅動、管理的封裝好的電路,

2.1 74LS244

8位資料單向緩沖器,可用作輸入埠的緩沖,

2.2 74LS245

8位資料雙向緩沖器,可以用作總線連接的雙向緩沖,也能當做74LS244來用(Dir接地,常0),工程中也更常使用74LS245,

2.3 74LS373/74LS374

8位鎖存器,常讓OE接地==0,74LS374與之類似,只是G端變為CP時鐘,時鐘上升沿能夠保持資料,

3. 8086引腳功能以及總線形成

為什么又要說引腳呢?引腳就是微處理器級總線,微處理器 通過 微處理器級總線/引腳 與外面的IO電路連接,組成主機板系統,也就形成了系統級總線,

說實話這部分雖然打通數電微機和計組,但是,但這個角度比較難理解,從邏輯設計Verilog角度比較好理解時序,時序是人可以設計出來的,只不過到了8086微機中,Intel規定了一切,

  • 整體上看,8086是40根引腳雙列直插,部分引腳分時復用,有兩種功能,電源電壓為+5V±10%

  • RESET,復位信號,高電平有效,這里老師講了8254時鐘發生器,使得RESET和時鐘上升沿一起到來(具體實作不關心了),RESET信號的高電平有效至少要持續4T才能復位,

    復位后,DS、ES、SS、IP、PSW、指令佇列暫存器都清0,CS=0FFFFH,所以啟動地址cs:ip是FFFF0H,其他通用暫存器值不確定,

    對于FFFF0H,已經在記憶體的很高地址,所以接下來需要遠程跳:jmp far ptr xxxxh,向低地址跳轉,51單片機的復位中PC暫存器直接置0就沒有這個問題,

  • clk時鐘輸入引腳,8086的作業時鐘<5MHZ,基本的總線周期是4個時鐘周期,而非基本總線周期則是3個clk+1個等待周期,

  • MN/MX fei:作業模式選擇,加高電平--最小方式;加低電平--最大方式,兩種方式不同的是上圖中24~31腳,

    • 最小模式下,CPU對外部存盤器、IO的讀寫等控制信號由CPU直接產生,適合構成單處理器系統,

    • 最大模式下,不由CPU直接產生,而由8086CPU外部的總線控制器芯片8288產生,CPU通過26、27、28引腳來控制8288,8288來譯碼并產生相應控制信號,適合構成多處理器系統,

3.1 最小方式(重點)

  • AD0AD15、A16/S3A19/S6:分時復用,地址線和存盤器、IO的資料線;高四位地址線和狀態線,

  • ALE 地址鎖存:在上圖的T1周期內電位變高,變高就知道了上面最重要的T1已經到來,在拿到T1來到的資訊后就可以拿到16位地址,可以用74LS373來存盤,

    注意,這里已經開始和5.3節總線形成一起講了,

    用ALE來作74LS373的G引腳,可以將地址資訊鎖存4周期,3片74LS373(總線形成電路)輸出的A0~A19就是系統級的總線了,

    同理,上面介紹的是地址線,資料總線與其他控制信號結合(元件級總線、微處理器級總線),使用74LS245,就能產生資料系統級總線

    還有S3~S6,

    • S6沒用

    • S5,狀態暫存器的狀態位IF置1,S5==1,

    • S4和S3反應CPU目前操作使用的是哪個段暫存器,

  • DT/(R fei):資料傳輸方向控制信號,CPU向外輸出高電平,向內輸入低電平,

    它的時序:比如開始執行mov [BX],AX,向外輸出,所以T1~T4高電平,之后高或低取決于下一條指令,

  • DEN fei:資料有效信號,資料傳送進出CPU時,該信號低電平,

  • M/(IO fei):高電平為操作存盤器,低電平選擇IO

  • WR fei:資料信號有效后,產生低電平寫信號,并在資料信號有效結束之前,完成寫操作,

    存盤器讀是 RD fei

下面畫8086資料總線的形成電路:

10

  • READY:輸入引腳,上升沿采集,下降沿測驗,如果READY為低電平,則CPU就得知設備沒有準備好,在正常總線周期的第四個T內進入TW等待周期,實作慢速設備和快速設備之間的同步

    READY的下降沿要和CPU時鐘的下降沿同步,設計比較復雜,這個程序會在8284內做,做到同步輸出,

  • TEST fei:測驗信號,低電平有效,CPU執行WAIT指令,每隔5個周期對TEST端進行測驗,若高電平繼續等待,低電平進入下一條指令,也能達到快慢設備的同步,

  • BHEfei/S7:高位元組允許信號,低電平有效,低電平表示使用高8位資料線,高電平低8位資料線,

    類似于ALE,注意在上圖5.14中,ALE、BHE也鎖存在74LS373,下圖看看:

    補充:8086和8088的區別:

    • 內部,指令佇列暫存器8086 6位元組,8088 4位元組
    • 外部,8086 20根地址線,8088 16根地址線,最小方式下且8086 M/IOfei,8088 IO/Mfei
  • INTAfei(出,CPU回答是否回應可屏蔽中斷的信號,會連回兩次,第一次回復可回應中斷,第二次問內容,此后資料線低八位拿資料),INTR(入)和NMI,不提了,

  • HOLD(輸入),其他總線主控設備申請信號,高電平有效,

    HLDA(輸出),CPU對總線使用權的應答,如果讓出總線,就高電平,此時CPU的三態引腳全部高阻態,與外界隔離,

控制總線的形成,還是參照上圖5.14,相當于直接引出,

3.2 最大方式

最大方式的總線結構如下圖所示,與最小方式引腳功能有一點不一樣,但方法基本一樣:

引腳功能區分有:

  • S2 S1 S0,

    • 最小模式下,CPU對外部存盤器、IO的讀寫等控制信號由CPU直接產生,適合構成單處理器系統,

    • 最大模式下,不由CPU直接產生,而由8086CPU外部的總線控制器芯片8288產生,CPU通過26、27、28引腳來控制8288,8288來譯碼并產生相應控制信號,適合構成多處理器系統,

    • 這里最大方式的26、27、28就是S2 S1 S0,

      見本文3.1之前一段,

  • 24、25腳:QS1 QS2,表明CPU取指令時的狀態,

  • 30、31腳:RQfei/GT1fei,RGfei/GT0fei,等效于HLDA和HOLD,

    當處理器以外的總線主控設備通過這兩個引腳其中之一向CPU申請總線使用權,CPU回復讓出,當主控設備停止使用讓出總線時,再告知CPU自己讓出了總線,

    31腳的申請優先級高于30腳,

  • 29腳:LOCKfei,如果某條指令,用戶認為非常重要,不允許其他總線主控設備向CPU申請總線,就在該指令前方加一個<總線封鎖前綴指令LOCK>,此時該29引腳就是低電平,通知總線主控設備總線已經封鎖,

3.3 關于系統級總線

注意!之后的存盤器擴展設計和IO擴展設計,都是基于這一章的系統級總線進行的,也就是直接展示的三大總線,具體分為高八位第八位、最高四位、控制引腳線等,

8086最小方式和8088最大方式都是重點

  • 8086最小方式:

    15

  • 8086最大方式:

    16

    都可以再加上RESET和INTR等,

  • 8088最小方式:沒有BHEfei,資料總線8位

    17

  • 8088最大方式:

    18

3.4 IBM--PC/XT系統

下面老師講解了IBM--PC/XT系統,使用8088CPU且為多處理器系統(也就是最大模式),

這個我們老師沒有講,而且年代久遠現在可能也不考了,我只是對PC/XT這個總線感興趣,可能對以后深入學習PCI有幫助,

不過講道理,這里的總線,偏向于電路設計,而我想象的總線是軟體協議,

這部分先不著急,先考試,

P178,課本,

此外我搜索了一個總線提綱:01 微型計算機總線 - 最全的介面技術提綱

PC/XT總線是將8088 CPU的引腳經過8282鎖存器、8286發送接收器、8288總線控制器、8259中斷控制器、8237DMA控制器以及其他邏輯電路的重新驅動和組合控制而形成的,

總線信號線共62條

  • 8條雙向資料線D7~D0 ;
  • 20條單向地址線A19~A0 ;
  • 控制線:
    • 6條中斷請求線;
    • 3對DMA申請線和4條DACK線;
    • 4條 存盤器和I/O設備的讀寫命令線;
    • 1條系統時鐘信號線、1條I/O奇偶檢測線、1條I/O就緒線及其他聯絡信號線,
  • 4種電源(±5V、±12V)共8條線

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/544307.html

標籤:嵌入式

上一篇:Linux安裝

下一篇:良許翻天覆地的2022年

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • CA和證書

    1、在 CentOS7 中使用 gpg 創建 RSA 非對稱密鑰對 gpg --gen-key #Centos上生成公鑰/密鑰對(存放在家目錄.gnupg/) 2、將 CentOS7 匯出的公鑰,拷貝到 CentOS8 中,在 CentOS8 中使用 CentOS7 的公鑰加密一個檔案 gpg -a ......

    uj5u.com 2020-09-10 00:09:53 more
  • Kubernetes K8S之資源控制器Job和CronJob詳解

    Kubernetes的資源控制器Job和CronJob詳解與示例 ......

    uj5u.com 2020-09-10 00:10:45 more
  • VMware下安裝CentOS

    VMware下安裝CentOS 一、軟硬體準備 1 Centos鏡像準備 1.1 CentOS鏡像下載地址 下載地址 1.2 CentOS鏡像下載程序 點擊下載地址進入如下圖的網站,選擇需要下載的版本,這里選擇的是Centos8,點擊如圖所示。 決定選擇Centos8后,選擇想要的鏡像源進行下載,此 ......

    uj5u.com 2020-09-10 00:12:10 more
  • 如何使用Grep命令查找多個字串

    如何使用Grep 命令查找多個字串 大家好,我是良許! 今天向大家介紹一個非常有用的技巧,那就是使用 grep 命令查找多個字串。 簡單介紹一下,grep 命令可以理解為是一個功能強大的命令列工具,可以用它在一個或多個輸入檔案中搜索與正則運算式相匹配的文本,然后再將每個匹配的文本用標準輸出的格式 ......

    uj5u.com 2020-09-10 00:12:28 more
  • git配置http代理

    git配置http代理 經常遇到克隆 github 慢的問題,這里記錄一下幾種配置 git 代理的方法,解決 clone github 過慢。 目錄 git配置代理 git單獨配置github代理 git配置全域代理 配置終端環境變數 git配置代理 主要使用 git config 命令 git單獨 ......

    uj5u.com 2020-09-10 00:12:33 more
  • Linux npm install 裝包時提示Error EACCES permission denied解

    npm install 裝包時提示Error EACCES permission denied解決辦法 ......

    uj5u.com 2020-09-10 00:12:53 more
  • Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包

    Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包。 18 (flaskApi) [root@67 flaskDemo]# yum -y install nginx 19 已加載插件:fastestmirror, langpacks 20 Loading ......

    uj5u.com 2020-09-10 00:13:13 more
  • Linux查看服務器暴力破解ssh IP

    在公網的服務器上經常遇到別人爆破你服務器的22埠,用來挖礦或者干其他嘿嘿嘿的事情~ 這種情況下正確的做法是: 修改默認ssh的22埠 使用設定密鑰登錄或者白名單ip登錄 建議服務器密碼為復雜密碼 創建普通用戶登錄服務器(root權限過大) 建立堡壘機,實作統一管理服務器 統計爆破IP [root ......

    uj5u.com 2020-09-10 00:13:17 more
  • CentOS 7系統常見快捷鍵操作方式

    Linux系統中一些常見的快捷方式,可有效提高操作效率,在某些時刻也能避免操作失誤帶來的問題。 ......

    uj5u.com 2020-09-10 00:13:31 more
  • CentOS 7作業系統目錄結構介紹

    作業系統存在著大量的資料檔案資訊,相應檔案資訊會存在于系統相應目錄中,為了更好的管理資料資訊,會將系統進行一些目錄規劃,不同目錄存放不同的資源。 ......

    uj5u.com 2020-09-10 00:13:35 more
最新发布
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:43:21 more
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:42:36 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:26:53 more
  • 設定Windows主機的瀏覽器為wls2的默認瀏覽器

    這里以Chrome為例。 1. 準備作業 wsl是可以使用Windows主機上安裝的exe程式,出于安全考慮,默認情況下改功能是無法使用。要使用的話,終端需要以管理員權限啟動。 我這里以Windows Terminal為例,介紹如何默認使用管理員權限打開終端,具體操作如下圖所示: 2. 操作 wsl ......

    uj5u.com 2023-04-19 09:25:49 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:19:04 more
  • Linux學習筆記

    IP地址和主機名 IP地址 ifconfig可以用來查詢本機的IP地址,如果不能使用,可以通過install net-tools安裝。 Centos系統下ens33表示主網卡;inet后表示IP地址;lo表示本地回環網卡; 127.0.0.1表示代指本機;0.0.0.0可以用于代指本機,同時在放行設 ......

    uj5u.com 2023-04-18 06:52:01 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:50 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:01 more
  • 你是不是暴露了?

    作者:袁首京 原創文章,轉載時請保留此宣告,并給出原文連接。 如果您是計算機相關從業人員,那么應該經歷不止一次網路安全專項檢查了,你肯定是收到過資訊系統技術檢測報告,要求你加強風險監測,確保你提供的系統服務堅實可靠了。 沒檢測到問題還好,檢測到問題的話,有些處理起來還是挺麻煩的,尤其是線上正在運行的 ......

    uj5u.com 2023-04-05 16:52:56 more
  • 細節拉滿,80 張圖帶你一步一步推演 slab 記憶體池的設計與實作

    1. 前文回顧 在之前的幾篇記憶體管理系列文章中,筆者帶大家從宏觀角度完整地梳理了一遍 Linux 記憶體分配的整個鏈路,本文的主題依然是記憶體分配,這一次我們會從微觀的角度來探秘一下 Linux 內核中用于零散小記憶體塊分配的記憶體池 —— slab 分配器。 在本小節中,筆者還是按照以往的風格先帶大家簡單 ......

    uj5u.com 2023-04-05 16:44:11 more