So initialisieren Sie den Inhalt des abgeleiteten Block-RAM (BRAM) in Verilog
Ich habe Probleme beim Initialisieren des Inhalts eines abgeleiteten Arbeitsspeichers in Verilog. Der Code für den Widder lautet wie folgt:
module ram(
input clock, // System clock
input we, // When high RAM sets data in input lines to given address
input [13:0] data_in, // Data lines to write to memory
input [10:0] addr_in, // Address lines for saving data to memory
input [10:0] addr_out, // Address for reading from ram
output reg data_out // Data out
);
reg [13:0] ram[2047:0];
// Initialize RAM from file
// WHAT SHOULD GO HERE?
always @(posedge clock) begin
// Save data to RAM
if (we) begin
ram[addr_in] <= data_in;
end
// Place data from RAM
data_out <= ram[addr_out];
end
endmodule
Ich habe den Befehl $ readmemh ausgeführt. Die Dokumentation dafür scheint jedoch spärlich. Wie soll ich die Datei formatieren, die die Daten enthält? Wie kann ich die Datei als Argument übergeben, wenn ich dieses Modul instanziiere, damit verschiedene Instanzen dieses Moduls aus verschiedenen Dateien geladen werden können?
Ich möchte, dass der initialisierte Inhalt sowohl für die Simulation als auch für die tatsächliche Implementierung verfügbar ist. Damit bootet der FPGA schon mit diesem Inhalt im RAM.
Ich verwende Vivado 2015.4, um ein Kintex xc7k70-FPGA zu programmieren.