内容提要 本书对Verilog HDL程序设计作了系统全面的介绍,以可综合的设计为重点,同时对仿真和模拟也作了深入的阐述。 本书以Verilog-1995标准为基础,全面介绍了Verilog HDL的词法、语法、语句,可综合程序的编写,仿真程序的编写, 一般数字逻辑的实现,复杂逻辑和算法的实现等,讨论了设计中的方法与技巧,并以大量经过验证的设计实例为依据, 深入浅出地阐述了Verilog程序开发所涉及的各个方面。对Verilog-2001的新增语法结构也作了介绍。 着眼于实用是本书的出发点,由于HDL语言的学习与使用必须依托一定的EDA环境,因此对典型EDA软件的使用与接口也作了介绍。 本书可作为电子工程、通信工程及相关专业高年级本科生和研究生教学用书,也可供从事电路设计和系统开发的工程设计人员阅读参考。 目录 第1章 EDA技术综述 1本章内容简介 1 1.1 引言 1 1.2 EDA技术及其发展 1.3 设计方法与设计技术 1.3.1 Top-down设计 1.3.2 Bottom-up设计 1.3.3 IP复用技术与SOC 1.4 EDA设计的实现 1.5 硬件描述语言 思考与练习 9第2章 EDA设计软件与设计流程 本章内容简介 2.1 EDA软件工具概述 2.1.1 集成的CPLD/FPGA开发工具 2.1.2 输入工具(Design Input Tools) 2.1.3 逻辑综合工具(Synthesis Tools) 2.1.4 仿真工具(Simulation Tools) 2.1.5 IC版图工具 2.1.6 其他EDA工具 2.2 EDA设计的流程 2.2.1 输入(Design Input) 2.2.2 综合(Synthesis) 2.2.3 适配(Fitter) 2.2.4 仿真(Simulation) 2.2.5 编程(Program) 思考与练习 第3章 Verilog HDL设计初步 本章内容简介 3.1 Verilog语言的历史及与C语言的比较 3.2 完整的Verilog HDL设计 3.2.1 4位全加器和4位计数器 3.2.2 综合 3.2.3 仿真 3.3 Verilog模块基本结构剖析 3.3.1 Verilog模块的结构 3.3.2 逻辑功能定义 思考与练习 第4章 Verilog HDL语言要素 本章内容简介 4.1 词法 4.1.1 空白符和注释 4.1.2 数字与字符串(Numbers & Strings) 4.1.3 标识符(Identifiers) 4.1.4 运算符(Operators) 4.1.5 关键字(Keywords) 4.2 数据类型 4.2.1 连线型(Net Type) 4.2.2 寄存器型(Register Type) 4.2.3 parameter 4.3 寄存器和存储器 4.3.1 寄存器 4.3.2 存储器 4.4 运算符 4.4.1 运算符 4.4.2 运算符的优先级 思考与练 第5章 Verilog HDL行为语句 本章内容简介 5.1 概述 5.2 过程语句 5.2.1 always过程语句 5.2.2 initial语句 5.3 块语句 5.3.1 串行块begin-end 5.3.2 并行块fork-join 5.4 赋值语句 5.4.1 持续赋值与过程赋值 5.4.2 阻塞赋值与非阻塞赋值 5.5 条件语句 5.5.1 if-else语句 5.5.2 case语句 5.5.3 条件语句使用要点 5.6 循环语句 5.6.1 for语句 5.6.2 repeat语句 5.6.3 while和forever语句 5.7 编译向导 5.7.1 宏替换`define 5.7.2 文件包含`include 5.7.3 条件编译`ifdef、`else、`endif 思考与练习 68第6章 进程、任务与函数 本章内容简介 6.1 进程(process) 6.1.1 进程 6.1.2 进程间的通信 6.2 任务(task) 6.3 函数(function) 6.3.1 函数 6.3.2 任务与函数的区别 6.4 顺序执行与并发执行 6.5 Verilog-2001新增语法结构简介 思考与练习 第7章 Verilog HDL的描述风格 本章内容简介 7.1 概述 7.2 结构描述 7.2.1 Verilog HDL内置门元件 7.2.2 门级结构描述 7.3 行为描述方式 7.4 数据流描述方式 7.5 不同描述风格的例子 7.5.1 半加器 7.5.2 1位全加器 7.5.3 4位全加器 思考与练习 第8章 仿真 本章内容简介 8.1 概述 8.2 系统任务与系统函数 8.2.1 $display与$write 8.2.2 $monitor与$strobe 8.2.3 $time与$realtime 8.2.4 $finish与$stop 8.2.5 $readmemh与$readmemb 8.2.6 $random 8.2.7 文件输出 8.3 用户自定义元件(UDP) 8.3.1 组合电路UDP元件 8.3.2 时序逻辑UDP元件 8.3.3 UDP元件缩记符 8.4 延时模型的表示 8.4.1 时间标尺定义`timescale 8.4.2 延时的表示方法 8.4.3 延时说明块(specify块) 8.5 测试平台(Test Bench) 8.5.1 Test Bench 8.5.2 测试程序的编写 8.6 仿真示例 8.6.1 组合电路的仿真 8.6.2 时序电路的仿真 思考与练习 第9章 Verilog HDL设计进阶 本章内容简介 9.1 基本组合电路的设计 9.1.1 简单门电路 9.1.2 编译码器 9.1.3 数据选择器 9.1.4 用组合电路实现的ROM 9.2 基本时序电路的设计 9.2.1 D触发器与JK 触发器 9.2.2 锁存器与寄存器 9.2.3 计数器 9.2.4 ROM/RAM模块 9.2.5 串/并转换 9.3 简单的微处理器 9.3.1 设计实现 9.3.2 仿真 9.4 乘累加器(MAC)的设计 思考与练习 第10章 设计方法与设计技巧的探讨 本章内容简介 10.1 可综合的设计技术的讨论 10.1.1 可综合的Verilog HDL结构 10.1.2 可综合设计的要点 10.2 流水线设计技术(Pipeline Design) 10.3 资源共享(Resource Sharing) 10.4 有限状态机(FSM)设计 10.4.1 基于状态机的设计 10.4.2 频率计控制器设计举例 10.4.3 几点讨论 10.5 多层次结构电路的设计 10.5.1 图形与文本混合设计 10.5.2 文本设计 10.6 阻塞与非阻塞赋值使用要点 10.6.1 进程的设计 10.6.2 阻塞赋值与非阻塞赋值 10.6.3 应用要点 10.7 片内存储器的使用 10.7.1 片内存储器 10.7.2 设计举例 10.8 如何消除毛刺 10.8.1 毛刺的产生 10.8.2 毛刺的消除 思考与练习 第11章 Verilog HDL综合设计实践 本章内容简介 11.1 数字跑表 11.1.1 设计输入与编译 11.1.2 仿真 11.2 4位数字频率计 11.2.1 功能与原理 11.2.2 设计实现 11.3 交通灯控制器 11.3.1 功能要求 11.3.2 设计实现 11.4 乐曲演奏电路 11.4.1 音调的控制 11.4.2 音长的控制 11.4.3 乐曲演奏电路源程序 11.5 自动售饮料机的设计 11.6 实用多功能数字钟 11.6.1 功能 11.6.2 源程序 11.7 计费器设计 思考与练习 第12章 算法与复杂逻辑的实现 本章内容简介 12.1 加法器设计 12.1.1 级连加法器 12.1.2 并行加法器 12.1.3 超前进位加法器 12.1.4 流水线加法器 12.2 乘法器设计 12.2.1 并行乘法器 12.2.2 移位相加乘法器 12.2.3 查找表乘法器 12.2.4 加法树乘法器 12.3 FIR滤波器的设计 12.3.1 FIR滤波器的结构 12.3.2 抽头系数编码 12.3.3 源代码及仿真 12.4 数字相关器 12.5 信道编译码器 12.5.1 线性分组码编译码器 12.5.2 循环码编译码器 12.6 CRC校验码 思考与练习 第13章 EDA软件使用指南 本章内容简介 13.1 概述 13.2 Synplify Pro使用指南 13.2.1 Synplify Pro的性能特点 13.2.2 Synplify Pro使用指南 13.2.3 Synplify Pro与MAX+PLUS II的接口 13.3 Synplify 使用指南 13.3.1 Synplify的功能特点 13.3.2 Synplify使用举例 13.4 ModelSim使用指南 13.4.1 ModelSim功能仿真 13.4.2 ModelSim时序仿真 13.5 ispLEVER使用指南 13.5.1 ispLEVER的特点 13.5.2 基于ispLEVER的Verilog设计 13.6 MAX+PLUS II使用指南 13.7 Quartus II使用指南 13.7.1 创建工程文件 13.7.2 编译 13.7.3 仿真 13.7.4 Synplify Pro与Quartus II的接口 13.8 结束语 附录A Verilog HDL(IEEE Std 1364-1995)关键字 附录B Synplify Pro/Synplify可综合的Verilog结构 附录C MAX+PLUS II软件支持的Verilog结构 附录D 形式化句法定义 附录E 附带光盘内容及说明 参考文献