新手入门
- 积分
- 8
- 金钱
- 8
- 注册时间
- 2020-8-1
- 在线时间
- 0 小时
|
1金钱
reg signed [63:0] temp1; temp1 = $signed(a) * $signed(b) - $signed(c) * $signed(d) ;
a <= {temp1[62],temp1[46:16]} ; 上面的语句通过阻塞赋值计算四个数的有符号乘法并相减,再通过非阻塞赋值将temp截位传给a(定点数相乘再相减)。一次操作用两句话太繁琐,也优化为一句话:
reg signed temp1;
reg signed [14:0] temp2;
reg signed [15:0] temp3;
{temp1,a[31],temp2,a[30:0],temp3} = $signed(a) * $signed(b) - $signed(c) * $signed(d) ;
将temp(64bit)转换为temp1(1bit),temp2(15bit),temp3(16bit),节省了一定的资源。但这句话中temp1,temp2,temp3只起到占位的作用,后续没有操作,是没有意义的。再倘若这样的相乘再相减的操作需要并行执行好几个,从写法上需要reg nx3个temp,反而不如之前的reg nx1个temp方便。 所以想咨询大家,有无其他写法,可以更美观?感谢!
|
|