首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >输出处于未定义状态。

输出处于未定义状态。
EN

Stack Overflow用户
提问于 2019-08-11 22:57:36
回答 1查看 548关注 0票数 0

图像。我正试图解决下面写的一个问题。我搞不懂为什么输出处于未定义的状态。“人口计数”电路计算输入向量中“1”的数目。为255位输入向量建立一个人口计数电路。

代码语言:javascript
复制
module top_module( 
    input [254:0] in,
    output [7:0] out );

    reg [7:0] counter=8'b0;
    reg [7:0] counter_next=8'b0;
    always @ (*)
        begin
            counter=counter_next;
        end
    always @ (*)
        begin
            for (int i=0; i<$bits(in);i++)
                counter_next=counter+in[i];
        end
    assign out=counter;
endmodule
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-12 06:06:14

为什么我的输出处于未定义状态?

所有HDL变量都是未定义的(“X”或“U”),直到给出值为止。

然后,向未定义的值counter_next=counter+in[i];添加一个值,该值仍然提供未定义的值。所以它就一直这样。

另外,您使用的是“counter=counter_next”,这表明您已经看到了一些现有的HDL代码,并且试图复制它,但是您不明白为什么要以这种方式实现它。当有时钟时,使用“next”系统。你没有钟,因此它在这里是多余的。

您要查找的代码可能如下所示:

代码语言:javascript
复制
output reg [7:0] out

always @( * )
begin
   out = 0;
   for (int i=0; i<$bits(in);i++)
      out =out+in[i];
end

请注意,这里我没有使用额外的变量counter。我所做的就是做一个reg类型,这样我就可以直接使用它了。

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

https://stackoverflow.com/questions/57454192

复制
相关文章

相似问题

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