数据位宽不一样,怎么计算?

jshzp 2019-10-27 11:04:14
定义了三个寄存器abc,需要做计算,代码如下:
reg [9:0] a;
reg [3:0] b;
reg [3:0] c;

b=1;
c=1;
a=b+c*10'd32

我希望的计算结果是a=33,但是因为三个寄存器的位宽不一样,仿真得到的结果是1。
一种解决办法是把寄存器b、c也定义成位宽10,但是这样会增加资源。不增加寄存器bc位宽情况下,怎么解决这个问题?感谢指教。
...全文
589 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
fly 100% 2019-10-29
  • 打赏
  • 举报
回复
乘法用移位 应该就不会计算中间被扩位宽了
bsnow 2019-10-28
  • 打赏
  • 举报
回复
用 blocking always @(*) begin a = c; a = a << 5; a = a + b; end 用blocking以后反正编译也会有寄存器,不一定能节约资源。

6,125

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 硬件设计
社区管理员
  • 硬件设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧