verilog - 输出处于未定义状态
问题描述
图像。我正在尝试解决下面写的问题。我很困惑为什么我的输出处于未定义状态。“人口计数”电路计算输入向量中“1”的数量。为 255 位输入向量构建人口计数电路。
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
解决方案
困惑为什么我的输出处于未定义状态。
所有 HDL 变量都是未定义的(“X”或“U”),直到您给它们一个值。
然后,您将一个值添加到counter_next=counter+in[i];
仍然给出未定义的未定义值。所以它保持这种状态。
此外,您正在使用“counter=counter_next”,这表明您已经看到了一些现有的 HDL 代码并且您正在尝试复制它,但您不明白为什么它会以这种方式实现。当有时钟时使用“下一个”系统。你没有时钟,因此在这里它是多余的。
您正在寻找的代码可能是这样的:
output reg [7:0] out
always @( * )
begin
out = 0;
for (int i=0; i<$bits(in);i++)
out =out+in[i];
end
请注意,我在counter
这里没有使用额外的变量。我所做的只是制作一个 reg 类型,以便我可以直接使用它。
推荐阅读
- performance - OpenCL 在内存和性能方面,在内核代码中使用用户定义函数的效率如何
- c++ - c ++模拟人造鼠标按下以触发刷新glfw
- android - RecyclerView 对列表的每个项目都有一个实例
- reactjs - React Element Tag 不接受 Function 和 React.Component 类型
- amazon-web-services - 将 S3 存储桶复制到另一个 S3 存储桶的子路径
- django - 模块“whitenoise.storage”未定义“CompressedMainfestStaticFilesStorage”属性/类
- mysql - 存储的 FUNCTION 没有在 MySql 中返回结果?
- java - 可扩展的recyclerview实现
- ios - 如何修复 Xcode 错误 - 类不是键编码
- python - 为什么我必须同时写 'read' 和 'r' 才能使用 pandas 写入文件