首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误:<signal>不是常量

错误:<signal>不是常量
EN

Stack Overflow用户
提问于 2015-06-25 09:49:37
回答 1查看 1.1K关注 0票数 0
代码语言:javascript
复制
module concat(
    input [7:0] data_in,
    input rst,
    input clk,
    output reg[127:0] data_out,
    output reg valid_out
    );

    integer i;

    reg[127:0] datatemp=0;

always@(data_in)
begin
    if(rst)
    begin
        data_out<=0;
        datatemp<=0;
    end
    else
    begin
    for(i=0;i<=127;i=i+8)
    begin
        datatemp[i:i+7]<=data_in;
    end
        if(i==127)
        begin
            valid_out<=1;
            data_out<=datatemp;
        end
    end
end


endmodule

此代码显示以下错误:

第44行:我不是常数

请告诉我怎么移除它。我会很感激的。

EN

回答 1

Stack Overflow用户

发布于 2015-06-25 12:15:41

看来你的for循环结束得太快了。在for循环完成后,您正在检查i的值,因为它等于127。我认为,要编译代码,需要这样做:

代码语言:javascript
复制
for(i=0;i<=127;i=i+8)
begin
    datatemp[i:i+7]<=data_in;
    if(i==127)
    begin
        valid_out<=1;
        data_out<=datatemp;
    end
end

但你确定这能做你想做的事吗?你知道在Verilog中,for-循环是展开的吗?它们在C、Java或任何软件语言中的表现都非常不同。我不知道为什么您需要检查i的值,除非您不了解for-循环在可综合的Verilog中是如何工作的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31046853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档