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.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage