verilog基础--sign表达式

下面我们来看看官方文档,遇到别人写的代码不懂的,或者模棱两可的语法,一定要亲自去查阅官方的文档,但是在查阅官方文档之前,我们来看看基本的有符号和无符号在计算机中的表示方法,以及有符号二进制如何运算吧。

note:
反码是什么 ?
      正数的反码就是原码,负数的反码等于原码除符号位以外所有的位取反

符号在计算机中的表示

有符号数通常以2的补码形式来表示,计算机为方便减法计算,在表示负数的时候,引入了补码机制来把整数的减法变成整数的加法统一进行运算。

补码:符号位保持不变,其余位取反加1

  • 十进制变二进制

原码–反码–加一(补码);

		原码:-8,-8的源码是1【1000】,取反码:1【0111】,补码:1【1000】(十进制转二进制)
		原码:-4,-4的原码是1100,取反码:1011, 补码:1100(十进制转二进制)
  • 二进制变十进制:

减一 --反码–原码。

补码:1000,-8
补码:1100,说明此数是负数,减1,得1011,取反:0100,十进制4:因此为-4. 

二进制 加法 运算

  • 带符号二进制运算

在不超限溢出的前提下,如果计算结果为正数,那么补码与原码相同,得到的就是正确结果;如果计算结果为负数,还需要将补码再转换成原码。
-4+2=1100+0010=1110 == = 》 1001(保持符号位不变取反)= = =》1010(加1)=-2
-6+7=1010+0111=10001 == = 》舍去溢出得0001

在这里插入图片描述
关于溢出,这个首先给定多少位数,心里就应该知道这取值范围是多少,然后计算结果是否在规定范围内,没在这个范围,那么必然就是产生溢出了。在这里插入图片描述在这里插入图片描述
当运算或其结果的位宽不同时,我们需要区分它究竟使用哪一种符号类型。因为不同的符号类型需要不同的扩展位。对于无符号数,前置一个0,即 所谓的零扩展位;对于有符号数来说,需要前置n个所谓的符号扩展位。比方说4位二进制表示的-5为1011;当其扩展成8位时,应该变为1111_1011,而不是0000_1011。
Verilog-1995中的有符号数按照如下操作。sum4 = a + {4{c[3]}, c};如果8bit的a无符号与4bit的有符号相加,我们需要手动控制将4bit的c的高位补其。
Verilog-2001中的有符号数引入了关键字signed和unsigned,就是为了解决1995中手动补充的问题。

verilog官方sign expression语法

在这里插入图片描述
在这里插入图片描述
上面的例子,我们就很好理解了,-4的二进制:1000_0100 取反:1111_1011 加1:1111_1100,经过unsigned后,取其在计算机中存储的补码形式为二进制
-4等价于-4’sd4,4bit有符号的负数,4在二进制位0100,取其负数为1100, 前面由于是8bit的regB位宽,我们前面都没有用,补充0.

参考:
https://blog.csdn.net/qhw5279/article/details/79630912
http://www.cnblogs.com/Jamesjiang/p/8947252.html
https://blog.csdn.net/weiweiliulu/article/details/24316373
官方 IEEE 2005 verilog

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值