当前位置:
文档之家› 10第三章verilog入门
10第三章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
算术运算符
关系运算符 (双目运算符)
位运算符 (双目运算符)
~ & | ^ ^~ 或 ~^ ! && || {,} {{}}
按位取反 按位与 按位或 按位异或 按位同或 逻辑非 逻辑与 逻辑或 将多个操作数 拼接成为一个 操作数
缩位运算符( 单目运算符)
逻辑运算符 (双目运算符)
移位运算符( 双目运算符) 条件运算符( 三目运算符)
一、硬件描述语言 Verilog HDL 基础
1. 什么是硬件描述语言
HDL:Hardware Description Language
逻辑电路图 表示 逻辑表达式 复杂数字逻辑系统 易于存储和修改 编写说明文档 不同设计人员交流 被计算机识别 类似于高级 程序设计语 言的文本形 式来描述数 字系统硬件 的结构和行 为的语言。 逻辑仿真 逻辑综合
位拼接运算符
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
Y
——门级描述方式
一、硬件描述语言 Verilog HDL 基础
1. 什么是硬件描述语言
符合IEEE标准
早期 ABEL VHDL Advanced Bolean Equation Language 格式严谨 Verilog HDL 易学易用
2. Verilog程序的基本结构
模块定义
module 模块名(端口名1, 端口名2, … ); 说明部分 逻辑功能描述部分 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内置的12个基本门元件
三态门
元件符号 and or xor buf 功能说明 多输入端的与门 多输入端的或门 多输入端的异或门 多输出端的缓冲器 控制信号高电平有效的三态缓冲 器 控制信号低电平有效的三态缓冲 器
基本门级元件模型
元件符号 nand nor xnor not
多输出门
例如: 23_5.1e2、5E-4
符号常量的定义格式:
parameter 参数名1=常量表达式1,参数名2=常量表达式2,……; 例如:parameter BIT=1, BYTE=8, PI=3.14;
3. Verilog的基本语法规则
变量的数据类型
线网类型 硬件电路中元件之间实际连线的抽 象。变量的值由驱动元件的值决定。 用关键词wire定义
一、硬件描述语言 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
逻辑值集合
4种基本逻辑值: 0;1;x(X);z(Z)
3. Verilog的基本语法规则
常量及其表示
整数型 常量 实数型 十进制表示
例如:30、-2
带基数的形式 <+/-><位宽>’<基数符号><数值>
例如:3’b101、8’he3,8’b1001_0011
十进制记数法 例如: 0.1、2.0、5.67 科学记数法
条件语句
根据条件表达式的真假, 确定下一步进行的运算。
(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;
3. Verilog的基本语法规则
运算符
类型 符号 + * / 功能说明 二进制加 二进制减 2的补码 二进制乘 二进制除 类型 符号 > < >= <= == != & ~& | ~| ^ ^~ 或 ~^ >> << ?: 功能说明 大于 小于 大于或等于 小于或等于 相等 不相等 缩位与 缩位与非 缩位或 缩位或非 缩位异或 缩位同或 右移 左移 根据条件表达 式是否成立,选择 表达式
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
功能说明 多输入端的与非门 多输入端的或非门
多输入门
多输入端的异或非门 多输出端的反相器 控制信号高电平有效的 三态反相器 控制信号低电平有效的 三态反相器
bufif1
bufif0
notif1
notif0
一、硬件描述语言 Verilog HDL 基础
D0 Snot U1 S D U3 U2 B U4 A Y
二、用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
例
用数据流描述方式建立模型
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型。
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
一、硬件描述语言 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
^A=0 ^B=0
~^A=1 ~^B=1
3. Verilog的基本语法规则
运算符的优先级
类型 取反 算术 移位 符号 ! ~ -(求2的补码) 优先级别 最高优先级
* / + >> <<