ПЗУ компиляции Quartus Prime

Привет, я разрабатываю 32-битный микроконтроллер ISA RISCV, и я организовал ПЗУ в массивы по 8 бит (1 байт), тогда выходная ширина составляет 32 бита. Потому что мне это нужно.

rom.txt: (каждая строка - инструкция)

00000011 00100000 00000111 10010011                 
00000001 01000000 00001000 00010011 
00000001 00000111 10001000 10110011                 
00000001 00010001 00100000 00100011     
00000000 00000001 00101001 00000011
00000001 00100001 00100100 00100011
00000000 10000001 00101001 10000011
01000001 00000111 10001010 00110011
11111100 11101000 00001010 10010011     
11111101 01100000 00001110 11100011

RTL для ПЗУ:

module ROM(RADDRESS, DATA_OUT);

    parameter WIDTH = 32;    // out width
    parameter SIZE = 128;    // Total elements of 8 bytes

    input   [WIDTH-1:0]     RADDRESS ;
    output  [WIDTH-1:0]     DATA_OUT;
    reg     [7:0]           MEMORY [SIZE-1:0]; 

    initial // Read instructions 
    begin
        $readmemb("rom.txt", MEMORY); 
    end

    assign DATA_OUT = {MEMORY[RADDRESS], MEMORY[RADDRESS+1], MEMORY[RADDRESS+2], MEMORY[RADDRESS+3]}; // Big endian

endmodule

Когда я моделирую с помощью тестового стенда в Questasim / Modelsim, микроконтроллер работает нормально, и инструкции выполняются правильно.

Но в Quartus Prime, когда я компилирую, он просто компилируется нормально, а в отчете о компиляции я получаю всего 0 логических элементов и 0 регистров.

Конечно, у меня есть ОЗУ и другие компоненты внутри микроконтроллера, которые также используют регистры и логические ячейки.

Также у меня есть входные и выходные контакты для / от микроконтроллера. Модуль верхнего уровня иерархии имеет вывод и ввод.

Это похоже на то, что Quartus syntethizer просто не определяет мой RTL из-за моего ПЗУ.


person Community    schedule 23.12.2018    source источник
comment
в ваших отчетах должно быть больше сообщений, объясняющих ситуацию.   -  person Serge    schedule 23.12.2018
comment
- Предупреждение (10850): предупреждение Verilog HDL в ROM.sv (13): количество слов (40) в файле памяти не соответствует количеству элементов в диапазоне адресов [0: 255]. - Предупреждение (10855): предупреждение Verilog HDL в ROM.sv (12): начальное значение для переменной MEMORY должно быть постоянным. - Предупреждение (10030): Net MEMORY в ROM.sv (9) не имеет драйвера или начального значения, с использованием начального значения по умолчанию «0».   -  person    schedule 23.12.2018
comment
Похоже, в вашем файле rom.txt недостаточно данных для инициализации всей памяти. Извините, я мало знаю о Quartus, поэтому скажите, могло ли это быть причиной вашей проблемы или нет.   -  person Serge    schedule 24.12.2018
comment
Нет ли других предупреждений или ошибок, кроме тех, которые относятся к вашему ПЗУ?   -  person Unn    schedule 26.12.2018
comment
@Unn больше никаких предупреждений и ошибок.   -  person    schedule 26.12.2018
comment
На какую часть FPGA вы нацеливаетесь?   -  person Pulimon    schedule 26.12.2018


Ответы (1)


Я бы попробовал следующее:

  • Используйте шаблон ROM в Quartus (откройте файл дизайна, затем щелкните правой кнопкой мыши и выберите «вставить шаблон»). Quartus часто путается с точным синтаксисом при выводе IP, например, чтение четырех записей за раз может вызвать проблемы.
  • Если у вас все еще есть проблемы, запустите мастер IP встроенной памяти и выберите файл rom.txt в качестве содержимого ПЗУ.

Если вы отправите запрос в службу поддержки Intel, я почти уверен, что они вам скажут именно это. Обратите внимание, что обе эти опции, вероятно, предполагают изменение вашего шестнадцатеричного файла, чтобы он содержал 32-битные записи вместо 8-битных.

person pc3e    schedule 02.01.2019