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

这篇Verilog学习笔记详细讲解了变量类型,包括wire、tri、reg和Memory型,并探讨了各种操作符,如逻辑运算符、关系运算符、移位运算符、位拼接和缩减运算符,以及非阻塞和阻塞赋值语句的应用。

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阻塞式赋值

在赋值结束后,语句块才结束。

赋值语句结束后立刻改变变量的值。

用=表示

总结

本文简单介绍了常用的变量类型和操作符。下次介绍构成程序主要内容的块语句。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值