圖書簡介
本書借鑑國內外最新的計算機組成實踐的教學方法,結合作者多年指導計算機組成原理實驗課的教學經驗, 全書首先介紹了EDA技術、Quartus II軟體以及VHDL的使用方法;然後講解了MIPS體系結構中比較典型的指令,並使用Quartus II軟體,通過原理圖以及VHDL語言,設計出計算機組成的各個部件;最終形成了一個能執行MIPS指令集指令程式的計算機主機系統。書中的所有部件及CPU邏輯電路都能進行正確的功能仿真模擬及FPGA下載驗證。本書既可作為高等院校計算機相關專業的計算機組成原理課程的實驗及課程設計教材,也可供計算機硬體開發人員、電子技術及工程技術人員參考使用。
圖書前言
在數位化和網路化的信息技術革命浪潮中,電子技術獲得了飛速發展,現代電子產品已滲透到了社會的各個領域。採用EDA(Electronic Design Automation,電子設計自動化)平台進行數字電路系統及計算機系統的設計已成為硬體設計和實踐的基本方法。在學習計算機組成原理課程的過程中,親自動手進行硬體系統的設計及實現,對於相關理論的掌握是至關重要的。
EDA技術的出現,使得電子系統設計工程師能夠在一塊通用的晶片上通過編寫程式的方式來改變或定義晶片的硬體功能,從而設計出具有不同功能的產品。同時,EDA技術可縮短硬體的開發周期,降低硬體的開發成本,減輕開發者的勞動強度。EDA技術主要包括大規模可程式邏輯器件、硬體描述語言和軟體開發工具等內容。 ,套用最廣泛的大規模可程式邏輯器件是現場可程式邏輯門陣列FPGA(Field Programmable Gate Array), 來的,在基於EDA的平台上進行計算機組成原理實踐,不僅可以提高學生的硬體系統設計水平及硬體系統實踐效率,打破以往使用特定實驗台進行硬體設計的局限性,而且能夠激發學生學習和實踐的興趣,以達到進一步提高學生實踐能力及創新能力的目的。
本書是在多年的計算機組成原理本科教學實踐、教研工作以及國外學習的基礎上進行編寫的,可作為本科生基於EDA技術進行計算機組成原理實踐的指導性通用教材,也可以作為相關工程技術人員學習和使用VHDL硬體描述語言、QuartusⅡ進行數字電路系統設計、計算機硬體系統設計的參考書。
本書以計算機組成原理實踐為例,使用VHDL硬體描述語言,以Altera公司的QuartusⅡ作為EDA軟體工具,介紹了利用EDA平台進行硬體系統設計的方法。具體介紹了多路選擇器、加減器、移位運算器、算術邏輯運算器、暫存器堆、控制器以及存儲器等各個部件,最終形成計算機的主機系統。其中以核心CPU的邏輯電路來實現市面上較流行的MIPS指令集中的20條指令,指令的執行要經過取指令、指令解碼、指令執行、存儲器讀寫以及結果寫回等過程。最後用彙編語言編寫了用於CPU測試的簡單程式,對所設計的CPU邏輯電路進行功能仿真模擬,以驗證CPU邏輯電路的正確性,同時也可下載到FPGA晶片中進行驗證,讀者根據現有的計算機組成原理知識,完全可以獨立地設計出一個完整的計算機主機系統,這樣一來,讀者便不會再認為計算機深不可測,其硬體課程也不再那么乏味枯燥,期間所收穫的那份開心和喜悅更是不可代替的。
全書共分為9章及附錄A和附錄B。其中,部件實驗的參考學時為16~20學時,計算機主機系統的參考學時為30~40學時。
本書在內容編排上由淺入深,結合實例邊講邊練。根據FPGA的學習與開發經驗,採用VHDL語言與原理圖輸入設計並存的方式進行講解,使讀者能夠很快掌握EDA技術,並運用數字電子技術的相關知識進行FPGA系統設計。通過QuartusⅡ設計的原理圖和VHDL程式代碼,可進行波形的功能仿真,並可通過分析波形來驗證設計思路正確與否。全書淡化理論知識,側重於實際套用,避免知識的重複,同時也在一定程度上節省了初學者的學習成本。另外,讀者只需對本書中的實驗項目工程檔案和程式原始碼稍加修改,便可套用於自己的工作或完成自己的課題。另外,讀者可聯繫索取相關電子資源。
EDA技術發展很快,新技術、新方法、新器件層出不窮,本書在編寫時雖然採用的是當時最新的資料,但在讀者閱讀本書時,可能又出現了更新的方法和器件,所以本書主要是向大家提供有關EDA設計方面較為基礎的內容,讀者可以從EDA廠商的網站上獲取更新的FPGA器件資料,也可以從銷售商或可程式邏輯器件的相關網站獲取有關信息和技術支持。
本書由蔣麗華編著,劉昌華、張聰、左翠華、夏祥勝、黃金仙、張喻平、姚蒙等相關師生參與了圖書的編寫工作,完成了書中大量實例的編程輸入、仿真、驗證以及文字的錄入和校對工作,在此對他們表示衷心的感謝。此外,還要感謝我的家人,在編寫本書的將近一年時間裡,他們一直給我鼓勵、支持和照顧。
由於作者水平有限,加之計算機技術飛速發展,新的理念和技術層出不窮,因此本書難免有不足之處,懇請廣大讀者批評、指正。
蔣麗華
於武漢工業學院
基於EDA技術的單周期CPU設計與實現
圖書目錄
第1章 緒論 1
1.1 實踐內容 2
1.1.1 計算機組成原理實驗 3
1.1.2 計算機主機系統設計 3
1.2 實踐環境 4
第2章 EDA設計工具 5
2.1 建立工程項目 5
2.1.1 啟動QuartusⅡ 5
2.1.2 使用QuartusⅡ 6
2.1.3 QuartusⅡ檔案後綴及其含義 11
2.1.4 原理圖設計 11
2.2 VHDL簡介 14
2.2.1 VHDL程式的基本結構 15
2.2.2 VHDL客體及詞法單元 24
2.2.3 VHDL的基本描述語句 31
2.2.4 屬性的描述與定義 40
2.2.5 VHDL設計 45
2.3 原理圖轉換 46
2.3.1 原理圖轉換為VHDL檔案 46
2.3.2 VHDL檔案轉換為原理圖 47
2.4 編譯與器件封裝 47
2.4.1 局部工程編譯 47
2.4.2 封裝成器件放入用戶庫 48
2.5 電路仿真 49
2.5.1 建立仿真檔案 49
2.5.2 仿真設定工具 50
2.5.3 功能仿真 52
2.5.4 時序仿真 53
2.6 工程下載驗證 53
2.6.1 引腳鎖定設定 53
2.6.2 配置檔案下載 55
第3章 MIPS指令和CPU設計思路 57
3.1 MIPS暫存器堆 58
3.2 指令格式和主機系統指令 58
3.2.1 指令格式 58
3.2.2 主機系統指令 59
3.3 CPU設計思路 63
3.3.1 單周期CPU邏輯設計 63
3.3.2 R類型指令 67
3.3.3 I類型指令 68
3.3.4 J類型指令 70
第4章 多路選擇器 72
4.1 1位2選1多路選擇器 72
4.1.1 1位2選1多路選擇器原理圖設計 72
4.1.2 1位2選1多路選擇器的VHDL設計 73
4.1.3 1位2選1多路選擇器的仿真驗證 73
4.2 5位2選1多路選擇器 74
4.2.1 5位2選1多路選擇器的原理圖設計 75
4.2.2 5位2選1多路選擇器的VHDL設計 75
4.2.3 5位2選1多路選擇器的仿真驗證 76
4.3 8位2選1多路選擇器 76
4.3.1 8位2選1多路選擇器的原理圖設計 77
4.3.2 8位2選1多路選擇器的VHDL設計 77
4.3.3 8位2選1多路選擇器的仿真驗證 78
4.4 32位2選1多路選擇器 79
4.4.1 32位2選1多路選擇器的原理圖設計 79
4.4.2 32位2選1多路選擇器的VHDL設計 80
4.4.3 32位2選1多路選擇器的仿真驗證 80
4.5 32位4選1多路選擇器 81
4.5.1 32位4選1多路選擇器的原理圖設計 82
4.5.2 32位4選1多路選擇器的VHDL設計 82
4.5.3 32位4選1多路選擇器的仿真驗證 83
4.6 32位32選1多路選擇器 83
4.6.1 32位32選1多路選擇器的原理圖設計 84
4.6.2 32位32選1多路選擇器的VHDL設計 84
4.7 lpm_mux宏模組的設定 87
第5章 加減器 90
5.1 1位加法器 90
5.1.1 1位加法器的原理圖設計 90
5.1.2 1位加法器的VHDL設計 91
5.1.3 1位加法器的仿真驗證 91
5.2 1位加減器 92
5.2.1 1位加減器的原理圖設計 92
5.2.2 1位加減器的VHDL設計 92
5.2.3 1位加減器的仿真驗證 93
5.3 8位加法器 93
5.3.1 8位加法器的原理圖設計 94
5.3.2 8位加法器的VHDL設計 94
5.3.3 8位加法器的仿真驗證 95
5.4 32位加減器 96
5.4.1 32位加減器的原理圖設計 96
5.4.2 32位加減器的VHDL設計 97
5.4.3 32位加減器的仿真驗證 98
第6章 移位運算器 100
6.1 移位運算器的原理圖設計 100
6.2 移位運算器的VHDL設計 101
6.3 移位運算器的仿真驗證 103
第7章 算術邏輯運算器 105
7.1 0運算元檢測模組 105
7.2 算術邏輯運算器的原理圖設計 106
7.3 算術邏輯運算器的VHDL設計 107
7.4 算術邏輯運算器的仿真驗證 108
第8章 暫存器堆 110
8.1 暫存器號解碼 110
8.1.1 暫存器號解碼的原理圖設計 111
8.1.2 暫存器號解碼的VHDL設計 112
8.1.3 暫存器號解碼的仿真驗證 113
8.2 8位觸發器 113
8.2.1 8位觸發器的原理圖設計 114
8.2.2 8位觸發器的VHDL設計 115
8.2.3 8位觸發器的仿真驗證 115
8.3 32位觸發器 116
8.3.1 32位觸發器的原理圖設計 117
8.3.2 32位觸發器的VHDL設計 117
8.3.3 32位觸發器的仿真驗證 118
8.4 32位暫存器 119
8.4.1 32位暫存器的原理圖設計 119
8.4.2 32位暫存器的VHDL設計 121
8.5 32位暫存器堆 122
8.5.1 32位暫存器堆的原理圖設計 122
8.5.2 32位暫存器堆的VHDL設計 123
8.5.3 32位暫存器堆的仿真驗證 123
第9章 計算機主機系統設計 125
9.1 跳轉指令暫存器指定元件 125
9.1.1 跳轉指令暫存器指定元件的原理圖設計 126
9.1.2 跳轉指令暫存器指定元件的VHDL設計 126
9.1.3 跳轉指令暫存器指定元件的仿真驗證 126
9.2 指令解碼器 127
9.2.1 指令解碼器的原理圖設計 128
9.2.2 指令解碼器的VHDL設計 130
9.2.3 指令解碼器的仿真驗證 131
9.3 控制部件設計 132
9.3.1 控制部件的原理圖設計 134
9.3.2 控制部件的VHDL設計 135
9.3.3 控制部件的仿真驗證 137
9.4 指令存儲器 138
9.4.1 指令存儲器的原理圖設計 138
9.4.2 指令存儲器的仿真驗證 142
9.5 數據存儲器 142
9.5.1 數據存儲器的原理圖設計 143
9.5.2 數據存儲器的仿真驗證 147
9.6 單周期中央處理器CPU設計 148
9.6.1 單周期中央處理器的原理圖設計 148
9.6.2 單周期中央處理器的VHDL設計 150
9.7 計算機主機系統設計 152
9.7.1 計算機主機系統的原理圖設計 153
9.7.2 計算機主機系統的VHDL設計 153
9.8 調試程式編制及主機系統的調試 154
9.8.1 加法調試程式 154
9.8.2 加法程式調試仿真 156
9.8.3 乘法調試程式 158
9.8.4 乘法程式調試仿真 159
附錄A DE2-70簡介及調試注意事項 167
A.1 DE2-70硬體實驗平台簡介 167
A.2 DE2-70引腳分配的一般性指導 168
A.3 實驗板基本輸入/輸出引腳信號 168
附錄B 設計調試過程中的注意事項 169
參考文獻 171
基於EDA技術的單周期CPU設計與實現
目 錄
·VI·
·VII·