0

私はシングル サイクル risc プロセッサに取り組んでいます。命令メモリにアルテラ 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プログラミングを学んでいます

4

1 に答える 1

0

これは VHDL の問題ではありません。しかし、IMO、VHDL の方がより良い答えが得られます。この「LPM Wizard 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 パッケージを作成させるのは簡単です...

于 2012-12-28T21:47:56.897 に答える