第2版前言
華中科技大學電子信息與通信學院基于FPGA平臺的“微機原理與接口技術”課程教學改革已進行數載,在總結教學經驗基礎上,編者對《計算機組成原理與接口技術》(第1版)進行了修訂。第2版除梳理第1版教學內容之外,同時做了以下改進:
(1) 與紙質教材配套,提供大量課外閱讀資料,如IP核數據手冊、集成芯片數據手冊、補充讀物等。
(2) 各章節部分重點、難點內容通過二維碼形式提供實踐教學演示視頻在線資源,以期通過多媒體的方式幫助讀者理解所學知識,掌握實踐手段。
(3) 各章節例題及練習題涉及的硬件工程、程序代碼提供在線資源,以便學習實踐。
(4) 增加了大量的思考與練習題,并且大部分思考與練習題提供參考答案在線資源,以便檢驗所學知識。
(5) 調整了第4章存儲器管理教學內容的組織方式,將內存分頁、分段及段頁式管理并入第4.3節,內存組織結構并入第6章,使得邏輯更加清晰。
(6) 新增第6章,增加常用并行半導體存儲芯片接口的介紹。限于篇幅,教材中文字僅做簡要介紹,讀者可通過在線課外閱讀資料獲取部分典型并行半導體存儲芯片接口控制的具體介紹。另外增加了大量的例題,闡述存儲器接口的設計原理,同時還增加了DDR SDRAM存儲器接口控制器MIG及其應用示例的介紹。
(7) 接口技術所涉章節(第7~10章)的接口控制程序統一采用端口讀寫函數編寫,有利于讀者理解接口控制的基本原理。接口驅動API函數及基于接口驅動API函數編寫的控制程序可通過掃描教材中的二維碼獲取,這樣有利于學有余力的讀者掌握基于API函數編寫控制程序的技術。
(8) 第8章介紹了中斷控制器INTC的兩種工作模式,即普通中斷模式和快速中斷模式,以便讀者進一步理解不同中斷處理方式的特點和流程。其中INTC快速中斷對應硬件向量中斷處理方式,普通中斷對應軟件中斷處理方式。
(9) 第9章介紹了集中式DMA控制器CDMA的兩種DMA處理方式: 簡單DMA和分散/聚集DMA傳輸。簡單DMA是指一次DMA傳輸僅針對一個I/O設備; 分散/聚集DMA是指一次DMA傳輸可以針對多個I/O設備,類似通道處理方式。
(10) 第10章增加了液晶顯示屏及液晶顯示器接口標準的介紹,同時也增加了基于硬件描述語言的VGA接口IP核及PS2接口IP核的設計。
(11) 增加了大量的例題,通過例題的講解使讀者進一步理解基本原理。
(12) 所有章節增加小結,通過小結再次串聯本章所涉知識點,以求融會貫通。
本教材部分章節教學內容涉及知識面廣、深,適合有一定基礎的讀者學習。編者根據48課內教學學時,提出如表1所示的教學建議。
本課程實踐性較強,讀者在學習過程中,可充分利用本教材提供的在線資源及與本教材配套的《計算機組成原理與接口技術實驗教程——基于MIPS架構》(第2版)進行實踐,這樣能更好地掌握本教材所涉及知識。
本教材編寫過程中得到了課程組組長羅杰老師及課程組楊明老師的大力支持,他們給教材的編寫提供了很多寶貴的建議,在此表示感謝!同時也感謝清華大學出版社各位編輯為本教材的再版做出的努力!
鑒于編者水平及時間限制,教材內容難免存在不妥之處,歡迎讀者來信探討或提出寶貴意見: sixizuo@163.com。
編者
2019年8月于武漢
第1版前言
隨著計算機技術的發展,各類嵌入式微處理器層出不窮,而且功能越來越強大,這動搖了以Intel x86微處理器為背景的“計算機組成原理與接口技術”作為信息學科基礎課的根基。這是由于“計算機組成原理與接口技術”以Intel x86體系架構中8086為主要教學內容,已經滯后于時代需求。一方面,隨著計算機技術的發展,僅介紹8086及基于擴展ISA總線的825x系列簡單接口設計已經非常落后; 另一方面,以往教學內容注重介紹芯片使用,且內容的組織方式與課程體系中相關課程的聯系不夠緊密,不符合專業基礎課教學要求。因此,課程改革勢在必行,近年來國內很多高校都在對這門課程進行改革。
在調研國內外計算機組成原理和接口技術相關課程教學內容組織及教材建設的基礎上,結合目前教育部計算機教學指導委員會提出的增強學生系統能力培養的目標,并根據目前國內大學計算機類課程教學改革需要,編寫了此書。本書力求幫助讀者建立從數字電路到計算機系統軟、硬件協同工作的知識體系。本書以MIPS微處理器為背景,采用FPGA作為試驗基礎平臺,一方面通過增加C語言典型數據類型以及常用語句在匯編語言級別的實現,增強計算機原理課程與高級程序設計語言課程之間的聯系,更好地培養學生理解計算機軟件工作原理的能力; 另一方面通過增加簡單指令集微處理器設計的相關內容,增強計算機原理課程與數字邏輯電路設計課程之間的聯系,以便學生更好地理解計算機硬件的基本工作原理,并在此基礎上以Xilinx FPGA MicroBlaze軟核微處理器為核心,輔以各類IP軟核,幫助讀者學會構建功能復雜的計算機系統。
本書共分為9章。
第1章介紹計算機原理基礎知識,包括計算機系統的發展歷史、計算機系統的基本結構、計算機系統的基本工作原理、不同計算機系統結構模型,以及計算機系統中數據、信息的表示、存儲、運算基礎等,幫助讀者建立對計算機系統構成、工作原理的初步認識。
第2章以MIPS微處理器匯編指令為原型介紹匯編指令結構、常用MIPS匯編指令應用、尋址方式、匯編程序設計、子程序實現原理和程序的編譯、鏈接、裝載、運行的過程。匯編語言是與硬件連接最緊密的程序設計語言,能夠幫助讀者透徹理解軟件控制硬件工作的原理。
第3章介紹微處理器的基本構成,并以MIPS微處理器為例,介紹一個基于給定指令集的簡單的類MIPS微處理器數據通路以及控制器的設計,同時介紹微處理器流水線技術、超標量技術和異常處理機制,最后介紹微處理器的外部接口及一個具體的微處理器——MicroBlaze軟核微處理器的結構。
第4章介紹計算機系統中的存儲系統構成及存儲系統管理策略,包括內部存儲器的組織結構、數據訪問方式及管理策略,Cache存儲器的基本原理及讀寫、替換策略,虛擬存儲器技術的基本原理等。
第5章介紹總線技術的基本原理,包括計算機系統內的各級總線——片內總線、局部總線、外部總線等。
第6章介紹接口技術的基本原理,包括接口結構模型、尋址方式、通信方式、譯碼原理以及常用接口的設計——存儲器接口設計、簡單并行I/O接口設計等,幫助讀者掌握基于總線技術的接口設計原理。
第7章介紹接口技術中的中斷技術,包括中斷系統的構成原理、中斷控制器構成、中斷的一般響應過程、不同類型微處理器中斷處理系統的差別以及中斷方式接口設計和中斷服務程序設計原理。
第8章介紹接口技術中的DMA技術,包括具有DMA的計算機系統構成、DMA控制器的構成及如何利用DMA控制器實現接口數據交換,以及典型DMA控制器的使用,并在此基礎上簡單介紹通道技術的原理。
第9章介紹計算機系統常用的人機接口設備,包括顯示器和鼠標、鍵盤的工作原理,以及這些設備與計算機系統交互信息常用的接口原理——VGA接口原理、PS/2接口原理。同時,也介紹顯示器如何將計算機處理的結果以圖形或文字的方式顯示給用戶; 用戶如何通過鼠標和鍵盤輸入計算機要處理的數據和控制命令等。
全書內容可以分為三部分: 第一部分為計算機基礎知識部分,即第1章; 第二部分為計算機基本原理部分,包括第2~5章,通過學習這部分知識,可以自行構建一個簡單的計算機原型系統,并且能夠深刻理解計算機軟件控制硬件工作的原理,同時也將具備一定的高級語言程序優化基礎; 第三部分為計算機接口技術部分,包括第6~9章,通過學習這部分內容,可以基于計算機系統的各個硬件功能模塊自行設計一個功能相對復雜的實際計算機硬件系統,并且可以采用C語言編寫驅動程序以實現硬件系統的數據處理和輸入/輸出功能,達到從原型到現實的飛躍。
本教材是在華中科技大學電信系電路類課程改革的大潮下開始編寫的,參與該類課程改革的教師對本書的編寫工作提供了大量的寶貴意見,在此表示誠摯的謝意!為了本書的編寫,編者曾多次參與國內相關的教學研討會,在這些教學研討會上吸取了部分高校相關課程改革的優秀經驗,這為本書的編寫提供了有益的幫助,在此感謝這些無私奉獻課程改革經驗的教師!本書還得到了賽靈思大學計劃、依元素大學計劃、德致倫公司多位工程師在實驗驗證上的幫助,在此一并表示感謝。
對所有審閱本書并提出改進意見及在編寫出版過程中給予幫助和支持的專家學者,一并表示衷心的感謝!
限于編者水平和教材體系的改革創新,書中不妥之處在所難免,殷切希望使用本教材的廣大讀者給予批評指正。
編者
2014年4月于華中科技大學
第1章計算機基礎
1.1計算機發展簡史
1.2計算機系統構成
1.2.1中央處理器CPU
1.2.2總線
1.2.3存儲器
1.2.4輸入/輸出接口
1.2.5輸入/輸出設備
1.3計算機工作原理
1.4計算機系統結構模型
1.5計算機系統中的信息表示
1.5.1不同數制及其相互轉換
1.5.2整數在計算機中的表示
1.5.3小數在計算機中的表示
1.5.4字符在計算機中的表示
1.6計算機運算基礎
1.6.1無符號數運算
1.6.2符號數運算
1.6.3浮點數運算
1.7計算機系統中數據的存儲
1.7.1存儲字節序
1.7.2C語言數據
本章小結
思考與練習
第2章匯編語言
2.1計算機語言
2.2計算機指令架構
2.3MIPS匯編指令一般格式
2.4MIPS指令操作數
2.4.1寄存器操作數
2.4.2存儲器操作數
2.4.3立即數
2.5MIPS指令編碼
2.5.1R型指令
2.5.2I型指令
2.5.3J型指令
2.6常用MIPS匯編指令
2.6.1數據傳送指令
2.6.2算術運算指令
2.6.3位運算指令
2.6.4程序控制類指令
2.7子程序原理
2.7.1子程序相關指令
2.7.2棧
2.7.3子程序嵌套調用
2.7.4程序的存儲映像
2.8字符數據處理
2.9尋址原理
2.9.1操作數尋址
2.9.2指令尋址
2.10編譯、匯編、鏈接、裝載過程
2.10.1編譯
2.10.2匯編
2.10.3鏈接
2.10.4裝載
2.11匯編程序設計
2.11.1偽指令
2.11.2宏指令
2.11.3系統功能調用
2.11.4匯編程序設計舉例
2.12Intel x86微處理器指令集簡介
本章小結
思考與練習
第3章微處理器
3.1微處理器基本結構
3.2單周期簡單指令集MIPS微處理器設計
3.2.1簡單指令集MIPS微處理器數據通路
3.2.2簡單指令集MIPS微處理器控制器
3.2.3簡單指令集MIPS微處理器典型指令執行過程
3.3微處理器新技術
3.3.1流水線技術
3.3.2超標量技術
3.3.3多核處理器
3.4微處理器異常處理機制
3.4.1異常事件識別
3.4.2斷點保存和返回
3.4.3異常處理程序進入方式
3.5微處理器外部接口
3.5.1Intel x86微處理器外部接口示例
3.5.2嵌入式微處理器外部接口示例
3.6MicroBlaze微處理器簡介
3.6.1指令架構
3.6.2寄存器
3.6.3外部接口
3.6.4最小系統
本章小結
思考與練習
第4章存儲系統
4.1分級存儲系統
4.2高速緩存
4.2.1映射策略
4.2.2讀策略
4.2.3寫策略
4.2.4替換策略
4.3虛擬存儲器
4.3.1內存分段管理
4.3.2內存分頁管理
4.3.3內存段頁式管理
4.3.4分頁虛擬存儲器管理
4.4存儲系統分級協同
4.5實例
本章小結
思考與練習
第5章總線技術
5.1計算機總線結構
5.1.1單總線結構
5.1.2雙總線結構
5.1.3多總線結構
5.2總線技術基礎
5.2.1分類
5.2.2性能指標
5.2.3總線通信流程
5.2.4仲裁策略
5.2.5信息傳輸與錯誤檢測
5.2.6定時方式
5.2.7操作類型
5.3AXI片內總線
5.3.1AXI總線結構
5.3.2AXI總線信號
5.3.3AXI總線操作時序
5.4PCI局部總線
5.4.1PCI總線信號
5.4.2PCI總線時序
5.5常見外部總線簡介
5.5.1SATA總線
5.5.2USB通用串行總線
5.5.3UART通用異步串行通信總線
5.5.4SPI串行外設總線
5.5.5I2C總線
本章小結
思考與練習
第6章半導體存儲器接口
6.1半導體存儲芯片分類
6.2典型存儲芯片
6.2.1異步SRAM存儲芯片
6.2.2NOR Flash存儲芯片
6.2.3NAND Flash存儲芯片
6.2.4同步SSRAM存儲芯片
6.2.5SDRAM存儲芯片
6.2.6DDR2 SDRAM存儲芯片
6.3存儲器接口設計
6.3.1存儲容量擴展
6.3.2存儲空間映射
6.3.3存儲器組織結構
6.3.4多類型數據訪問存儲器接口
6.4存儲控制器
6.4.1AXI EMC存儲控制器
6.4.2DRAM存儲控制器
6.5內存條簡介
本章小結
思考與練習
第7章I/O接口
7.1接口基本概念
7.1.1接口功能
7.1.2接口構成
7.1.3I/O接口數據傳送方式
7.1.4接口電路數據傳送控制方式
7.2I/O尋址
7.2.1獨立I/O尋址
7.2.2存儲器映像I/O尋址
7.3端口讀寫指令及函數
7.3.1端口讀寫匯編指令
7.3.2Standalone BSP C語言端口讀寫函數
7.4I/O接口總線控制邏輯
7.4.1地址總線
7.4.2數據總線
7.4.3控制總線
7.5常用數字并行I/O設備接口
7.5.1獨立開關接口
7.5.2獨立發光二極管接口
7.5.3矩陣鍵盤接口
7.5.4七段數碼管接口
7.5.5LED點陣接口
7.6模擬設備并行I/O接口
7.6.1ADC1210簡介
7.6.2ADC1210接口
7.7通用并行I/O接口
7.7.1GPIO IP核
7.7.2Standalone BSP GPIO宏定義
7.7.3GPIO應用示例
7.8外設控制器
7.8.1AXI總線EPC
7.8.2EPC應用示例
本章小結
思考與練習
第8章中斷技術
8.1中斷控制器構成
8.1.1中斷請求信號保持與清除
8.1.2中斷源識別
8.1.3中斷優先級
8.1.4中斷控制
8.2中斷控制器AXI INTC
8.2.1基本結構
8.2.2中斷處理流程
8.2.3中斷信號時序
8.2.4應用電路
8.2.5編程控制
8.3微處理器中斷響應過程
8.3.1微處理器中斷響應一般過程
8.3.2MicroBlaze中斷響應過程
8.3.3中斷控制程序
8.4中斷控制相關C語言程序設計基礎
8.4.1mbgcc編譯器中斷服務程序定義
8.4.2Standalone BSP MicroBlaze中斷相關API函數
8.4.3Standalone BSP INTC相關宏定義
8.4.4AXI INTC普通中斷模式中斷控制程序設計
8.4.5AXI INTC快速中斷模式中斷控制程序設計
8.5中斷應用示例
8.5.1GPIO中斷
8.5.2定時器中斷
8.5.3SPI總線接口中斷
8.5.4多中斷源應用示例
本章小結
思考與練習題
第9章DMA技術
9.1DMA傳輸基本原理
9.1.1DMA傳輸系統
9.1.2DMA傳輸方向
9.1.3DMA傳輸模式
9.1.4DMA傳輸流程
9.1.5DMA響應條件
9.2DMA控制器
9.2.1AXI CDMA結構
9.2.2AXI CDMA控制流程
9.2.3Standalone BSP CDMA宏定義
9.3CDMA應用示例
9.3.1UARTLite IP核簡介
9.3.2簡單DMA傳輸
9.3.3分散/聚集DMA傳輸
本章小結
思考與練習題
第10章人機接口
10.1圖形顯示輸出設備
10.1.1液晶顯示器
10.1.2液晶顯示屏接口
10.1.3液晶顯示器接口標準
10.1.4顯示設備標準
10.2VGA接口控制器
10.2.1VGA時序
10.2.2VGA控制器
10.2.3VGA控制器設計
10.2.4AXI TFT控制器
10.2.5顯示應用示例
10.3鍵盤及鼠標輸入設備
10.3.1鍵盤
10.3.2鼠標
10.4PS/2協議
10.4.1PS/2設備到計算機的通信
10.4.2計算機到PS/2設備的通信
10.4.3PS/2控制器
10.4.4鍵盤控制程序示例
10.4.5鼠標控制程序示例
本章小結
思考與練習
附錄常用MIPS整數指令編碼
參考文獻