gpt4 book ai didi

module - 我的测试台总是显示 X 作为输出

转载 作者:行者123 更新时间:2023-12-04 07:29:00 26 4
gpt4 key购买 nike

我无法识别错误,但所有代码在逻辑和语法上似乎都是正确的。 sum 的值和 carry在测试台中总是 X。
有两个模块,一个用于 8 位加法器,另一个用于 16 位加法器:

module adder_8(in1 , in2 , cin , sum , carry);

input [7:0] in1 , in2;
input cin;
output reg [7:0] sum;
output reg carry;

always @(in1 or in2) begin
{carry , sum} = in1 + in2 + cin;
end
endmodule

module adder_16(input_a , input_b , c , summation , cout);

input [15:0] input_a , input_b;
input c;
output [15:0] summation;
output cout;

wire t1;

adder_8 inst1 (input_a[7:0] , input_b[7:0] , c , summation[7:0] , t1);
adder_8 inst2 (input_a[15:8] , input_b[15:8] , t1 , summation[15:8] , cout);

endmodule
测试台文件是:
module testbench;

reg [15:0] a,b;

wire [15:0] sum;
wire carry;

parameter zero = 1'b0;

adder_16 ex(a , b , zero , sum , carry);

initial begin

$monitor($time," A = %d , B = %d sum = %d carry = %b", a , b , sum , carry);

#10 a = 16'd 100; b = 16'd 100;

#10 a = 16'd 50; b = 16'd 20;

#20 $finish;

end
endmodule
我真的很感激一些帮助。

最佳答案

cin always @(in1 or in2) 的敏感度列表中缺失.应该是 always @(in1 or in2 or cin)与 1995 版标准相补充。 2001 版标准将其改进为 always @* (或同义词 always @(*) 用于自动敏感度列表。
如果您的目标是 SystemVerilog,请使用 always_comb (没有 @ 或信号列表)。这将添加一个额外的编译时间检查,以确保逻辑没有分配到另一个 always block 中,这会使代码非合成器。

关于module - 我的测试台总是显示 X 作为输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68058066/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com