HOME Corporate Product Verilog VHDL Link Contact Site map

16×256サイズの同期RAMのモデルです。ただしビヘービア記述であり合成はできません。
   
最近のFPGAには内部にRAMを構成できるものが増えつつあり、使用方法もソフトマクロをコンポーネントするだけと簡単ですが、論理シミュレーションを行う場合RAMのモデルが無く困る場合があります。その場合に下記のRAMを使用し(RAMの構成は用途によって変更)論理シミュレーションを行います。
   
1.論理合成はできません。
2.実際に使用されるRAM(ソフトマクロ)にエンティティ・リスト、内部論理をあわせ使用するように
  してください。
3.本モデルはALTERAのFLEX10Kシリーズをしようしたときに用いました。


--
-- Title      : RAM sim model VHDL file
-- File name   : syn_ram_256x16_iror.vhd
-- Date       : 1998/09/11  Ver1.0
-- Company     : Future Technology Ltd.
-- Writer     : K.Bettou
--

--使用ライブラリの設定
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
use IEEE.std_logic_arith.all;
use std.textio.all;

--エンティティ リスト
--使用するソフトマクロにより変更してください。
entity syn_ram_256x16_iror is
    --pragma translate_off
    generic ( LPM_FILE : string := "UNUSED" );
    --pragma translate_on
    port(Data       : in std_logic_vector(15 downto 0);
         Address    : in std_logic_vector(7 downto 0);
         WE         : in std_logic;
         Q          : out std_logic_vector(15 downto 0);
         Inclock    : in std_logic;
         Outclock   : in std_logic
     );
end syn_ram_256x16_iror;

architecture RAM of syn_ram_256x16_iror is

-- 使用するRAMのビット幅、アドレスサイズによって変更してください。
subtype RAMWORD is std_logic_vector(15 downto 0);
type RAMARRY is array(0 to 255) of RAMWORD;

signal  RAMDATA     :RAMARRY;
signal  ADR_IN      :integer range 0 to 255;
signal  dti         :std_logic_vector(15 downto 0);
signal  adr         :std_logic_vector(7 downto 0);
signal  wei         :std_logic;
signal  dly_inclk   :std_logic;
signal  dly_wei     :std_logic;

begin

    -- データ、アドレス、ライトコマンドの同期化
    process (Inclock) begin
        if (Inclock'event and Inclock='1') then
            dti <= Data; adr <="Address;"
            wei <="WE;" 
        end if; 
    end process; 

    -- integerに型変換 
    ADR_IN <="CONV_INTEGER(adr);" 

    -- ディレイパラメータです。 
    dly_inclk <="Inclock" after 10 ns;
    dly_wei <="not(wei" and dly_inclk); 

    -- データをRAMにライト(Async RAM) 
    process (dly_wei) begin 
            if (dly_wei'event and dly_wei="1" ) then 
                RAMDATA(ADR_IN) <="dti;"
            end if; 
    end process; 

    -- RAMよりデータをリード 用途が内部RAMなのでライト時以外は
       リードデータを出力します。 
    process (Outclock) begin 
        if (Outclock'event and Outclock="1" ) then 
            if (wei="0" ) then 
                Q <="RAMDATA(ADR_IN);" 
            else 
                Q <="dti;" 
            end if; 
        end if; 
    end process; 
end RAM;
Back

HOME Corporate Product Verilog VHDL Link Contact Site map