logo资料库

Xilinx大学合作指定教材):Verilog HDL程序设计与实践(云创工作室).pdf

第1页 / 共439页
第2页 / 共439页
第3页 / 共439页
第4页 / 共439页
第5页 / 共439页
第6页 / 共439页
第7页 / 共439页
第8页 / 共439页
资料共439页,剩余部分请下载后查看
Verilog HDL 硬件描述语言 程序设计与实践教程 云创工作室 人民邮电出版社 1
前言 目前,EDA 技术已经成为现代电子设计领域的基本手段,涵盖印制电路板(PCB)设计、 可编程逻辑芯片开发、专用集成芯片设计以及系统验证等诸多领域。硬件描述语言(HDL) 是 EDA 技术中的一个重要组成部分,可应用于除 PCB 设计外的各个领域。 Verilog HDL 语言为两个主流 HDL 语言之一(另一个是 VHDL 语言),在全球范围具有 广泛的用户群,具有超过 80%的行业覆盖率。在美国,使用 Verilog HDL 进行设计的工程师 大约有 l0 多万人,占 HDL 设计行业工程师的 90%左右,并有超过 200 多所大学开设有 Verilog HDL 语言的相关课程,包括斯坦福大学、卡梅隆大学这样的著名高校。在中国,业界大约有 一半的工程师在使用 Verilog HDL 语言,并且这一比例还在快速上升;在教育界有以夏宇闻 老师为代表的各位前辈进行了初期推广,目前已具备较大的应用规模。其实就学习难度而言, Verilog HDL 语言要比 VHDL 简单的多,且和 C 语言语法风格类似,更容易被在校大学生和 初学者接受。 Verilog HDL 语言的学习是一个实践性很强的过程,直接上手就去完成芯片设计,需要 大量的资金和昂贵的成本,并面临极大的风险,对于大多数在校学生、工程师和企业而言都 是无法承受的,因此可编程逻辑器件(CPLD、FPGA)就成为最好的学习和创新平台。为了 让更多的在校学生和初学者更好地切近行业需求,同时为了改善高校教学内容,Xilinx 大学 计划(Xilinx 公司是全球最大的可编程逻辑器件提供商)和上海智翔信息服务技术有限公司 推出了一系列教材和相关课程,本书也是其中的一本,通过 Xilinx 公司的 FPGA 平台来介绍 基于 Verilog HDL 语言开发的相关知识。 本书按照开门见山、自顶向下的方式来组织内容,在介绍相关知识点之前,先告诉读者 其出现的背景、本质特征以及如何语法,让读者不仅掌握基本语法,并能够获得深层次理解。 全书内容分为 13 章,第 1 章为 EDA 设计与 Verilog HDL 语言概述;第 2 章 Verilog HDL 基 础与开发平台操作指南;第 3 章为 Verilog HDL 程序结构;第 4 章为 Verilog HDL 语言基本要 素;第 5 章为面向综合的描述语句;第 6 章为面向验证和仿真的描述语句;第 7 章为系统任 务和编译预处理语句;第 8 章为 Verilog HDL 难点解析;第 9 章为高级逻辑设计思想与代码 风格;第 10 章为可综合状态机开发实例;第 11 章为常用逻辑的 Verilog HDL 实现;第 12 章 为 Xilinx 硬核模块的 Verilog HDL 调用;第 13 章为 RS232 串口总线接口模块的设计。本章 均附有一定的思考题,供读者练习和自我检查。 本书语言简洁,层次清晰,以 Verilog HDL 语言的各方面开发为主线,遵照硬件应用系 统开发的基本步骤和思路进行详细讲解,并穿插 ISE 开发工具的操作技巧与注意事项,具备 很强的可读性、指导性和实用性。本书在成书过程中,参考了多篇文献,包括书籍和论文, 这里向其作者表示感谢。本书是云创工作室的团队合作的成果,在这里感谢给予我们支持、 帮助的师长和朋友们。 本书主要面向通信、电子、计算机等相关专业大学生,也适合从事电子设计和开发人员 阅读,特别是希望系统学习 Verilog HDL 语言的工程师。 2
目录 前言...................................................................................................................................................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 3
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
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 5
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 6
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 7
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 8
分享到:
收藏