目 录 第1章 概述 1 1.1 电子设计自动化技术及其发展 3 1.2 电子设计自动化应用对象 5 1.3 硬件描述语言 6 1.3.1 硬件描述语言VHDL 7 1.3.2 硬件描述语言的综合 7 1.3.3 自顶向下设计方法 9 1.3.4 EDA技术设计流程 11 1.4 EDA技术的优势 12 1.5 面向FPGA的EDA开发流程 13 1.5.1 设计输入 13 1.5.2 HDL综合 15 1.5.3 布线布局(适配) 15 1.5.4 仿真 16 1.5.5 下载和硬件测试 16 1.6 专用集成电路设计流程 17 1.6.1 专用集成电路ASIC设计方法 17 1.6.2 一般设计的流程 19 1.7 面向FPGA的EDA开发工具 20 1.7.1 设计输入编辑器 20 1.7.2 HDL综合器 21 1.7.3 仿真器 22 1.7.4 适配器(布局布线器) 23 1.7.5 下载器(编程器) 23 1.8 Quartus II概述 24 1.9 IP(Intellectual Property)核 25 1.10 EDA技术的发展趋势 27 习题 28 第2章 PLD硬件特性与编程技术 29 2.1 概论 31 2.1.1 PLD的发展历程 31 2.1.2 PLD的分类 32 2.2 简单PLD原理 33 2.2.1 电路符号表示 33 2.2.2 PROM 34 2.2.3 PLA 36 2.2.4 PAL 37 2.2.5 GAL 38 2.3 CPLD的结构与工作原理 41 2.4 FPGA的结构与工作原理 44 2.4.1 查找表逻辑结构 44 2.4.2 Cyclone系列器件的结构与原理 45 2.5 硬件测试技术 50 2.5.1 内部逻辑测试 50 2.5.2 JTAG边界扫描测试 51 2.5.3 嵌入式逻辑分析仪 54 2.6 FPGA/CPLD产品概述 54 2.6.1 Lattice公司的CPLD器件系列 55 2.6.2 Xilinx公司的FPGA和CPLD器件系列 56 2.6.3 Altera公司FPGA和CPLD器件系列 58 2.6.4 Actel公司的FPGA器件 61 2.6.5 Altera公司的FPGA配置方式与配置器件 62 2.7 编程与配置 62 2.7.1 JTAG方式的在系统编程 63 2.7.2 使用PC并行口配置FPGA 64 2.7.3 FPGA专用配置器件 66 2.7.4 使用单片机配置FPGA 67 2.7.5 使用CPLD配置FPGA 68 习题 68 实验与设计 69 第3章 VHDL入门 71 3.1 简单组合电路的VHDL描述 73 3.1.1 多路选择器的VHDL描述 73 3.1.2 相关语句结构和语法说明 75 3.2 简单时序电路的VHDL描述 79 3.2.1 D触发器 79 3.2.2 D触发器VHDL描述的语言现象说明 80 3.2.3 实现时序电路的不同表述 84 3.2.4 异步时序电路设计 86 3.3 含有层次结构的VHDL描述 87 3.3.1 半加器描述和CASE语句 87 3.3.2 半加器描述 89 3.3.3 全加器描述和例化语句 91 3.4 计数器设计 93 3.4.1 4位加法计数器 93 3.4.2 整数类型 94 3.4.3 计数器设计的另一种表述 95 3.5 一般加法计数器设计 97 3.5.1 相关语法说明 98 3.5.2 程序分析 98 3.5.3 含并行置位的移位寄存器设计 100 3.6 VHDL语句结构与语法小结 101 习题 102 第4章 Quartus II的HDL输入设计 105 4.1 十进制计数器实现流程 107 4.1.1 建立工作库文件夹和编辑设计文件 107 4.1.2 创建工程 107 4.1.3 编译前设置 109 4.1.4 全程编译 111 4.1.5 时序仿真 112 4.1.6 应用RTL电路图观察器 115 4.2 引脚设置和下载 116 4.2.1 引脚锁定 116 4.2.2 配置文件下载 118 4.2.3 编程配置器件 119 4.3 SignalTap II实时测试 120 习题 124 实验与设计 125 第5章 VHDL深入 129 5.1 数据对象及其示例说明 131 5.1.1 常数 131 5.1.2 变量 131 5.1.3 信号 132 5.1.4 进程中的信号与变量赋值 133 5.2 双向和三态电路信号赋值例解 141 5.2.1 三态门设计 141 5.2.2 双向端口设计 142 5.2.3 三态总线电路设计 144 5.3 IF语句概述 146 5.4 进程语句归纳 149 5.4.1 进程语句格式 149 5.4.2 PROCESS组成 150 5.4.3 进程要点 150 5.5 并行语句例解 152 5.6 仿真延时 153 5.6.1 固有延时(Inertial Delay) 154 5.6.2 传输延时(Transport Delay) 154 5.6.3 仿真?(Simulation Delta) 155 习题 155 实验与设计 156 第6章 图形设计方法 163 6.1 设计初步 165 6.2 应用宏模块的原理图设计 167 6.2.1 测频计数器设计 167 6.2.2 频率计主结构电路设计 168 6.2.3 时序控制电路设计 169 6.2.4 顶层电路设计 170 习题 171 实验与设计 172 第7章 LPM参数化宏模块应用 173 7.1 宏功能模块概述 175 7.1.1 知识产权(IP)核的应用 175 7.1.2 使用MegaWizard Plug-In Manager 176 7.1.3 在Quartus II中对宏功能模块进行例化 176 7.2 LPM模块应用实例 177 7.2.1 电路设计原理 177 7.2.2 定制LPM_ROM初始化数据文件 178 7.2.3 定制LPM_ROM元件 180 7.2.4 完成顶层设计 184 7.3 在系统存储器数据读写编辑器应用 185 7.4 编辑SignalTap II的触发信号 187 7.5 其他存储器模块的定制与应用 188 7.5.1 RAM定制 188 7.5.2 FIFO定制 189 7.5.3 基于LPM_ROM的4位乘法器设计 190 7.6 流水线乘法累加器的混合输入设计 190 7.7 LPM嵌入式锁相环调用 193 7.7.1 建立嵌入式锁相环元件 193 7.7.2 测试锁相环 194 习题 195 实验与设计 195 第8章 有限状态机设计技术 201 8.1 VHDL一般状态机 203 8.1.1 类型定义语句TYPE 203 8.1.2 实用状态机的优势 205 8.1.3 一般状态机的结构 206 8.2 Moore状态机设计 209 8.2.1 多进程状态机设计 209 8.2.2 单进程Moore状态机设计 213 8.3 Mealy状态机设计 215 8.4 状态机的状态编码 218 8.4.1 状态位直接输出型编码 218 8.4.2 顺序编码 220 8.4.3 一位热码编码 221 8.5 非法状态处理 221 习题 223 实验与设计 225 第9章 设计优化和时序分析 231 9.1 资源优化 233 9.1.1 资源共享 233 9.1.2 逻辑优化 235 9.1.3 串行化 236 9.2 速度优化 238 9.2.1 流水线设计 238 9.2.2 寄存器配平 240 9.2.3 关键路径法 241 9.3 优化设置与时序分析 242 9.3.1 Settings设置 242 9.3.2 HDL版本设置及Analysis & Synthesis功能 242 9.3.3 Analysis & Synthesis的优化设置 243 9.3.4 适配器Fitter设置 243 9.3.5 增量布局布线控制设置 244 9.3.6 使用Design Assistant检查设计可靠性 245 9.3.7 时序设置与分析 246 9.3.8 查看时序分析结果 248 9.3.9 适配优化设置示例 250 9.3.10 Slow Slew Rate设置 253 9.3.11 LogicLock优化技术 253 9.4 Chip Editor应用 254 9.4.1 Chip Editor应用实例 254 9.4.2 Chip Editor功能说明 255 9.4.3 利用Change Manager检测底层逻辑 257 习题 259 实验与设计 260 第10章 VHDL程序结构与规则 269 10.1 VHDL实体 271 10.1.1 实体语句结构 271 10.1.2 参数传递说明语句 271 10.1.3 参数传递映射语句 272 10.1.4 端口说明语句 274 10.2 VHDL结构体 274 10.3 VHDL子程序 275 10.3.1 VHDL函数 275 10.3.2 VHDL重载函数 278 10.3.3 VHDL转换函数 281 10.3.4 VHDL决断函数 283 10.3.5 VHDL过程 283 10.3.6 VHDL重载过程 285 10.4 VHDL库 286 10.4.1 库的种类 286 10.4.2 库的用法 287 10.5 VHDL程序包 289 10.6 VHDL配置 291 10.7 VHDL文字规则 292 10.7.1 数字 292 10.7.2 字符串 292 10.7.3 标识符 293 10.7.4 下标名 294 10.8 VHDL数据类型 294 10.8.1 预定义数据类型 295 10.8.2 IEEE预定义标准逻辑位与矢量 297 10.8.3 其他预定义标准数据类型 297 10.8.4 VHDL数组类型 298 10.9 VHDL操作符 301 10.9.1 逻辑操作符(Logical Operator) 301 10.9.2 关系操作符(Relational Operator) 303 10.9.3 算术操作符(Arithmetic Operator) 304 习题 307 实验与设计 308 第11章 VHDL语句 317 11.1 顺序语句 319 11.1.1 赋值语句 319 11.1.2 IF语句 319 11.1.3 CASE语句 319 11.1.4 LOOP语句 322 11.1.5 NEXT语句 323 11.1.6 EXIT语句 324 11.1.7 WAIT语句 325 11.1.8 子程序调用语句 328 11.1.9 RETURN语句 330 11.1.10 空操作语句 331 11.2 并行语句 331 11.2.1 并行信号赋值语句 332 11.2.2 块语句结构 335 11.2.3 并行过程调用语句 338 11.2.4 元件例化语句 339 11.2.5 生成语句 340 11.2.6 REPORT语句 344 11.2.7 断言语句 345 11.3 属性描述与定义语句 347 习题 350 实验与设计 352 第12章 实用电路模块设计 355 12.1 步进电机细分驱动控制 357 12.2 直流电机的PWM控制 363 12.3 VGA彩条信号显示控制器设计 365 12.4 VGA图像显示控制器设计 370 12.5 采用高速A/D的存储示波器设计 372 12.6 通用异步收发器设计 375 12.7 信号采集与频谱分析电路设计 380 12.8 等精度频率/相位计设计 381 12.8.1 主系统组成 382 12.8.2 测频原理 382 12.8.3 VHDL测试程序设计 384 12.8.4 测试与实现 387 12.8.5 相位测试 388 12.9 DDS设计 389 12.10 数字移相信号发生器设计 394 12.11 PS/2键盘鼠标控制模块设计 396 12.12 PS/2与VGA控制显示模块设计 397 12.13 IP核NCO数控振荡器使用方法 397 习题 403 实验与设计 404 第13章 VHDL仿真 409 13.1 仿真 411 13.2 VHDL源程序仿真 411 13.3 仿真激励信号的产生 414 13.4 VHDL测试基准 416 13.5 VHDL系统级仿真 420 13.6 使用ModelSim进行VHDL仿真 421 13.7 VHDL的RTL表述 426 13.7.1 行为描述 427 13.7.2 数据流描述 429 13.7.3 结构描述 429 附录 431 一、实验电路结构图 435 二、GW48 EDA系统实验信号名与芯片引脚对照表 437 参考文献 440