ファイルをROMに初期化した後、MIFファイルの内容が自動的に変更されます。

私はシングルサイクルriscプロセッサで作業しています。私は、命令メモリのためにaltera LPM wizard 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
nl ru de

1 答え

これは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;

このVHDLパッケージを書くためにあなたのアセンブラまたはPythonスクリプトを説得するのは簡単です...

0
追加された
私の宿題は、LPM Wizard ROM 1ポートを命令メモリとして使用してriscプロセッサを設計して、それを変更できるようにすることです。私は他のことを完了しましたが、ここで私は立ち往生しました。
追加された 著者 kajay,
私はQuartus II 12.0でテストしましたが、正常に動作しています。 Quartus II 8.1では動作しませんでした。
追加された 著者 kajay,