verilog学习笔记(三)变量与操作符

变量和操作符是操作语句的重要组成。

网络数据类型wire ,tri

两者语法功能相同

Wire用于单个门驱动或连续赋值语句驱动

Tri多驱动器驱动

当没有定义逻辑强度,多驱动源会出现冲突,输出为X

寄存器类型reg

Reg的初始值为x,表示定义的信号将被用在always内

在作为操作数时reg被认为是正值

Memory型

reg[n-1:0] 储存器名[m-1:0]   //长度n-1的储存单元该储存器共有m-1个

reg [n-1:0] rega;  //一个n长度的寄存器

reg mema [n-1:0];  //一个n-1个存储单元的存储器

多个寄存器可以一句完成赋值,但是存储器不行

 

操作符号:

分为单目,双目,三目操作符

基础运算都是双目

位运算只有取反是单目

 

逻辑运算符:

&&逻辑与

||逻辑或

!逻辑非

与或优先级一样,非不同

要确保优先级不出错就用括号

 

关系运算符:

<大于

>小于

 

等式运算符

==

!=

===

!==

所有等式运算符中间不能有空格

都是双目运算符

前两个是逻辑等式运算符,不能比较不定值和高阻值,输出为X

当数为不定值或高阻值时

要用后两种去比较,完全相同输出才是1

 

移位运算符

移动后空出的位置用0填充

A<<n; //a左移动n位

变量移位位数可能会变的

1<<6=32’b1000000;

4’b1001>>1=4’b0100;

左移一定扩展?

右移不扩展?

 

位拼接运算符

{a,b[3:0],4’b1001}

将括号内的所有字符拼接起来

必须知道所有信号的长度

可以嵌套

{a,{3{a,b}}}={a,a,b,a,b,a,b}

 

缩减运算符

单目运算符

操作数自身逐位运算

C=&a=((a[0]&a[1])&a[2])&a[3];

与&,或|,非!,都有单目运算

posted @ 2020-02-15 19:50  btc  阅读(1004)  评论(0编辑  收藏  举报