Verilog HDL操作符

本文详细介绍了VerilogHDL中的各种操作符,包括赋值、逻辑、关系、算数、等式、条件、移位、拼接以及位运算,帮助读者理解并掌握在设计硬件描述语言时的运算规则。
摘要由CSDN通过智能技术生成

Verilog HDL操作符

操作数

操作符的对象。比如A+B,+是操作符,AB就是操作数。
可以是常数,变量,数据对象例如iram[0]
或者有返回值的函数调用。

操作符

1、赋值操作符(=、<=)
<= 在进程模块中使用,是非阻塞赋值,它被赋值的对象必须是reg型。Always对reg变量赋值。
= 在进程中或assign赋值中使用。所以它被赋值的数据对象可以是reg与wire型。所以wire变量要用阻塞赋值
举例
assign idata = ~IData;//在assign语句中使用赋值操作符

always @(data_A,data_B)
begin
data=data_A&data_B; //在进程块中的阻塞赋值
end

always@(posedge clk)
begin
q<=d; //进程块中的非阻塞赋值操作符使用
end

2、逻辑操作符:(&&、||、!)
逻辑关系操作符的返回值只有 1 bit,但操作数可以有多 bit。
在这里插入图片描述

3、关系操作符:(>、<、>=、<=)
关系操作符,返回值只有1bit ,要么为真要么为假。
//虽然关系操作符的操作数可能是多位,但是逻辑操作符返回的结果都是一位的。
//不管操作数的位宽是多少位,关系操作符运算的结果都为一位。

//如果操作数的位宽不一样,可以分为两种情况
//一是两种操作数都是无符号数,则把位宽小的操作数用0补齐。
8‘b10010000>5’b11000 //相当于8’b10010000 > 5’b00011000 返回1’b1

//二是两种操作数都是有符号数,则把位宽小的操作数用符号位的值补齐
8‘sb10010000>5’sb11000 //相当于8’sb10010000>5’b1111 1000相当于16>-8返回1’b1.

//但两个操作数,只要有一个为无符号数,则所有操作数都按无符号数处理
8‘sb10010000>5’b11000 //相当于8’sb00010000>5’b00011000 返回1’b1.

//若操作数中只要有一位为x或z,则关系操作符运算的结果都为x
8’b10010x00>5’b11000 //返回1’bx

4、算数操作符:(+、-、、/)*
在这里插入图片描述
幂运算(
使用方式:a
b,返回a的b次幂

5、等式操作符;(、!=、=、!==)
相等==, AB,如果A相等B则返回1’b1否则返回1’b0;
不相等!=,A!=B,如果A不相等B则返回1’b1否则返回1’b0;
全等
=, A=B,如果A全等B则返回1’b1否则返回1’b0;
非全等
=,A!==B,如果A非全等B则返回1’b1否则返回1’b0;

在进行相等或者不相等时候,操作数中只要有一位为z或者x,返回值都为x;
在进行全等和非全等时,操作数中的z或者x都要进行位比较。

6、条件操作符:(?:)
条件表达式? 表达式1(真):表达式2(假)

7、移位操作符:(<<、>>)
<<左移 >>右移 <<<算数左移 >>>算数右移
负数的算数右移使用符号位填充。
8、拼接操作符:({})
{s,a,b} 拼接之后的位宽为s,a,b三个信号位宽的总和。
{2{s}} 拼接之后的位宽时两倍s的位宽。
{2{s},a} 拼接之后的位宽时两倍s的位宽加上a的位宽。

9、位运算与缩位操作符:(、|、^、&、^
两个操作数的每一个位进行操作。

  • 31
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值