HOME Corporate Product Verilog VHDL Link Contact Site map


本モジュールはアドレスデコーダと設定レジスタを使用したモジュールです。
 
アドレスデコータ、設定レジスタは使用するCPUやチップの仕様、モジュール構成 などによりカスタマイズしなければならず、本モジュールも汎用性は少なく、ある 限定された仕様のもとに作成されたモジュールです。
しかし、基本的なアドレスデコード方法やレジスタの作成方法はそれほど大きくは かわらないので十分参考になると考えています。
使用者は作成する仕様に基づき、カスタマイズしてください。


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



Back

HOME Corporate Product Verilog VHDL Link Contact Site map