数的加减乘除

整数用补码表示,加减法补码运行。位数不同时扩展符号位。乘法时去掉符号位的数字位数相加(最大数相乘所占位数),再加上一位符号位进行扩展。http://blog.163.com/wsc_entity/blog/static/237312069201522052615522/

一直以来编写FPGA有符号数运算时,尤其是进行乘法运算时,总是先将数转换为无符号数进行计算,然后再将计算的结果转换为有符号数,其实想不到现在的编译器(Quartus II 9.1和ISE10.1没有问题,更高的版本应该更加可以了)都支持verilog有符号运算的综合了。

  在定义时直接加上signed即可,如下:

   input  signed [7:0] a, b;
   output  signed [15:0] c;
   wire signed [15:0] x;

   reg signed [15:0]y;

  很明显,这种采用signed定义的情况,可以避免手动转换带来的麻烦,同时可以节省很多开发时间,

  另外,尽量不要使有符号数与无符号数进行混合计算。只要有一个无符号数的运算单元,整个算式将被将成无符号数进行计算
对于小数运算,小数可以通过整数除以2的多少次幂转换过来,所以小数运算可以转换为整数运算,这样可以通过右移来转换,乘以非整次幂可以展开为多次密的形式,节省乘法器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值