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

问题描述:

我正在使用单周期risc处理器。我正在使用altera LPM向导ROM 1端口作为指令存储器。 ROM由mif文件初始化。下面使用文件初始化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; 

我不知道发生了什么,所以请help..I是刚刚学习VHDL编程

这不是一个VHDL问题!但IMO,VHDL给你一个更好的答案。用普通的VHDL常量数组替换这个“LPM向导ROM”,初始化(以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包是微不足道的......

+0

我的家庭作业是通过使用LPM向导ROM 1端口指令存储器这样我就可以改变这种设计RISC处理器。我已经完成了其他的事情,但在这里我卡住了。 – kajay

+0

我在Quartus II 12.0中测试过,工作正常。在Quartus II 8.1中它不起作用。 – kajay