Verilog学习4——取反与移位运算

本文介绍了Verilog语言中的取反运算(按位取反和逻辑取反)、移位运算(逻辑左移、算术左移和循环移动),通过实例演示了这些操作在设计逻辑电路时的应用。
摘要由CSDN通过智能技术生成

系列文章目录

Verilog学习1——三目运算符
Verilog学习2——与门(按位与和逻辑与)
Verilog学习3——向量
Verilog学习4——取反与移位运算


一、取反运算

1、按位取反 ~

~ 是一个单目运算符,用来对一个操作数进行按位取反运算。例如:

assign a = 4'b1010;
assign b = ~a      //b=4'b0101;

2、逻辑取反 !

当操作数位宽为一位时,按位取反 ~ 与逻辑取反 ! 效果相同。当操作数位宽大于一位时,逻辑取反使所有位都为0的操作数变为ture,其余为false。例如:

assign a = 4'b1010;  
assign b = 4'b0000;  
assign c = !a //c = 0;
assign d = !b //d = 1;

二、移位运算

1、逻辑左移<<和逻辑右移>>

两者都是双目运算符,不考虑符号位,移动数字之后用0补上空位。使用方法如下:

assign a = 4'b1010;
assign b = a<<2 // b = 6'b101000;
assign c = a>>2 // c = 4'b0010;

2、算术左移<<<和算术右移>>>

双目运算符,考虑符号位,算术右移时符号位一起移动并用符号位补上空位,算术左移时规则与逻辑左移相同。使用方法如下:

assign a = 4'b1010;
assign b = a<<<2 // b = 6'b101000;
assign c = a>>>2 // c = 4'b1010;

3、循环移动

利用逻辑运算符可以实现循环移动的效果,例如:

assign a = 4'b1010;
reg [3:0] b, c;
always @(posedge clk)
    b = {a[0], a[3:1]}; //循环右移
    c = {a[2:0], a[3]}; //循环左移
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
位运算Verilog中有两种类型,即算数位和逻辑位。对于算数位,如果位赋值目标位数多于源数据,对于有符号数右,先用符号位填充多出的位,然后按照各自的位运算方式进行运算。对于无符号数,逻辑位和算数位的效果一致,即用0来补充空缺位。\[1\] 在Verilog中,位运算符可以用来实现数乘操作。例如,当我们要将输入d乘以1时,可以直接赋值给out;当我们要将输入d乘以3时,可以将输入d左2位然后减去d;当我们要将输入d乘以7时,可以将输入d左3位然后减去d;当我们要将输入d乘以8时,可以将输入d左3位。总结如下:(din为中间变量) 数乘位运算: 1d3(din<<2)-din 7(din<<3)-din 8(din<<3) 这样可以实现不同的数乘操作。\[2\] 在Verilog中,位运算的使用方法如下: a >> n; // 右n位 a << n; // 左n位 其中,a代表要进行位的操作数,n代表要动的位数。这两种位运算都用0来填补出的空位。\[3\] #### 引用[.reference_title] - *1* *2* [Verilog学习位运算与乘法设计](https://blog.csdn.net/m0_52529907/article/details/125614685)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Verilog 中的位(算术位, 逻辑位, 循环位)](https://blog.csdn.net/Reborn_Lee/article/details/89813616)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值