描述
包 装: 平塑是否套装: 否国际标准书号ISBN: 9787121462955丛书名: 电子系统EDA新技术丛书
内容简介
本书首先对Verilog HDL的高阶语法知识进行了详细介绍,然后基于高云半导体和西门子的云源软件和Modelsim软件对加法器、减法器、乘法器、除法器和浮点运算器的设计进行了综合和仿真,最后以全球经典的无内部互锁流水级微处理器(MIPS)指令集架构(ISA)为基础,详细介绍了单周期MIPS系统的设计、多周期MIPS系统的设计,以及流水线MIPS系统的设计,并使用高云半导体的云源软件和GAO在线逻辑分析工具对设计进行综合和验证,以验证设计的正确性。 本书共8章,主要内容包括Verilog HDL规范进阶、加法器和减法器的设计和验证、乘法器和除法器的设计和验证、浮点运算器的设计和验证、Codescape的下载安装和使用指南、单周期MIPS系统的设计和验证、多周期MIPS系统的设计和验证,以及流水线MIPS系统的设计和验证等内容。
目 录
目 录
第1章 Verilog HDL规范进阶 1
1.1 Verilog HDL用户自定义原语 1
1.1.1 UDP定义 1
1.1.2 组合电路UDP 3
1.1.3 电平敏感的时序UDP 4
1.1.4 边沿敏感的时序UDP 4
1.1.5 时序UDP的初始化 5
1.1.6 UDP实例 6
1.1.7 边沿和电平触发的混合行为 6
1.2 Verilog HDL指定块 7
1.2.1 模块路径声明 8
1.2.2 为路径分配延迟 15
1.2.3 混合模块路径延迟和分布式延迟 18
1.2.4 驱动布逻辑 18
1.2.5 脉冲过滤行为的详细控制 19
1.3 Verilog HDL时序检查 24
1.3.1 时序检查概述 24
1.3.2 使用稳定窗口的检查时序 25
1.3.3 时钟和控制信号的时序检查 30
1.3.4 边沿控制标识符 35
1.3.5 提示符:用户定义对时序冲突的响应 35
1.3.6 使能带有条件的时序检查 40
1.3.7 时序检查中的矢量信号 40
1.3.8 负时序检查 41
1.4 Verilog HDL SDF逆向注解 42
1.4.1 SDF注解器 42
1.4.2 映射SDF结构到Verilog 42
1.4.3 多个注解 46
1.4.4 多个SDF文件 47
1.4.5 脉冲限制注解 47
1.4.6 SDF到Verilog延迟值映射 48
1.5 Verilog HDL的VCD文件 48
1.5.1 Vivado创建四态VCD文件 49
1.5.2 Verilog源创建四态VCD文件 49
1.5.3 四态VCD文件格式 51
1.6 编译高云FPGA仿真库 55
1.6.1 功能仿真库的安装 55
1.6.2 时序仿真库的安装 57
第2章 加法器和减法器的设计和验证 60
2.1 加法器的设计 60
2.1.1 一位半加器的实现 60
2.1.2 一位全加器的实现 60
2.1.3 串行进位加法器的实现 61
2.1.4 串行进位加法器的验证 65
2.1.5 超前进位加法器的实现 70
2.1.6 超前进位加法器的验证 74
2.2 减法器的设计 76
2.2.1 一位半减器的实现 76
2.2.2 一位全减器的实现 77
2.2.3 负数的表示方法 78
2.2.4 多位减法器的设计和验证 80
2.3 单个加法器实现加法和减法运算 82
2.3.1 一位加法器/减法器的实现 82
2.3.2 多位加法器/减法器的实现 83
2.3.3 单个加法器的设计和验证 84
第3章 乘法器和除法器的设计和验证 86
3.1 乘法器的设计和验证 86
3.1.1 基-2布斯算法的设计 86
3.1.2 基-2布斯算法的验证 90
3.1.3 基-2流水线布斯乘法器的设计 94
3.1.4 基-2流水线布斯乘法器的验证 96
3.1.5 基-4流水线布斯算法的设计 100
3.1.6 基-4流水线布斯算法的验证 104
3.2 除法器的设计和验证 105
3.2.1 基于长除法的除法器的设计 105
3.2.2 基于长除法的除法器的验证 109
3.2.3 基于恢复除法的除法器的设计 112
3.2.4 基于恢复除法的除法器的验证 116
3.2.5 基于非恢复除法的除法器的设计 117
3.2.6 基于非恢复除法的除法器的验证 120
第4章 浮点运算器的设计和验证 123
4.1 浮点数的表示方法 123
4.1.1 单精度表示方法 123
4.1.2 双精度表示方法 124
4.2 调用浮点库的浮点数运算的实现和验证 124
4.2.1 调用浮点库的浮点数运算的实现 124
4.2.2 调用浮点库的浮点数运算的验证 126
第5章 Codescape下载安装和使用指南 132
5.1 Codescape工具的功能 132
5.2 Codescape工具的下载和安装 132
5.2.1 Codescape工具的下载 132
5.2.2 Codescape工具的安装 133
5.3 Codescape的设计流程 134
5.3.1 启动Codescape工具 134
5.3.2 创建新的设计工程 135
5.3.3 分析启动引导代码 136
5.3.4 修改main.c文件 139
5.3.5 编译设计文件 140
5.3.6 分析编译后的代码 140
第6章 单周期MIPS系统的设计和验证 142
6.1 MIPS实现的指令功能 142
6.1.1 MIPS32指令编码格式 142
6.1.2 处理器所实现的指令格式 150
6.2 单周期MIPS系统的设计 156
6.2.1 建立新的设计工程 156
6.2.2 添加通用寄存器集设计文件 157
6.2.3 添加程序计数器设计文件 158
6.2.4 添加控制器设计文件 158
6.2.5 添加算术逻辑单元设计文件 161
6.2.6 添加处理器顶层设计文件 162
6.2.7 添加数据存储器设计文件 165
6.2.8 添加指令存储器设计文件 166
6.2.9 添加系统顶层设计文件 167
6.3 生成并添加存储器初始化文件 168
6.3.1 建立新的设计工程 168
6.3.2 添加makefile文件 169
6.3.3 添加链接描述文件 170
6.3.4 添加汇编语言源文件 171
6.3.5 生成HEX文件 171
6.3.6 添加存储器初始化文件 172
6.4 单周期MIPS系统的验证 173
6.4.1 GAO软件工具概述 173
6.4.2 添加GAO配置文件 174
6.4.3 配置GAO参数 174
6.4.4 添加物理约束文件 178
6.4.5 添加引脚约束条件 178
6.4.6 下载设计到FPGA 181
6.4.7 启动GAO软件工具 181
6.4.8 设计总结和启示 182
6.5 单周期MIPS系统添加外设的设计 183
6.5.1 设计思路 183
6.5.2 存储空间映射 184
6.5.3 复制并添加设计文件 185
6.5.4 添加地址译码器设计文件 185
6.5.5 添加多路选择器设计文件 186
6.5.6 添加GPIO控制器设计文件 187
6.5.7 添加PWM控制器设计文件 188
6.5.8 修改顶层设计文件 189
6.5.9 查看RTL网表结构 191
6.6 单周期MIPS系统添加外设的验证 191
6.6.1 测试数据存储器 191
6.6.2 测试GPIO控制器 195
6.6.3 测试PWM控制器 199
6.7 单周期MIPS核添加协处理器的设计 203
6.7.1 设计背景 203
6.7.2 设计思路 204
6.7.3 复制设计文件 204
6.7.4 添加协处理器设计文件 204
6.7.5 修改控制器设计文件 209
6.7.6 修改程序计数器设计文件 212
6.7.7 修改处理器核设计文件 213
6.7.8 查看处理器核设计结构 216
6.8 单周期MIPS核添加协处理器的验证 216
6.8.1 测试保留指令异常 216
6.8.2 测试定时器中断异常 221
第7章 多周期MIPS系统的设计和验证 226
7.1 设计背景 226
7.2 设计关键问题 226
7.2.1 处理指令需要的阶段 226
7.2.2 数据通路 227
7.2.3 控制通路 229
7.3 多周期MIPS系统的设计 231
7.3.1 建立新的设计工程 232
7.3.2 复制设计文件 232
7.3.3 添加底层寄存器设计文件 233
7.3.4 添加程序计数器设计文件 233
7.3.5 添加存储器设计文件 234
7.3.6 添加控制器设计文件 235
7.3.7 添加顶层设计文件 239
7.4 多周期MIPS系统的验证 242
7.4.1 修改GAO配置文件 242
7.4.2 下载设计 243
7.4.3 启动GAO软件工具 243
7.4.4 设计总结和启示 244
第8章 流水线MIPS系统的设计和验证 245
8.1 流水线概述 245
8.1.1 数据通路的流水线结构 246
8.1.2 控制通路的流水线结构 249
8.1.3 风险及解决方法 249
8.2 流水线MIPS系统的设计 256
8.2.1 建立新的设计工程 256
8.2.2 复制设计文件 256
8.2.3 添加底层寄存器设计文件 257
8.2.4 添加通用寄存器集设计文件 259
8.2.5 添加控制器设计文件 260
8.2.6 添加风险控制单元设计文件 263
8.2.7 添加处理器核顶层设计文件 264
8.2.8 添加处理器系统顶层设计文件 269
8.3 流水线MIPS系统的验证 270
8.3.1 测试提前解决数据风险方法的正确性 270
8.3.2 测试停止解决数据风险方法的正确性 273
8.3.3 测试解决控制风险方法的正确性 276
8.4 流水线MIPS系统添加协处理器的设计 280
8.4.1 复制并添加设计文件 280
8.4.2 修改风险控制单元设计文件 281
8.4.3 修改MIPS核顶层设计文件 283
8.5 流水线MIPS系统添加协处理器的验证 290
8.5.1 修改GAO配置文件 290
8.5.2 下载设计 290
8.5.3 启动GAO软件工具 291
8.6 AHB-LITE总线架构和时序 292
8.6.1 ARM AMBA系统总线 292
8.6.2 AHB-LITE简介 293
8.6.3 AHB-LITE总线操作 294
8.6.4 AHB-LITE总线结构 294
8.6.5 AHB-LITE总线时序 297
8.7 流水线MIPS系统添加外设的设计 299
8.7.1 复制设计文件 300
8.7.2 添加本地总线转换设计文件 300
8.7.3 添加地址译码器设计文件 301
8.7.4 添加多路复用器设计文件 302
8.7.5 添加数据存储器控制器设计文件 303
8.7.6 添加GPIO控制器设计文件 305
8.7.7 修改控制器设计文件 306
8.7.8 修改风险控制单元设计文件 307
8.7.9 修改处理器核设计文件 309
8.7.10 修改顶层设计文件 316
8.8 流水线MIPS系统添加外设的验证 319
8.8.1 测试GPIO控制器 319
8.8.2 测试数据存储器控制器 322
第1章 Verilog HDL规范进阶 1
1.1 Verilog HDL用户自定义原语 1
1.1.1 UDP定义 1
1.1.2 组合电路UDP 3
1.1.3 电平敏感的时序UDP 4
1.1.4 边沿敏感的时序UDP 4
1.1.5 时序UDP的初始化 5
1.1.6 UDP实例 6
1.1.7 边沿和电平触发的混合行为 6
1.2 Verilog HDL指定块 7
1.2.1 模块路径声明 8
1.2.2 为路径分配延迟 15
1.2.3 混合模块路径延迟和分布式延迟 18
1.2.4 驱动布逻辑 18
1.2.5 脉冲过滤行为的详细控制 19
1.3 Verilog HDL时序检查 24
1.3.1 时序检查概述 24
1.3.2 使用稳定窗口的检查时序 25
1.3.3 时钟和控制信号的时序检查 30
1.3.4 边沿控制标识符 35
1.3.5 提示符:用户定义对时序冲突的响应 35
1.3.6 使能带有条件的时序检查 40
1.3.7 时序检查中的矢量信号 40
1.3.8 负时序检查 41
1.4 Verilog HDL SDF逆向注解 42
1.4.1 SDF注解器 42
1.4.2 映射SDF结构到Verilog 42
1.4.3 多个注解 46
1.4.4 多个SDF文件 47
1.4.5 脉冲限制注解 47
1.4.6 SDF到Verilog延迟值映射 48
1.5 Verilog HDL的VCD文件 48
1.5.1 Vivado创建四态VCD文件 49
1.5.2 Verilog源创建四态VCD文件 49
1.5.3 四态VCD文件格式 51
1.6 编译高云FPGA仿真库 55
1.6.1 功能仿真库的安装 55
1.6.2 时序仿真库的安装 57
第2章 加法器和减法器的设计和验证 60
2.1 加法器的设计 60
2.1.1 一位半加器的实现 60
2.1.2 一位全加器的实现 60
2.1.3 串行进位加法器的实现 61
2.1.4 串行进位加法器的验证 65
2.1.5 超前进位加法器的实现 70
2.1.6 超前进位加法器的验证 74
2.2 减法器的设计 76
2.2.1 一位半减器的实现 76
2.2.2 一位全减器的实现 77
2.2.3 负数的表示方法 78
2.2.4 多位减法器的设计和验证 80
2.3 单个加法器实现加法和减法运算 82
2.3.1 一位加法器/减法器的实现 82
2.3.2 多位加法器/减法器的实现 83
2.3.3 单个加法器的设计和验证 84
第3章 乘法器和除法器的设计和验证 86
3.1 乘法器的设计和验证 86
3.1.1 基-2布斯算法的设计 86
3.1.2 基-2布斯算法的验证 90
3.1.3 基-2流水线布斯乘法器的设计 94
3.1.4 基-2流水线布斯乘法器的验证 96
3.1.5 基-4流水线布斯算法的设计 100
3.1.6 基-4流水线布斯算法的验证 104
3.2 除法器的设计和验证 105
3.2.1 基于长除法的除法器的设计 105
3.2.2 基于长除法的除法器的验证 109
3.2.3 基于恢复除法的除法器的设计 112
3.2.4 基于恢复除法的除法器的验证 116
3.2.5 基于非恢复除法的除法器的设计 117
3.2.6 基于非恢复除法的除法器的验证 120
第4章 浮点运算器的设计和验证 123
4.1 浮点数的表示方法 123
4.1.1 单精度表示方法 123
4.1.2 双精度表示方法 124
4.2 调用浮点库的浮点数运算的实现和验证 124
4.2.1 调用浮点库的浮点数运算的实现 124
4.2.2 调用浮点库的浮点数运算的验证 126
第5章 Codescape下载安装和使用指南 132
5.1 Codescape工具的功能 132
5.2 Codescape工具的下载和安装 132
5.2.1 Codescape工具的下载 132
5.2.2 Codescape工具的安装 133
5.3 Codescape的设计流程 134
5.3.1 启动Codescape工具 134
5.3.2 创建新的设计工程 135
5.3.3 分析启动引导代码 136
5.3.4 修改main.c文件 139
5.3.5 编译设计文件 140
5.3.6 分析编译后的代码 140
第6章 单周期MIPS系统的设计和验证 142
6.1 MIPS实现的指令功能 142
6.1.1 MIPS32指令编码格式 142
6.1.2 处理器所实现的指令格式 150
6.2 单周期MIPS系统的设计 156
6.2.1 建立新的设计工程 156
6.2.2 添加通用寄存器集设计文件 157
6.2.3 添加程序计数器设计文件 158
6.2.4 添加控制器设计文件 158
6.2.5 添加算术逻辑单元设计文件 161
6.2.6 添加处理器顶层设计文件 162
6.2.7 添加数据存储器设计文件 165
6.2.8 添加指令存储器设计文件 166
6.2.9 添加系统顶层设计文件 167
6.3 生成并添加存储器初始化文件 168
6.3.1 建立新的设计工程 168
6.3.2 添加makefile文件 169
6.3.3 添加链接描述文件 170
6.3.4 添加汇编语言源文件 171
6.3.5 生成HEX文件 171
6.3.6 添加存储器初始化文件 172
6.4 单周期MIPS系统的验证 173
6.4.1 GAO软件工具概述 173
6.4.2 添加GAO配置文件 174
6.4.3 配置GAO参数 174
6.4.4 添加物理约束文件 178
6.4.5 添加引脚约束条件 178
6.4.6 下载设计到FPGA 181
6.4.7 启动GAO软件工具 181
6.4.8 设计总结和启示 182
6.5 单周期MIPS系统添加外设的设计 183
6.5.1 设计思路 183
6.5.2 存储空间映射 184
6.5.3 复制并添加设计文件 185
6.5.4 添加地址译码器设计文件 185
6.5.5 添加多路选择器设计文件 186
6.5.6 添加GPIO控制器设计文件 187
6.5.7 添加PWM控制器设计文件 188
6.5.8 修改顶层设计文件 189
6.5.9 查看RTL网表结构 191
6.6 单周期MIPS系统添加外设的验证 191
6.6.1 测试数据存储器 191
6.6.2 测试GPIO控制器 195
6.6.3 测试PWM控制器 199
6.7 单周期MIPS核添加协处理器的设计 203
6.7.1 设计背景 203
6.7.2 设计思路 204
6.7.3 复制设计文件 204
6.7.4 添加协处理器设计文件 204
6.7.5 修改控制器设计文件 209
6.7.6 修改程序计数器设计文件 212
6.7.7 修改处理器核设计文件 213
6.7.8 查看处理器核设计结构 216
6.8 单周期MIPS核添加协处理器的验证 216
6.8.1 测试保留指令异常 216
6.8.2 测试定时器中断异常 221
第7章 多周期MIPS系统的设计和验证 226
7.1 设计背景 226
7.2 设计关键问题 226
7.2.1 处理指令需要的阶段 226
7.2.2 数据通路 227
7.2.3 控制通路 229
7.3 多周期MIPS系统的设计 231
7.3.1 建立新的设计工程 232
7.3.2 复制设计文件 232
7.3.3 添加底层寄存器设计文件 233
7.3.4 添加程序计数器设计文件 233
7.3.5 添加存储器设计文件 234
7.3.6 添加控制器设计文件 235
7.3.7 添加顶层设计文件 239
7.4 多周期MIPS系统的验证 242
7.4.1 修改GAO配置文件 242
7.4.2 下载设计 243
7.4.3 启动GAO软件工具 243
7.4.4 设计总结和启示 244
第8章 流水线MIPS系统的设计和验证 245
8.1 流水线概述 245
8.1.1 数据通路的流水线结构 246
8.1.2 控制通路的流水线结构 249
8.1.3 风险及解决方法 249
8.2 流水线MIPS系统的设计 256
8.2.1 建立新的设计工程 256
8.2.2 复制设计文件 256
8.2.3 添加底层寄存器设计文件 257
8.2.4 添加通用寄存器集设计文件 259
8.2.5 添加控制器设计文件 260
8.2.6 添加风险控制单元设计文件 263
8.2.7 添加处理器核顶层设计文件 264
8.2.8 添加处理器系统顶层设计文件 269
8.3 流水线MIPS系统的验证 270
8.3.1 测试提前解决数据风险方法的正确性 270
8.3.2 测试停止解决数据风险方法的正确性 273
8.3.3 测试解决控制风险方法的正确性 276
8.4 流水线MIPS系统添加协处理器的设计 280
8.4.1 复制并添加设计文件 280
8.4.2 修改风险控制单元设计文件 281
8.4.3 修改MIPS核顶层设计文件 283
8.5 流水线MIPS系统添加协处理器的验证 290
8.5.1 修改GAO配置文件 290
8.5.2 下载设计 290
8.5.3 启动GAO软件工具 291
8.6 AHB-LITE总线架构和时序 292
8.6.1 ARM AMBA系统总线 292
8.6.2 AHB-LITE简介 293
8.6.3 AHB-LITE总线操作 294
8.6.4 AHB-LITE总线结构 294
8.6.5 AHB-LITE总线时序 297
8.7 流水线MIPS系统添加外设的设计 299
8.7.1 复制设计文件 300
8.7.2 添加本地总线转换设计文件 300
8.7.3 添加地址译码器设计文件 301
8.7.4 添加多路复用器设计文件 302
8.7.5 添加数据存储器控制器设计文件 303
8.7.6 添加GPIO控制器设计文件 305
8.7.7 修改控制器设计文件 306
8.7.8 修改风险控制单元设计文件 307
8.7.9 修改处理器核设计文件 309
8.7.10 修改顶层设计文件 316
8.8 流水线MIPS系统添加外设的验证 319
8.8.1 测试GPIO控制器 319
8.8.2 测试数据存储器控制器 322
评论
还没有评论。