章 EDA技术概述1
1.1 EDA技术及其发展1
1.2 Top-down设计与IP核复用4
1.2.1 Top-down设计4
1.2.2 Bottom-up设计4
1.2.3 IP复用技术与SoC5
1.3 数字设计的流程6
1.3.1 设计输入7
1.3.2 综合7
1.3.3 布局布线8
1.3.4 仿真8
1.3.5 编程配置9
1.4 常用的EDA工具软件9
1.5 EDA技术的发展趋势12
习题113
第2章 FPGA/CPLD器件14
2.1 PLD器件概述14
2.1.1 PLD器件的发展历程14
2.1.2 PLD器件的分类15
2.2 PLD的基本原理与结构17
2.2.1 PLD器件的基本结构17
2.2.2 PLD电路的表示方法18
2.3 低密度PLD的原理与结构19
2.4 CPLD的原理与结构23
2.4.1 宏单元结构23
2.4.2 CPLD的结构24
2.5 FPGA的原理与结构26
2.5.1 查找表结构26
2.5.2 FPGA的结构29
2.6 FPGA/CPLD的编程元件34
2.7 边界扫描测试技术37
2.8 FPGA/CPLD的编程与配置39
2.8.1 在系统可编程39
2.8.2 Artix-7器件的配置40
2.9 Xilinx的FPGA器件42
2.10 FPGA/CPLD的发展趋势43
习题244
第3章 Vivado使用指南45
3.1 Vivado流水灯设计45
3.1.1 流水灯设计输入45
3.1.2 行为仿真52
3.1.3 综合与引脚的约束55
3.1.4 生成比特流文件并下载58
3.1.5 将配置数据烧写至Flash中59
3.2 IP核的创建和封装62
3.3 基于IP集成的计数器设计70
3.4 Vivado的综合策略与优化设置79
习题385
第4章 Verilog设计初步86
4.1 Verilog的历史86
4.2 Verilog模块的结构87
4.3 Verilog基本组合电路设计90
4.3.1 用Verilog设计表决电路90
4.3.2 用Verilog设计加法器91
4.4 Verilog基本时序电路设计93
4.4.1 用Verilog设计触发器93
4.4.2 用Verilog设计计数器94
习题496
第5章 Verilog语言要素97
5.1 概述97
5.2 常量98
5.2.1 整数(Integer)98
5.2.2 实数(Real)100
5.2.3 字符串(String)100
5.3 数据类型101
5.3.1 net型102
5.3.2 variable型103
5.4 参数104
5.4.1 参数parameter104
5.4.2 Verilog-2001中的参数声明105
5.4.3 参数的传递106
5.4.4 localparam106
5.5 向量107
5.6 运算符109
习题5113
第6章 Verilog语句语法115
6.1 过程语句115
6.1.1 always过程语句116
6.1.2 initial过程语句119
6.2 块语句120
6.2.1 串行块begin-end120
6.2.2 并行块fork-join121
6.3 赋值语句122
6.3.1 持续赋值与过程赋值122
6.3.2 阻塞赋值与非阻塞赋值123
6.4 条件语句125
6.4.1 if-else语句125
6.4.2 case语句126
6.5 循环语句130
6.5.1 for语句131
6.5.2 repeat、while、forever语句132
6.6 编译指示语句133
6.7 任务与函数135
6.7.1 任务(task)135
6.7.2 函数(function)137
6.8 顺序执行与并发执行140
6.9 Verilog-2001语言标准142
6.9.1 Verilog-2001改进和增强的语法结构142
6.9.2 属性及PLI接口150
习题6153
第7章 Verilog设计的层次与风格154
7.1 Verilog设计的层次154
7.2 门级结构描述154
7.2.1 Verilog门元件155
7.2.2 门级结构描述157
7.3 行为描述158
7.4 数据流描述159
7.5 不同描述风格的设计160
7.5.1 半加器设计160
7.5.2 1位全加器设计161
7.5.3 加法器的级联163
7.6 多层次结构电路的设计164
7.6.1 模块例化164
7.6.2 用parameter进行参数传递165
7.6.3 用defparam进行参数重载166
7.7 基本组合电路设计167
7.8 基本时序电路设计171
7.9 三态逻辑设计174
习题7176
第8章 Verilog有限状态机设计177
8.1 有限状态机177
8.2 有限状态机的Verilog描述179
8.2.1 用三个always块描述180
8.2.2 用两个过程描述181
8.2.3 单过程描述方式182
8.3 状态编码183
8.3.1 常用的编码方式183
8.3.2 状态编码的定义185
8.4 有限状态机设计要点188
8.4.1 复位和起始状态的选择188
8.4.2 多余状态的处理191
8.5 有限状态机应用实例192
8.5.1 用有限状态机控制彩灯192
8.5.2 用有限状态机控制A/D采样194
习题8195
第9章 Verilog驱动常用I/O外设197
9.1 4×4矩阵键盘197
9.2 数码管200
9.3 标准PS/2键盘202
9.4 字符液晶210
9.5 汉字图形点阵液晶218
9.6 VGA显示器224
9.6.1 VGA显示原理与时序224
9.6.2 VGA彩条信号发生器226
9.6.3 VGA图像显示与控制232
9.7 乐曲演奏电路239
习题9247
0章 Verilog设计进阶249
10.1 设计的可综合性249
10.2 流水线设计技术252
10.3 资源共享255
10.4 阻塞赋值与非阻塞赋值257
10.5 加法器设计261
10.5.1 行波进位加法器261
10.5.2 超前进位加法器262
10.5.3 流水线加法器266
10.6 乘法器设计266
10.6.1 并行乘法器267
10.6.2 布斯乘法器267
10.6.3 查找表乘法器270
10.7 奇数分频与小数分频271
10.7.1 奇数分频271
10.7.2 半整数分频272
10.7.3 小数分频273
习题10277
1章 Verilog Test Bench仿真278
11.1 系统任务与系统函数278
11.2 用户自定义元件282
11.2.1 组合电路UDP元件283
11.2.2 时序逻辑UDP元件284
11.3 延时模型的表示286
11.3.1 时间标尺定义`timescale286
11.3.2 延时的表示与延时说明块287
11.4 Test Bench测试平台288
11.5 组合和时序电路的仿真291
11.5.1 组合电路的仿真291
11.5.2 时序电路的仿真293
11.6 ModelSim SE仿真实例294
11.6.1 图形界面进行功能仿真295
11.6.2 命令行方式进行功能仿真298
11.6.3 时序仿真300
习题11303
2章 Verilog设计实例304
12.1 脉宽调制与步进电机驱动304
12.1.1 PWM信号304
12.1.2 用PWM驱动蜂鸣器305
12.1.3 用PWM驱动步进电机310
12.2 超声波测距314
12.3 整数开方运算319
12.4 频率测量324
12.5 Cordic算法及其实现330
12.5.1 Cordic算法原理330
12.5.2 Cordic算法的实现333
12.6 用XADC实现模数转换340
12.6.1 7系列FPGA片内集成ADC概述340
12.6.2 XADC的使用342
习题12354
附录A EGO1开发板355
附录B Verilog HDL(IEEE Std 1364-1995)关键字356
附录C Verilog HDL(IEEE Std 1364-2001)关键字357
参考文献358