2014-10-31 1 views
0

Я реализую один цикл MIPS-процессора и инициализирую свою память с помощью $readmemb или $readmemh. В этом случае я хочу инициализировать свой файл реестра с помощью 32-разрядных инструкций, но я не хочу писать эти инструкции вручную.

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

`define ADD 5'b0xx01 
{1'b1, 5'd0, 5'd0, 5'd0, `ADD, 11'd1} 
{1'b1, 5'd0, 5'd0, 5'd0, `ADD, 11'd7} 

ответ

1

Вы не можете использовать конкатенацию, повторение или define макросы внутри файлов, передаваемых $readmemb или $readmemh. Синтаксис этих файлов описан в разделе IEEE Std 1800-2012, раздел «21.4 Загрузка данных массива памяти из файла». Синтаксис довольно ограничен. Значения разделяются только пробелами, могут содержать необязательные символы подчеркивания для удобства чтения и комментарии (/**/ или //).

Возможные варианты включают:

  • Используйте скрипт (например, Perl), чтобы генерировать readmem файлы вне Verilog.
  • Используйте конкатенацию, повторение и определите синтаксис, который вы указали в циклах Verilog in for.
Смежные вопросы