内容简介
《普通高等教育电路设计系列规划教材:EDA技术与Verilog HDL设计》根据电子类课程课堂教学和实验的要求,以提高学生的动手实践能力和工程设计能力为目的,对EDA技术和FPGA设计的相关知识进行系统和完整的介绍。《普通高等教育电路设计系列规划教材:EDA技术与Verilog HDL设计》内容新颖,技术先进,由浅入深,既有关于EDA技术、FPGA器件和Verilog硬件描述语言的系统介绍,又有丰富的设计实例。
作者简介
徐志军,中国高等教育学会仪器科学及测控技术专业委员会副主任委员、华东地区高校电子线路教学研究会理事、中国电子学会高级会员,普通高等教育“十一五”国家级规划教材《EDA技术与VHDL设计》畅销书作者,该书是本书的姊妹篇。
内页插图
目录
第1章 EDA技术概述
1.1 EDA技术及其发展历程
1.2 EDA技术的特征和优势
1.2.1 EDA技术的特征
1.2.2 EDA技术的优势
1.3 EDA设计的目标和流程
1.3.1 EDA设计的目标
1.3.2 EDA设计的流程
1.3.3 数字集成电路的设计
1.3.4 模拟集成电路的设计
1.4 EDA技术与ASIC设计
1.4.1 ASIC的特点与分类
1.4.2 ASIC的设计方法
1.4.3 SoC设计
1.5 硬件描述语言
1.5.1 VHDL
1.5.2 Verilog HDL
1.5.3 ABEL-HDL
1.5.4 Verilog HDL和VHDL的比较
1.6 EDA设计工具
1.6.1 EDA设计工具分类
1.6.2 EDA公司及其工具介绍
1.7 EDA技术的发展趋势
习题
第2章 可编程逻辑器件基础
2.1 概述
2.1.1 可编程逻辑器件的发展历程
2.1.2 可编程逻辑器件的分类
2.1.3 可编程逻辑器件的优势
2.1.4 可编程逻辑器件的发展趋势
2.2 PLD器件的基本结构
2.2.1 基本结构
2.2.2 电路符号
2.2.3 PROM
2.2.4 PLA
2.2.5 PAL
2.2.6 GAL
2.3 CPLD/FPGA器件概述
2.3.1 Lattice的CPLD/FPGA
2.3.2 Xilinx的CPLD/FPGA
2.3.3 Altera的CPLD/FPGA
2.3.4 CPLD和FPGA的异同
2.4 可编程逻辑器件的基本资源
2.4.1 功能单元
2.4.2 I/O引脚
2.4.3 布线资源
2.4.4 片内RAM
2.5 可编程逻辑器件的编程元件
2.5.1 熔丝型开关
2.5.2 反熔丝型开关
2.5.3 浮栅编程元件
2.5.4 基于SRAM的编程元件
2.6 可编程逻辑器件的设计与开发
2.6.1 CPLD/FPGA设计流程
2.6.2 CPLD/FPGA开发工具
2.6.3 CPLD/FPGA的应用选择
2.7 可编程逻辑器件的测试技术
2.7.1 边界扫描测试原理
2.7.2 IEEE1149.1 标准
2.7.3 边界扫描策略及相关工具
习题
第3章 典型FPGA/CPLD的结构与配置
3.1 Stratix高端FPGA系列
3.1.1 Stratix器件
3.1.2 StratixⅡ器件
3.2 Cyclone低成本FPGA系列
3.2.1 Cyclone器件
3.2.2 CycloneⅡ器件
3.3 典型CPLD器件
3.3.1 MAXⅡ器件
3.3.2 MAX7000器件
3.4 FPGA/CPLD的配置
3.4.1 CPLD器件的配置
3.4.2 FPGA器件的配置
习题
第4章 QuartusⅡ集成开发工具
4.1 QuartusⅡ原理图设计
4.1.1 半加器原理图设计输入
4.1.2 编译与仿真
4.1.3 1位全加器编译与仿真
4.2 QuartusⅡ的优化设置
4.2.1 分析与综合设置
4.2.2 优化布局布线
4.2.3 设计可靠性检查
4.3 QuartusⅡ的时序分析
4.3.1 时序设置与分析
4.3.2 时序逼近
4.4 基于宏功能模块的设计
4.4.1 Megafunctions库
4.4.2 Maxplus2库
4.4.3 Primitives库
习题
实验与设计
第5章 VerilogHDL语法与要素
5.1 VerilogHDL简介
5.2 VerilogHDL模块的结构
5.3 VerilogHDL语言要素
5.4 常量
5.4.1 整数
5.4.2 实数
5.4.3 字符串
5.5 数据类型
5.5.1 net型
5.5.2 variable型
5.6 参数
5.7 向量
5.8 运算符
习题
实验与设计
第6章 VerilogHDL行为语句
6.1 过程语句
6.1.1 always过程语句
6.1.2 initial过程语句
6.2 块语句
6.2.1 串行块begin-end
6.2.2 并行块fork-join
6.3 赋值语句
6.3.1 持续赋值与过程赋值
6.3.2 阻塞赋值与非阻塞赋值
6.4 条件语句
6.4.1 if-else语句
6.4.2 case语句
6.5 循环语句
6.5.1 for语句
6.5.2 repeat、while、forever语句
6.6 编译指示语句
6.7 任务与函数
6.7.1 任务
6.7.2 函数
6.8 顺序执行与并发执行
习题
实验与设计
第7章 VerilogHDL设计的层次与风格
7.1 VerilogHDL设计的层次
7.2 门级结构描述
7.2.1 VerilogHDL内置门元件
7.2.2 门级结构描述
7.3 行为描述
7.4 数据流描述
7.5 不同描述风格的设计
7.5.1 半加器设计
7.5.2 1位全加器设计
7.5.3 4位加法器设计
7.6 多层次结构电路的设计
7.7 基本组合电路设计
7.7.1 编译码器
7.7.2 其他组合电路
7.8 基本时序电路设计
7.8.1 触发器
7.8.2 锁存器与寄存器
7.8.3 计数器与串/并转换器
7.8.4 简易微处理器
7.9 三态逻辑设计
习题
实验与设计
第8章 VerilogHDL设计进阶
8.1 小数分频
8.2 VerilogHDL有限状态机设计
8.2.1 有限状态机的VerilogHDL描述
8.2.2 状态编码
8.2.3 状态编码的定义
8.3 字符液晶显示控制
8.3.1 字符液晶H1602B
8.3.2 用状态机实现字符显示控制
8.4 VGA图像的显示与控制
8.4.1 VGA图像显示原理与时序
8.4.2 VGA图像显示与控制的实现
8.5 点阵式液晶显示控制
8.6 乐曲演奏电路
习题
实验与设计
第9章 VerilogHDL仿真与测试
9.1 系统任务与系统函数
9.2 用户自定义元件
9.2.1 组合电路UDP元件
9.2.2 时序逻辑UDP元件
9.3 延时模型的表示
9.3.1 时间标尺定义'timescale
9.3.2 延时的表示与延时说明块
9.4 测试平台
9.5 组合电路和时序电路的仿真
9.5.1 组合电路的仿真
9.5.2 时序电路的仿真
习题
实验与设计
第10章 VerilogHDL数字设计实例
10.1 加法器的VerilogHDL设计实例
10.1.1 全加器的设计
10.1.2 行波加法器的设计
10.1.3 超前进位加法器的设计
10.1.4 流水线技术在加法器设计中的应用
10.2 乘法器的VerilogHDL设计实例
10.2.1 移位相加乘法器设计原理
10.2.2 移位相加乘法器的VerilogHDL实现
10.2.3 布斯乘法器设计原理
10.2.4 布斯乘法器的VerilogHDL实现
10.3 汉明编解码器的VerilogHDL设计实例
10.3.1 汉明编码原理
10.3.2 汉明编码的译码原理
10.3.3 汉明编译码的VerilogHDL实现
10.4 ST-BUS总线接口设计
10.4.1 ST-BUS总线时序关系
10.4.2 ST-BUS总线接口实例
习题
实验与设计
第11章 VerilogHDL数字通信常用模块设计实例
11.1 信号音发生器的VerilogHDL设计实例
11.1.1 线性码、A律码转换原理
11.1.2 信号音发生器VerilogHDL实例
11.2 比特同步的VerilogHDL设计实例
11.2.1 锁相功能的自同步法原理
11.2.2 锁相比特同步的EDA实现方法
11.3 基带差分编码的VerilogHDL设计实例
11.3.1 PSK调制和差分编码原理
11.3.2 PSK差分编码设计
11.4 GMSK调制电路的VerilogHDL设计实例
11.4.1 GMSK调制基本原理
11.4.2 GMSK调制实现的基本方法
11.4.3 GMSK基带调制实现的
Verilog HDL实例
习题
实验与设计
附录A Verilog HDL(IEEEStd1364-1995)关键字
附录B Verilog HDL(IEEEStd1364-2001)关键字
参考文献
前言/序言
开启数字设计新篇章:EDA技术与Verilog HDL精要 在现代电子信息技术飞速发展的浪潮中,数字集成电路的设计与实现已成为推动科技进步的核心驱动力。从智能手机的芯片到高性能的服务器,从汽车电子到物联网设备,无处不见数字电路的身影。而EDA(Electronic Design Automation,电子设计自动化)技术,正是驾驭复杂数字电路设计、缩短开发周期、提高产品质量的关键工具。掌握EDA技术,特别是以Verilog HDL(Hardware Description Language,硬件描述语言)为代表的设计方法,已成为电子工程专业人士必备的核心技能。 本书旨在为广大普通高等教育学生提供一个系统、深入的学习平台,全面掌握EDA技术的核心理念、工作流程以及Verilog HDL语言的精髓。我们不只是介绍工具的使用,更注重培养读者对数字系统设计原理的深刻理解,以及利用硬件描述语言进行高效、可靠设计的工程实践能力。 一、 EDA技术:赋能数字设计的强大引擎 EDA技术的发展,经历了从手工布线到全自动化设计的巨大飞跃。它极大地提高了数字电路设计的效率和准确性,使得过去难以想象的超大规模集成电路(VLSI)设计成为可能。本书将带您走进EDA技术的广阔天地,深入剖析其核心要素: EDA工具链概览: 我们将从宏观角度介绍一套完整的EDA工具链,包括原理图输入、仿真、综合、布局布线、时序分析等各个环节。您将了解不同EDA厂商提供的典型工具(如Cadence、Synopsys、Xilinx Vivado等)各自的特点和应用场景,为日后的实际项目开发打下坚实基础。 数字系统设计流程: 理解设计流程是掌握EDA技术的关键。本书将详细阐述从需求分析、架构设计、行为级建模、RTL(Register Transfer Level)级设计、仿真验证、逻辑综合,到物理实现、后仿真验证等一系列完整的设计流程。通过实例,我们将逐步引导您完成一个典型的数字电路设计项目。 行为级与RTL级设计: 区分行为级描述(描述系统功能)和RTL级描述(描述数据在寄存器之间如何流动)的重要性不言而喻。本书将重点讲解如何利用Verilog HDL进行RTL级设计,构建功能准确、性能优越的数字模块。 仿真与验证: 仿真和验证是保证设计正确性的生命线。我们将介绍各种仿真技术,包括功能仿真、时序仿真,以及如何编写有效的测试平台(Testbench)来全面验证设计的正确性。对各种验证方法学(如覆盖率收集、形式验证等)的介绍,将帮助您构建严谨的验证体系。 逻辑综合: 逻辑综合是将高层次的HDL描述转化为门级网表(netlist)的关键步骤。本书将深入探讨综合工具的工作原理,讲解如何编写易于综合的HDL代码,以及如何通过约束(constraints)来指导综合过程,优化设计性能(如面积、速度、功耗)。 物理实现: 对于FPGA(Field-Programmable Gate Array)设计,物理实现包括布局(placement)和布线(routing),即根据目标FPGA的资源和连接特性,将综合后的逻辑映射到实际的硬件资源上。我们将介绍FPGA的设计流程,以及布局布线的基本概念和影响因素。 时序分析: 数字电路的正确运行离不开严格的时序控制。本书将详细讲解时序约束(timing constraints)的设置,如何理解和分析时序报告(timing reports),以及如何处理和优化时序违例(timing violations),确保设计在目标时钟频率下稳定工作。 二、 Verilog HDL:驱动数字逻辑的强大语言 Verilog HDL作为一种国际标准的硬件描述语言,以其简洁高效的语法和强大的建模能力,成为描述和设计数字硬件的首选语言。本书将带领您系统地学习Verilog HDL,从基础语法到高级应用,全面掌握这门“编程的艺术”。 Verilog HDL基础语法: 我们将从最基本的概念入手,讲解Verilog HDL的词法、运算符、数据类型(如reg、wire、integer)、信号类型(input、output、inout)、模块(module)、端口(port)的定义与实例化。 行为级建模: 学习如何使用always块(sequential和combinational)来描述电路的行为。我们将重点讲解生成组合逻辑(如assign语句、case语句、if-else语句)和时序逻辑(如带有时钟和复位信号的always块)的不同方式,并分析它们的等效性。 数据流建模: 掌握assign语句在描述组合逻辑中的应用,以及连续赋值的强大之处。 结构化建模: 学习如何通过实例化其他模块来构建层次化的复杂系统,这对于大型设计的模块化和可重用性至关重要。 任务(Tasks)与函数(Functions): 学习如何编写任务和函数来封装可重用的代码段,提高代码的可读性和可维护性。 参数化设计(Parameterization): 掌握如何使用parameter关键字来创建参数化的模块,使设计更加灵活,易于在不同场景下复用。 生成语句(Generate Constructs): 学习使用generate语句来根据条件或参数动态生成模块实例或连续赋值语句,极大地提高了代码的灵活性和效率。 高级Verilog HDL特性: 我们将进一步探讨Verilog HDL的更高级特性,例如: 时延(Delays): 理解不同类型时延的含义和在仿真中的作用。 文件I/O操作: 学习如何在仿真过程中进行文件读写,方便数据处理和结果输出。 用户自定义原语(User-Defined Primitives, UDP): 了解UDP的作用以及其在特定场景下的应用。 同步与异步复位(Synchronous vs. Asynchronous Reset): 深入分析两种复位方式的优缺点及在实际设计中的选择。 有限状态机(Finite State Machine, FSM)设计: 详细讲解如何利用Verilog HDL设计和实现Mealy型和Moore型有限状态机,这是许多控制逻辑设计的核心。 流水线(Pipelining)与并行处理: 介绍如何通过流水线技术和并行设计来提高电路的吞吐量和执行速度。 时钟域交叉(Clock Domain Crossing, CDC)问题: 讨论在多时钟系统中可能遇到的问题,以及同步器(synchronizer)等常用解决方案。 代码风格与最佳实践: 除了语言本身,本书还将强调良好的Verilog HDL代码风格和设计原则,包括如何编写清晰、易读、易于调试和综合的代码,以及如何避免一些常见的陷阱,例如: 锁存器(Latches)的产生: 分析哪些代码结构容易导致锁存器的意外产生,并给出避免的方法。 组合逻辑与时序逻辑的清晰划分: 强调区分和正确实现两种逻辑的重要性。 复位信号的处理: 确保复位逻辑的健壮性和有效性。 时钟信号的正确使用: 避免时钟相关的问题。 三、 实践与应用:理论联系实际 本书的编写始终坚持理论与实践相结合的原则。我们不仅会介绍抽象的概念,更会通过大量的实例来加深读者的理解。 实例驱动式学习: 从简单的加法器、多路选择器,到复杂的UART(Universal Asynchronous Receiver/Transmitter)通信接口、FIFO(First-In, First-Out)缓冲区,再到简单的CPU控制器,本书将提供一系列精心设计的、可运行的Verilog HDL代码示例。 FPGA开发板实践: 鼓励读者利用市面上常见的FPGA开发板(如基于Xilinx Artix-7、Intel Cyclone V等平台的开发板),将本书中的设计实例移植到实际硬件上进行验证。我们将介绍FPGA开发板的常用接口、开发环境的配置、以及如何将HDL代码下载到FPGA芯片中运行。 项目驱动式学习: 在章节的最后,我们通常会设置一些小型项目或挑战,让读者运用所学知识独立完成设计任务。例如,设计一个简单的计数器,实现一个LED流水灯效果,或者编写一个简单的按键消抖电路。 调试技巧与故障排除: 在实际设计中,调试是必不可少的一环。本书将分享在仿真和硬件调试过程中常用的技巧和思路,帮助读者快速定位和解决问题。 四、 学习目标与读者对象 通过学习本书,读者将能够: 理解EDA技术的原理、流程和关键工具。 熟练掌握Verilog HDL语言的语法和语义。 运用Verilog HDL进行数字电路的行为级和RTL级建模。 编写有效的测试平台,进行仿真验证。 了解逻辑综合和物理实现的基本过程。 掌握基本的时序分析概念和方法。 能够独立完成中小型数字电路设计项目,并将其部署到FPGA平台上。 本书适用于以下读者: 普通高等院校电子信息工程、通信工程、自动化、计算机科学与技术等相关专业的本科生和研究生。 对数字电路设计和EDA技术感兴趣的初学者。 希望提升Verilog HDL设计技能的在职工程师。 结语 数字世界正以前所未有的速度发展,掌握EDA技术和Verilog HDL语言,意味着您拥有了参与构建未来数字世界的钥匙。本书将是您在这条道路上的可靠伙伴,为您揭示数字设计的奥秘,点亮您的工程之路。让我们一起,用代码描绘电路的蓝图,用智慧创造数字的奇迹!