EDA技术与VHDL(第5版)

EDA技术与VHDL(第5版)"

作者:潘松、黄继业
ISBN:9787302489443
定价:¥49.80
字数:千字
页数:
出版时间:2017.12.01
开本:
版次:5-1
装帧:
出版社:清华大学出版社
简介

本书系统地介绍了EDA 技术和VHDL 硬件描述语言,将VHDL 的基础知识、编程技巧和实用方法与实际工程开发技术在Quartus II 13.1 上很好地结合起来,使读者通过本书的学习能迅速了解并掌握EDA技术的基本理论和工程开发实用技术,为后续的深入学习和发展打下坚实的理论与实践基础。

  作者依据高校课堂教学和实验操作的规律与要求,并以提高学生的实际工程设计能力和自主创新能力为目的,合理编排全书内容。全书共分为8 个部分:EDA 技术的概述、VHDL 语法知识及其实用技术、Quartus II 及LPM 宏模块的详细使用方法、有限状态机设计技术、16 位实用CPU 设计技术及创新实践项目、基于ModelSim 的Test Bench 仿真技术、以及基于MATLAB 和DSP Builder 平台的EDA 设计技术及大量实用系统设计示例。除个别章节外,其他章节都安排了相应的习题和大量针对性强的实验与设计项目。书中列举的VHDL 示例都已经编译通过或经硬件测试通过。

  本书主要用于高等院校本、专科的EDA 技术和VHDL 语言基础课,推荐作为电子工程、通信、工业自动化、计算机应用技术、电子对抗、仪器仪表、数字信号或图像处理等学科专业和相关实验指导课的教材用书或主要参考书,同时也可作为电子设计竞赛、FPGA 开发应用的自学参考书。

  与此教材配套的还有 CAI 教学课件、实验指导课件、实验源程序,以及与实验设计项目相关的详细技术资料等,读者都可免费索取。

前言

  新版教程的变化主要表现在新版 EDA 软件和较新的FPGA 的使用上:

  (1)考虑到Quartus II 13.1 和 Quartus Prime Standard 16.1 版本的用法和功能基本相同,而13.1 版本支持的早期器件系列较多,包括Cyclone III。所以在一些重要的章节和示例中,用QuartusII 13.1 软件取代了旧版的Quartus II 9.1。

  (2)在上一版的中就已提到过,Quartus II 10.0 版本后不再支持内置的门级仿真器,即Altera 已将Quartus II 10.0 及此后版本的软件中曾经一贯内置的门级波形仿真器移除了,这使得Quartus 的使用者不得不使用接口于Quartus II 的第三方仿真器ModelSim-Altera。显然这一举措对于多数初学者和相关的教学造成很大的不便。因为必须承认,Quartus II 9.x及之前版本软件中一直内置的波形仿真器的易学、高效和便捷的巨大优势,对于EDA 教学和初学者的学习是十分重要的。为此,Quartus II 13.1 及其以后的16.1 版本,借助ModelSim-ase 构建了一个类似于波形仿真器的仿真工具。其在用法上也有少许不同之处,书中也做了介绍。

  (3)由于新版软件的波形仿真器是建立在第三方仿真软件ModelSim-ase 上的,所以在安装软件时需要特别注意要把ModelSim-ase 装上,书中对此加入了Quartus II 13.1 安装的简要说明。

  (4)考虑到较新的Cyclone 4 型FPGA 已经得到广泛使用,并兼顾目前多数学校仍然使用基于Cyclone 3 系列FPGA 的实验设备的事实,在此新版教材中包含了这两种FPGA的使用示例。

  (5)在FPGA 和CPLD 的结构介绍方面,做了一定更新,介绍了较新近发展的FPGA(Cyclone4)和CPLD(内嵌Flash 的FPGA 器件)的结构特点。

  (6)对一些习题和实验项目做了精简与完善。

  (7)对第10 章的Test Bench 仿真示例升级在Quartus II 13.1 平台上完成。

  (8)对第11 和第12 章内容做了进一步的完善。

  与本书 VHDL 内容相对应的Verilog HDL 教材可参考清华大学出版社出版的《EDA 技术与Verilog HDL(第3 版)》。

  基于工程领域中 EDA 技术的巨大实用价值,以及对EDA 教学中实践能力和创新意识培养的极端重视,本书的特色主要体现在如下两个方面。

  1.注重实践能力和创新能力的培养

  在绝大部分章节中都安排了针对性较强的实验与设计项目,使学生对每一章的课堂教学内容和教学效果能及时通过实验得以消化和强化,并尽可能地从一开始学习就有机会将理论知识与实践、自主设计紧密联系起来。

  全书包含数十个实验及其相关的设计项目,这些项目涉及的 EDA 工具软件类型较多、技术领域也较宽、知识涉猎密集、针对性强,而且自主创新意识的启示性好。与书中的示例相同,所有的实验项目都通过了EDA 工具的仿真测试及FPGA 平台的硬件验证。每一个实验项目除给出详细的实验目的、实验原理和实验报告要求外,还有2~5 个子项目或子任务。它们通常分为:第一个层次的实验是与该章某个阐述内容相关的验证性实验,并通常提供详细的且被验证的设计源程序和实验方法,学生只需将提供的设计程序输入计算机,并按要求进行编译仿真,在实验系统上实现即可,这使学生有一个初步的感性认识,也提高了实验的效率;第二个层次的实验任务要求在上一实验基础上做一些改进和发挥;第三个层次的实验通常是提出自主设计的要求和任务;第四、第五个实验层次则是在仅给出一些提示的情况下提出自主创新性设计的要求。因此,教师可以根据学时数、教学实验的要求以及不同的学生对象,布置不同层次含不同任务的实验项目。

  2.注重教学选材的灵活性和完整性相结合

  本教材的结构特点决定了授课学时数可十分灵活,即可长可短,应视具体的专业特点、课程定位及学习者的前期教育程度等因素而定,大致在30~54 学时。考虑到EDA 技术课程的特质和本教材的特色,具体教学可以是粗放型的,其中多数内容,特别是实践项目,都可放手让学生更多地自己去查阅资料、提出问题、解决问题,乃至创新与创造;而授课教师只需做一个启蒙者、引导者、鼓励者和学生成果的检验者与评判者。授课的过程多数情况只需点到为止,大可不必拘泥细节、面面俱到。但有一个原则,即安排的实验学时数应多多益善。

  事实上,任何一门课程的学时数总是有限的,为了有效增加学生的实践和自主设计的时间,可以借鉴清华大学的一项教改措施,即其电子系本科生从一入学就每人获得一块FPGA 实验开发板,可从本科一年级一直用到研究生毕业。这是因为EDA 技术本身就是一个可把全部实验和设计带回家的课程。

  我校对于这门课程也基本采用了这一措施,即每个上EDA 课的同学都可借出一套EDA实验板,使他们能利用自己的计算机在课余时间完成自主设计项目,强化学习效果。实践表明,这种安排使得实验课时得到有效延长,教学成效自然显著。

  我们建议积极鼓励学生利用课余时间尽可能学完本书的全部内容,掌握本书介绍的所有EDA 工具软件和相关开发手段,并尽可能多地完成本书配置的实验和设计任务,甚至能参考教材中的要求,安排相关的创新设计竞赛,进一步激发同学的学习积极性和主动性,并强化他们的动手能力和自主创新能力。

  还有一个问题有必要在此探讨,即自主创新能力的培养尽管重要,但对其有效提高绝非一朝一夕之事。多年的教学实践告诉我们,针对这一问题的教改必须从两方面入手,一是教学内容,二是设课时间。二者密切联系,不可偏废。

  前者主要指建立一个内在相关性好、设课时间灵活且易于将创新能力培养寓于知识传播之中的课程体系。

  后者主要指在课程安排的时段上,将这一体系的课程尽可能地提前。这一举措是成功的关键,因为我们不可能到了本科三、四年级才去关注能力培养,并期待奇迹发生,更不可能指望一两门课程就能解决问题。尤其是以卓越工程师为培养目标的工科高等教育,自主创新能力的培养本身就是一项教学双方必须投入密集实践和探索的创新活动。我校的EDA 技术国家级精品课程正是针对这一教改目标建立的课程体系,而“数字电子技术基础” 是这一体系的组成部分和先导课程。它的提前设课是整个课程体系提前的必要条件。

  通过数年的试点教学实践和经验总结,现已成功在部分本科学生中将此课程的设课时间从原来的第四或第五学期提前到了第一或第二学期。而这一体系的其他相关课程,如EDA 技术、单片机(相关教材是清华大学出版社的《单片机原理与应用技术》,潘明、黄继业等编著)、SOC 片上系统、计算机接口、嵌入式系统和DSP 等也相应提前,从而使学生到本科二年级时就具备了培养工程实践和自主开发能力的条件。

  另外有一个问题须在此说明。

  针对本教材中的实验和实践项目所能提供的演示示例原设计文件的问题:本书中多数实验都能提供经硬件验证调试好的演示示例原设计,目的是让读者能顺利完成实验验证和设计;有的示例的目的是希望能启发或引导读者完成更有创意的设计,其中一些示例尽管看上去颇有创意,但都不能说是最佳或最终结果,这给读者留有许多改进和发挥的余地。此外还有少数示例无法提供源代码(只能提供演示文件),是考虑到本书作者以外的设计者的著作权,但这些示例仍能在设计的可行性、创意和创新方面给读者以宝贵的启示。

  为了尽可能降低本书的成本和售价,不再配置光盘。与本书相关的其他资料,包括本书的配套课件、实验示例源程序资料、相关设计项目的参考资料和附录中提到的mif 文件编辑生成软件等文件资料都可免费索取;此外对于一些与本教材相关的工具软件,包括Quartus II、Synplify Pro、ModelSim-Atera 和DSP-Builder/MATLAB 等EDA 软件的安装使用问题都可咨询(包括教学课件与实验课件,以及实验系统的FPGA 引脚查询及对照表等的免费索取)sunliangzhu@126.com,或与作者探讨EDA 技术教学和实践(hjynet@163.com);或直接与出版社联系(主要是索取教学课件等)。

  清华大学出版社的网址和联系方式分别是:www.tup.com.cn,zzfangcn@vip.163.com。

作 者

于杭州电子科技大学

目录

第 1 章 EDA 技术概述  1

11 EDA 技术  1

12 EDA 技术应用对象  2

13 常用的硬件描述语言  4

14 EDA 技术的优势  5

15 面向FPGA 和CPLD 的开发流程  6

151 设计输入  7

152 综合  7

153 适配(布线布局)  9

154 仿真  9

155 RTL 描述  10

16 可编程逻辑器件  10

161 PLD 的分类  11

162 PROM 可编程原理  12

163 GAL  14

17 CPLD 的结构与可编程原理  15

18 FPGA 的结构与工作原理  18

181 查找表逻辑结构  18

182 Cyclone 4E 系列器件的结构原理  18

183 内嵌Flash 的FPGA 器件  21

19 硬件测试技术  21

191 内部逻辑测试  21

192 JTAG 边界扫描测试 22

110 编程与配置  22

111 Quartus II  23

112 IP 核  25

113 EDA 的发展趋势  25

习题  27

第2 章程序结构与数据对象 28

21 VHDL 程序结构  28

22 VHDL 程序基本构建  30

221 实体和端口模式  30

222 结构体  31 223 库和库的种类  32

224 库和程序包的调用方法  34

225 配置  35

23 VHDL 文字规则  36

231 数字  36

232 字符串  36

233 关键词  37

234 标识符及其表述规则  37

235 文件取名和存盘  38

236 规范的程序书写格式  38

24 VHDL 数据对象  39

241 常数  39

242 变量  39

243 信号  40

习题  42

第3 章数据类型与顺序语句 43

31 VHDL 数据类型  43

311 BIT 和BIT_VECTOR 类型  44

312 STD_LOGIC 和STD_LOGIC_VECTOR 类型  44

313 整数类型INTEGER  46

314 布尔数据类型BOOLEAN  47

315 SIGNED 和UNSIGNED 类型  47

316 其他预定义类型  49

317 数据类型转换函数  50

32 常用顺序语句  52

321 赋值语句  52

322 CASE 语句  53

323 PROCESS 语句  54

324 并置操作符&  55

325 IF 语句  56

33 IF 语句使用示例  57

331 D 触发器的VHDL 描述  57

332 含异步复位和时钟使能D 触发器的描述  60

333 基本锁存器的描述  60

334 含清零控制锁存器的描述  62

335 实现时序电路的不同表述方式  63

336 4 位二进制加法计数器设计  64

337 计数器更常用的VHDL 表达方式  65

338 设计一个实用计数器  67 339 含同步并行预置功能的8 位移位寄存器设计  69

3310 优先编码器设计  70

34 VHDL 其他顺序语句  71

341 LOOP 循环语句  72

342 NEXT 语句  72

343 EXIT 语句  73

344 WAIT 语句  74

345 GENERIC 参数定义语句  77

346 REPORT 语句  77

347 断言语句  78

348 端口数据含1 个数的统计电路模块设计  80

习题  81

第4 章时序仿真与硬件实现 83

41 代码编辑输入和系统编译  83

411 编辑和输入设计文件  83

412 创建工程  84

413 约束项目设置  85

414 全程综合与编译  87

415 RTL 图观察器应用  88

42 时序仿真  89

43 硬件测试  91

431 引脚锁定  92

432 编译文件下载  93

433 通过JTAG 口对配置芯片进行间接编程  95

434 USB-Blaster 驱动程序安装方法  96

44 电路原理图设计流程  96

441 设计一个半加器  96

442 完成全加器顶层设计  98

443 对全加器进行时序仿真和硬件测试  99

45 利用属性表述实现引脚锁定  100

46 SignalTap II 的用法  101

47 编辑SignalTap II 的触发信号  106

48 安装Quartus II 131 说明  106

习题  111

实验与设计  112

实验4-1 多路选择器设计实验  112

实验4-2 十六进制7 段数码显示译码器设计  112

实验4-3 应用宏模块设计数字频率计  114

实验4-4 计数器设计实验  117实验4-5 数码扫描显示电路设计  118

实验4-6 硬件消抖动电路设计  118

实验4-7 串行静态显示控制电路设计  119

第5 章并行语句  121

51 并行信号赋值语句  121

511 简单信号赋值语句  121

512 条件信号赋值语句  122

513 选择信号赋值语句  123

514 块语句  124

515 元件例化语句  124

516 例化语句应用示例  125

517 生成语句  127

518 GENERIC 参数传递映射语句及其使用方法  129

519 数据类型定义语句  131

5110 VHDL 的存储器描述  134

5111 信号属性及属性函数  136

52 VHDL 运算操作符  138

521 逻辑操作符  138

522 关系操作符  140

523 算术操作符  141

524 省略赋值操作符  144

53 keep 属性应用  145

54 SignalProbe 使用方法  146

习题  148

实验与设计  149

实验5-1 8 位加法器设计实验  149

实验5-2 高速硬件除法器设计  149

实验5-3 移位相加型8 位硬件乘法器设计  150

实验5-4 基于VHDL 代码的频率计设计  150

实验5-5 VGA 彩条信号显示控制电路设计  152

实验5-6 不同类型的移位寄存器设计实验  156

第6 章 LPM宏模块使用方法  157

61 调用计数器宏模块示例  157

611 计数器LPM 模块文本代码的调用  157

612 LPM 计数器代码与参数传递语句应用  159

613 创建工程与仿真测试  160

62 利用属性控制乘法器构建的示例  161

63 LPM_RAM 宏模块用法  162

631 初始化文件及其生成  162 632 LPM_RAM 的设置与调用  164

633 测试LPM_RAM  166

634 用VHDL 代码描述存储器以及用初始化文件加载表述  166

64 LPM_ROM 使用示例  168

641 简易正弦信号发生器设计  168

642 正弦信号发生器硬件实现和测试  169

65 在系统存储器数据读写编辑器应用  171

66 LPM 嵌入式锁相环调用  172

661 建立嵌入式锁相环元件  172

662 测试锁相环  175

67 In-System Sources and Probes Editor 用法  175

68 DDS 实现原理与应用  178

681 DDS 原理  178

682 DDS 信号发生器设计示例  180

习题  181

实验与设计  181

实验6-1 查表式硬件运算器设计  181

实验6-2 正弦信号发生器设计  182

实验6-3 简易逻辑分析仪设计  182

实验6-4 DDS 正弦信号发生器设计  183

实验6-5 移相信号发生器设计  184

实验6-6 VGA 简单图像显示控制模块设计  185

实验6-7 AM 幅度调制信号发生器设计  186

第7 章 VHDL 设计深入  188

71 进程中的信号赋值与变量赋值  188

72 含高阻输出的电路设计  192

721 三态门设计  192

722 双向端口的设计方法  193

723 三态总线电路设计  195

73 资源优化  196

731 资源共享  197

732 逻辑优化  198

733 串行化  199

74 速度优化  200

741 流水线设计  201

742 关键路径法  203

75 仿真延时  204

751 固有延时  204

752 传输延时  205 753 仿真δ  205

习题  206

实验与设计  207

实验7-1 4X4 阵列键盘键信号检测电路设计  207

实验7-2 乐曲硬件演奏电路设计  207

实验7-3 PS2 键盘控制模型电子琴电路设计  210

实验7-4 直流电机综合测控系统设计  213

实验7-5 VGA 动画图像显示控制电路设计  215

第8 章状态机设计技术  216

81 VHDL 状态机的一般形式  216

811 状态机的特点与优势  216

812 VHDL 状态机的一般结构  217

813 状态机设计初始约束与表述  220

82 Moore 型状态机的设计  221

821 多进程状态机  222

822 序列检测器之状态机设计  225

83 Mealy 型状态机的设计  226

84 状态编码  230

841 直接输出型编码  230

842 顺序编码  232

843 一位热码状态编码  232

844 状态编码设置  233

85 安全状态机设计  234

851 程序直接导引法  235

852 状态编码监测法  235

853 借助EDA 优化控制工具生成安全状态机  236

习题  236

实验与设计  236

实验8-1 序列检测器设计  236

实验8-2 并行ADC 采样控制电路实现与硬件验证  237

实验8-3 数据采集模块设计  238

实验8-4 五功能智能逻辑笔设计  239

实验8-5 串行ADC/DAC 采样或信号输出控制电路设计  240

第9 章 16 位CPU 创新设计  241

91 KX9016 的结构与特色  241

92 KX9016 基本硬件系统设计  244

921 单步节拍发生模块  244

922 运算器  244

923 比较器  245 924 基本寄存器与寄存器阵列组  246

925 移位器  250

926 程序与数据存储器  251

93 KX9016v1 指令系统设计  251

931 指令格式  251

932 指令操作码  252

933 软件程序设计实例  254

934 KX9016 v1 控制器设计  255

935 指令设计实例详解  259

94 KX9016 的时序仿真与硬件测试  260

941 时序仿真与指令执行波形分析  260

942 CPU 工作情况的硬件测试  262

95 KX9016 应用程序设计实例和系统优化  264

951 乘法算法及其硬件实现  264

952 除法算法及其硬件实现  265

953 KX9016v1 的硬件系统优化  266

习题  267

实验与设计  268

实验9-1 16 位CPU 验证性设计综合实验  268

实验9-2 新指令设计及程序测试实验  268

实验9-3 16 位CPU 的优化设计与创新  269

第10 章 VHDL 仿真和语句补充  271

101 VHDL 仿真流程  272

102 VHDL 测试基准实例  274

103 VHDL Test Bench 测试流程  276

104 VHDL 子程序  278

1041 函数  278

1042 重载函数  281

1043 决断函数  283

1044 过程  284

1045 重载过程  286

1046 子程序调用语句  286

1047 RETURN 语句  288

1048 并行过程调用语句  289

105 VHDL 程序包  291

习题  293

实验与设计  294

实验10-1 在ModelSim 上对VHDL Test Bench 进行仿真  294

第11 章 DSP Builder 系统设计方法  295 111 MATLAB/DSP Builder 及其设计流程  295

112 正弦信号发生器设计  297

1121 建立设计模型  298

1122 Simulink 模型仿真  304

1123 SignalCompiler 使用方法  307

1124 使用ModelSim 进行RTL 级仿真  308

1125 使用Quartus II 实现时序仿真  310

1126 硬件测试与硬件实现  310

113 DSP Builder 层次化设计  311

114 基于DSP Builder 的DDS 设计  314

1141 DDS 模块设计  314

1142 FSK 调制器设计  316

1143 正交信号发生器设计  318

1144 数控移相信号发生器设计  318

1145 幅度调制信号发生器设计  318

115 HIL 硬件测试  320

习题  324

实验与设计  325

实验11-1 利用MATLAB/DSP Builder 设计基本电路模块  325

实验11-2 基于DSP Builder 的DDS 应用模型设计  326

实验11-3 HIL 硬件环仿真实验  327

第12 章 DSP Builder 设计深入  329

121 FIR 数字滤波器设计  329

1211 FIR 滤波器原理  329

1212 使用DSP Builder 设计FIR 滤波器  330

1213 使用MATLAB 的滤波器设计工具  334

1214 使用FIR IP Core 设计FIR 滤波器  340

122 HDL 模块插入仿真及其设计  343

习题  346

实验与设计  347

实验12-1 FIR 数字滤波器设计实验  347

实验12-2 调制解调模块设计实验  348

实验12-3 HDL Import 模块应用实验  348

附录A EDA 开发系统及相关电路与表格  349

A1 KX_CDS 系列EDA/SOPC 系统  350

A2 部分实验扩展模块  354

A3 mif 文件生成器使用方法 355

A4 核心板FPGA 扩展至KX_CDS 系统对照表  357

A5 多功能重配置结构可切换的部分实验电路图  359

作者简介

编辑推荐

全书重点讲解基础知识,强调基础数字模块的设计与熟练应用。在内容编写上采用纵向和横向相结合的写法,纵向基础知识的学习穿插大量实例讲解,使学生建立完整的知识体系;横向应用实例的学习穿插基础知识要点和设计经验讲解,使学生掌握理论知识的具体应用,从而帮助读者从不同角度认识EDA和vhdl,提高灵活运用的能力,建立自己的设计思路。

作者寄语

全书重点讲解基础知识,强调基础数字模块的设计与熟练应用。在内容编写上采用纵向和横向相结合的写法,纵向基础知识的学习穿插大量实例讲解,使学生建立完整的知识体系;横向应用实例的学习穿插基础知识要点和设计经验讲解,使学生掌握理论知识的具体应用,从而帮助读者从不同角度认识EDA和vhdl,提高灵活运用的能力,建立自己的设计思路。

电子资料

www.luweidong.cn

下一个