分享

有符号位的乘法器FPGA算法

 hayidaa 2017-12-18

      首先看一下无符号数的乘法,根据乘数的数位计算位积,再将一系列位积相加。便可以得到两个无符号二进制数的乘积。这里可以选择移位的方式。比如out= in * 13,in为4位,则out为8位,的计算:assign out = a + a << 2 + a <<3;实现

如果in为一个有符号数,则不可以,则 in10 = (-in[msb]*2^msb + in[msb-1:0]);其中in10代表in的十进制表示。从而我们

有符号位的乘法器FPGA算法 - 初学者 - 既然选择了远方,便只顾风雨兼程!

图1. 无符号数的乘法 (11*13 = 143)

 

有符号位的乘法器FPGA算法 - 初学者 - 既然选择了远方,便只顾风雨兼程!    有符号位的乘法器FPGA算法 - 初学者 - 既然选择了远方,便只顾风雨兼程!    

 图2.有符号数乘以无符号数。(-5*7=-35),注意由于是两个4位数相乘,所以进行了符号的扩展,扩展到了8位。并且扩展时候最高位加1.。

这种情况一般用在一个变系数乘以一个固定系数的情况。以DA算法为例。 in10 = (-in[msb]*2^msb + in[msb-1:0]);低位跟普通DA算法相同,高位进行减法。(补充在DA算法中)

 

有符号位的乘法器FPGA算法 - 初学者 - 既然选择了远方,便只顾风雨兼程!

 图3.有符号数乘以有符号数。(-5*-3 = 15)。注意这里是两个有符号数相乘,所以结果位数为7(不是8),进行符号扩展时候注意。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多