我正在研究单循环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编程
答案 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包是微不足道的......