ROM模块:
module ROM(addr, data, oe);
output[31:0] data;//32位数据信号
input[31:0] addr;//地址信号
input oe;//读使能低电平有效
reg[31:0]mem[0:1023];
assign data= (oe==0)?mem[addr[11:2]]:8'hzz;
initial
begin
mem[0]=32'hffff_ffff;
mem[1]=32'h1111_1111;
mem[2]=32'h8888_8888;
mem[3]=32'h2222_2222;
mem[4]=32'haaaa_aaaa;
end
endmodule
测试模块:
module rom_tb;
reg[31:0]addr;
reg oe;
wire[31:0]data;
initial
begin
oe = 0; //低电平使能
//读取 第1 2 3 4单元数据
#50 addr = 32'h0000_0004;
#50 addr = 32'h0000_0008;
#50 addr = 32'h0000_000c;
#50 addr = 32'h0000_0010;
end
ROM r1(.addr(addr), .data(data), .oe(oe));
endmodule