Как инициализировать содержимое предполагаемого блока RAM (BRAM) в Verilog

У меня возникли проблемы с инициализацией содержимого предполагаемого барана в Verilog. Код для оперативной памяти, как показано ниже:

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

Я столкнулся с командой $ readmemh. Тем не менее, документация для этого кажется скудной. Как мне отформатировать файл, содержащий данные? Кроме того, как я могу передать файл в качестве аргумента при создании экземпляра этого модуля, чтобы иметь возможность загружать разные экземпляры этого модуля из разных файлов?

Я хочу, чтобы инициализированный контент был доступен как для моделирования, так и для фактической реализации. Так что FPGA уже загружается с этим содержимым в оперативной памяти.

Я использую Vivado 2015.4 для программирования FPGA Kintex xc7k70.

Ответы на вопрос(1)

Ваш ответ на вопрос