Verilog HDL 程序设计与实践 PDF 文档

发布于 2024-08-19 13:13:56 字数 9010 浏览 24 评论 0

目前,EDA 技术已经成为现代电子设计领域的基本手段,涵盖印制电路板(PCB)设计、可编程逻辑芯片开发、专用集成芯片设计以及系统验证等诸多领域。硬件描述语言(HDL)是 EDA 技术中的一个重要组成部分,可应用于除 PCB 设计外的各个领域。

Verilog HDL 语言为两个主流 HDL 语言之一(另一个是 VHDL 语言),在全球范围具有广泛的用户群,具有超过 80%的行业覆盖率。在美国,使用 Verilog HDL 进行设计的工程师大约有 l0 多万人,占 HDL 设计行业工程师的 90%左右,并有超过 200 多所大学开设有 VerilogHDL 语言的相关课程,包括斯坦福大学、卡梅隆大学这样的著名高校。

在中国,业界大约有一半的工程师在使用 Verilog HDL 语言,并且这一比例还在快速上升;在教育界有以夏宇闻老师为代表的各位前辈进行了初期推广,目前已具备较大的应用规模。其实就学习难度而言,Verilog HDL 语言要比 VHDL 简单的多,且和 C 语言语法风格类似,更容易被在校大学生和初学者接受。

前言..2
目录..3
第 1 章 EDA 设计与 Verilog HDL 语言概述 .. 11
1.1 EDA 设计概述.... 11
1.1.1 EDA 技术简介 11
1.1.2 EDA 与传统电子系统设计方法...12
1.1.3 可编程逻辑器件对 EDA 技术的要求....14
1.2 Verilog HDL 语言简介 .15
1.2.1 硬件描述语言说明 ...15
1.2.2 Verilog HDL 语言的历史....16
1.2.3 Verilog HDL 语言的能力....16
1.2.4 Verilog HDL 和 VHDL 语言的比较..17
1.2.5 Verilog HDL 和 C 语言的比较 18
1.3 Verilog HDL 语言的描述层次说明..18
1.3.1 Verilog HDL 语言描述能力综述..18
1.3.2 系统级和算法级建模 19
1.3.3 RTL 级建模 19
1.3.4 门级和开关级建模 ...19
1.4 基于 Verilog HDL 语言的 CPLD/FPGA 开发流程 .20
1.5 Verilog HDL 语言的可综合与仿真特性....22
1.5.1 Verilog HDL 语句的可综合性说明...22
1.5.2 Verilog HDL 语句的仿真特性说明...23
1.6 本章小结 ..24
1.7 思考题.24
第 2 章 Verilog HDL 基础与开发平台操作指南..25
2.1 Verilog HDL 程序开发的必备知识..25
2.1.1 数字的表示形式 ..25
2.1.2 常用术语解释 .27
2.1.2 Verilog HDL 程序的优劣判断指标...28
2.2 Verilog HDL 程序设计模式....29
2.2.1 自顶向下的设计模式 29
2.2.2 层次、模块化模式 ...30
2.2.3 IP 核的重用 30
2.3 Xilinx Spartan 3E 系列 FPGA 简介..31
2.3.1 Spartan-3E 系列 FPGA 简介 ...32
2.3.2 Spartan-3E 系列 FPGA 结构说明.32
2.4 ISE 快速入门 .36
2.4.1 ISE 操作基础 ..36
2.4.2 新建工程 ....40
2.4.3 Verilog HDL 代码的输入与功能仿真....41
2.4.4 Xilinx IP 核的使用....46
2.4.5 用户约束输入 .53
2.4.6 综合与实现 56
2.4.7 器件配置 ....58
2.5 ModelSim 快速入门 67
2.5.1 ModelSim 仿真软件的安装 67
2.5.2 在 ModelSim 中指定 Xilinx 的仿真库...70
2.5.3 ModelSim 的基本操作...71
2.6 本章小结 ..73
2.7 思考题.74
第 3 章 Verilog HDL 程序结构 ....75
3.1 程序模块说明 ....75
3.1.1 Verilog HDL 模块的概念....75
3.1.2 模块的基本结构 ..75
3.1.3 端口说明 ....77
3.2 Verilog HDL 的层次化设计....77
3.2.1 Verilog HDL 层次化设计的表现形式....77
3.2.2 模块例化 ....77
3.2.3 参数映射 ....82
3.2.4 在 ISE 中通过图形化方式实现层次化设计 ....84
3.3 Verilog HDL 语言的描述形式 86
3.3.1 结构描述形式 .87
3.3.2 行为描述形式 .94
3.3.4 混合设计模式 .98
3.4 本章小结 ..98
3.5 思考题.98
第 4 章 Verilog HDL 语言基本要素 ....100
4.1 标志符与注释 ..100
4.1.1 标志符 .100
4.1.2 注释 100
4.2 数字与逻辑数值 ...101
4.2.1 逻辑数值 ..101
4.2.2 常量 101
4.2.3 参数 102
4.3 数据类型 102
4.3.1 数据类型综述 ....102
4.3.2 线网类型 ..103
4.3.3 寄存器类型 ...107
4.4 运算符和表达式 ... 110
4.4.1 赋值运算符 ... 110
4.4.2 算术运算符 ... 112
4.4.3 逻辑运算符 ... 116
4.4.4 关系运算符 ... 117
4.4.5 条件运算符 ... 119
4.4.6 位运算符 ..120
4.4.7 拼接运算符 ...121
4.4.8 移位运算符 ...122
4.4.9 一元约简运算符 123
4.5 本章小结 124
4.6 思考题....124
第 5 章 面向综合的行为描述语句 .125
5.1 触发事件控制 ..125
5.1.1 信号电平事件语句 .125
5.1.2 信号跳变沿事件语句...126
5.2 条件语句 127
5.2.1 IF 语句.127
5.2.2 CASE 语句 ....129
5.2.3 条件语句的深入理解...132
5.3 循环语句 135
5.3.1 REPEAT 语句 135
5.3.2 WHILE 语句 .136
5.3.3 FOR 语句 .137
5.3.4 循环语句的深入理解...140
5.4 任务与函数 .145
5.4.1 任务(TASK)语句 ....145
5.4.2 函数(FUNCTION)语句 ....147
5.4.3 任务和函数的深入理解....149
5.5 本章小结 150
5.6 思考题....150
第 6 章 面向验证和仿真的行为描述语句 152
6.1 验证与仿真概述 ...152
6.1.1 代码验证与仿真概述...152
6.1.2 测试平台说明 ....153
6.1.3 验证测试方法论 155
6.1.4 Testbench 结构说明 159
6.2 仿真程序执行原理 ....160
6.2.1 Verilog HDL 语义简介.160
6.2.2 Verilog HDL 仿真原理.160
6.3 延时控制语句 ..162
6.3.1 延时控制的语法说明...162
6.3.2 延时控制应用实例 .163
6.4 常用的行为仿真描述语句 ..166
6.4.1 循环语句 ..166
6.4.2 FORCE 和 RELEASE 语句 ...168
6.4.3 WAIT 语句 ....169
6.4.4 事件控制语句 ....170
6.4.5 TASK 和 FUNCTION 语句 ...171
6.4.6 串行激励与并行激励语句 172
6.5 用户自定义元件 ...173
6.5.1 UDP 的定义与调用 173
6.5.2 UDP 应用实例 ...173
6.6 仿真激励的产生 ...176
6.6.1 变量初始化 ...176
6.6.2 时钟信号的产生 180
6.6.3 复位信号的产生 182
6.6.4 数据信号的产生 183
6.6.5 典型测试平台实例 .184
6.6.6 关于仿真效率的说明...185
6.8 Xilinx 仿真工具 ISE Simulator..186
6.8.1 基于波形测试法的仿真....186
6.8.2 基于 Verilog HDL 测试平台的仿真 188
6.9 Xilinx 系统验证工具 ChipScope Pro ..193
6.9.1 ChipScope Pro 工具简介...193
6.9.2 ChipScope Pro 开发实例...195
6.10 本章小结 ...202
6.11 思考题 ..203
第 7 章 系统任务和编译预处理语句 ..204
7.1 系统任务语句 ..204
7.1.1 输出显示任务 ....204
7.1.2 文件输入输出任务 .210
7.1.3 时间标度任务 ....215
7.1.4 仿真控制任务 ....216
7.1.5 仿真时间函数 ....217
7.1.6 数字类型变换函数 .219
7.1.7 概率分布函数 ....220
7.2 编译预处理语句 ...221
7.2.1 宏定义`define 语句 .222
7.2.2 条件编译命令`if 语句..223
7.2.3 文件包含`include 语句 224
7.2.4 时间尺度`timescale 语句 ..227
7.2.5 其他语句 ..228
7.3 本章小结 229
7.4 思考题....229
第 8 章 Verilog HDL 可综合设计的难点解析....230
8.1 组合逻辑和时序逻辑 230
8.1.1 组合逻辑设计 ....230
8.1.2 时序逻辑设计 ....234
8.1.3 组合逻辑电路中的竞争与冒险..238
8.1.4 时序逻辑的时钟选择策略 243
8.2 同步时序电路和异步时序电路 246
8.2.1 同步时序电路设计 .246
8.2.2 异步时序电路设计 .250
8.2.3 异步电路和同步电路的比较.254
8.3 阻塞赋值与非阻塞赋值 .255
8.3.1 阻塞赋值与非阻塞过程的深入理解....255
8.3.2 组合逻辑中的阻塞与非阻塞.256
8.3.3 时序逻辑中的阻塞与非阻塞.257
8.3.4 编码建议 ..261
8.4 双向端口 262
8.4.1 双向端口简介 ....262
8.4.2 双向端口应用实例 .262
8.6 锁存器....266
8.6.1 锁存器本质说明 266
8.6.2 锁存器的产生原因和处理策略..266
8.6.3 锁存器的应用规则 .268
8.7 消除不确定输入的电路设计 ...271
8.7.1 初始值不确定态的消除....271
8.7.2 逻辑运算不确定态的消除 271
8.8 面向硬件的设计思维 272
8.8.1 基本的硬件设计模式...272
8.8.2 程序执行顺序 ....273
8.8.3 时钟是时序电路的控制者 274
8.9 本章小结 276
8.10 思考题..276
第 9 章 高级逻辑设计思想与代码风格....278
9.1 通用指导原则 ..278
9.1.1 面积和速度的互换原则....278
9.1.2 模块划分原则 ....279
9.2 代码风格 279
9.2.1 代码风格的含义 279
9.2.2 通用的代码设计风格...280
9.2.3 通用的代码书写风格...281
9.2.3 Xilinx 专用代码设计风格 284
9.3 常用的设计思想与代码设计风格.286
9.3.1 流水线技术原理和 Verilog HDL 实现.286
9.3.2 逻辑复用与逻辑复制原理和 Verilog HDL 实现 292
9.3.3 关键路径提取原理和 Verilog HDL 实现 ..296
9.3.4 逻辑合并与拆分原理和 Verilog HDL 实现 ...297
9.3.5 多时钟域接口设计技巧....298
9.4 本章小结 311
9.5 思考题....312
第 10 章 可综合状态机开发实例 ...313
10.1 状态机基本概念 .313
10.1.1 状态机工作原理以及分类...313
10.1.2 状态机描述方式 ...314
10.1.3 状态机设计思想 ...316
10.2 可综合状态机设计原则 ....316
10.2.1 状态机开发流程 ...316
10.2.2 状态编码原则 ..317
10.2.3 状态机的容错处理 ....318
10.2.4 常用的设计准则 ...318
10.3 状态机的 Verilog HDL 实现 ..319
10.3.1 状态机实现综述 ...319
10.3.2 Moore 状态机开发实例..322
10.3.3 Mealy 状态机开发实例 ..326
10.4 Xilinx 状态机设计工具 StateCAD ....328
10.4.1 StateCAD 基础介绍 ...328
10.4.2 编辑状态机 .329
10.4.3 状态机优化以及 HDL 代码生成...332
10.4.4 测试状态机 .335
10.5 本章小结 ...336
10.6 思考题..337
第 11 章 常用逻辑的 Verilog HDL 实现...338
11.1 时钟处理电路的 Verilog HDL 实现....338
11.1.1 整数分频模块 ..338
11.1.2 非整数分频模块....341
11.1.3 同步整形电路 ..344
11.2 乘加运算的 Verilog HDL 实现..346
11.2.1 加法器的 Verilog HDL 实现 346
11.2.2 乘法器的 Verilog HDL 实现 350
11.2.3 数据的截位与扩位 355
11.3 数码管接口电路的 Verilog HDL 实现 357
11.3.1 数码管简介 .357
11.3.2 数码管显示电路的 Verilog HDL 实现 ....358
11.4 按键接口电路的 Verilog HDL 实现.360
11.4.1 按键扫描电路的 Verilog HDL 实现 ...360
11.4.2 按键防抖电路的 Verilog HDL 实现 ...364
11.5 CRC 编码器的 Verilog HDL 实现..366
11.5.1 CRC 校验码的原理....366
11.5.2 CRC16 编码器的 Verilog HDL 实现 ..367
11.6 片内存储器的 Verilog HDL 实现...369
11.6.1 RAM 的 Verilog HDL 实现..369
11.6.2 移位寄存器的 Verilog HDL 实现 ..373
11.7 SPI 接口协议的 Verilog HDL 实现 376
11.7.1 SPI 通信协议....376
11.7.2 SPI 协议的 Verilog HDL 实现 ..378
11.8 本章小结 .382
11.9 思考题 382
第 12 章 Xilinx 硬核模块的 Verilog HDL 调用..384
12.1 差分 I/O 对管脚的 Verilog HDL 调用 ..384
12.1.1 差分 I/O 对管脚结构说明 ...384
12.1.2 调用差分 I/O 的参考设计 ...387
12.2 DCM 模块的 Verilog HDL 调用 ..388
12.2.1 DCM 模块的说明 .388
12.2.2 调用 DCM 模块的参考设计 391
12.3 硬核乘法器的 Verilog HDL 调用 395
12.3.1 硬核乘法器结构说明.395
12.3.2 基于 IP 核调用硬核乘法器 .396
12.4 块 RAM 的 Verilog HDL 调用 ....398
12.4.1 块 RAM 结构说明 398
12.4.3 基于 IP 核调用块 RAM 单元 ...402
12.5 本章小结 ...408
12.6 思考题..408
第 13 章 串口接口的 Verilog HDL 设计...410
13.1 串口以及串口通信协议简介 410
13.1.1 串口接口 410
13.1.2 RS-232 通信协议 ..410
13.2 串口通信控制器的 Verilog HDL 实现..412
13.2.1 系统功能说明 ..412
13.2.2 顶层模块的组成结构和 Verilog HDL 实现 .412
13.2.3 波特率发生器模块的 Verilog HDL 实现 415
13.2.4 发送模块的 Verilog HDL 实现.417
13.2.5 接收模块的 Verilog HDL 实现.423
13.3 RS232 设计板级调试 .428
13.3.1 板级调试说明 ..428
13.3.2 配置超级终端 ..429
13.3.3 添加 ChipScope Pro 核 ...432
13.3.4 系统调试结果 ..435
13.4 本章小结 .438
13.5 思考题 438
参考文献....

下载地址:https://www.wenjiangs.com/wp-content/uploads/2024/03/L6bTPrXyJgqpFtLz.zip

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

素食主义者

暂无简介

文章
评论
27 人气
更多

推荐作者

yuanzihao09

文章 0 评论 0

1337793151

文章 0 评论 0

你在我安

文章 0 评论 0

qq_QhAHT0kB

文章 0 评论 0

aaaa123451

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文