微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 关于verilog语法使用的一个小问题

关于verilog语法使用的一个小问题

时间:10-02 整理:3721RD 点击:
情况是这样的,我想把表达式结果中的其中连续的几位赋值给另一个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];
是不是在综合时会浪费很多寄存器?

3步
1,加运算
2,截取
3,寄存器打拍
你的第2种写法,如果receive_out的其他bit无load,可以设置综合策略将其优化掉,不会浪费面积



  思考通了~谢~

你是取高5bit[7:3],但是这几个bit的结果需要参考[2:0]这几个bit。因此加法器的消耗依然是两个8bit。但是最后存结果的时候你可以少存,只存前面的5bit就可以了。

直接把send1、send2、send3定义为reg是不是有点不妥?它们是作为输入的。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top