第1章 可编程逻辑器件简介 1
1.1 可编程逻辑器件概述 1
1.1.1 可编程逻辑器件的发展历程 2
1.1.2 可编程逻辑器件的分类方法 5
1.2 可编程逻辑器件的设计流程 6
1.3 FPGA发展概况 9
1.3.1 FPGA的主要优势与发展前景 9
1.3.2 主流FPGA产品及供应商简介 9
习题1 11
第2章 Verilog HDL基础 12
2.1 前言 12
2.2 程序示例 12
2.3 模块 14
2.3.1 模块的结构 14
2.3.2 模块的实例化 15
2.4 变量和信号的类型 16
2.5 Verilog HDL表达式 17
2.5.1 常量 17
2.5.2 操作符 18
2.6 Verilog HDL的主要功能语句 19
2.6.1 Verilog HDL对硬件的描述方式 19
2.6.2 数据流描述 20
2.6.3 行为描述——过程块 20
2.7 其他语法规则说明 24
2.7.1 标识符命名原则 24
2.7.2 标点的使用 25
2.7.3 注释 25
2.7.4 转义字符 25
2.7.5 编译命令 25
2.7.6 参数 26
2.8 示例程序分析 26
2.9 推荐阅读 27
习题2 27
第3章 实验环境介绍 28
3.1 EDA软件工具介绍 28
3.1.1 集成的FPGA开发环境 28
3.1.2 ModelSim介绍 30
3.1.3 Synplify简介 30
3.2 FPGA典型实验开发平台简介 31
3.2.1 康芯GW48-SoPC实验台 31
3.2.2 Xilinx XUP Spartan板 31
3.3 实验仪器的使用方法 32
3.3.1 函数信号发生器 32
3.3.2 数字存储示波器 32
3.3.3 逻辑分析仪 33
3.4 熟悉实验环境 33
3.4.1 实验目的 34
3.4.2 实验内容 34
3.4.3 实验步骤 34
习题3 45
第4章 基本组合逻辑电路设计 47
4.1 组合逻辑电路基础知识 47
4.1.1 组合逻辑电路的分析方法 47
4.1.2 组合逻辑电路分析举例 48
4.1.3 组合逻辑电路的设计方法 48
4.2 数据比较器 49
4.2.1 数据比较器的功能 49
4.2.2 比较器电路的设计 49
4.3 数据选择器 53
4.3.1 四选一数据选择器 53
4.3.2 四选一数据选择器的设计 53
4.3.3 数据选择器的应用 58
4.4 二进制加法器 59
4.4.1 半加器 59
4.4.2 全加器 61
4.5 编码/译码器 64
4.5.1 BCD码编码器 64
4.5.2 BCD码译码器 67
实验4-1 用原理图输入法设计四位加法器 70
实验4-2 数码显示译码器 70
习题4 72
第5章 基本时序逻辑设计 73
5.1 时序逻辑电路的基础知识 73
5.2 触发器 74
5.2.1 RS触发器 74
5.2.2 D触发器 76
5.2.3 JK触发器与T触发器 77
5.3 时序逻辑电路的分析方法 79
5.3.1 同步时序电路的分析方法 79
5.3.2 异步时序电路的分析方法 80
5.4 常见的时序逻辑电路设计 82
5.4.1 移位寄存器 82
5.4.2 计数器 85
5.4.3 分频器 87
5.4.4 顺序脉冲发生器 91
5.4.5 阶乘运算器 94
实验5-1 可预置的加减计数器实验 96
实验5-2 扭环形计数器 97
习题5 98
第6章 有限状态机设计 99
6.1 状态的描述 99
6.1.1 整数编码状态 99
6.1.2 parameter语句声明状态 100
6.1.3 define编译引导语句 100
6.2 FSM的设计方法 101
6.2.1 Moore型FSM的设计 101
6.2.2 Mealy型FSM的设计 104
6.2.3 混合型FSM的设计 107
6.3 FSM的复位和毛刺问题 111
6.4 FSM设计示例 112
6.4.1 乘法器建模 112
6.4.2 序列检测器的设计 117
6.4.3 交通灯控制器的设计 119
实验6-1 设计序列检测器 123
习题6 124
第7章 加法器设计 126
7.1 定点加法器 126
7.1.1 进位链结构 126
7.1.2 串行进位 127
7.1.3 并行进位 129
7.2 浮点加法器 131
7.2.1 规格化浮点数加减运算基本原理 132
7.2.2 浮点加法器的设计 133
7.3 运算器(ALU)的设计 139
实验7-1 8位加法器的设计 143
实验7-2 16位超前进位加法器 144
习题7 145
第8章 乘、除法器的设计 146
8.1 常用的机器数编码格式 146
8.2 定点乘法器原理及实现 147
8.2.1 原码一位乘算法及实现 147
8.2.2 补码一位乘算法及实现 152
8.3 定点除法器原理及实现 157
8.3.1 原码不恢复余数除法 158
8.3.2 补码不恢复余数除法 162
8.4 快速乘法器 165
8.4.1 修正布斯算法 165
8.4.2 华莱士树结构 166
实验8-1 原码两位乘法器 169
实验8-2 补码两位乘法器 170
习题8 171
第9章 存储器建模 172
9.1 只读存储器ROM的建模 172
9.1.1 ROM的基本结构 172
9.1.2 ROM的建模 173
9.1.3 ROM的仿真测试 174
9.2 随机存储器RAM的建模 175
9.2.1 RAM的基本结构 175
9.2.2 RAM的建模 175
9.2.3 RAM的仿真测试 179
9.3 利用IP Core工具生成ROM和RAM 181
实验9-1 利用SRAM设计并实现FIFO 184
习题9 185
第10章 CPU的设计 186
10.1 CPU的基本组成 186
10.1.1 控制部件 186
10.1.2 运算部件 188
10.1.3 寄存器组 188
10.2 CPU设计的一般过程 188
10.3 HEU-R1处理器指令集的设计 189
10.3.1 指令格式 189
10.3.2 指令集的设计 190
10.4 HEU-R1内部数据通路的设计 191
10.5 时序系统的设计 192
10.6 HEU-R1各功能模块的设计 192
10.6.1 指令译码模块的设计 192
10.6.2 立即数生成模块 194
10.6.3 分支处理模块 194
10.6.4 地址生成模块 195
10.6.5 算术逻辑单元模块 196
10.6.6 寄存器组模块 197
10.6.7 CPU模块 198
10.7 仿真验证及结果 201
10.7.1 外围模块建模 201
10.7.2 系统复位 204
10.7.3 功能验证 204
实验10-1 HEU-R1处理器核的指令集扩展 207
习题10 208
第11章 数字电子时钟设计 209
11.1 数字钟功能需求说明 209
11.2 实验平台相关电路说明 209
11.2.1 7段数码管 210
11.2.2 外部按键 210
11.2.3 音频输出 211
11.3 数字钟系统的设计 212
11.4 数字钟各模块的设计 212
11.4.1 时钟分频模块 212
11.4.2 计时模块(包含按键控制) 213
11.4.3 音频输出模块 215
11.5 仿真验证 218
11.6 引脚设置 219
实验11-1 整点报时闹钟设计 219
习题11 220
第12章 VGA接口控制器 221
12.1 视频信号原理 221
12.2 数字视频图像的表示 223
12.3 VGA接口介绍 225
12.4 VGA信号时序 225
12.5 VGA接口控制器设计 227
12.5.1 VGASig模块 228
12.5.2 ColorMap模块 230
12.5.3 顶层模块 231
12.5.4 功能仿真 233
12.5.5 引脚设置 233
实验12-1 800×600分辨率VGA接口的设计 234
实验12-2 VGA动态图形显示控制 235
习题12 236
第13章 FIR数字滤波器设计 237
13.1 数字滤波器概述 237
13.2 FIR滤波器的结构 238
13.3 FDATool工具使用介绍 240
13.3.1 MATLAB简介 240
13.3.2 FDATool设计FIR滤波器的参数 240
13.4 窗函数法FIR滤波器的设计 242
13.4.1 窗函数的选择 243
1 3.4.2 窗函数法FIR滤波器的设计步骤 243
13.5 FIR滤波器的FPGA实现 244
13.5.1 滤波器系数的量化 244
13.5.2 16阶FIR滤波器的实现 245
13.5.3 在ModelSim中加入Altera仿真库 250
13.6 FIR滤波器的仿真验证 251
13.6.1 仿真数据文件的格式 251
13.6.2 测试平台程序的设计 252
13.6.3 仿真结果分析 254
实验13-1 低通FIR滤波器的设计 256
实验13-2 FIR滤波器的硬件实现及仿真 258
习题13 259
第14章 基于Nios的SoPC系统 260
14.1 SoPC技术概述 260
14.1.1 IP核与IP复用技术 261
14.1.2 片上总线 262
14.2 嵌入式微处理器核介绍 263
14.2.1 Altera Nios Ⅱ软核处理器 263
14.2.2 Xilinx MicroBlaze核 264
14.3 基于Nios的SoPC系统开发流程 266
14.4 基于Nios的跑马灯控制器的设计 267
14.4.1 基本SoPC系统硬件结构 267
14.4.2 JTAG UART IP核 268
14.5 跑马灯控制器的硬件实现 269
14.5.1 新建SoPC设计项目 269
14.5.2 各模块的设计 271
14.5.3 存储器地址和IRQ分配 275
14.5.4 NiosⅡ系统生成 275
14.5.5 SoPC系统生成 276
14.6 跑马灯控制器的软件设计 279
14.6.1 C源程序输入 280
14.6.2 代码优化 281
14.6.3 程序运行和下载 282
实验14-1 基于NiosⅡ处理器计时器的设计 284
习题14 285
附录 Verilog HDL关键字 286
参考文献 287