其实,更简单的办法是,因为FPGA里面没有真正的ROM,直接写个RAM,加上这样的初始化语句即可:
reg [7:0] mem [0:31];
initial begin
$readmemh("ram.txt", mem);
end
然后ram.txt里面写十六进制的内容,空格/换行分开。
注意,你mem变量有多少个位置,你的ram.txt里面就得有同样多的数据,否则初始化会不成功。
给个完整的例子,这里综合出的是RAM,你可以去掉写的部分,然后就是ROM了:
module ram_with_init(
output reg [7:0] q,
input [7:0] d,
input [2:0] write_address, read_address,
input we, clk
);
reg [7:0] mem [0:7];
initial begin
$readmemh("ram.txt", mem);
end
always @ (posedge clk) begin
if (we)
mem[write_address] <= d;
q <= mem[read_address];
end
endmodule