作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法识别错误,但所有代码在逻辑和语法上似乎都是正确的。 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/
我一直致力于制作一个可以在多个实例中使用的解码器,只需更改输入/输出向量大小的通用值即可。解码器将根据输入的整数转换“sll”单个位、多个位置。解码器本身工作正常。当我制作测试台并编译时,问题就出现了
我有一个带有多个 De CoupledIO 输入和输出的模块。有没有办法独立地提供刺激并收集每个端口的响应? 我可以通过在每个周期迭代所有端口来“模拟”PeekPokeTest 中的这种行为,但是如果
我是一名优秀的程序员,十分优秀!