本书从数字电路与数字逻辑课程的组合逻辑、时序逻辑电路的设计开始,逐步构建计算机组成与体系结构及相关课程中的运算器、存储器和控制器,实现基于MIPS指令集的CPU。 本书采用Verilog HDL,以Vivado软件为EDA工具,在Xilinx FPGA平台上进行实验验证和设计,让读者掌握硬件功能的仿真与测试方法,具备计算机系统的设计能力。 全书共5章,包括:EDA基础和龙芯中科LS-CPU-EXB实验系统介绍,数字逻辑与数字电路实践,计算机组成原理实践,计算机体系结构实践,计算机组成与体系结构实践。附录简单介绍了Icarus Verilog开发环境及使用、Verilog HDL语法,给出了引脚对应关系表和部分MIPS指令。 本书可作为高等院校计算机类、电子信息类各专业的教材,也可供其他理工科专业选用或相关技术人员参考。
成洁,女,湘潭大学计算机学院教师,湖南省线上线下混合式一流课程《计算机组成与体系结构》负责人,湘潭大学精品在线开放课程《计算机组成与体系结构》负责人。
目 录
第1章 EDA基础和实验系统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触摸屏调用方法27
1.5 实验系统33
第2章 数字逻辑与数字电路实践40
2.1 三人表决电路实验40
2.1.1 实验类别40
2.1.2 实验目的40
2.1.3 实验原理40
2.1.4 实验内容和要求40
2.1.5 实验步骤41
2.1.6 可研究与探索的问题46
2.1.7 源代码47
2.2 数据选择器实验47
2.2.1 实验类别47
2.2.2 实验目的47
2.2.3 实验原理47
2.2.4 实验内容和要求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 实验内容和要求50
2.3.5 半加器实验步骤51
2.3.6 全加器实验步骤52
2.3.7 可研究与探索的问题55
2.3.8 源代码55
2.4 七段数码显示译码器实验55
2.4.1 实验类别55
2.4.2 实验目的55
2.4.3 实验原理56
2.4.4 实验内容和要求56
2.4.5 实验步骤58
2.4.6 可研究与探索的问题59
2.4.7 源代码59
2.5 计数器实验60
2.5.1 实验类别60
2.5.2 实验目的60
2.5.3 实验原理60
2.5.4 实验内容和要求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 实验内容和要求64
2.6.5 实验步骤(方案二)66
2.6.6 可研究与探索的问题68
2.6.7 源代码(实验设计方案二)68
2.7 序列信号发生器实验73
2.7.1 实验类别73
2.7.2 实验目的73
2.7.3 实验原理74
2.7.4 实验内容和要求74
2.7.5 可研究与探索的问题76
2.8 序列检测器实验76
2.8.1 实验类别76
2.8.2 实验目的76
2.8.3 实验原理76
2.8.4 实验内容和要求77
2.8.5 可研究与探索的问题78
2.9 数字钟实验78
2.9.1 实验类别78
2.9.2 实验目的78
2.9.3 实验原理79
2.9.4 实验内容和要求79
2.9.5 可研究与探索的问题80
2.10 交通灯控制器实验80
2.10.1 实验类别80
2.10.2 实验目的80
2.10.3 实验原理80
2.10.4 实验内容和要求80
2.10.5 可研究与探索的问题82
第3章 计算机组成原理实践83
3.1 32位算术逻辑运算器实验83
3.1.1 实验类型83
3.1.2 实验目的83
3.1.3 实验原理83
3.1.4 实验内容和要求84
3.1.5 可研究与探索的问题85
3.2 存储器实验85
3.2.1 实验类别85
3.2.2 实验目的85
3.2.3 实验原理85
3.2.4 实验内容和要求87
3.2.5 建议的实验步骤87
3.2.6 可研究与探索的问题89
3.3 指令系统实验89
3.3.1 实验类别89
3.3.2 实验目的89
3.3.3 实验原理89
3.3.4 实验内容和要求90
3.3.5 可研究与探索的问题90
3.4 单周期CPU实验90
3.4.1 实验类别91
3.4.2 实验目的91
3.4.3 实验原理91
3.4.4 实验内容和要求92
3.4.5 可研究与探索的问题92
3.5 多周期CPU实验93
3.5.1 实验类别93
3.5.2 实验目的93
3.5.3 实验原理93
3.5.4 实验内容和要求94
3.5.5 可研究与探索的问题95
3.6 中断实验95
3.6.1 实验类别95
3.6.2 实验目的95
3.6.3 实验原理95
3.6.4 实验内容和要求96
3.6.5 可研究与探索的问题97
第4章 计算机体系结构实践98
4.1 流水线CPU设计98
4.1.1 实验类别98
4.1.2 实验目的98
4.1.3 实验原理99
4.1.4 实验内容和要求103
4.1.5 实验步骤104
4.1.6 可研究与探索的问题110
4.2 流水线带Cache的CPU设计110
4.2.1 实验类别110
4.2.2 实验目的110
4.2.3 实验原理110
4.2.4 实验内容和要求112
4.2.5 可研究与探索的问题113
第5章 计算机组成与体系结构实践114
5.1 ALU实验114
5.1.1 实验类型114
5.1.2 实验目的114
5.1.3 实验原理114
5.1.4 实验内容和要求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 实验内容和要求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 实验内容和要求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 实验内容和要求155
5.4.5 实验步骤156
5.4.6 可研究与探索的问题157
5.4.7 源代码157
附录A Icarus Verilog开发环境及使用161
A.1 Icarus Verilog的安装161
A.2 Icarus Verilog环境变量设置162
A.3 Icarus Verilog的使用163
附录B Verilog HDL语法简介171
B.1 Verilog HDL基本结构171
B.2 数据类型及常量、变量173
B.3 运算符175
B.4 语句176
B.5 编译预处理语句182
B.6 测试台、系统任务和函数183
附录C 实验报告185
附录D 引脚对应关系表188
附录E MIPS指令193
参考文献203