--
-- 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;
|