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