Я пытаюсь прочитать файл .mif
, и это ошибка, которую я получаю -
Ошибка (10170): синтаксическая ошибка Verilog HDL в sine3_test1.MIF рядом текст: с. Проверьте и исправьте любые синтаксические ошибки, которые появляются немедленно до или в указанном ключевом слове. База знаний Intel FPGA содержит множество статей с конкретными подробностями о том, как решить эту ошибка. Посетите базу знаний по адресу https://www.altera.com/support/support-resources/knowledge-base/search.html и найдите этот конкретный номер сообщения об ошибке.
Ошибка вроде бы в первой строке. Мой файл MIF имеет 8-битную ширину данных и глубину 256 слов.
memory address = UNS (unisgned decimal)
memory data = hexadecimal
Мой исходный код следующий:
reg [7:0]memory[0:255];
begin
$readmemh("sine3_test1.MIF",memory);
end
Я удалил пробелы и добавил несколько отсутствующих номеров блоков памяти. В настоящее время он хранится в папке моего проекта (хотя и не является частью проекта Quartus).
Формат входного файла неверен для $readmemh
. Системная задача $readmemh
ожидает, что файл будет содержать только числа в шестнадцатеричном формате, а не слова, такие как DEPTH
, или пары адрес/данные, такие как 0:78;
.
Вы не можете напрямую прочитать файл mif
, используя $readmemh
. Вам нужно создать еще один файл, содержащий только данные, например sine3_test1.hex
:
78
7a
7d
Затем используйте:
$readmemh("sine3_test1.hex", memory);
Полную спецификацию формата входного файла см. в IEEE Std 1800-2017, раздел 21.4 Загрузка данных массива памяти из файла. Формат поддерживает адресную информацию, но в данном случае это не является необходимым.
Вы можете прочитать файл mif
, используя $fopen
(и связанные с ним функции) вместо $readmemh
, но это потребует гораздо больше работы.