我正在写一个简单的系统,其中有一个内存模块(带有读写信号的简单寄存器)。现在这个内存必须被其他几个模块访问(不是同时)。所以我创建了这个内存的一个实例并向它提供数据。但我不知道我的其他模块将如何访问内存模块的相同实例。任何帮助?从其他几个模块内部访问一个模块的实例? (verilog)
编辑
让我通过一些代码澄清一下。这是我的记忆模块,简单的信号。
module rom(
input [15:0] addr,
input [15:0] data_in,
input rd,
input wr,
input cs,
output reg [15:0] data_out
);
reg [15:0] mem[255:0];
integer k;
initial begin
for(k = 0;k<256;k=k+2)
mem[k] = 16'h0011;
for(k = 1;k<256;k=k+2)
mem[k] = 16'h0101;
end
always @(cs)begin
if(wr)
mem[addr] <= data_in;
if(rd)
data_out <= mem[addr];
end
endmodule
这将在我的顶层模块实例化,这样的事情
module Top;
// Inputs
reg [15:0] addr;
reg [15:0] data_in;
reg rd;
reg wr;
reg cs;
// Outputs
wire [15:0] data_out;
// Instantiate the Unit Under Test (UUT)
rom uut (
.addr(addr),
.data_in(data_in),
.rd(rd),
.wr(wr),
.cs(cs),
.data_out(data_out)
);
....
....
....
endmodule
现在这个顶层模块也将包含将要连接到存储一些其他模块。我真的不明白我将如何连接它们。假设有一个这样的模块
module IF_stage(
input clk,
input rst,
output reg [15:0] pc,
output [15:0] instruction
);
//pc control
[email protected](posedge clk or posedge rst)
begin
if(rst)
pc <= 16'hFFFF;
else
pc <= pc+1;
end
....
如何从这里访问内存模块?
“访问模块”是什么意思?你只需要像其他任何东西一样连接电线。你能否再描述一下层次结构,并解释为什么你不能通过端口/电线连接模块? – Tim 2012-04-11 19:14:41
@Tim我无法通过电线连接它们(据我所知)。内存模块是一个,所有其他模块都希望从中访问数据。所以如果我在任何其他模块中创建一个实例,它将是一个不同的实例。你如何建议我通过电线连接它们? – 2012-04-11 19:24:41