auguo 发表于 2024-1-16 08:44:37

[求助] 模块的输出无法正确传递给下个模块

本帖最后由 auguo 于 2024-1-16 08:45 编辑

我仿真的时候例化了2个模块,其中一个模块的输出作为下一个模块的输入。但是这个过程中,第一个模块的输出正常,传递给下个模块的值为高阻态Z。

以加法器为例子:我使用了2个加法器,其中第一个加法器的输出作为第二个加法器的输入。
//////加法器////////
module adder(
   input clk,
   input wire num0,   // 被加数1
   input wire num1,   //被加数2
   input en,                         //使能信号
   output reg 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 num0;
input num1;
input num2;

input en0;
input en1;

output 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


希望大神帮忙看看,哪里有问题

丁辉 发表于 2024-2-23 16:29:00

在顶层top中加一下sum0信号的定义               wire sum0;
页: [1]
查看完整版本: [求助] 模块的输出无法正确传递给下个模块