本書從數(shù)字電路與數(shù)字邏輯課程的組合邏輯、時序邏輯電路的設(shè)計開始,逐步構(gòu)建計算機組成與體系結(jié)構(gòu)及相關(guān)課程中的運算器、存儲器和控制器,實現(xiàn)基于MIPS指令集的CPU。 本書采用Verilog HDL,以Vivado軟件為EDA工具,在Xilinx FPGA平臺上進行實驗驗證和設(shè)計,讓讀者掌握硬件功能的仿真與測試方法,具備計算機系統(tǒng)的設(shè)計能力。 全書共5章,包括:EDA基礎(chǔ)和龍芯中科LS-CPU-EXB實驗系統(tǒng)介紹,數(shù)字邏輯與數(shù)字電路實踐,計算機組成原理實踐,計算機體系結(jié)構(gòu)實踐,計算機組成與體系結(jié)構(gòu)實踐。附錄簡單介紹了Icarus Verilog開發(fā)環(huán)境及使用、Verilog HDL語法,給出了引腳對應(yīng)關(guān)系表和部分MIPS指令。 本書可作為高等院校計算機類、電子信息類各專業(yè)的教材,也可供其他理工科專業(yè)選用或相關(guān)技術(shù)人員參考。
成潔,女,湘潭大學計算機學院教師,湖南省線上線下混合式一流課程《計算機組成與體系結(jié)構(gòu)》負責人,湘潭大學精品在線開放課程《計算機組成與體系結(jié)構(gòu)》負責人。
目 錄
第1章 EDA基礎(chǔ)和實驗系統(tǒng)1
1.1 EDA簡介1
1.2 Verilog HDL簡介1
1.3 Vivado安裝及使用說明3
1.3.1 Vivado安裝說明3
1.3.2 Vivado使用說明9
1.4 LCD觸摸屏調(diào)用方法27
1.5 實驗系統(tǒng)33
第2章 數(shù)字邏輯與數(shù)字電路實踐40
2.1 三人表決電路實驗40
2.1.1 實驗類別40
2.1.2 實驗目的40
2.1.3 實驗原理40
2.1.4 實驗內(nèi)容和要求40
2.1.5 實驗步驟41
2.1.6 可研究與探索的問題46
2.1.7 源代碼47
2.2 數(shù)據(jù)選擇器實驗47
2.2.1 實驗類別47
2.2.2 實驗目的47
2.2.3 實驗原理47
2.2.4 實驗內(nèi)容和要求47
2.2.5 實驗步驟48
2.2.6 可研究與探索的問題49
2.2.7 源代碼49
2.3 半加器和全加器實驗50
2.3.1 實驗類別50
2.3.2 實驗目的50
2.3.3 實驗原理50
2.3.4 實驗內(nèi)容和要求50
2.3.5 半加器實驗步驟51
2.3.6 全加器實驗步驟52
2.3.7 可研究與探索的問題55
2.3.8 源代碼55
2.4 七段數(shù)碼顯示譯碼器實驗55
2.4.1 實驗類別55
2.4.2 實驗目的55
2.4.3 實驗原理56
2.4.4 實驗內(nèi)容和要求56
2.4.5 實驗步驟58
2.4.6 可研究與探索的問題59
2.4.7 源代碼59
2.5 計數(shù)器實驗60
2.5.1 實驗類別60
2.5.2 實驗目的60
2.5.3 實驗原理60
2.5.4 實驗內(nèi)容和要求60
2.5.5 實驗步驟61
2.5.6 可研究與探索的問題63
2.5.7 源代碼63
2.6 移位寄存器實驗64
2.6.1 實驗類別64
2.6.2 實驗目的64
2.6.3 實驗原理64
2.6.4 實驗內(nèi)容和要求64
2.6.5 實驗步驟(方案二)66
2.6.6 可研究與探索的問題68
2.6.7 源代碼(實驗設(shè)計方案二)68
2.7 序列信號發(fā)生器實驗73
2.7.1 實驗類別73
2.7.2 實驗目的73
2.7.3 實驗原理74
2.7.4 實驗內(nèi)容和要求74
2.7.5 可研究與探索的問題76
2.8 序列檢測器實驗76
2.8.1 實驗類別76
2.8.2 實驗目的76
2.8.3 實驗原理76
2.8.4 實驗內(nèi)容和要求77
2.8.5 可研究與探索的問題78
2.9 數(shù)字鐘實驗78
2.9.1 實驗類別78
2.9.2 實驗目的78
2.9.3 實驗原理79
2.9.4 實驗內(nèi)容和要求79
2.9.5 可研究與探索的問題80
2.10 交通燈控制器實驗80
2.10.1 實驗類別80
2.10.2 實驗目的80
2.10.3 實驗原理80
2.10.4 實驗內(nèi)容和要求80
2.10.5 可研究與探索的問題82
第3章 計算機組成原理實踐83
3.1 32位算術(shù)邏輯運算器實驗83
3.1.1 實驗類型83
3.1.2 實驗目的83
3.1.3 實驗原理83
3.1.4 實驗內(nèi)容和要求84
3.1.5 可研究與探索的問題85
3.2 存儲器實驗85
3.2.1 實驗類別85
3.2.2 實驗目的85
3.2.3 實驗原理85
3.2.4 實驗內(nèi)容和要求87
3.2.5 建議的實驗步驟87
3.2.6 可研究與探索的問題89
3.3 指令系統(tǒng)實驗89
3.3.1 實驗類別89
3.3.2 實驗目的89
3.3.3 實驗原理89
3.3.4 實驗內(nèi)容和要求90
3.3.5 可研究與探索的問題90
3.4 單周期CPU實驗90
3.4.1 實驗類別91
3.4.2 實驗目的91
3.4.3 實驗原理91
3.4.4 實驗內(nèi)容和要求92
3.4.5 可研究與探索的問題92
3.5 多周期CPU實驗93
3.5.1 實驗類別93
3.5.2 實驗目的93
3.5.3 實驗原理93
3.5.4 實驗內(nèi)容和要求94
3.5.5 可研究與探索的問題95
3.6 中斷實驗95
3.6.1 實驗類別95
3.6.2 實驗目的95
3.6.3 實驗原理95
3.6.4 實驗內(nèi)容和要求96
3.6.5 可研究與探索的問題97
第4章 計算機體系結(jié)構(gòu)實踐98
4.1 流水線CPU設(shè)計98
4.1.1 實驗類別98
4.1.2 實驗目的98
4.1.3 實驗原理99
4.1.4 實驗內(nèi)容和要求103
4.1.5 實驗步驟104
4.1.6 可研究與探索的問題110
4.2 流水線帶Cache的CPU設(shè)計110
4.2.1 實驗類別110
4.2.2 實驗目的110
4.2.3 實驗原理110
4.2.4 實驗內(nèi)容和要求112
4.2.5 可研究與探索的問題113
第5章 計算機組成與體系結(jié)構(gòu)實踐114
5.1 ALU實驗114
5.1.1 實驗類型114
5.1.2 實驗目的114
5.1.3 實驗原理114
5.1.4 實驗內(nèi)容和要求115
5.1.5 實驗步驟116
5.1.6 可研究與探索的問題124
5.1.7 源代碼125
5.2 存儲器實驗130
5.2.1 實驗類型130
5.2.2 實驗目的130
5.2.3 實驗原理130
5.2.4 實驗內(nèi)容和要求131
5.2.5 FPGA中ROM定制與讀出實驗步驟131
5.5.6 FPGA的RAM定制與讀寫實驗137
5.2.7 可研究與探索的問題139
5.2.8 源代碼140
5.3 多周期控制器實驗144
5.3.1 實驗類型144
5.3.2 實驗目的144
5.3.3 實驗原理144
5.3.4 實驗內(nèi)容和要求145
5.3.5 實驗步驟146
5.3.6 可研究與探索的問題148
5.3.7 源代碼148
5.4 多周期CPU實驗153
5.4.1 實驗類型153
5.4.2 實驗目的153
5.4.3 實驗原理153
5.4.4 實驗內(nèi)容和要求155
5.4.5 實驗步驟156
5.4.6 可研究與探索的問題157
5.4.7 源代碼157
附錄A Icarus Verilog開發(fā)環(huán)境及使用161
A.1 Icarus Verilog的安裝161
A.2 Icarus Verilog環(huán)境變量設(shè)置162
A.3 Icarus Verilog的使用163
附錄B Verilog HDL語法簡介171
B.1 Verilog HDL基本結(jié)構(gòu)171
B.2 數(shù)據(jù)類型及常量、變量173
B.3 運算符175
B.4 語句176
B.5 編譯預處理語句182
B.6 測試臺、系統(tǒng)任務(wù)和函數(shù)183
附錄C 實驗報告185
附錄D 引腳對應(yīng)關(guān)系表188
附錄E MIPS指令193
參考文獻203