目录 第 1章概述.................................................................................................................... 1 1.1 EDA技术 ....................................................................................................................... 1 1.2 EDA技术应用对象 ....................................................................................................... 3 1.3常用的硬件描述语言 .................................................................................................... 4 1.4 EDA技术的优势 ........................................................................................................... 6 1.5面向 FPGA的开发流程 ................................................................................................ 7 1.5.1 设计输入 ............................................................................................................. 7 1.5.2 综合 ..................................................................................................................... 8 1.5.3 适配(布局布线) ........................................................................................... 10 1.5.4 仿真与时序分析 ............................................................................................... 10 1.5.5 RTL描述 ........................................................................................................... 11 1.6可编程逻辑器件 .......................................................................................................... 11 1.6.1 PLD的分类 ...................................................................................................... 11 1.6.2 PROM可编程原理 ........................................................................................... 12 1.6.3 GAL ................................................................................................................... 14 1.7 CPLD的结构与可编程原理 ....................................................................................... 15 1.8 FPGA的结构与工作原理 ........................................................................................... 18 1.8.1 查找表逻辑结构 ............................................................................................... 18 1.8.2 Cyclone 4E/10 LP系列器件的结构原理 ......................................................... 19 1.8.3 内嵌 Flash的 FPGA器件 ................................................................................ 22 1.8.4 Artix-7系列 FPGA的基本结构 ...................................................................... 22 1.8.5 主要 FPGA生产厂商 ....................................................................................... 26 1.9硬件测试技术 .............................................................................................................. 27 1.9.1 内部逻辑测试 ................................................................................................... 27 1.9.2 JTAG边界扫描测试......................................................................................... 27 1.10编程与配置 ................................................................................................................ 28 1.11 Quartus ....................................................................................................................... 29 1.12 IP核 ........................................................................................................................... 31 1.13主要 EDA软件公司 .................................................................................................. 31 1.14 EDA的发展趋势 ....................................................................................................... 32 习题 ....................................................................................................................................... 33 第 2章程序结构与数据对象......................................................................................... 34 2.1 VHDL程序结构 .......................................................................................................... 34 ·VI· EDA技术与 VHDL(第 6版) 2.2 VHDL程序基本构建 .................................................................................................. 36 2.2.1 实体和端口模式 ............................................................................................... 36 2.2.2 结构体 ............................................................................................................... 37 2.2.3 库和库的种类 ................................................................................................... 38 2.2.4 库和程序包的调用方法 ................................................................................... 39 2.2.5 配置 ................................................................................................................... 41 2.3 VHDL文字规则 .......................................................................................................... 41 2.3.1 数字 ................................................................................................................... 41 2.3.2 字符串 ............................................................................................................... 42 2.3.3 关键词 ............................................................................................................... 43 2.3.4 标识符及其表述规则 ....................................................................................... 43 2.3.5 文件取名和存盘 ............................................................................................... 44 2.3.6 规范的程序书写格式 ....................................................................................... 44 2.4 VHDL数据对象 .......................................................................................................... 44 2.4.1 常数 ................................................................................................................... 44 2.4.2 变量 ................................................................................................................... 45 2.4.3 信号 ................................................................................................................... 46 习题 ....................................................................................................................................... 47 第 3章数据类型与顺序语句......................................................................................... 49 3.1 VHDL数据类型 .......................................................................................................... 49 3.1.1 BIT和 BIT_VECTOR类型 ............................................................................. 50 3.1.2 STD_LOGIC和 STD_LOGIC_VECTOR类型 ............................................... 50 3.1.3 整数类型 INTEGER ......................................................................................... 52 3.1.4 布尔数据类型 BOOLEAN ............................................................................... 52 3.1.5 SIGNED和 UNSIGNED类型 ......................................................................... 53 3.1.6 其他预定义类型 ............................................................................................... 55 3.1.7 数据类型转换函数 ........................................................................................... 56 3.2常用顺序语句 .............................................................................................................. 58 3.2.1 赋值语句 ........................................................................................................... 58 3.2.2 CASE语句 ........................................................................................................ 58 3.2.3 PROCESS语句 ................................................................................................. 60 3.2.4 并置操作符 & .................................................................................................... 61 3.2.5 IF语句 .............................................................................................................. 61 3.3 IF语句使用示例 ......................................................................................................... 62 3.3.1 D触发器的 VHDL描述 .................................................................................. 62 3.3.2 含异步复位和时钟使能 D触发器的描述 ...................................................... 65 3.3.3 基本锁存器的描述 ........................................................................................... 66 3.3.4 含清零控制锁存器的描述 ............................................................................... 68 3.3.5 实现时序电路的不同表述方式 ....................................................................... 68 3.3.6 4位二进制加法计数器设计 ............................................................................ 69 3.3.7 计数器更常用的 VHDL表达方式 .................................................................. 70 3.3.8 设计一个实用计数器 ....................................................................................... 72 3.3.9 含同步并行预置功能的 8位移位寄存器设计 ............................................... 74 3.3.10优先编码器设计 ............................................................................................. 76 3.4 VHDL其他顺序语句 .................................................................................................. 77 3.4.1 LOOP循环语句 ............................................................................................... 77 3.4.2 NEXT语句 ....................................................................................................... 78 3.4.3 EXIT语句 ......................................................................................................... 78 3.4.4 WAIT语句 ........................................................................................................ 79 3.4.5 GENERIC参数定义语句 ................................................................................. 82 3.4.6 REPORT语句 ................................................................................................... 82 3.4.7 断言语句 ........................................................................................................... 83 3.4.8 端口数据含“ 1”个数的统计电路模块设计 ................................................. 85 习题 ....................................................................................................................................... 86 第 4章仿真与硬件实现 ................................................................................................ 87 4.1代码编辑输入和系统编译 .......................................................................................... 87 4.1.1 编辑和输入设计文件 ....................................................................................... 87 4.1.2 创建工程 ........................................................................................................... 88 4.1.3 约束项目设置 ................................................................................................... 90 4.1.4 全程综合与编译 ............................................................................................... 91 4.1.5 RTL图观察器应用 ........................................................................................... 92 4.2波形仿真 ...................................................................................................................... 93 4.3基于 ModelSim手动流程的仿真 ............................................................................... 96 4.4硬件测试 .................................................................................................................... 101 4.4.1 引脚锁定 ......................................................................................................... 101 4.4.2 编译文件下载 ................................................................................................. 102 4.4.3 通过 JTAG口对配置芯片进行间接编程 ...................................................... 104 4.4.4 USB-Blaster驱动程序安装方法 .................................................................... 105 4.5层次化设计流程 ........................................................................................................ 105 4.5.1 设计一个半加器 ............................................................................................. 105 4.5.2 完成全加器顶层设计 ..................................................................................... 107 4.5.3 对全加器进行时序仿真和硬件测试 ............................................................. 108 4.6利用属性表述实现引脚锁定 .................................................................................... 109 4.7 Signal Tap逻辑分析仪的用法 .................................................................................. 110 4.8编辑 Signal Tap的触发信号 ..................................................................................... 115 4.9 Vivado平台仿真与硬件实现 ................................................................................... 116 4.9.1 创建工程 ......................................................................................................... 116 4.9.2 编辑和输入设计文件 ..................................................................................... 119 ·VIII· EDA技术与 VHDL(第 6版) 4.9.3 全程综合编译与实现 ..................................................................................... 120 4.9.4 RTL图观察器应用 ......................................................................................... 122 4.9.5 仿真 ................................................................................................................. 123 4.9.6 硬件测试 ......................................................................................................... 124 习题 ..................................................................................................................................... 125 实验与设计 ......................................................................................................................... 126 实验 4-1多路选择器设计实验 ............................................................................... 126 实验 4-2十六进制 7段数码显示译码器设计 ....................................................... 126 实验 4-3简易数字频率计设计 ............................................................................... 128 实验 4-4计数器设计实验 ....................................................................................... 131 实验 4-5数码扫描显示电路设计 ........................................................................... 131 实验 4-6硬件消抖动电路设计 ............................................................................... 132 实验 4-7串行静态显示控制电路设计 ................................................................... 133 第 5章并行语句 ........................................................................................................ 134 5.1并行信号赋值语句 .................................................................................................... 134 5.1.1 简单信号赋值语句 ......................................................................................... 134 5.1.2 条件信号赋值语句 ......................................................................................... 135 5.1.3 选择信号赋值语句 ......................................................................................... 136 5.1.4 块语句 ............................................................................................................. 136 5.1.5 元件例化语句 ................................................................................................. 137 5.1.6 例化语句应用示例 ......................................................................................... 138 5.1.7 生成语句 ......................................................................................................... 140 5.1.8 GENERIC参数传递映射语句及其使用方法 ............................................... 142 5.1.9 数据类型定义语句 ......................................................................................... 144 5.1.10 VHDL的存储器描述 ................................................................................... 147 5.1.11信号属性及属性函数 ................................................................................... 148 5.2 VHDL运算操作符 .................................................................................................... 150 5.2.1 逻辑操作符 ..................................................................................................... 150 5.2.2 关系操作符 ..................................................................................................... 152 5.2.3 算术操作符 ..................................................................................................... 153 5.2.4 省略赋值操作符 ............................................................................................. 156 5.3 keep属性应用 ........................................................................................................... 157 5.4 SignalProbe使用方法 ............................................................................................... 158 习题 ..................................................................................................................................... 160 实验与设计 ......................................................................................................................... 161 实验 5-1 8位加法器设计实验 ................................................................................ 161 实验 5-2高速硬件除法器设计 ............................................................................... 161 实验 5-3移位相加型 8位硬件乘法器设计 ........................................................... 162 实验 5-4基于 VHDL代码的频率计设计 .............................................................. 162 实验 5-5 VGA彩条信号显示控制电路设计 ......................................................... 164 实验 5-6不同类型的移位寄存器设计实验 ........................................................... 167 第 6章 IP核的应用 .................................................................................................... 168 6.1调用计数器宏模块示例 ............................................................................................ 168 6.1.1 计数器 LPM模块文本代码的调用 ............................................................... 168 6.1.2 LPM计数器代码与参数传递语句应用 ........................................................ 169 6.1.3 创建工程与仿真测试 ..................................................................................... 172 6.2利用属性控制乘法器构建的示例 ............................................................................ 172 6.3片内 RAM IP用法 .................................................................................................... 173 6.3.1 初始化文件及其生成 ..................................................................................... 174 6.3.2 片内 RAM IP的设置与调用 ......................................................................... 175 6.3.3 测试片内 RAM ............................................................................................... 177 6.3.4 用 VHDL代码描述存储器以及用初始化文件加载表述 ............................ 178 6.3.5 片内存储器设计的结构控制 ......................................................................... 179 6.4片内 ROM IP使用示例 ............................................................................................ 180 6.4.1 简易正弦信号发生器设计 ............................................................................. 180 6.4.2 正弦信号发生器硬件实现和测试 ................................................................. 182 6.5在系统存储器数据读写编辑器应用 ........................................................................ 183 6.6嵌入式锁相环调用 .................................................................................................... 184 6.6.1 建立嵌入式锁相环元件 ................................................................................. 184 6.6.2 测试锁相环 ..................................................................................................... 187 6.7 In-System Sources and Probes Editor用法 ............................................................... 187 6.8 Vivado中 IP模块用法 .............................................................................................. 190 6.9 DDS实现原理与应用 ............................................................................................... 190 6.9.1 DDS原理 ........................................................................................................ 191 6.9.2 DDS信号发生器设计示例 ............................................................................ 192 习题 ..................................................................................................................................... 193 实验与设计 ......................................................................................................................... 194 实验 6-1查表式硬件运算器设计 ........................................................................... 194 实验 6-2正弦信号发生器设计 ............................................................................... 194 实验 6-3简易逻辑分析仪设计 ............................................................................... 195 实验 6-4 DDS正弦信号发生器设计 ...................................................................... 196 实验 6-5移相信号发生器设计 ............................................................................... 197 实验 6-6 VGA简单图像显示控制模块设计 ......................................................... 197 实验 6-7 AM幅度调制信号发生器设计 ............................................................... 198 第 7章 VHDL设计深入 .............................................................................................. 200 7.1进程中的信号赋值与变量赋值 ................................................................................ 200 7.2含高阻输出的电路设计 ............................................................................................ 204 7.2.1 三态门设计 ..................................................................................................... 204 ·X· EDA技术与 VHDL(第 6版) 7.2.2 双向端口的设计方法 ..................................................................................... 205 7.2.3 三态总线电路设计 ......................................................................................... 206 7.3资源优化 .................................................................................................................... 208 7.3.1 资源共享 ......................................................................................................... 208 7.3.2 逻辑优化 ......................................................................................................... 210 7.3.3 串行化 ............................................................................................................. 211 7.4速度优化 .................................................................................................................... 212 7.4.1 流水线设计 ..................................................................................................... 213 7.4.2 关键路径法 ..................................................................................................... 215 7.5仿真延时 .................................................................................................................... 215 7.5.1 固有延时 ......................................................................................................... 216 7.5.2 传输延时 ......................................................................................................... 216 7.5.3 仿真 δ .............................................................................................................. 217 习题 ..................................................................................................................................... 217 实验与设计 ......................................................................................................................... 218 实验 7-1 4×4阵列键盘键信号检测电路设计 ........................................................ 219 实验 7-2乐曲硬件演奏电路设计 ........................................................................... 219 实验 7-3 PS2键盘控制模型电子琴电路设计 ....................................................... 222 实验 7-4直流电机综合测控系统设计 ................................................................... 224 实验 7-5 VGA动画图像显示控制电路设计 ......................................................... 226 第 8章状态机设计技术 .............................................................................................. 227 8.1 VHDL状态机的一般形式 ........................................................................................ 227 8.1.1 状态机的特点与优势 ..................................................................................... 227 8.1.2 VHDL状态机的一般结构 ............................................................................. 228 8.1.3 状态机设计初始约束与表述 ......................................................................... 232 8.2 Moore型状态机的设计 ............................................................................................ 233 8.2.1 多进程状态机 ................................................................................................. 233 8.2.2 序列检测器之状态机设计 ............................................................................. 236 8.3 Mealy型状态机的设计 ............................................................................................. 237 8.4状态编码 .................................................................................................................... 240 8.4.1 直接输出型编码 ............................................................................................. 240 8.4.2 顺序编码 ......................................................................................................... 242 8.4.3 一位热码编码 ................................................................................................. 243 8.4.4 状态编码设置 ................................................................................................. 243 8.5安全状态机设计 ........................................................................................................ 244 8.5.1 程序直接导引法 ............................................................................................. 245 8.5.2 状态编码监测法 ............................................................................................. 245 8.5.3 借助 EDA优化控制工具生成安全状态机 ................................................... 246 习题 ..................................................................................................................................... 246 实验与设计 ......................................................................................................................... 247 实验 8-1序列检测器设计 ....................................................................................... 247 实验 8-2并行 ADC采样控制电路实现与硬件验证 ............................................ 247 实验 8-3数据采集模块设计 ................................................................................... 248 实验 8-4五功能智能逻辑笔设计 ........................................................................... 249 实验 8-5串行 ADC/DAC采样或信号输出控制电路设计 ................................... 250 第 9章 16/32位 CPU创新设计 .................................................................................. 251 9.1 KX9016的结构与特色 ............................................................................................. 251 9.2 KX9016基本硬件系统设计 ..................................................................................... 254 9.2.1 单步节拍发生模块 ......................................................................................... 254 9.2.2 运算器 ............................................................................................................. 254 9.2.3 比较器 ............................................................................................................. 255 9.2.4 基本寄存器与寄存器阵列组 ......................................................................... 256 9.2.5 移位器 ............................................................................................................. 260 9.2.6 程序与数据存储器 ......................................................................................... 260 9.3 KX9016指令系统设计 ............................................................................................. 261 9.3.1 指令格式 ......................................................................................................... 261 9.3.2 指令操作码 ..................................................................................................... 262 9.3.3 软件程序设计实例 ......................................................................................... 263 9.3.4 KX9016系统控制器设计 .............................................................................. 267 9.3.5 指令设计实例详解 ......................................................................................... 269 9.4 KX9016的时序仿真与硬件测试 ............................................................................. 270 9.4.1 时序仿真与指令执行波形分析 ..................................................................... 270 9.4.2 CPU工作情况的硬件测试 ............................................................................ 271 9.5 KX9016应用程序设计实例和系统优化 ................................................................. 274 9.5.1 乘法算法及其硬件实现 ................................................................................. 274 9.5.2 除法算法及其硬件实现 ................................................................................. 275 9.5.3 KX9016的硬件系统优化 .............................................................................. 276 9.6 32位 RISC-V处理器设计 ........................................................................................ 277 9.6.1 RISC-V基本结构与基本整数指令集 RV32I................................................ 277 9.6.2 32位乘法指令集 RV32M .............................................................................. 280 9.6.3 16位压缩指令集 RVC ................................................................................... 280 习题 ..................................................................................................................................... 281 实验与设计 ......................................................................................................................... 282 实验 9-1 16位 CPU验证性设计综合实验 ............................................................ 282 实验 9-2新指令设计及程序测试实验 ................................................................... 282 实验 9-3 16位 CPU的优化设计与创新 ................................................................ 283 第 10章 VHDL仿真 ................................................................................................... 285 10.1 VHDL仿真流程 ...................................................................................................... 286 ·XII· EDA技术与 VHDL(第 6版) 10.2 VHDL测试基准实例 .............................................................................................. 287 10.3 VHDL Test Bench测试流程 ................................................................................... 289 10.4 VHDL子程序 .......................................................................................................... 292 10.4.1 函数 ............................................................................................................... 292 10.4.2 重载函数 ....................................................................................................... 294 10.4.3 决断函数 ....................................................................................................... 297 10.4.4 过程 ............................................................................................................... 297 10.4.5 重载过程 ....................................................................................................... 299 10.4.6 子程序调用语句 ........................................................................................... 300 10.4.7 RETURN语句 .............................................................................................. 302 10.4.8 并行过程调用语句 ....................................................................................... 302 10.5 VHDL程序包 .......................................................................................................... 304 习题 ..................................................................................................................................... 306 实验与设计 ......................................................................................................................... 307 实验 10-1 在 ModelSim上对 VHDL Test Bench进行仿真 .................................. 307 第 11章 DSP Builder系统设计方法 ........................................................................... 308 11.1 MATLAB/DSP Builder及其设计流程 ................................................................... 308 11.2正弦信号发生器设计 .............................................................................................. 310 11.2.1建立设计模型 ............................................................................................... 311 11.2.2 Simulink模型仿真 ....................................................................................... 317 11.2.3 Signal Compiler使用方法 ............................................................................ 321 11.2.4使用 ModelSim进行 RTL级仿真 ............................................................... 322 11.2.5使用 Quartus实现时序仿真 ......................................................................... 323 11.2.6硬件测试与硬件实现 ................................................................................... 324 11.3 DSP Builder层次化设计 ......................................................................................... 326 11.4基于 DSP Builder的 DDS设计 .............................................................................. 329 11.4.1 DDS模块设计 .............................................................................................. 329 11.4.2 FSK调制器设计 ........................................................................................... 332 11.4.3正交信号发生器设计 ................................................................................... 334 11.4.4数控移相信号发生器设计 ........................................................................... 335 11.4.5幅度调制信号发生器设计 ........................................................................... 335 11.5 FIR数字滤波器设计 ............................................................................................... 336 11.5.1 FIR滤波器原理 ............................................................................................ 337 11.5.2使用 DSP Builder设计 FIR滤波器 ............................................................. 337 11.5.3使用 MATLAB的滤波器设计工具 ............................................................. 342 11.5.4使用 FIR IP Core设计 FIR滤波器 .............................................................. 347 11.6 HDL模块插入仿真及其设计 ................................................................................. 351 习题 ..................................................................................................................................... 353 实验与设计 ......................................................................................................................... 354 实验 11-1利用 MATLAB/DSP Builder设计基本电路模块 ................................. 354 实验 11-2基于 DSP Builder的 DDS应用模型设计 ............................................. 355 实验 11-3 FIR数字滤波器设计实验 ...................................................................... 357 实验 11-4 HDL Import模块应用实验 .................................................................... 358 附录 A EDA教学实验平台系统及相关软件 ................................................................. 359 A.1 KX系列 EDA-FPGA教学综合实验平台 ............................................................... 360 A.1.1 模块化自主创新实验设计结构 .................................................................... 360 A.1.2 动态配置 I/O高效实验控制系统 ................................................................. 361 A.1.3 不同厂家不同功能类型的 FPGA核心板 .................................................... 362 A.1.4 引脚对照表 .................................................................................................... 363 A.2部分实验扩展模块 ................................................................................................... 364 A.3 MIF文件生成器使用方法 ....................................................................................... 364 A.4 HX1006A及其引脚锁定工具软件 ......................................................................... 366 参考文献 ....................................................................................................................... 367