涉及到一些细节问题,可能是你的文件格式问题,或者安装的软件问题;
像ram,rom这样的,可以采用代码映射的模块,不如直接用verilog,这样描述问题更清晰。如:
module rom
#(parameter DATA_WIDTH=8, parameter ADDR_WIDTH=9)
(
input [(ADDR_WIDTH-1):0] addr,
input clk,
output reg [(DATA_WIDTH-1):0] q
);
reg [DATA_WIDTH-1:0] rom[2**ADDR_WIDTH-1:0];
initial
begin
$readmemb("rom_init_binary.txt", rom);
end
always @ (posedge clk)
begin
q <= rom[addr];
end
endmodule
数据文件这里用的是二进制,每行一个数据即可。
涉及到一些细节问题,可能是你的文件格式问题,或者安装的软件问题;
像ram,rom这样的,可以采用代码映射的模块,不如直接用verilog,这样描述问题更清晰。如:
module rom
#(parameter DATA_WIDTH=8, parameter ADDR_WIDTH=9)
(
input [(ADDR_WIDTH-1):0] addr,
input clk,
output reg [(DATA_WIDTH-1):0] q
);
reg [DATA_WIDTH-1:0] rom[2**ADDR_WIDTH-1:0];
initial
begin
$readmemb("rom_init_binary.txt", rom);
end
always @ (posedge clk)
begin
q <= rom[addr];
end
endmodule
数据文件这里用的是二进制,每行一个数据即可。
举报