Verilog HDL Intel Quartus Prime 中 .mif 文件的 $readmemh 语法错误

问题描述 投票:0回答:1

我正在尝试读取一个

.mif
文件,这是我得到的错误-

错误 (10170):sine3_test1.MIF 处的 Verilog HDL 语法错误 near 文本:p。检查并修复立即出现的任何语法错误 在指定关键字之前或之后。英特尔 FPGA 知识数据库 包含许多文章,其中包含有关如何解决此问题的具体细节 错误。访问知识库 https://www.altera.com/support/support-resources/knowledge-base/search.html 并搜索此特定错误消息编号。

错误似乎在第一行。 我的 MIF 文件有 8 位数据宽度和 256 字深度。

memory address = UNS (unisgned decimal)
memory data = hexadecimal

[enter image description here

我的源代码如下:

reg [7:0]memory[0:255];
begin
    $readmemh("sine3_test1.MIF",memory);
end

我删除了空格并添加了一些缺失的内存块编号。 目前,我将它存储在我的项目文件夹中(尽管不是 Quartus 项目的一部分)。

verilog system-verilog quartus
1个回答
0
投票

输入文件的格式不正确

$readmemh
$readmemh
系统任务期望文件只有十六进制格式的数字,而不是像
DEPTH
这样的单词,或者像
0:78;
.

这样的地址/数据对

如果是

mif
文件的格式,则不能直接读取
mif
文件。您需要创建另一个仅包含其中数据的文件,例如
sine3_test1.dat

78
7a
7d

然后使用:

$readmemh("sine3_test1.dat", memory);

Refer to IEEE Std 1800-2017, section 21.4 Loading memory array data from a file.


您可以使用

mif
(和相关函数)而不是
$fopen
来读取
$readmemh
文件,但那样会需要更多的工作。

© www.soinside.com 2019 - 2024. All rights reserved.