第1章 EDA技术简介 1
1.1 为什么需要学习EDA技术? 1
1.2 应用EDA技术的三个要素 5
1.2.1 可编程逻辑器件 5
1.2.2 硬件描述语言 16
1.2.3 EDA软件 18
1.3 EDA技术的应用领域 20
1.4 电子系统的设计方法 21
1.5 EDA网络学习资源 22
思考与练习 23
第2章 Verilog HDL基础 24
2.1 初识Verilog HDL 24
2.2 Verilog基本元素 28
2.2.1 取值集合 28
2.2.2 常量表示 28
2.2.3 标识符与关键词 31
2.3 数据类型 31
2.3.1 线网类型 32
2.3.2 变量类型 33
2.3.3 存储器 34
2.3.4 标量与矢量 35
2.4 运算符与操作符 35
2.4.1 算术运算符 36
2.4.2 逻辑运算符 37
2.4.3 位操作符 38
2.4.4 关系运算符 38
2.4.5 等式运算符 38
2.4.6 条件操作符 39
2.4.7 移位操作符 39
2.4.8 缩位运算符 40
2.4.9 拼接操作符 40
2.5 模块功能的描述方法 41
2.5.1 行为描述 41
2.5.2 数据流描述 56
2.5.3 结构描述 58
2.5.4 混合描述方法 60
2.5.5 用户自定义原语 60
2.6 层次化设计方法 62
2.7 函数与任务 64
2.7.1 函数 64
2.7.2 任务 66
2.8 编写testbench 67
2.8.1 $display和$write任务 68
2.8.2 $monitor任务 68
2.8.3 $time函数和$timeformat任务 69
2.8.4 $finish和$stop任务 70
2.8.5 testbench应用示例 70
思考与练习 72
第3章 QuartusⅡ的应用 75
3.1 基本设计流程 76
3.1.1 建立工程 76
3.1.2 设计输入 80
3.1.3 编译、综合与适配 82
3.1.4 引脚锁定 84
3.1.5 编程与配置 88
3.2 原理图设计方法 98
3.3 仿真分析 102
3.3.1 基于向量波形的仿真方法 102
3.3.2 基于testbench的仿真方法 106
3.4 逻辑分析仪的应用 111
3.5 数字频率计设计——基于原理图方法 118
思考与练习 122
第4章 常用数字器件的描述 124
4.1 组合器件的描述 124
4.1.1 基本逻辑门 124
4.1.2 编码器 125
4.1.3 译码器 127
4.1.4 数据选择器 130
4.1.5 数值比较器 131
4.1.6 三态缓冲器 132
4.1.7 奇偶校验器 134
4.2 时序器件的描述 134
4.2.1 锁存器与触发器 135
4.2.2 寄存器 136
4.2.3 计数器 138
4.3 分频器及其应用 140
4.3.1 偶分频器 141
4.3.2 奇分频器 142
4.3.3 半整数分频器 143
4.3.4 分频器的应用 145
4.4 存储器的描述 148
4.4.1 ROM的描述 148
4.4.2 RAM的描述 152
4.5 数字频率计设计——基于HDL方法 153
思考与练习 159
第5章 宏功能模块的应用 161
5.1 宏功能模块的调用方法 162
5.2 DDS信号源的设计 169
5.2.1 相位累加器的设计 171
5.2.2 正弦波ROM的定制 171
5.2.3 输出数据的校正 177
5.2.4 顶层电路设计 177
5.2.5 D/A转换及滤波电路 179
5.3 等精度频率计的设计 180
5.3.1 测频控制电路设计 181
5.2.2 频率测量与计算电路设计 182
5.3.3 代码转换与译码电路设计 184
5.3.4 顶层电路设计 187
思考与练习 188
第6章 状态机设计方法 190
6.1 状态机的概念与分类 190
6.2 状态机的描述方法 192
6.3 A/D转换控制器的设计 197
6.4 状态机设计实践 201
6.4.1 序列控制电路设计 201
6.4.2 VGA彩格控制电路设计 203
6.4.3 交通灯控制器设计 209
思考与练习 214
第7章 EDA技术深入应用 216
7.1 代码编写规范 216
7.1.1 标识符命名规范 216
7.1.2 代码书写规范 218
7.1.3 文档管理规范 222
7.2 综合与优化设计 222
7.2.1 优化设置 223
7.2.2 描述方法对综合的影响 226
7.2.3 优化设计方法 232
7.3 Verilog中的数值运算 241
7.3.1 有符号数的加法 242
7.3.2 有符号数的乘法 244
7.3.3 有符号数的移位 246
思考与练习 246
第8章 片上系统设计 248
8.1 SOPC基础 248
8.1.1 SOPC简介 249
8.1.2 IP核 251
8.1.3 片上系统的实现方法 252
8.1.4 Nios Ⅱ软核处理器 254
8.1.5 Avalon互连总线 256
8.2 SOPC开发流程 258
8.3 构建和生成处理器系统 260
8.3.1 建立SOPC工程 260
8.3.2 构建处理器系统 261
8.3.3 生成Nios Ⅱ系统 276
8.4 顶层电路设计 277
8.5 应用程序开发 282
8.5.1 HAL系统库 282
8.5.2 软件开发流程 285
8.5.3 编写应用程序 296
8.6 片上系统的固化方法 302
8.6.1 添加EPCS控制器组件 303
8.6.2 更新顶层设计电路 305
8.6.3 修改BSP设置 308
8.6.4 应用编程器进行固化 309
思考与练习 316
参考文献 319
附录A Quartus Ⅱ 13.0安装指南 320
A.1 Quartus Ⅱ 13.0版的组成 320
A.2 Quartus Ⅱ 13.0版的安装 321
A.3 添加使用许可文件 324
附录B DE2-115开发板的应用 326
B.1 DE2-115开发板的布局 326
B.2 DE2-115开发板的硬件资源 327