发表于2024-11-30
(1)第1版出版以来,获得读者的广泛欢迎,根据读者的宝贵意见和建议,以及他们的具体应用的情况,进行改版。 (2)根据用户建议、结合相关企业应用的需求和高校教学需求修订了第1版内容。相对第1版本,本书删减了一些使用频率较低的语法,减轻了读者掌握语法的难度,同时增加了一些实例,使读者有更多可以学习和揣摩的范例,能更好地理解代码的设计。
Verilog HDL是一种使用广泛的硬件描述语言,目前在国内无论是集成电路还是嵌入式设计的相关专业都会使用到这种硬件描述语言。市面上介绍Verilog HDL的教材非常广泛,各有不同的偏重。 在第1版广泛应用的基础上,吸收了众多读者的宝贵建议,大幅完善了第2版内容。本书着重从设计角度入手,每章都力求让读者掌握一种设计方法,能够利用本章知识进行完整的设计,从模块的角度逐步完成对Verilog HDL语法的学习,从而在整体上掌握Verilog HDL语法。为了达到这个目的,每章中都会给出使用本章知识完成的实例,按照门级、数据流级、行为级、任务和函数、测试模块、可综合设计和完整实例的顺序向读者介绍Verilog HDL的语法和使用方式。书中出现的所有代码均经过仿真,力求准确,另外配套有书中所有实例源文件和实例操作的视频讲解。
作者团队主要负责人谢龙汉,华南理工大学机械与汽车工程学院,副院长,教授。2002年毕业于浙江大学过程装备与控制工程专业本科,在浙江大学华工过程机械研究所取得硕士学位,之后在广州本田汽车有限公司研发中心工作过两年,2010年获得香港中文大学机械与自动化工程系的博士学位。国内外学术期刊上发表30多篇学术论文,写作经验丰富,作品技术含量高,实用性强。
目 录
第1章 Verilog HDL入门简介 1
1.1 集成电路设计流程简介 1
1.2 数字电路设计范例 3
1.3 Verilog HDL建模范例 5
1.4 两种硬件描述语言 9
第2章 Verilog HDL门级建模 10
2.1 门级建模范例 10
2.2 门级建模基本语法 12
2.2.1 模块定义 12
2.2.2 端口声明 13
2.2.3 门级调用 14
2.2.4 模块实例化 17
2.2.5 内部连线声明 20
2.3 MOS开关与UDP 21
2.4 层次化设计 22
2.5 应用实例 22
实例2-1―4位全加器的门级建模 22
实例2-2―2-4译码器的门级建模 25
实例2-3―主从D触发器的门级建模 27
实例2-4―1位比较器的门级建模 28
2.6 习题 30
第3章 Verilog HDL数据流级建模 31
3.1 数据流级建模范例 31
3.2 数据流级建模基本语法 32
3.3 操作数 33
3.3.1 数字 33
3.3.2 参数 35
3.3.3 线网 37
3.3.4 寄存器 38
3.4 操作符 39
3.4.1 算术操作符 39
3.4.2 按位操作符 39
3.4.3 逻辑操作符 40
3.4.4 关系操作符 41
3.4.5 等式操作符 41
3.4.6 移位操作符 42
3.4.7 拼接操作符 42
3.4.8 缩减操作符 43
3.4.9 条件操作符 43
3.4.10 操作符优先级 44
3.5 应用实例 45
实例3-1―4位全加器的数据流级建模 45
实例3-2―2-4译码器的数据流级建模 47
实例3-3―主从D触发器的数据流级建模 49
实例3-4―4位比较器的数据流级建模 50
3.6 习题 51
第4章 Verilog HDL行为级建模 53
4.1 行为级建模范例 53
4.2 initial结构和always结构 56
4.2.1 initial结构 56
4.2.2 always结构 58
4.3 顺序块和并行块 61
4.3.1 顺序块 61
4.3.2 并行块 62
4.3.3 块的嵌套 63
4.4 if语句 64
4.5 case语句 67
4.6 循环语句 69
4.6.1 while循环 69
4.6.2 for循环 70
4.6.3 repeat循环 71
4.6.4 forever循环 71
4.7 过程性赋值语句 72
4.7.1 阻塞性赋值语句 72
4.7.2 非阻塞性赋值语句 72
4.8 应用实例 74
实例4-1―4位全加器的行为级建模 74
实例4-2―简易ALU电路的行为级建模 75
实例4-3―下降沿触发D触发器的行为级建模 77
实例4-4―十进制计数器的行为级建模 78
4.9 习题 80
第5章 任务、函数与编译指令 81
5.1 任务 81
5.1.1 任务的声明和调用 82
5.1.2 自动任务 84
5.2 函数 86
5.2.1 函数的声明和调用 87
5.2.2 任务与函数的比较 89
5.3 系统任务和系统函数 89
5.3.1 显示任务 90
5.3.2 监视任务 93
5.3.3 仿真控制任务 94
5.3.4 随机函数 95
5.3.5 文件控制任务 96
5.3.6 值变转储任务 100
5.4 编译指令 102
5.4.1 `define 102
5.4.2 `include 104
5.4.3 `timescale 105
5.5 完整的module参考模型 108
5.6 应用实例 109
实例5-1―信号同步任务 109
实例5-2―阶乘任务 110
实例5-3―可控移位函数 111
实例5-4―偶校验任务 112
实例5-5―算术逻辑函数 114
5.7 习题 115
第6章 Verilog HDL测试模块 117
6.1 测试模块范例 117
6.2 时钟信号 119
6.3 复位信号 120
6.4 测试向量 122
6.5 响应监控 123
6.6 仿真中对信号的控制 127
6.7 代码覆盖 129
6.8 应用实例 130
实例6-1―组合逻辑的测试模块 130
实例6-2―时序逻辑的测试模块 132
实例6-3―除法器的测试模块 135
6.9 习题 138
第7章 可综合模型设计 139
7.1 逻辑综合过程 139
7.2 延迟 142
7.3 再谈阻塞赋值与非阻塞赋值 148
7.4 可综合语法 155
7.5 代码风格 157
7.5.1 多重驱动问题 157
7.5.2 敏感列表不完整 158
7.5.3 分支情况不全 158
7.5.4 组合和时序混合设计 159
7.5.5 逻辑简化 160
7.5.6 流水线思想 160
7.6 应用实例 164
实例7-1―SR锁存器延迟模型 164
实例7-2―超前进位加法器 165
实例7-3―移位除法器模型 169
7.7 习题 174
第8章 有限状态机设计 175
8.1 有限状态机简介 175
8.2 两种红绿灯电路的状态机模型 176
8.2.1 moore型红绿灯 176
8.2.2 mealy型红绿灯 181
8.3 深入理解状态机 183
8.3.1 一段式状态机 184
8.3.2 两段式状态机 188
8.3.3 三段式状态机 190
8.3.4 状态编码的选择 198
8.4 应用实例 199
实例8-1―独热码状态机 199
实例8-2―格雷码状态机 203
实例8-3―序列检测模块 207
8.5 习题 211
第9章 常见功能电路的HDL模型 212
9.1 锁存器与触发器 212
9.2 编码器与译码器 220
9.3 寄存器 223
9.4 计数器 228
9.5 分频器 232
9.6 乘法器 238
9.7 存储单元 246
9.8 习题 250
第10章 完整的设计实例 251
10.1 异步FIFO 251
10.1.1 异步FIFO的介绍与整体结构 251
10.1.2 亚稳态的处理 253
10.1.3 空满状态的判断 254
10.1.4 子模块设计 257
10.1.5 整体仿真结果 265
10.2 三角函数计算器 268
10.2.1 设计要求的提出 268
10.2.2 数据格式 268
10.2.3 算法的选择与原理结构 269
10.2.4 确定总体模块 272
10.2.5 内部结构的划分 272
10.2.6 分频器模块 274
10.2.7 控制模块 274
10.2.8 迭代设计模块 279
10.2.9 功能仿真与时序仿真 293
10.3 简易CPU模型 296
10.3.1 教学模型的要求 296
10.3.2 指令格式的确定 297
10.3.3 整体结构划分 298
10.3.4 控制模块设计 299
10.3.5 其余子模块设计 304
10.3.6 功能仿真与时序仿真 308
第11章 实验 312
实验一 简单组合逻辑电路设计(学生版) 312
实验一 辅导版 314
实验二 行为级模型设计(学生版) 319
实验二 辅导版 321
实验三 利用FPGA验证设计功能(学生版) 326
实验三 辅导版 327
实验四 任务与函数的设计(学生版) 332
实验四 辅导版 334
实验五 流水线的使用(学生版) 337
实验五 辅导版 339
实验六 信号发生器设计(学生版) 342
实验六 辅导版 344
实验七 有限状态机的设计(学生版) 347
实验七 辅导版 348
第12章 课程设计 356
选题一 出租车计费器 356
选题二 智力抢答器 362
选题三 点阵显示 369
选题四 自动售货机 373
选题五 篮球24秒计时 379
选题六 乒乓球游戏电路 384
选题七 CRC检测 398
选题八 堆栈设计 404
选题九 数字闹钟 410
选题十 汉明码编译码器 418
附录A 课程测试样卷 424
附录B 习题及样卷答案 429
再 版 前 言
Verilog HDL是一种使用非常广泛的硬件描述语言,可以使用在电路和系统级的设计上,也可以作为嵌入式开发的编程语言之一。随着集成电路产业在我国的蓬勃发展,HDL语言的教学工作也在很多高校展开,市面上也有很多国内外的优秀教材。
作者从事Verilog HDL课程教学多年,使用过十余种本版和引进版的教材,然而在教学课程结束之后,学生反馈回来的信息,往往是难以应用。造成这种情况的原因很多,一是部分教材过于偏重语法细节,在一个细小的语法上纠结太多,使学生陷入了语法大于一切的迷途;二是在学习中与实际电路脱节,写出的代码只适合仿真,不知硬件描述语言最终面向的对象是硬件,只能仿真的代码用途有限;三是缺少直观的认识,对编写的代码、模块等只有纸面上的了解,不去追究其内部的细节。这样学习Verilog HDL语言之后,效果和没学之前相比,只是多认识了一些语法而已。
自本书第1版2014年出版以来,获得读者的广泛欢迎,已多次重印,并且,很多读者来信介绍他们具体应用Verilog HDL的情况,对本书提出了很多宝贵意见和建议。在此基础上,我们根据用户建议,结合相关企业应用的需求和高校教学需求修订了第1版内容。相对于第1版本,本书删减了一些使用频率较低的语法,降低了读者掌握语法的难度,同时增加了一些实例,使读者有更多可以学习和揣摩的范例,能更好地理解代码的设计。
本书在简单地介绍了数字电路和Verilog HDL的相互关系之后,比较简洁地介绍了基本语法,在介绍语法时给出了范例,以使语义明了,并且为每章出现的语法匹配了综合实例,使读者进一步加深认识。而在介绍语法之后,重点内容放在如何编写可综合的设计模块上,使读者最后编写的模块可以在硬件电路上实现,本书按如下结构进行展开。
第1章,Verilog HDL入门简介。主要回顾数字电路的设计过程,并介绍使用Verilog HDL进行电路设计的基本流程和简单示例,使读者有一个初步的了解。
第2章,Verilog HDL门级建模。介绍Verilog HDL门级建模的基本语法,主要讲解基本逻辑门的使用方法和层次化建模思想,尝试设计一个可以执行的模块,并补充了必需的语法,在章节的最后给出了四个门级建模的实例,供读者参考。
第3章,Verilog HDL数据流级建模。介绍数据流级建模的相关语法,主要是一些操作数的定义和操作符的使用方法,这些操作数和操作符是Verilog HDL的建模基础,在实际设计中使用频繁,所以在这些语法中给出了很多小例子,在学习时要注意例子间的细小差别。
第4章,Verilog HDL行为级建模。行为级建模,也是进行Verilog HDL设计的基本语法,主要介绍initial和always结构在电路中的使用情况,以及一些语句,如if语句、case语句、for语句和循环语句,讲解顺序块和并行块的适用情况,并介绍命名块和块的禁用语法,最后通过几个实例,用这些语法进行电路设计。
第5章,任务、函数与编译指令。函数和任务是Verilog HDL中的重要组成部分,它们是一些具有实际功能的代码片段,类似于子程序,可以在Verilog HDL代码中直接调用,非常灵活。另外,编译指令是仿真中的重要指令,也需要理解其用法。
第6章,Verilog HDL测试模块。从仿真测试的角度编写测试模块,力图用多种方式生成不同信号,给出同一种信号的多种表达形式,开阔读者的设计思路,使读者能够按照自己习惯的思路来编写测试信号,而不是局限在某一种写法上。
第7章,可综合模型设计。从本章开始,所有的模块都是可以综合成最终电路的,因为Verilog HDL语言就是要编写可以生成实际电路的模块代码。可综合模型设计中需要注意许多问题,如阻塞和非阻塞赋值、多驱动问题、敏感列表问题等,还有一些语法根本不可以综合,本章也一一列出。最后介绍了流水线的基本思想,并给出了一个雏形。
第8章,有限状态机设计。状态机的设计是时序电路设计的核心,越大型的时序电路状态机就越显得重要。本章不仅介绍了moore型和mealy型状态机的区别,给出了一段式、两段式和三段式的写法,而且从硬件电路的角度对状态机不同写法得到的电路信号变化进行解释,使读者更明白所写模块变成电路后的工作状况。
第9章,常见功能电路的HDL模型。本章一方面让读者对这些功能电路有一定的了解,另一方面也是希望读者能在这些例子中进一步学习Verilog HDL编写模块的设计方法。
第10章,完整的设计实例。本章有三个综合实例,从设计的提出开始,到最后的时序仿真结束,完成前端设计的基本流程,使读者有一个整体的流程认知。
第11章,实验。本章有七个实验,实验部分采用了比较新颖的方式,每个实验都有一个主题,在完成这个主题的过程中,需要读者编写一些代码,同时也给出了参考代码。读者一方面可以通过这些实验来完成一些实例的设计,另一方面在设计中也可以进一步掌握实验中涉及的语法。每个实验都分成了学生版和辅导版两个部分,学生版可以直接在实验中给学生使用,辅导版则可以给教师作为参考或学生自学辅导使用。
第12章,课程设计。本章是一些规模中等的设计模块,每个题目都给出了设计要求、实现代码和仿真结果,部分题目还给出了引脚配置,每个题目的最后都提出了一些问题,还给出了功能扩展建议,当学生觉得题目简单想要加大难度时可以使用这些扩展功能。
附录A,课程测试样卷。给出了测试题,可以检查读者的掌握情况。
附录B,习题及样卷答案。给出了习题和测试题的答案,以便参考。
在学习Verilog HDL的过程中,一定要多编写代码,多进行仿真,这样可以帮助读者更好地掌握语法和设计思想。另外,如果有条件的话,建议使用一些FPGA或CPLD的开发板,把设计的模块用开发板实现,对读者的学习非常有益。
本书第1~6章和测试题部分由哈尔滨理工大学于斌编写,第7~12章由哈尔滨理工大学黄海编写。参与本书编写和视频开发的人员还有谢龙汉、蔡思祺、林伟、魏艳光、林木议、王悦阳、林伟洁、林树财、郑晓、吴苗、李翔、朱小远、唐培培、耿煜、尚涛、邓奕、张桂东、鲁力等。由于时间仓促,书中疏漏之处,请读者批评指正,可通过电子邮件yubin@hrbust.edu.cn与我们交流。本书配套素材光盘内容。请在华信教育资源网(www.hxedu.com.cn)的本书页面下载,或与本书作者和编辑联系。
编著者
Verilog HDL数字系统设计及仿真(第2版) 下载 mobi pdf epub txt 电子书 格式 2024
Verilog HDL数字系统设计及仿真(第2版) 下载 mobi epub pdf 电子书Verilog HDL数字系统设计及仿真(第2版) mobi epub pdf txt 电子书 格式下载 2024