2012-12-28 48 views
0

我正在使用單週期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編程

回答

0

這不是一個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