我试图通过使用多个内存块(基本模块的初始化)并将所有这些块的输出绑定到一条线来模拟真正基本的内存模型。这是这样做的吗?
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,它看起来要复杂得多了!
答案 0 :(得分:1)
您需要三态输出才能执行此操作。三态在启用时驱动导线,在没有时处于高阻态。但是你需要确保你不能同时启用两个模块。
{{1}}