关于我们
![]() ![]() |
VHDL及数字电路验证
本书涵盖“VHDL设计描述语言”和“FPGA设计及应用”两门课程的主要内容,内容紧凑、重点突出、条理清晰、针对性强、注重实践,精心选取了大量通用、贴近工程实践的设计实例。
前 言
随着微电子技术和电子设计自动化(Electronic Design Automation,EDA)的快速发展,现场可编程门阵列(Field Programmable Gate Array,FPGA)正朝着全新一代片上可编程FPGA器件(System on Chip FPGA,SoC FPGA)的方向发展。和传统的FPGA相比,SoC FPGA不仅继承了传统FPGA器件的功能,而且在性能和容量上有了很大的提升,在器件功能方面也取得了很大的扩展。SoC FPGA已经从最初的单一逻辑运算角色演变为面向不同应用领域的可优化高速处理平台,即将核心硬件和各类软件平台融合在一起,提供了一种单芯片系统解决方案。硬件描述语言(Hardware Description Language,HDL)作为一种形式化的描述语言,在FPGA的发展过程中起到了举足轻重的作用。从诞生到现在,硬件描述语言已经从早期的只能完成单一数字电路描述功能的角色演变为具有大规模、复杂系统行为的描述能力,并可以借助EDA软件平台,自上而下地逐层完成相应电路的描述、仿真、优化和综合,直到生成器件。VHDL语言作为最早出现的硬件描述语言,与其他硬件描述语言相比,具有层次化的设计结构,更强的行为描述能力,丰富的仿真语句和库函数。VHDL语言的行为描述能力和程序结构决定了VHDL语言更适合一些大型复杂系统的早期验证功能的可行性,具备对系统进行仿真模拟的可能性,符合市场化的设计系统高效的特点。VHDL语言现已成为国际标准语言,也被绝大多数的EDA软件和半导体器件厂商所接受,掌握VHDL语言正日益成为我国高校大学生和工程技术人员的必备技能。目前,在很多高校的电子相关专业开设了FPGA和硬件描述语言两方面的课程,内容和侧重点有所相同。 本书以“淡化理论,够用为度”的原则,在理论学习方面,注重基本概念、基本方法及常用设计方法的学习,淡化语法结构复杂、使用频次少的语句。本书力求通俗易懂,精练实用。在设计验证方面,本书精心选取了大量通用性广、工程实践性强的设计实例,通过仿真验证,强化设计理论和设计方法。为了巩固读者的学习效果,每章都配有一定数量的习题。 本书是编著者依据多年的教学和科研经验,参考大量的国内外优秀教材编写而成的,书中配有丰富的设计实例,并且全部经过仿真验证。全书共13章,除绪论外可分为两大部分:第2~7章为第一部分,详细介绍VHDL硬件描述语言;第8~13章为第二部分,详细介绍基于VHDL的数字电路设计及验证方法。 第1章是绪论,内容包括电路系统的概念、分类及特点,VHDL语言产生的背景、功能及特点,可编程器件的基本概念及特点。 第2章是VHDL语言的程序框架及组成,介绍VHDL语言的语法规则和命名,以及程序框架和组成。 第3章是VHDL语言的数据类型,介绍标准的预定义数据类型、用户自定义数据类型和数据类型转换函数。 第4章是VHDL语言数据对象及运算操作符,介绍数据对象的概念、分类和特点,以及运算操作符的分类。 第5章是VHDL语言的主要描述语句,介绍并发描述语句和顺序描述语句。 第6章是VHDL语言的属性,介绍VHDL语言预定义的数值类属性、函数类属性、数据类型类属性、数据区间属性和用户自定义属性。 第7章是VHDL语言构造体的描述方式,介绍行为描述方式、结构化描述方式、数据流描述方式和混合描述方式。 第8章是数字逻辑电路设计,介绍简单组合逻辑电路和时序逻辑电路的设计。 第9章是状态机设计,介绍状态机的组成、描述风格、状态编码、状态机剩余状态处理方法及状态机的复位方法。 第10章是ModelSim仿真与测试平台的搭建,介绍ModelSim软件的使用方法,测试激励文件的产生方法和测试平台的搭建步骤。 第11章是Quartus II集成开发环境,介绍Quartus II 集成开发软件的主要功能、开发流程和一些辅助功能。 第12章是FPGA器件及开发平台,介绍Altera公司FPGA芯片的分类、命名和结构特点,以及FPGA最小系统和各部分的电路组成。 第13章是FPGA典型应用设计,介绍IP核的概念,若干典型应用实例的设计及验证方法。 “VHDL及数字电路验证”是微电子科学与工程专业的必修课,是通信工程、测控技术、电子工程等相关电子类专业的选修课,属于一门理论和实践并重的课程。该课程旨在培养学生在集成电路设计方面的前端设计验证能力,是非常注重工程实践的一门课程。 本课程的先修课程是“数字电子技术基础”和“数字逻辑电路设计”。本课程的参考课时为64~72学时,实践训练为10~20学时,使用者可根据实际情况对内容进行取舍。 本书第1章由刘树林编写,第6、7、8、10、11、13章由刘宁庄编写,第2、3、4章由王媛媛编写,第5章由杨波编写,第9章由高瑜编写,第12章由伍凤娟编写。本书电子教学课件(PPT文档)可从华信教育资源网(www.hxedu.com.cn)注册后免费下载,或者通过与本书责任编辑(zhangls@phei.com.cn)联系获取。 本书由西安邮电大学电子工程学院副院长杜慧敏教授负责审定。在本书编写过程中,西安邮电学院刘有耀副教授和江南大学物联网工程学院的柴志雷博士提出了宝贵的意见,在此表示衷心的感谢。 在本书的编写过程中,参考了大量的国内外教材和论文,在此向这些文献的作者表示衷心的感谢。 由于编著者水平有限,加之时间仓促,书中难免存在不当之处,敬请广大读者和同行批评指正。 编著者 2016年10月
刘树林,博士,西安科技大学教授、博士生导师,四川大学半导体物理专业本科毕业,航天部西安微电子研究所硕士、博士毕业。先后在西安电力电子研究所、中兴通讯股份有限公司、西安科技大学从事科研和教学工作。现任西安科技大学电气与控制工程学院副院长、“电力电子电路与系统科研创新团队”负责人、矿山机电工程博士点学科带头人、微电子学与固体电子学学科带头人等。
第1章 绪论 1
1.1 电路系统 1 1.1.1 电路系统的分类 1 1.1.2 模拟电路系统及其特点 1 1.1.3 数字电路系统及其特点 2 1.2 VHDL语言的产生背景、功能及特点 2 1.2.1 EDA概念 2 1.2.2 EDA技术发展阶段 2 1.2.3 EDA技术的研究内容 4 1.2.4 HDL语言的概念及分类 5 1.2.5 VHDL语言的发展及特点 6 1.3 PLD与FPGA 7 1.3.1 简单低密度器件(SPLD) 8 1.3.2 CPLD 9 1.3.3 FPGA 12 1.3.4 器件供应商及第三方软件介绍 13 习题 16 第2章 VHDL程序框架及组成 17 2.1 概述 17 2.2 语法规则及命名 17 2.2.1 书写规定 17 2.2.2 标识符 18 2.2.3 扩展标识符 18 2.2.4 保留字及专用字 19 2.3 VHDL基本架构 19 2.3.1 设计库 20 2.3.2 包集合 22 2.3.3 实体 24 2.3.4 构造体 26 2.3.5 配置 28 3.配置的格式 28 2.4 小结 31 习题 31 第3章 VHDL语言数据类型 32 3.1 数据类型概述 32 3.2 标准预定义数据类型 32 3.2.1 可综合数据类型 33 3.2.1 不可综合数据类型 36 3.3 用户自定义数据类型 38 3.3.1 枚举类型 39 3.3.2 数组类型 39 3.3.3 记录类型 40 3.3.4 寻址类型 41 3.3.5 文件类型 41 3.4 数据类型的转换 42 3.5 小结 44 习题 44 第4章 VHDL语言数据对象及运算操作符 45 4.1 数据对象及其分类 45 4.1.1 常量 45 4.1.2 信号 46 4.1.3 变量 47 4.1.4 文件 49 4.2 运算操作符 51 4.2.1 逻辑运算符 51 4.2.2 算术运算符 52 4.2.3 关系运算符 52 4.2.4 移位操作符 53 4.2.5 并置运算符 54 4.3 小结 55 习题 55 第5章 VHDL语言主要描述语句 57 5.1 概述 57 5.2 并发描述语句 57 5.2.1 进程语句 58 5.2.2 信号代入语句 59 5.2.3 元件例化语句 64 5.2.4 过程调用语句 69 5.2.5 类属语句 71 5.2.6 生成语句 72 5.2.7 并行仿真语句 75 5.2.8 块语句 77 5.3 顺序描述语句 78 5.3.1 进程语句 79 5.3.2 赋值语句 79 5.3.3 条件判断语句 81 5.3.4 CASE语句 83 5.3.5 调用语句 87 5.3.6 循环语句 90 5.3.7 仿真描述语句 94 5.3.8 空语句 98 5.4 小结 99 习题 99 第6章 VHDL语言属性 100 6.1 概述 100 6.2 数值类属性 100 6.2.1 常规数据类型的数值属性 101 6.2.2 数组类型的数值属性 101 6.2.3 块的数值属性 102 6.3 函数类属性 103 6.3.1 函数数据类型属性 103 6.3.2 函数数组属性 105 6.3.3 函数信号属性 106 6.3.4 信号类属性 110 6.4 数据类型属性 113 6.5 数据区间类属性 113 6.6 用户自定义属性 114 6.7 小结 115 习题 115 第7章 VHDL语言构造体的描述方式 117 7.1 概述 117 7.2 行为描述方式 117 7.2.1 行为描述方式的概念和特点 117 7.2.2 行为描述方式举例 117 7.3 结构化描述方式 119 7.3.1 结构化描述方式的概念和特点 119 7.3.2 结构化描述举例 119 7.4 数据流描述方式 123 7.4.1 数据流描述方式的概念和特点 123 7.4.2 数据流描述方式举例 124 7.5 混合描述方式 125 7.5.1 混合描述方式的概念和特点 125 7.5.2 混合描述方式举例 126 7.6 数据流描述中应注意的问题 126 7.6.1 非法状态传递问题 126 7.6.2 进程中时钟沿的使用问题 128 7.6.3 综合电路问题 128 7.7 小结 132 习题 132 第8章 数字逻辑电路设计 133 8.1 概述 133 8.2 组合逻辑电路设计 133 8.2.1 选择器和分配器 133 8.2.2 编码器和译码器 138 8.2.3 数字比较器 144 8.2.4 加法器 146 8.2.5 三态门及总线缓冲器 148 8.2.6 奇偶校验器 152 8.3 时序逻辑电路设计 153 8.3.1 触发器 153 8.3.2 寄存器的设计 159 8.3.3 计数器 162 8.4 小结 168 习题 168 第9章 状态机设计 169 9.1 概述 169 9.2 状态机的特点 170 9.3 状态机的组成 170 9.4 状态机的描述风格 174 9.5 状态机的状态编码 175 9.5.1 直接输出型编码 175 9.5.2 顺序编码 176 9.5.3 格雷码编码 176 9.5.4 独热码编码 177 9.6 状态机剩余状态处理 178 9.7 有限状态机的复位 179 9.8 小结 183 习题 183 第10章 MODELSIM仿真与测试平台的搭建 184 10.1 引言 184 10.2 ModelSim仿真软件 184 10.2.1 ModelSim简介 184 10.2.2 ModelSim软件的安装及破解 184 10.2.3 软件仿真步骤 188 10.3 测试及验证平台 192 10.3.1 仿真软件编辑输入 193 10.3.2 仿真输入波形的产生 193 10.3.3 测试平台的搭建 198 10.4 小结 201 习题 201 第11章 QUARTUS II集成开发环境 202 11.1 概述 202 11.2 Quartus II软件开发流程 203 11.2.1 新建工程设计流程 204 11.2.2 设计输入流程 207 11.2.3 编译及综合流程 217 11.2.4 仿真验证 220 11.2.5 硬件下载与验证 224 11.3 Quartus II软件其他常用功能应用 227 11.3.1 嵌入式逻辑分析仪 227 11.3.2 信号探针 230 11.3.3 功耗分析工具 231 11.3.4 存储器内容编辑 233 11.3.5 逻辑分析仪接口编辑器 235 11.4 小结 236 习题 236 第12章 FPGA器件及其开发平台 237 12.1 FPGA工作原理 237 12.2 Altera FPGA芯片 237 12.2.1 Altera PLD芯片的分类 237 12.2.2 Altera PLD的命名 237 12.2.3 Cylone系列FPGA的功能和结构 238 12.3 FPGA与CPLD的比较 245 12.3.1 FPGA与CPLD的相同点 245 12.3.2 CPLD和FPGA的区别 245 12.4 FPGA开发流程 246 12.5 FPGA开发平台:最小系统设计 247 12.5.1 FPGA芯片有关引脚 247 12.5.2 PROM芯片型号及电路连接 248 12.5.3 全局时钟发生电路 249 12.5.4 JTAG下载电路 250 12.5.5 电源电路设计 250 12.5.6 其他IO接口电路 251 12.6 小结 252 习题 252 第13章 FPGA典型应用设计 253 13.1 IP知识产权模块 253 13.1.1 IP模块的概念 253 13.1.2 IP模块的分类 253 13.1.3 IP模块的复用 254 13.2 分频器的设计验证 255 13.2.1 奇偶数分频器通用IP核的设计 255 13.2.2 占空比可调的分频器的设计 258 13.3 交通灯控制器的设计 260 13.3.1 设计要求 260 13.3.2 设计原理 260 13.3.3 VHDL语句描述 261 13.3.4 元件符号及端口说明 262 13.3.5 仿真验证 263 13.4 串口异步收发控制器的设计 263 13.4.1 UART数据帧格式 264 13.4.2 UART的实现 264 13.5 I2C总线通信控制器的设计 274 13.5.1 I2C总线简介 274 13.5.2 I2C总线帧格式 274 13.5.3 I2C总线顶层模块设计 275 13.5.4 I2C时钟模块的设计 275 13.5.5 I2C写数据模块设计 276 13.6 并行ADC0809控制模块设计 279 13.6.1 设计原理 279 13.6.2 状态机设计 279 13.6.3 VHDL语言描述 280 13.6.4 测试平台的设计 281 13.6.5 仿真结果 282 13.7 串行DAC TLC5615控制模块设计 282 13.7.1 设计原理 283 13.7.2 设计状态图 283 13.7.3 VHDL源程序 283 13.7.4 元件符号及端口说明 285 13.7.5 仿真验证 285 13.8 正弦信号发生器的设计 285 13.8.1 正弦信号发生器工作原理 285 13.8.2 定制初始化数据文件 286 13.8.3 定制LPM_ROM元件 286 13.9 小结 289 习题 289 主要参考文献 291
你还可能感兴趣
我要评论
|