目录 1
第1章 数字电路设计基础 1
1.1 布尔代数 2
1.2 逻辑表达式 3
1.2.1 真值表和逻辑化简 3
1.2.2 与或格式和或与格式 4
1.2.3 带有使能端的D触发器 5
1.3 逻辑门实现技术 5
1.3.1 晶体管开关 5
1.3.2 CMOS逻辑门 6
1.3.3 负逻辑系统 8
1.4 数字电路的实现方法 9
1.4.1 标准器件 9
1.4.2 用户可编程逻辑芯片——PLA,PAL,CPLD和FPGA 10
1.4.3 客户全定制芯片 15
1.4.4 客户半定制芯片——标准单元和门阵列 15
1.5 数字电路的开发过程 17
1.6 MAX+PLUSⅡ的使用方法 18
1.6.1 逻辑图输入 19
1.6.2 编译 21
1.6.3 功能模拟 22
1.6.4 生成电路的逻辑符号 25
1.7 AHDL,Verilog HDL和VHDL举例 27
第2章 CPU逻辑电路设计概述 31
2.1 二进制数的大小及计算结果的溢出判断 31
2.2 数据在存储器中的存放和数据对齐 33
2.3 MIPS指令集简介 34
2.4 CPU逻辑电路设计简介 40
2.4.1 单周期CPU简介 40
2.4.2 多周期CPU简介 41
2.4.3 流水线CPU简介 46
2.5.1 虚拟地址到物理地址的转换 49
2.5 存储器管理和TLB设计概述 49
2.5.2 快速地址转换表TLB 51
2.6 高速缓存Cache设计概述 52
2.6.1 Cache映射 52
2.6.2 Cache行替换 55
2.6.3 写策略 55
2.6.4 几种MIPS CPU的Cache构成 56
2.7 几种典型的MIPS CPU 57
第3章 MIPS指令 59
3.1 MIPS寄存器堆 60
3.2 指令格式 60
3.3.1 计算指令 61
3.3 CPU指令 61
3.3.2 数据传送(load/store)指令 70
3.3.3 转移及分支指令 75
3.3.4 协处理器指令 78
3.3.5 其他指令 80
3.4 小结 82
第4章 常用电路、算法及电路实现 83
4.1 逻辑运算器 83
4.1.1 逻辑与 83
4.1.3 逻辑或非 84
4.1.4 逻辑异或 84
4.1.2 逻辑或 84
4.2 常用电路 85
4.2.1 译码器 85
4.2.2 数据选择器 86
4.3 加减法器 88
4.3.1 32位加法器 88
4.3.2 32位减法器 94
4.3.3 32位加减法器 94
4.4 乘法器 95
4.4.1 32位无符号乘法器 95
4.4.2 32位乘法器 102
4.4.3 乘法并行阵列 108
4.4.4 Booth乘法算法 110
4.5 除法器 113
4.5.1 恢复余数法 113
4.5.2 不恢复余数法 115
4.5.3 有符号除法器 117
4.6 移位器 125
4.6.1 逻辑移位 125
4.6.2 算术移位 125
4.6.3 循环移位 126
4.7.1 首1计数器 127
4.7 首0/1计数器 127
4.7.2 首0计数器 131
4.8 比较器 131
4.9 ALU设计 132
4.10 小结 133
第5章 单周期CPU设计 135
5.1 指令描述 135
5.2 设计思路 137
5.2.1 R类型指令 142
5.2.2 I类型指令 142
5.2.3 J类型指令 145
5.3 寄存器堆设计 146
5.4 单周期CUP详细逻辑电路设计 150
5.4.1 取指令逻辑 151
5.4.2 指令译码逻辑 153
5.4.3 指令执行逻辑 157
5.4.4 存储器访问逻辑 160
5.4.5 结果写回逻辑 161
5.5 测试波形图 162
5.6 考虑延迟转移的单周期CPU设计 164
第6章 多周期CPU设计 167
6.1 无延迟转移功能的CPU 167
6.1.1 设计思路及数据路径 168
6.1.2 CPU的控制信号 172
6.2 带有延迟转移功能的CPU 175
6.2.1 控制部件设计 176
6.2.2 数据路径设计 185
6.2.3 多周期CPU整体逻辑电路 190
6.2.4 功能模拟波形图 190
6.3 性能分析 193
6.4 小结 193
第7章 系统控制协处理器的寄存器 195
7.1 CP0寄存器 195
7.2 CP0寄存器详细介绍 196
7.3 CP0寄存器实现 212
7.4 CP0寄存器堆读写 224
7.5 小结 225
第8章 存储管理 227
8.1 MIFS虚拟地址空间分配 227
8.2 MIPS TLB概述 229
8.3 地址转换 231
8.3.1 固定地址转换 231
8.3.2 块地址转换 233
8.3.3 基于TLB的地址转换 235
8.4.1 输入输出信号 241
8.4 TLB实现 241
8.4.2 TLB条目实现 242
8.4.3 TLB实现 242
8.5 存储管理实现 247
8.5.1 数据虚拟地址转换 248
8.5.2 指令虚拟地址转换 249
8.6 小结 250
第9章 中断和例外管理 251
9.1 中断 251
9.1.1 Reset例外、Soft Reset例外、NMI例外 251
9.1.2 普通外部中断 252
9.1.3 中断处理 254
9.2 例外 256
9.2.1 例外向量 256
9.2.2 通用例外处理 257
9.2.3 Reset例外处理 258
9.2.4 Soft Reset例外处理 261
9.2.5 NMI例外 261
9.2.6 MCheck例外 263
9.2.7 TLB Refill例外 263
9.2.9 TLB修改例外 264
9.2.8 TLB Invalid例外 264
9.2.10 整数溢出例外 266
9.2.11 System Call例外 266
9.2.12 Interrupt例外 266
9.3 例外处理流程实现 266
9.3.1 例外类型 266
9.3.2 例外处理 267
9.4 小结 275
第10章 流水线CPU设计 277
10.1 流水线寄存器 277
10.2.2 指令相关的解决方法 278
10.2.1 指令相关的类型 278
10.2 流水线CPU的指令相关问题 278
10.3 流水线CPU实现 284
10.3.1 IF阶段 284
10.3.2 ID阶段 286
10.3.3 EXE阶段 300
10.3.4 MEM阶段 301
10.3.5 WB阶段 304
10.4 系统和测试 305
10.4.1 中断程序 306
10.4.2 测试程序及数据 309
10.5.1 Cache的组成结构 311
10.4.3 测试结果 311
10.5 Cache设计 311
10.5.2 Cache操作 312
10.5.3 Cache实现 317
10.5.4 带Cache的流水线CPU设计 330
10.5.5 测试结果 337
10.6 小结 338
参考文献 339
索引 340
图索引 342
表索引 350