我目前正在使用 Quartus 20.1 和 Modelsim 2020.1 在 VHDL 中设计基于 MIPS 的处理器。
我创建了一个 MIF 文件(希望)计算给定数字的 GCD。我的 MIF 文件包含以下内容:
Depth = 256;
Width = 32;
Address_radix = hex;
Data_radix = bin;
%This program will calculate the GCD of the values stored in inport0 and inport1%
%Main :%
%lw $s0, FFF8($zero)%
00:10001100000100001111111111111000;
%lw $s1, FFFC($zero)%
01:10001100000100011111111111111100;
%loop:%
%beq $s1, $s0, Exit_the_Loop%
02:00010010001100000000000000001001;
%sltu $t0, $s1, $s0%
03:000000010001000110000101011;
%bne $t0, $zero, skip%
04:00010101000000000000000000000111;
%subu $s1, $s1, $s0%
05:00000010001100011000000000100011;
%j loop%
06:00001000000000000000000000000010;
%skip:%
%subu $s0, $s0, $s1%
07:00000010000100001000100000100011;
%j loop%
08:00001000000000000000000000000010;
%Exit_the_Loop:%
%sw $s0, FFFC($zero)%
09:10101100000100001111111111111100;
%End:%
%j End%
0A:00001000000000000000000000001010;
END;
但是,每次我尝试在 modelsim 中模拟我的设计时,都会收到以下错误: “错误:MIF 包含非法字符 0” 错误消息本身不清楚,我知道我的文件中某处有非法字符或某种语法错误,但错误消息没有告诉我在哪里。 此外,我还对照其他正在运行的文件检查了我的 MIF 文件,发现它没有任何问题。
任何人都可以确认我的 MIF 文件是否有可能导致此问题的错误吗?我不知道还能做什么。
我尝试引用我保留的一个示例 MIF 文件来应对这种情况,但运气不佳。 我还尝试用谷歌搜索可能导致此特定错误的原因,但也没有运气。
最初,使用破折号而不是百分号来表示注释,因为我认为这就是问题所在,但也没有好处。
我发现了这个问题,这是我的一个愚蠢的疏忽。支持user16145658帮助解决这个问题!
显示错误的原因是:我忘记了“内容”和“开始”标题。
这是正确的 MIF 文件,按预期工作!
Depth = 256;
Width = 32;
Address_radix = hex;
Data_radix = bin;
CONTENT
BEGIN
-- lw $s0, FFF8($zero)
00:10001100000100001111111111111000;
-- lw $s1, FFFC($zero)
01:10001100000100011111111111111100;
-- beq $s1, $s0, Exit_the_Loop
02:00010010001100000000000000000110;
-- sltu $t0, $s1, $s0
03:00000010001100000100000000101011;
-- bne $t0, $zero, skip
04:00010101000000000000000000000010;
-- subu $s1, $s1, $s0
05:00000010001100001000100000100011;
-- j loop
06:00001000000000000000000000000010;
-- subu $s0, $s0, $s1
07:00000010000100011000000000100011;
-- j loop
08:00001000000000000000000000000010;
-- sw $s0, FFFC($zero)
09:10101100000100001111111111111100;
-- j End
0A:00001000000000000000000000001010;
END;