verilog移位运算符怎么用_算术移位溢出判断

verilog移位运算符怎么用_算术移位溢出判断Verilog 中的移位(算术移位, 逻辑移位, 循环移位)(1)>>>(算术右移)与>>(逻辑右移)的区别:逻辑右移就是不考虑符号位,右移一位,左边补零即可。算术右移需要

Verilog 中的移位(算术移位, 逻辑移位, 循环移位)   (1)>>>(算术右移)与>>(逻辑右移)的区别:   逻辑右移就是不考虑符号位,右移一位,左边补零即可。   算术右移需要考虑符号位,右移一位,若符号位为1,就在左边补1,;否则,就补0。   所以算术右移也可以进行有符号位的除法,右移,n位就等于除2的n次方。   例如,8位二进制数分别右移一位。   逻辑右移就是[0]   算术右移就是[1]   (2)<<:(左移位运算符) >>:(右移位运算符)   在Verilog HDL中有两种移位运算符。   <<:(左移位运算符) >>:(右移位运算符)   其使用方法如下:   a >> n;   a << n;   a代表要进行移位的操作数,n代表要移几位。这两种移位运算都用0来填补移出的空位。下面举例说明:   module shift;   reg [3:0] start, result;   initial begin   start = 1; //start在初始时刻设为值0001   result = (start<<2); //移位后,start的值0100,然后赋给result   end   endmodule   ———————    作者:proton_boke    原文:https://blog.csdn.net/proton_boke/article/details/    (3)实现循环移位   //实现循环右移   reg [7:0] shifter;   always(posedge clk )   begin   shifter<={shifter[0],shifter[7:1]};   end   //解释:每一次都是把原来的最低位,往最高位搬移一次。   //实现循环左移   reg [7:0] shifter;   always(posedge clk)   begin   shifter<={shifter[6:0],shifter[7]};   end   //每一次都是把原来的最高位,往最低位搬移一次   ———————    作者:ciscomonkey    原文:https://blog.csdn.net/ciscomonkey/article/details/    (4)   算​术左移和逻辑左移一样都是右边补0:   比如 00​   算术左移一位:0   逻辑左移一位​:0   对于二进制的数值来说左移n位等于原来的数值乘以2的n次方   比如00011010十进制是26,左移两位后是011010​00转成十进制是104恰好是26的4倍。   ps:这种倍数关系只适用于左移后被舍弃的高位不含1的情况,否则会溢出。​   逻辑右移很简单,只要将二进制数整体右移,左边补0即可   如逻辑右移一位为0   算术右移符号位要一起移动,并且在左边补上符号位,也就是如果符号位是1就补1符号位是0就补0   比如:11100算术右移一位为11110(符号位1跟着一起移动并且左边补了1)   对于二进制的数值来说右移n位等于原来的数值除以2的n次方   比如十进制是76(需要先将这个补码转换成原码之后再转换成十进制),右移两位后是转成十进制是19恰好是76的4倍。   ​ps:这种倍数关系只适用于右移后被舍弃的低位不含1的情况,否则每舍一次1则代表余数被舍去,保留整数部分。   ———————    作者:狐非    原文:https://blog.csdn.net/yddj5/article/details/                文章来源: reborn.blog.csdn.net,作者:李锐博恩,版权归原作者所有,如需转载,请联系作者。   原文链接:reborn.blog.csdn.net/article/details/

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/63409.html

(0)
上一篇 2024年 8月 28日
下一篇 2024年 8月 28日

相关推荐

关注微信