哈工大verilog语言

上传人:101****457 文档编号:106861241 上传时间:2019-10-16 格式:PDF 页数:91 大小:855.83KB
返回 下载 相关 举报
哈工大verilog语言_第1页
第1页 / 共91页
哈工大verilog语言_第2页
第2页 / 共91页
哈工大verilog语言_第3页
第3页 / 共91页
哈工大verilog语言_第4页
第4页 / 共91页
哈工大verilog语言_第5页
第5页 / 共91页
点击查看更多>>
资源描述

《哈工大verilog语言》由会员分享,可在线阅读,更多相关《哈工大verilog语言(91页珍藏版)》请在金锄头文库上搜索。

1、10.1 引言引言 第第10章章 Verilog 硬件描述语言实例硬件描述语言实例 ?什么是什么是Verilog HDL ?能够对数字逻辑电路的功能和结构进行描述 的一种高级编程语言 能够对数字逻辑电路的功能和结构进行描述 的一种高级编程语言 ?PLD/FPGA的设计开发语言的设计开发语言 ?编写程序描述数字编写程序描述数字电路的功能与结构电路的功能与结构 ?描述电路的功能描述电路的功能 ?描述电路的结构描述电路的结构 ?表达具有并行性表达具有并行性 Verilog HDL特点 ?符合符合C语言语法习惯语言语法习惯 ?简单,容易上手,缩短培训时间,如果有数字 电子技术和 简单,容易上手,缩短培

2、训时间,如果有数字 电子技术和C语言的基础,稍加学习即可编写 能实现的电路。 语言的基础,稍加学习即可编写 能实现的电路。 ?但也仅仅是语法上的相似而已但也仅仅是语法上的相似而已 ?并发执行,多条语句可能同时执行,在硬件上, 实现不同功能的电路在同一时刻工作 并发执行,多条语句可能同时执行,在硬件上, 实现不同功能的电路在同一时刻工作 ?具有时序的概念,硬件电路输入到输出存在延迟。具有时序的概念,硬件电路输入到输出存在延迟。 ?语法规则死,纠错仿真功能弱,错误信息不完 整,较 语法规则死,纠错仿真功能弱,错误信息不完 整,较C语言更难发现错误语言更难发现错误 Verilog HDL语言的描述风

3、格 ?Verilog HDL语言的描述风格,或者说描述方式, 又可分为三类 语言的描述风格,或者说描述方式, 又可分为三类 ?行为型描述指对行为与功能进行描述,它只描述 行为特征,而没有涉及到用什么样的时序逻辑电 路来实现,因此是一种使用高级语言的方法,具 有很强的通用性和有效性。 行为型描述指对行为与功能进行描述,它只描述 行为特征,而没有涉及到用什么样的时序逻辑电 路来实现,因此是一种使用高级语言的方法,具 有很强的通用性和有效性。 ?数据流型描述指根据数据在寄存器之间的流动和 处理过程对电路进行描述。通过 数据流型描述指根据数据在寄存器之间的流动和 处理过程对电路进行描述。通过assig

4、n连续赋值 实现组合逻辑功能的描述。 连续赋值 实现组合逻辑功能的描述。 ?结构型描述指描述实体连接的结构方式,它通常 通过实例进行描述,将 结构型描述指描述实体连接的结构方式,它通常 通过实例进行描述,将Verilog已定义的基元实 例嵌入到语言中。 已定义的基元实 例嵌入到语言中。 10.2 2选选1数据选择器数据选择器 2选选1数据选择器可以有多种描述方式,通过数据选择器可以有多种描述方式,通过4个实例和个实例和 3种描述方式对例子中出现的语法现象进行解释。种描述方式对例子中出现的语法现象进行解释。 10.2.1 2选选1数据选择器的数据选择器的行为型描述方式行为型描述方式; 10.2.

5、2 2选选1数据选择器的数据选择器的数据流型描述方式数据流型描述方式; 10.2.3 2选选1数据选择器的数据选择器的行为型描述方式行为型描述方式; 10.2.4 2选选1数据选择器的数据选择器的结构型描述方式结构型描述方式; 10.2.1 2选选1数据选择器实例数据选择器实例1 /例10.2.1 module Mux21 (a,b,s,y);/-1 input a,b; input s; output y; assign y = (s=0)? a : b; /-2 endmodule/-3 10.2.1 2选选1数据选择器实例数据选择器实例 1 /例10.2.1 module Mux21 (

6、a,b,s,y);/-1 input a,b; input s; output y; assign y = (s=0)? a : b; /-2 endmodule/-3 1. Verilog语言描述语言描述 2. 程序说明程序说明 (1) 注释行注释行 (2) 模块定义语句模块定义语句module和和endmodule 所有的程序都置于模块(所有的程序都置于模块(module)框架结构内。模块 是 )框架结构内。模块 是Verilog最基本的构成单元。一个模块可以是一个元件或 者一个设计单元。 最基本的构成单元。一个模块可以是一个元件或 者一个设计单元。 a b s y mux 21 modu

7、le (端口列表) endmodule 该模块共包括四个端口:输入端口该模块共包括四个端口:输入端口a,b,s和输出端口和输出端口y。 它定义的是二选一数据选择器。 。 它定义的是二选一数据选择器。 Verilog 端口类型只有端口类型只有input(输入),(输入),output(输出),(输出),inout (双向端口)三种,端口类型申明描述了端口的信号传输方向。(双向端口)三种,端口类型申明描述了端口的信号传输方向。 图图10.2.2 Verilog 端口类型端口类型 ?input可以由reg或net连接驱动,但它本身只能驱动 网表(net)类型 ?output可以由reg或net连接驱

8、动,但它本身只能驱 动网络(net)类型 ?inout类型端口必须是网表(net)类型 ?接口端,数据的接受者必须是网表类型 (3) 连续赋值语句连续赋值语句assign “assign y = (s= =0)? a : b;”为一条连续赋值语句。连 续赋值语句 为一条连续赋值语句。连 续赋值语句assign能够给网表变量赋值。能够给网表变量赋值。只要等号右边的 表达式值发生变化,这种赋值行为就会立刻发生。连续赋 值语句能模拟组合逻辑电路。 只要等号右边的 表达式值发生变化,这种赋值行为就会立刻发生。连续赋 值语句能模拟组合逻辑电路。 (4) 条件操作符条件操作符“?” s=0?a:b为一条件

9、表达式。式中条件操作符为一条件表达式。式中条件操作符“?”为三 目操作符,由两个操作符隔离三个操作数构成,语法格式 如下: 为三 目操作符,由两个操作符隔离三个操作数构成,语法格式 如下: 表达式表达式1? 表达式表达式2: 表达式表达式3 执行操作时,首先会计算表达式执行操作时,首先会计算表达式1的值,如果表达式的值,如果表达式1 的值为的值为1,那么将计算表达式,那么将计算表达式2的值,做为条件表达式的最 后结果;如果表达式 的值,做为条件表达式的最 后结果;如果表达式1的值为的值为0,则计算表达式,则计算表达式3的值,并 做为条件表达式最后的结果。 的值,并 做为条件表达式最后的结果。

10、(3) 连续赋值语句连续赋值语句assign “assign y = (s= =0)? a : b;”为一条连续赋值语句。连 续赋值语句 为一条连续赋值语句。连 续赋值语句assign能够给网表变量赋值。能够给网表变量赋值。只要等号右边的 表达式值发生变化,这种赋值行为就会立刻发生。连续赋 值语句能模拟组合逻辑电路。 只要等号右边的 表达式值发生变化,这种赋值行为就会立刻发生。连续赋 值语句能模拟组合逻辑电路。 (4) 条件操作符条件操作符“?” s=0?a:b为一条件表达式。式中条件操作符为一条件表达式。式中条件操作符“?”为三 目操作符,由两个操作符隔离三个操作数构成,语法格式 如下: 为

11、三 目操作符,由两个操作符隔离三个操作数构成,语法格式 如下: 表达式表达式1? 表达式表达式2: 表达式表达式3 执行操作时,首先会计算表达式执行操作时,首先会计算表达式1的值,如果表达式的值,如果表达式1 的值为的值为1,那么将计算表达式,那么将计算表达式2的值,做为条件表达式的最 后结果;如果表达式 的值,做为条件表达式的最 后结果;如果表达式1的值为的值为0,则计算表达式,则计算表达式3的值,并 做为条件表达式最后的结果。 的值,并 做为条件表达式最后的结果。 仿真结果仿真结果 0 1 y0 a b s y 仿真电路图 仿真波形图仿真波形图 10.2.2 2选1数据选择器实例 2选1数

12、据选择器实例 2 /例例10.2.2 module Mux21 (a,b,s,y); input a,b; input s; output y; /-1 wire d,e;/-2 assign d = a /-3 assign e = b assign y = d | e; endmodule (1)连线类型连线类型wire 程序中出现的中间变量程序中出现的中间变量d和和e定义为定义为wire类型,表示类型,表示内部结点或连 线 内部结点或连 线。程序行。程序行1输出端口输出端口y的数据类型默认为的数据类型默认为wire类型。网表类型可通过 连续赋值语句 类型。网表类型可通过 连续赋值语句(a

13、ssign语句语句)或逻辑门驱动。如果一个网表没有和任何驱 动源连接,其值为 或逻辑门驱动。如果一个网表没有和任何驱 动源连接,其值为高阻状态高阻状态。 1. Verilog语言描述语言描述 2. 程序说明程序说明 (2)位运算符位运算符 按位取反(按位取反()、按位与()、按位与( input a,b,s; output y; reg y; always ( a or b or s) /-1 if (!s) y = a; /-2 else y = b; /-3 endmodule (1)寄存器类型寄存器类型reg 输出端口输出端口y的数据类型申明为的数据类型申明为reg即寄存器型,即寄存器型

14、,在在 always 块中被赋值的信号必须定义为块中被赋值的信号必须定义为reg型。型。寄存器寄存器(reg) 类型不一定是触发器。只能在类型不一定是触发器。只能在always语句中通过过程赋值 语句进行赋值。 语句中通过过程赋值 语句进行赋值。 1.Verilog语言描述语言描述 2.程序说明程序说明 程序行程序行1“always ( a or b or s)”为重复执行语句。为重复执行语句。 always后面跟了一个时间控制语句,时间控制通过事件表达 式 后面跟了一个时间控制语句,时间控制通过事件表达 式(关键词关键词“”)实现,时间控制部分为完整敏感信号列表, 只要任意敏感信号发生变化,

15、过程块将重复连续执行,持 续整个模拟过程。 实现,时间控制部分为完整敏感信号列表, 只要任意敏感信号发生变化,过程块将重复连续执行,持 续整个模拟过程。 (3)条件语句条件语句(if-else) 条件语句条件语句if-else语句可用来选择是否执行某条语句。语句可用来选择是否执行某条语句。 (4)逻辑运算符逻辑运算符 三种逻辑运算符:逻辑三种逻辑运算符:逻辑与与“ input a, b, s; output y; not u1 (ns, s); and u2 (sela, a, ns); and u3 (selb, b, s); or u4 (y, sela, selb); endmodule 例例10.2.4调用了多个底层模块的实例。调用模块的过 程,称为实例化。实例的使用格式为: 调用了多个底层模块的实例。调用模块的过 程,称为实例化。实例的使用格式为: 1.Verilog语言描述语言描述 2.程序说明程序说明 ; 非模块非模块 与模块与模块 或模块或模块 例例10.2.4为门级结构描述,它提供了模型和实际电路 之间直接的一一对应的关系。 为门级结构描述,它提供了模

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号