TA的每日心情 | 难过 2024-1-16 08:24 |
---|
新手入门
- 积分
- 6
|
本帖最后由 auguo 于 2024-1-16 08:45 编辑
我仿真的时候例化了2个模块,其中一个模块的输出作为下一个模块的输入。但是这个过程中,第一个模块的输出正常,传递给下个模块的值为高阻态Z。
以加法器为例子:我使用了2个加法器,其中第一个加法器的输出作为第二个加法器的输入。
//////加法器////////
module adder(
input clk,
input wire [3:0] num0, // 被加数1
input wire [3:0] num1, //被加数2
input en, //使能信号
output reg [4:0] sum, // 输出
output reg sum_vld //输出使能
);
always @(posedge clk ) begin
if (en) begin
sum <= num0 + num1;
sum_vld <= 1;
end
else begin
sum <= sum;
sum_vld <= 0;
end
end
endmodule
/////////////////////////////////////////////////////////
然后在顶层文件例化2个加法器
//////顶层文件////
module Top(
clk,
num0,
num1,
num2,
en0,
en1,
sum1,
sum_vld0,
sum_vld1
);
input clk;
input [3:0] num0;
input [3:0] num1;
input [3:0] num2;
input en0;
input en1;
output [4:0] sum1;
output sum_vld0;
output sum_vld1;
adder adder0(
.clk(clk),
.num0(num0),
.num1(num1),
.en(en0),
.sum(sum0),
.sum_vld(sum_vld0)
);
adder adder1(
.clk(clk),
.num0(sum0),
.num1(num2),
.en(en1),
.sum(sum1),
.sum_vld(sum_vld1)
);
endmodule
///////////////////////////////////////////////////////////////////
仿真输出为X:
进一步检查发现第一个加法器正常工作,3+3 =6,正确。
但是连接到下个加法器的num0时,变成了Z, 导致第二个加法器输出为X
希望大神帮忙看看,哪里有问题
|
|