EETOP 创芯网论坛 (原名:电子顶级开发网)
标题:
关于verilog语法使用的一个小问题
[打印本页]
作者:
zylxzxcyz
时间:
2014-11-3 10:37
标题:
关于verilog语法使用的一个小问题
情况是这样的,我想把表达式结果中的其中连续的几位赋值给另一个reg变量如下所示:
reg [4:0] receive;
reg [11:0] send1,send2,send3;
always@(posedge clk)
begin
receive<=(send1+send2+send2)------------>取运算结果的[7:3]
end
这种情况应该怎么描述呢?
如果描述成
reg [12:0] receive_out;
wire [4:0] receive;
reg [11:0] send1,send2,send3;
always@(posedge clk)
begin
receive_out<=(send1+send2+send2);
end
assign receive=receive_out[7:3];
是不是在综合时会浪费很多寄存器??
作者:
chengroc
时间:
2014-11-3 11:40
本帖最后由 chengroc 于 2014-11-3 11:43 编辑
3步
1,加运算
2,截取
3,寄存器打拍
你的第2种写法,如果receive_out的其他bit无load,可以设置综合策略将其优化掉,不会浪费面积
作者:
zylxzxcyz
时间:
2014-11-3 15:59
回复
2#
chengroc
思考通了~谢~
作者:
znn04006518
时间:
2014-11-4 13:03
你是取高5bit[7:3],但是这几个bit的结果需要参考[2:0]这几个bit。因此加法器的消耗依然是两个8bit。但是最后存结果的时候你可以少存,只存前面的5bit就可以了。
作者:
xiaoyue1989
时间:
2014-11-5 16:07
直接把send1、send2、send3定义为reg是不是有点不妥?它们是作为输入的。。。
欢迎光临 EETOP 创芯网论坛 (原名:电子顶级开发网) (https://bbs.eetop.cn/)
Powered by Discuz! X3.5