20×18位符号定点乘法器的FPGA实现
SMIC提供的0.18 vm标准单元库中,4-2压缩CMPR42的逻辑表达式为:
在硬件实现该模块时,因为有10个部分积,一共调用4-2压缩4次,分为3级,从顶到底为2―1―1型。4-2压缩互联如图3所示。
1.3 溢出处理及四舍五入
定点数相乘不会溢出,只不过结果的最终位数有所增加。20 b×18 b结果为38 b。有时38 b并不全部存储,只需其中的一些位就可以。这涉及到四舍五人。假设数A共20位,1位符号,5位整数位,14位小数位,数B共18位,1位符号位,2位整数位,15位小数位,结果格式同A。
如图4所示,因为只保留5位整数,把前3位都看成是符号位,如果不同,说明溢出;反之,没溢出。再根据前两位真正的符号判断是上溢还是下溢,若为O,则上溢,为20'h7ffff,反之,下溢,为20'h80001。在逻辑设计上用个选通可以实现,Verilog HDL代码为:assignceil=data in[37]:20'h80001:20'h7ffff;其中data in[37]为最高位。
由于Verilog HDL语言是应用最为广泛的硬件描述语言之一,可以进行各种层次的逻辑设计,也可以进行仿真验证,时序分析,并且可移植到不同产家的不同芯片中,代码可读性比较强,因此本模块设计用Ver-ilog HDL语言。
如果要舍入的数没有溢出,那么还要考虑小数部分的舍入。若舍入数为正数,舍入相邻位为1,舍入时必须进1;反之不用。若舍人数为负数,舍入相邻位为1且舍人相邻位后面还有一位为1,则舍入时需加1;反之,不加1。
![](http://m.amcfsurvey.com/webstorage/images/2014/m/wx.png)
加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW
或用微信扫描左侧二维码