verilog - 始终不分配输出的循环
问题描述
我正在做一个平均重置 EDA Playground 上的每个周期。模拟器 Icarus Verilog 上没有显示任何错误,但输出一直未分配(当然,这不是我想要的)。
这是我的设计:
module shift
(
input [13:0] in,
input clock,
output [31:0] sum,
output [14:0] avg);
integer reset;
reg [31:0] sum_reg;
reg [14:0] avg_reg;
always @(posedge clock)
if (reset == 8) begin
avg_reg = sum_reg >> 3;
sum_reg = 0;
reset = 0;
end else begin
sum_reg = sum_reg + in;
reset = reset + 1;
end
assign sum = sum_reg;
assign avg = avg_reg;
endmodule
这是我的测试平台:
module shift_tb;
reg [13:0] in;
reg clock = 1'b0;
reg reset;
wire [31:0] sum;
wire [14:0] avg;
shift s
(
.in(in),
.clock(clock),
.sum(sum),
.avg(avg));
integer f;
initial begin
for (f = 9000; f < 10000; f = f + 10) begin
in = f;
$display("in = %d, sum = %d, avg = %d", in, sum, avg);
end
end
always
#1 clock = ~clock;
endmodule
这段代码有什么问题?
解决方案
一个问题是最初reset
是这样的,并且一直保持这种状态。您需要一种将其初始化为 0 的方法。integer
x
另一个问题是您的 testbench for
-loop 没有延迟。你应该添加@(nedgedge clk)
推荐阅读
- react-native - 在反应导航中管理多个导航器(堆栈导航器和底部标签导航器)
- javascript - 如何获取特定复选框的位置编号
- python - 使用 Python scrapy 时错误的图像 src url
- excel - 在word中使用vba将文本添加到excel单元格
- blazor - 在 Blazor 中滚动时延迟加载下拉项目
- date - 将纪元时间转换为时间戳颤动
- elasticsearch - ElasticSearch 查找给定单词最常用的单词
- google-app-engine - 谷歌云应用引擎错误 502 Bad Gateway 上带有 django rest 后端的 Angular 前端
- javascript - 尝试从表中获取数据时出错
- java - github上的Java代码覆盖工具,无需在本地机器上运行