Verilog学习笔记
文章目录
前言
本次主要介绍一些常用的变量类型和操作符,变量和操作符是操作语句的重要组成。
一、变量
1.1网络数据类型wire,tri
wire,tri两者语法功能相同
wire用于单个门驱动或连续赋值语句驱动
Tri用于多驱动器驱动
当没有定义逻辑强度,多驱动源会出现冲突,输出为X
1.2寄存器类型reg
Reg的初始值为x,表示定义的信号将被用在always内
在作为操作数时reg被认为是正值
1.3Memory型
下面是reg的定义方式
reg[n-1:0] 储存器名[m-1:0] //长度n-1的储存单元该储存器共有m-1个
reg [n-1:0] rega; //一个n长度的寄存器
reg mema [n-1:0]; //一个n-1个存储单元的存储器
多个寄存器可以用一句指令完成赋值,但是存储器不行
二、操作符号
操作符号主要分为单目,双目,三目操作符
基础运算符都是双目
位运算符只有取反是单目
2.1逻辑运算符:
&&逻辑与
||逻辑或
!逻辑非
与或优先级一样,非不同
要确保优先级不出错就用括号
2.2关系运算符:
<大于
<=大于等于
…
关系运算符包含一系列比较关系的运算符
2.3等式运算符
主要包含四种运算符:
==
!=
===
!==
所有等式运算符中间不能有空格
都是双目运算符
前两个是逻辑等式运算符,不能比较不定值和高阻值,输出为X
当变量为不定值或高阻值时
要用后两种去比较,完全相同输出才是1
2.4移位运算符
移动后空出的位置用0填充
A<<n; //a左移动n位
变量移位位数可能会变的
1<<6=32’b1000000;
4’b1001>>1=4’b0100;
当一个数向左移时一定会数据扩展长度
但是右移时不会扩展
2.5位拼接运算符
{a,b[3:0],4’b1001}
将括号内的所有字符拼接起来
必须知道所有信号的长度
可以嵌套使用
{a,{3{a,b}}}={a,a,b,a,b,a,b}
2.6缩减运算符
单目运算符
操作数自身进行逐位运算
C=&a=((a[0]&a[1])&a[2])&a[3];
与&,或|,非!,都有单目运算
2.7关键词
Verilog语言事先定义的一些确认符,都是小写字母定义,在使用关键词时要注意,另外注意定义变量时不要与关键词重复。
常见的关键词有:initial always begin end…
三、赋值语句
verilog中的常见赋值方式有2种分别是非阻塞赋值和阻塞赋值。
3.1非阻塞赋值
该赋值方法的特点是:语句块中上一个语句赋值的变量在下面的语句中的值不会马上变化,而是在语句块结束后才变化。
非阻塞赋值没有运行顺序,属于并行处理。
用<=表示
3.2阻塞式赋值
在赋值结束后,语句块才结束。
赋值语句结束后立刻改变变量的值。
用=表示
总结
本文简单介绍了常用的变量类型和操作符。下次介绍构成程序主要内容的块语句。
这篇Verilog学习笔记详细讲解了变量类型,包括wire、tri、reg和Memory型,并探讨了各种操作符,如逻辑运算符、关系运算符、移位运算符、位拼接和缩减运算符,以及非阻塞和阻塞赋值语句的应用。
变量与操作符&spm=1001.2101.3001.5002&articleId=115362525&d=1&t=3&u=68dca2615f37472baa29465b0fc22271)
5603

被折叠的 条评论
为什么被折叠?



