10第三章verilog入门

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

变量
寄存器类型
D0 Snot U1 S D
A U2 B U3 U4 Y
3. Verilog的基本语法规则
变量的数据类型
线网类型 变量 硬件电路中元件之间实际连线的抽 象。变量的值由驱动元件的值决定。 用关键词wire定义
寄存器类型 表示抽象的数据存储单元,具有状 态保持作用。 用关键词reg声明
3. Verilog的基本语法规则
运算符
类型 符号 + * / 功能说明 二进制加 二进制减 2的补码 二进制乘 二进制除 类型 符号 > < >= <= == != & ~& | ~| ^ ^~ 或 ~^ >> << ?: 功能说明 大于 小于 大于或等于 小于或等于 相等 不相等 缩位与 缩位与非 缩位或 缩位或非 缩位异或 缩位同或 右移 左移 根据条件表达 式是否成立,选择 表达式
二、用Verilog HDL描述组合逻辑电路
1.组合逻辑电路的行为级建模 2.分模块分层次的电路设计
【例1】 基于if语句的数据选择器的行为级描述。
D [3:0] module mux4to1_bh(D, S, Y); input [3:0] D; //输入端口,默认wire型 S [1:0] input [1:0] S; //输入端口,默认wire型 output reg Y; //输出端口及变量数据类型 S S always @(D, S) //电路功能描述 0 D if (S == 2’b00) Y = D[0]; 1 D else if (S== 2’b01) Y = D[1]; else if (S== 2’b10) Y = D[2]; 0 D else Y = D[3]; 1 D endmole
Verilog HDL内置的12个基本门元件
三态门
元件符号 and or xor buf 功能说明 多输入端的与门 多输入端的或门 多输入端的异或门 多输出端的缓冲器 控制信号高电平有效的三态缓冲 器 控制信号低电平有效的三态缓冲 器
基本门级元件模型
元件符号 nand nor xnor not
多输出门
module mux2to1(D0, D1, S, Y ); input D0, D1, S; output Y; wire Snot, A, B ; //电路功能描述 not U1(Snot, S); and U2(A, D0, Snot); and U3(B, D1, S); or U4(Y, A, B); endmodule
3. Verilog的基本语法规则
间隔符和注释符
改善程序可读性
多行注释符: /* --- */ 单行注释符 ://
module mux2to1(D0, D1, S, Y ); input D0, D1, S; output Y; wire Snot, A, B ; //电路功能描述 not U1(Snot, S); and U2(A, D0, Snot); and U3(B, D1, S); or U4(Y, A, B); endmodule
2. Verilog程序的基本结构
模块说明部分
端口模式说明 input/output/inout 参数定义(可选) 数据类型定义 线网/寄存器
module mux2to1(D0, D1, S, Y ); input D0, D1, S; output Y; wire Snot, A, B ; //电路功能描述 not U1(Snot, S); and U2(A, D0, Snot); and U3(B, D1, S); or U4(Y, A, B); endmodule
数字电子技术基础
第三章 组合逻辑电路的分析和设计
一 二 三 四
组合逻辑电路的分析
组合逻辑电路的设计 用Verilog HDL描述组合逻辑电路 组合逻辑电路中的竞争与冒险
二、用Verilog HDL描述组合逻辑电路
1. 什么是硬件描述语言 2. Verilog程序的基本结构 3. Verilog的基本语法规则
^A=0 ^B=0
~^A=1 ~^B=1
3. Verilog的基本语法规则
运算符的优先级
类型 取反 算术 移位 符号 ! ~ -(求2的补码) 优先级别 最高优先级
* / + >> <<
关系
等于 缩位 逻辑
< <= > >=
== != & ~& ^ ^~ | ~| && ||
条件
?:
最低优先级
4. Verilog内部的门级元件
一、硬件描述语言 Verilog HDL 基础
D0 Snot U1 S D U2 B U4 A Y

用行为描述方式建立模型
Y D0 S D1 S
U3 module mux2to1_bh(D0, D1, S, Y ); input D0, D1, S; 数据类型 output Y; 说明 reg Y ; //逻辑功能描述 always @(S or D0 or D1) if (S == 1) Y = D1; //也可以写成 if (S) Y = D1; else Y = D0; //注意表达式左边的Y必须是reg型 endmodule
条件语句
根据条件表达式的真假, 确定下一步进行的运算。
(1) if (condition_expr) true_statement;
(2) if (condition_expr)true_statement; else fale_ statement;
(3) if (condition_expr1) true_statement1; else if (condition_expr2) true_statement2; else if (condition_expr3) true_statement3; …… else default_statement;
逻辑值集合
4种基本逻辑值: 0;1;x(X);z(Z)
3. Verilog的基本语法规则
常量及其表示
整数型 常量 实数型 十进制表示
例如:30、-2
带基数的形式 <+/-><位宽>’<基数符号><数值>
例如:3’b101、8’he3,8’b1001_0011
十进制记数法 例如: 0.1、2.0、5.67 科学记数法
一、硬件描述语言 Verilog HDL 基础
1. 什么是硬件描述语言
HDL:Hardware Description Language
逻辑电路图 表示 逻辑表达式 复杂数字逻辑系统 易于存储和修改 编写说明文档 不同设计人员交流 被计算机识别 类似于高级 程序设计语 言的文本形 式来描述数 字系统硬件 的结构和行 为的语言。 逻辑仿真 逻辑综合
Y
——门级描述方式
一、硬件描述语言 Verilog HDL 基础
1. 什么是硬件描述语言
符合IEEE标准
早期 ABEL VHDL Advanced Bolean Equation Language 格式严谨 Verilog HDL 易学易用
2. Verilog程序的基本结构
模块定义
module 模块名(端口名1, 端口名2, … ); 说明部分 逻辑功能描述部分 endmodule
位拼接运算符
3. Verilog的基本语法规则
位运算符与缩位运算的比较
A:4’b1010 、 B:4’b1111,
位运算
~A = 0101 ~B = 0000
A&B= 1010
A|B= 1111来自百度文库
A^B= 0101
A~^B= 1010
缩位运算
&A=1&0 &1&0=0
~&A=1 &B=1
|A=1 ~|B=0
1 0 0 1 2 3
4
Y
2
Y0 0 1 Y
Y1
注意:always过程块中只能给寄存器型变量赋值
1. 组合逻辑电路的行为级建模
行为级描述语言要素: always结构和过程赋值语句 条件语句(if-else) 多路分支语句(case-endcase) for循环语句
1. 组合逻辑电路的行为级建模
条件语句 多路分支语句 for循环语句

用数据流描述方式建立模型
Y D0 S D1 S
module mux2to1_dataflow(D0, D1, S, Y ); input D0, D1, S; 端口类型说明 数据类型 output Y; 说明 wire Y ; 电路结构描述 //下面是逻辑功能描述 assign Y = (~S & D0) | (S & D1); //表达式左边Y必须是wire型 endmodule 注意,在assign语句中,左边变量的数据类型必须是wire型。
2. Verilog程序的基本结构
模块逻辑功能描述
三种描述风格: 结构描述方式(门级描述方式)
使用低层次模块和基本门级元件
module mux2to1(D0, D1, S, Y ); 数据流描述方式 input D0, D1, S; 使用连续赋值语句(assign) output Y; wire Snot, A, B ; 行为描述方式 //电路功能描述 使用过程块语句结构(initial 和 not U1(Snot, S); and U2(A, D0, Snot); always)等 and U3(B, D1, S); or U4(Y, A, B); endmodule
算术运算符
关系运算符 (双目运算符)
位运算符 (双目运算符)
~ & | ^ ^~ 或 ~^ ! && || {,} {{}}
按位取反 按位与 按位或 按位异或 按位同或 逻辑非 逻辑与 逻辑或 将多个操作数 拼接成为一个 操作数
缩位运算符( 单目运算符)
逻辑运算符 (双目运算符)
移位运算符( 双目运算符) 条件运算符( 三目运算符)
一、硬件描述语言 Verilog HDL 基础
1. 什么是硬件描述语言
module mux2to1(D0, D1, S, Y ); //模块名及端口 input D0, D1, S; //输入端口声明 output Y; //输出端口声明 D0 A Snot wire Snot, A, B ; //内部节点 U2 //电路功能描述 U1 not U1(Snot, S); //门级元件 U4 S B and U2(A, D0, Snot); D U3 and U3(B, D1, S); or U4(Y, A, B); Y D0 S D1 S endmodule
例如: 23_5.1e2、5E-4
符号常量的定义格式:
parameter 参数名1=常量表达式1,参数名2=常量表达式2,……; 例如:parameter BIT=1, BYTE=8, PI=3.14;
3. Verilog的基本语法规则
变量的数据类型
线网类型 硬件电路中元件之间实际连线的抽 象。变量的值由驱动元件的值决定。 用关键词wire定义
功能说明 多输入端的与非门 多输入端的或非门
多输入门
多输入端的异或非门 多输出端的反相器 控制信号高电平有效的 三态反相器 控制信号低电平有效的 三态反相器
bufif1
bufif0
notif1
notif0
一、硬件描述语言 Verilog HDL 基础
D0 Snot U1 S D U3 U2 B U4 A Y
module mux2to1(D0, D1, S, Y ); input D0, D1, S; output Y; wire Snot, A, B ; //电路功能描述 not U1(Snot, S); and U2(A, D0, Snot); and U3(B, D1, S); or U4(Y, A, B); endmodule
包括空格符、 TAB 键、换行符 及换页符。
3. Verilog的基本语法规则
标识符 和 关键词
给模块名、输入/输出端 口、变量等对象取名所用 的字符串。以英文字母或 下划线开始 Verilog本身规定的特 殊字符串,用来定义 语言的结构
module mux2to1(D0, D1, S, Y ); input D0, D1, S; output Y; wire Snot, A, B ; //电路功能描述 not U1(Snot, S); and U2(A, D0, Snot); and U3(B, D1, S); or U4(Y, A, B); endmodule
相关文档
最新文档