使用该文件初始化ROM后,MIF文件内容会自动更改

时间:2012-12-28 09:25:45

标签: vhdl

我正在研究单循环risc处理器。我正在使用altera LPM向导ROM 1端口用于指令存储器。 ROM由mif文件初始化。该文件的内容如下所示

WIDTH=16;
DEPTH=256;

ADDRESS_RADIX=HEX;
DATA_RADIX=HEX;

CONTENT BEGIN
-- default value
[00..FF] : 00;

-- instructions

00  : 2401;  -- ADI R1, R0, x01
01  : 2802;  -- ADI R2, R0, x02
02  : 2C03;  -- ADI R3, R0, x03
03  : 3011;  -- ADI R4, R0, x11
04  : 1648;  -- ADD R5, R4, R4
05  : 1AC8;  -- ADD R6, R5, R4
06  : C0C1;  -- ST  R1, R4
07  : C151;  -- ST  R2, R5
08  : C1E1;  -- ST  R3, R6
09  : 80FF;  -- BZ  R0, -1

END;

完成初始化过程后,mif文件的内容会自动更改为

-- Clearbox generated Memory Initialization File (.mif)

WIDTH=16;
DEPTH=256;

ADDRESS_RADIX=HEX;
DATA_RADIX=HEX;

CONTENT BEGIN
000  :   FFF0;
001  :   FFF1;
002  :   FFF2;
003  :   FFF3;
004  :   FFF4;
005  :   FFF5; 
     -------------
    -------------
    0fd  :   FFFD;
0fe  :   FFFE;
0ff  :   FFFF;
END;

我不知道发生了什么,所以请帮助..我只是在学习VHDL编程

1 个答案:

答案 0 :(得分:0)

这不是VHDL问题!但IMO,VHDL为您提供了更好的答案。将此“LPM向导ROM”替换为普通VHDL常量数组,初始化(以VHDL格式)为您想要的值。

package InstMem is

type Instruction is std_logic_vector(15 downto 0);
type ProgMem_Array is array 0 to 255 of Instruction;

constant Progmem : Progmem_Array := (
   00  =>  16#2401#,  -- ADI R1, R0, x01
   01  =>  16#2802#,  -- ADI R2, R0, x02
   02  =>  16#2C03#,  -- ADI R3, R0, x03
   others => (others => 0) );

end package InstMem;

说服你的汇编程序或Python脚本编写这个VHDL包是微不足道的......