Я бы исправил ответ Джорджа, сказав, что от инструмента синтеза зависит, можно ли синтезировать $readmemb
.
Рекомендованные Altera рекомендуемые стили кодирования HDL содержат пример 10-31 (стр. 10-38), в котором показано ПЗУ, выведенное из $readmemb
(воспроизведено ниже):
module dual_port_rom (
input [(addr_width-1):0] addr_a, addr_b,
input clk,
output reg [(data_width-1):0] q_a, q_b
);
parameter data_width = 8;
parameter addr_width = 8;
reg [data_width-1:0] rom[2**addr_width-1:0];
initial // Read the memory contents in the file
// dual_port_rom_init.txt.
begin
$readmemb("dual_port_rom_init.txt", rom);
end
always @ (posedge clk)
begin
q_a <= rom[addr_a];
q_b <= rom[addr_b];
end
endmodule
Точно так же в XST руководстве пользователя Xilinx говорится, что:
Система $readmemb
и $readmemh
задачи могут быть использованы для инициализации блока
воспоминания. Для получения дополнительной информации см .:
Инициализация ОЗУ из внешнего файла
Примеры кодирования
Используйте $readmemb
для
двоичный код и $readmemh
для шестнадцатеричного
представление. Чтобы избежать возможного
разница между XST и симулятором
Xilinx® рекомендует вам
использовать параметры индекса в этих системах
задачи. Смотрите следующую кодировку
Пример.
$readmemb("rams_20c.data",ram, 0, 7);