|
--
-- Title : MPU I/F VHDL file
-- File name : STPRREG.vhd
-- Date : 1998/09/16 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;
--エンティティ リスト
entity STPRREG is
port(N_RST :in std_logic; -- reset
-- リセット :アクティブ ”H”
N_IOS44 :in std_logic; -- I/O select
-- I/Oセレクト信号
ADR :in std_logic_vector(7 downto 1); -- address bus
-- アドレス信号
N_IOWRH :in std_logic; -- I/O hi data write command
-- 上位ライトコマンド
N_IOWRL :in std_logic; -- I/O low data write command
-- 下位ライトコマンド
DT :in std_logic_vector(15 downto 0); -- data bus
-- 入力データ
RP_REAL :out std_logic_vector(15 downto 0); -- real fire timer register
-- 外部制御信号
RP_HIST :out std_logic_vector(15 downto 0); -- histroy fire timer register
-- 外部制御信号
RPDMA_EN :out std_logic; -- dma enable register
-- 外部制御信号
PRMODE :out std_logic_vector(1 downto 0); -- fire mode register
-- 外部制御信号
PRHIST :out std_logic; -- histroy mode register
-- 外部制御信号
RP_PWR :out std_logic; -- rp power register
-- 外部制御信号
N_4420W :out std_logic; -- write command
-- レジスタライト信号
N_4410W :out std_logic; -- write command
-- レジスタライト信号
N_4412R :out std_logic; -- read command
-- レジスタリード信号
N_4482R :out std_logic; -- read command
-- レジスタリード信号
N_4484R :out std_logic; -- read command
-- レジスタリード信号
N_4486R :out std_logic; -- read command
-- レジスタリード信号
N_4488R :out std_logic -- read command
-- レジスタリード信号
);
end STPRREG;
architecture TPRREG of STPRREG is
-- signal list --
signal n_4406wr :std_logic; --
-- レジスタライト信号
signal n_4410wr :std_logic; --
-- レジスタライト信号
signal n_4411wr :std_logic; --
-- レジスタライト信号
signal n_4414wr :std_logic; --
-- レジスタライト信号
signal n_4415wr :std_logic; --
-- レジスタライト信号
signal n_4420wr :std_logic; --
-- レジスタライト信号
signal n_4440wr :std_logic; --
-- レジスタライト信号
signal n_4480wr :std_logic; --
-- レジスタライト信号
-- register
-- 設定レジスタ群
signal rp_pwr_reg :std_logic; --
signal rp_rg_real :std_logic_vector(15 downto 0); --
signal rp_rg_hist :std_logic_vector(15 downto 0); --
signal rpdma_en_reg :std_logic;
signal prmode_reg :std_logic_vector(1 downto 0);
signal prhist_reg :std_logic;
begin
---------- I/O command ------------
--レジスタライト信号作成
n_4406wr <= '0' when ((ADR(7 downto 1)=b"0000011") and (N_IOWRH='0') and (N_IOS44='0')) else '1';
n_4410wr <= '0' when ((ADR(7 downto 1)=b"0001000") and (N_IOWRH='0') and (N_IOS44='0')) else '1';
n_4411wr <= '0' when ((ADR(7 downto 1)=b"0001000") and (N_IOWRL='0') and (N_IOS44='0')) else '1';
n_4414wr <= '0' when ((ADR(7 downto 1)=b"0001010") and (N_IOWRH='0') and (N_IOS44='0')) else '1';
n_4415wr <= '0' when ((ADR(7 downto 1)=b"0001010") and (N_IOWRL='0') and (N_IOS44='0')) else '1';
n_4420wr <= '0' when ((ADR(7 downto 1)=b"0010000") and (N_IOWRH='0') and (N_IOS44='0')) else '1';
n_4440wr <= '0' when ((ADR(7 downto 1)=b"0100000") and (N_IOWRH='0') and (N_IOS44='0')) else '1';
n_4480wr <= '0' when ((ADR(7 downto 1)=b"1000000") and (N_IOWRH='0') and (N_IOS44='0')) else '1';
N_4420W <= n_4420wr;
N_4410W <= n_4410wr;
-- レジスタリード信号作成
N_4412R <= '0' when ((ADR(7 downto 1)=b"0001001") and (N_IOS44='0')) else '1';
N_4482R <= '0' when ((ADR(7 downto 1)=b"1000001") and (N_IOS44='0')) else '1';
N_4484R <= '0' when ((ADR(7 downto 1)=b"1000010") and (N_IOS44='0')) else '1';
N_4486R <= '0' when ((ADR(7 downto 1)=b"1000011") and (N_IOS44='0')) else '1';
N_4488R <= '0' when ((ADR(7 downto 1)=b"1000100") and (N_IOS44='0')) else '1';
--------------------------------
-- register --
--------------------------------
-- 設定レジスタ群
process(n_4406wr,N_RST) begin
if(N_RST='0')then
rp_pwr_reg <= '0';
elsif(n_4406wr' event and n_4406wr='1')then
rp_pwr_reg <= DT(13);
end if;
end process;
RP_PWR <= rp_pwr_reg;
process(n_4410wr,N_RST) begin
if(N_RST='0')then
rp_rg_real(15 downto 8) <= b"00000000";
elsif(n_4410wr' event and n_4410wr='1')then
rp_rg_real(15 downto 8) <= DT(15 downto 8);
end if;
end process;
process(n_4411wr,N_RST) begin
if(N_RST='0')then
rp_rg_real(7 downto 0) <= b"00000000";
elsif(n_4411wr' event and n_4411wr='1')then
rp_rg_real(7 downto 0) <= DT(7 downto 0);
end if;
end process;
RP_REAL <= rp_rg_real;
process(n_4414wr,N_RST) begin
if(N_RST='0')then
rp_rg_hist(15 downto 8) <= b"00000000";
elsif(n_4414wr' event and n_4414wr='1')then
rp_rg_hist(15 downto 8) <= DT(15 downto 8);
end if;
end process;
process(n_4415wr,N_RST) begin
if(N_RST='0')then
rp_rg_hist(7 downto 0) <= b"00000000";
elsif(n_4415wr' event and n_4415wr='1')then
rp_rg_hist(7 downto 0) <= DT(7 downto 0);
end if;
end process;
RP_HIST <= rp_rg_hist;
process(n_4440wr,N_RST) begin
if(N_RST='0')then
rpdma_en_reg <= '0';
elsif(n_4440wr' event and n_4440wr='1')then
rpdma_en_reg <= DT(14);
end if;
end process;
RPDMA_EN <= rpdma_en_reg;
process(n_4480wr,N_RST) begin
if(N_RST='0')then
prmode_reg <= b"00";
prhist_reg <= '0';
elsif(n_4480wr' event and n_4480wr='1')then
prmode_reg <= DT(15 downto 14);
prhist_reg <= DT(8);
end if;
end process;
PRMODE <= prmode_reg;
PRHIST <= prhist_reg;
end TPRREG;
|