有多个模块的电线

时间:2017-03-22 13:50:50

标签: verilog

我试图通过使用多个内存块(基本模块的初始化)并将所有这些块的输出绑定到一条线来模拟真正基本的内存模型。这是这样做的吗?

module memoryBlock(
 input Enable,
 output [7:0] dataOut,
 input [7:0] dataIN
);

always @(*) begin
  if(Enable == 1)
    dataOut = dataIn;

end

endmodule;

这个想法是,一次只能启用其中一个数据块,然后我可以将启用块中的任何信息传递给输出线。我将如何使用它:

module testbench;
  reg [7:0] exampleData1 = 8'b00000001;
  reg [7:0] exampleData2 = 8'b11111111;
  reg enable1 = 0;
  reg enable2 = 1;
  wire [7:0] outputForBoth;

memoryBlock mb1(enable1, outputForBoth, exampleData1);
memoryBlock mb2(enable2, outputForBoth, exampleData2);

endmodule;

当我在输出刚刚'zzzzzzzz'之前尝试了这样的样本时。我的目标是能够拥有多个内存块..只启用其中一个内存块,并使该线保存该块中的任何数据。这是正确的方法吗?任何帮助都会很大!

这样我只需要一个地方来检索所有输出信息。我认为这样做的另一种方式是构建一些类型的MUX,它看起来要复杂得多了!

1 个答案:

答案 0 :(得分:1)

您需要三态输出才能执行此操作。三态在启用时驱动导线,在没有时处于高阻态。但是你需要确保你不能同时启用两个模块。

{{1}}