
本书以语法与实例结合的方式来讲解可编程逻辑器件的设计方法,软件开发平台为Altera公司的Quartus II 9.0 FPGA/CPLD设计软件。本书由浅入深地介绍了采用Quartus II进行数字系统开发的设计流程、设计思想和设计技巧。书中的例子非常丰富,既有简单的数字逻辑电路实例,也有复杂的数字系统设计实例。
前 言 随着电子技术、计算机应用技术和EDA技术的不断发展,利用FPGA/CPLD进行数字系统的开发已广泛应用于通信、航天、医疗电子、工业控制等领域。与传统电路设计方法相比,FPGA/CPLD具有功能强大,开发过程投资小、周期短、便于修改,以及开发工具智能化等特点。近年来,FPGA/CPLD市场发展迅速,并且随着电子工艺不断改进,低成本高性能的FPGA/CPLD器件不断涌现,FPGA/CPLD业已成为当今硬件设计的首选方式之一。熟练掌握FPGA/CPLD设计技术已经是电子设计工程师的基本要求。 Verilog HDL语言作为国际标准的硬件描述语言,已经成为工程技术人员和高校学生的必备技能。本书范例中的文本编辑均采用Verilog HDL语言编写,并且均已通过仿真和硬件测试。 本书主要以实例为主来介绍以Quartus II 9.0为设计平台的FPGA/CPLD数字系统设计。本书共分为14章和一个附录,其中第1~2章主要介绍Quartus II 9.0的开发流程和设计方法;第3章介绍第三方仿真工具Modelsim和综合工具Synplicity的使用;第4~5章介绍Verilog HDL设计的语法基本知识;第6~10章以数字电路的设计(包括门电路、组合逻辑电路、触发器、时序逻辑电路)为实例,来介绍了原理图编辑、文本编辑及混合编辑的设计方法,同时也巩固了数字电路的基础知识;第11章介绍一些课程设计中涉及的数字系统设计实例,更深入的掌握Quartus II 9.0的设计方法和Verilog-HDL语言的熟练运用;第12章介绍宏功能模块及IP核的使用方法和简单的范例;第13~14章给出了两个大型数字系统的设计实例来使读者更深入地掌握数字系统的设计方法;附录A为本书实验开发箱的有关说明。 本书由周润景和姜攀编著。其中,姜攀编写了第4章和第5章,全书由周润景教授统稿、定稿。参加本书编写的还有张丽娜、张红敏、张丽敏、宋志清、陈雪梅、刘怡芳、陈艳梅、贾雯、张龙龙、托亚、魏晓敏和周敬。 本书的例子经过北京百科融创公司开发的RC-EDA/SOPC-IV实验箱的验证,对该公司的支持表示感谢。 本书适合从事数字系统设计的工程技术人员阅读使用,也可作为高等学校相关专业的EDA技术开发、课程设计、毕业设计及电子设计竞赛等的教学用户。 由于作者水平有限,书中难免存在错误和不足之处,敬请读者批评指正。 编著者
第1章 Altera Quartus II开发流程 1.1 Quartus II软件综述 1.2 设计输入 1.3 约束输入 1.4 综合 1.5 布局布线 1.6 仿真 1.7 编程与配置 第2章 Quartus II的使用 2.1 原理图和图表模块编辑 2.2 文本编辑 2.3 混合编辑(自底向上设计) 2.4 混合编辑(自顶向下设计) 第3章 第三方EDA工具的使用 3.1 第三方EDA工具简介 3.2 ModelSim仿真工具的使用 3.2.1 仿真简介 3.2.2 ModelSim简介 3.2.3 使用ModelSim进行功能仿真 3.2.4 使用ModelSim进行时序仿真 3.2.5 在Quartus II中调用ModelSim进行仿真 3.2.6 ModelSim仿真工具的高级应用 3.3 Synplify/Synplify Pro综合工具的使用 3.3.1 Synplify/Synplify Pro简介 3.3.2 Synplify Pro综合流程 3.3.3 Synplify Pro的其他综合技巧 第4章 Verilog HDL语言概述及基本要素 4.1 Verilog HDL语言简介 4.2 Verilog HDL设计流程 4.3 程序模块的说明 4.4 Verilog HDL 的层次化设计 4.5 时延 4.6 Verilog HDL 语言的描述形式 4.6.1 结构描述形式 4.6.2 行为描述形式 4.6.3 混合设计模式 4.7 Verilog HDL语言基本要素 4.7.1 标志符 4.7.2 注释 4.7.3 格式 4.7.4 系统任务和函数 4.7.5 编译指令 4.7.6 逻辑数值 4.7.7 常量 4.7.8 数据类型 4.7.9 运算符和表达式 第5章 行为描述语句 5.1 触发事件控制 5.2 条件语句 5.3 循环语句 5.4 逻辑验证与Testbench编写 5.5 状态机 第6章 门电路设计范例 6.1 与非门电路 6.2 或非门电路 6.3 异或门电路 6.4 三态门电路 6.5 单向总线缓冲器 6.6 双向总线缓冲器 6.7 使用always 过程语句描述的简单算术逻辑单元 第7章 组合逻辑电路设计范例 7.1 编码器 7.1.1 8线—3线编码器 7.1.2 8线—3线优先编码器 7.2 译码器 7.2.1 3线—8线译码器 7.2.2 BCD—七段显示译码器 7.3 数据选择器 7.3.1 4选1数据选择器 7.3.2 8选1数据选择器 7.3.3 2选1数据选择器 7.4 数据分配器 7.5 数值比较器 7.6 加法器 7.6.1 半加器 7.6.2 全加器 7.6.3 4位全加器 7.6.4 16位加法器 7.7 减法器 7.7.1 半减器 7.7.2 全减器 7.7.3 4位全减器 7.8 七人投票表决器 7.9 乘法器 第8章 触发器设计范例 8.1 R-S触发器 8.2 J-K触发器 8.3 D触发器 8.4 T触发器 第9章 时序逻辑电路设计范例 9.1 同步计数器 9.1.1 同步4位二进制计数器 9.1.2 同步二十四进制计数器 9.1.3 模为60的BCD码加法计数器 9.2 异步计数器 9.3 减法计数器 9.4 可逆计数器 9.5 可变模计数器 9.5.1 无置数端的可变模计数器 9.5.2 有置数端的可变模计数器 9.6 寄存器 9.7 锁存器 9.8 移位寄存器 9.8.1 双向移位寄存器 9.8.2 串入/串出移位寄存器 9.8.3 串入/并出移位寄存器 9.8.4 并入/串出移位寄存器 9.9 顺序脉冲发生器 9.10 序列信号发生器 9.11 分频器 9.11.1 偶数分频器 9.11.2 奇数分频器 9.11.3 半整数分频器 第10章 存储器设计范例 10.1 只读存储器(ROM) 10.2 随机存储器(RAM) 10.3 堆栈 10.4 FIFO 第11章 数字系统设计范例 11.1 跑马灯设计 11.2 8位数码扫描显示电路设计 11.3 4×4键盘扫描电路设计 11.4 数字频率计 11.5 乒乓游戏机 11.6 交通控制器 11.7 数字钟 11.8 自动售货机 11.9 出租车计费器 11.10 电梯控制器 第12章 可参数化宏模块及IP核的使用 12.1 ROM、RAM、FIFO的使用 12.2 乘法器和锁相环的使用 12.3 正弦信号发生器 12.4 NCO IP核的使用 第13章 基于FPGA的射频热疗系统 13.1 肿瘤热疗的生物学与物理学技术概论 13.2 温度场特性的仿真 13.3 射频热疗系统设计 13.4 系统硬件电路设计 13.4.1 硬件整体结构 13.4.2 高精度数字温度传感器DS18B20 13.4.3 ACEX 1K系列的FPGA器件的特点 13.4.4 ACEX 1K 器件的配置电路设计 13.4.5 电源电路 13.4.6 驱动电路设计 13.5 软件实现 13.5.1 系统软件设计电路图 13.5.2 温度测量模块 13.5.3 指定温度设置模块 13.5.4 控制算法的选择及设计 13.5.5 信号调制 13.5.6 温度显示模块 13.5.7 分频模块 13.6 温度场测量与控制的实验 13.6.1 实验材料及方法 13.6.2 实验结果 13.6.3 实验结果分析 13.7 结论 第14章 基于FPGA的直流电机伺服系统 14.1 电机控制发展情况 14.2 系统控制原理 14.3 算法设计 14.4 系统硬件设计原理 14.5 系统软件设计原理 14.5.1 系统软件设计电路图 14.5.2 AD1674控制模块 14.5.3 ADC0809控制模块 14.5.4 反馈控制模块 14.5.5 前馈控制模块 14.5.6 前馈和反馈量求和模块 14.5.7 过电流控制模块 14.5.8 PWM波生成模块 14.5.9 分频模块 14.6 系统调试及结果分析 14.6.1 硬件调试 14.6.2 可靠性、维修性、安全性分析 14.6.3 软件调试 14.7 结论 附录A RC-EDA/SOPC实验平台简介