HOME Corporate Product Verilog VHDL Link Contact Site map


本モジュールは設定レジスタや内部ステータスをCPUバスに出力するために使用するデータセレクタです。
 
データリードセレクタは使用するCPUやチップの仕様によりカスタマイズしなければならず、本モジュールも汎用は少なく、ある限定された仕様のもとに作成されたモジュールです。
しかし、基本的なデータセレクト方法はそれほど大きく変わらないので十分参考になると考えています。
使用者は仕様に基づきカスタマイズして使用して下さい。
 
ゲートアレイ、FPGAにおいてデータセレクタの作成方法は大きく分けてセレクタ方式とトライステートバッファ(ワーヤードOR)方式にわかれますが、大規模ゲートアレイなどではハードマクロの接続はトライステートバッファで、マクロ内部はセレクタが多いようです。
また、FPGAの世界では最近まで内部にトライステートバッファが作成できないものばかりでしたが、最近の大規模FPGAでは、サポートされてきているようです。これによりIPの流用性が高くなったと考えられます。


--
-- Title     : DATA SELECT VHDL file
-- File name : STPRDSL.vhd
-- Date      : 1998/09/17  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 STPRDSL is
    port(N_RST         :in std_logic;                      

         STB1_FDT_CNT  :in std_logic_vector(9 downto 0);   
         STB2_FDT_CNT  :in std_logic_vector(9 downto 0);   
         STB3_FDT_CNT  :in std_logic_vector(9 downto 0);   
         STB4_FDT_CNT  :in std_logic_vector(9 downto 0);   

         L_FDT_CNT      :in std_logic_vector(11 downto 0); 

         N_RP_THDV      :in std_logic;

         N_4412R        :in std_logic;
         N_4482R        :in std_logic;
         N_4484R        :in std_logic;
         N_4486R        :in std_logic;
         N_4488R        :in std_logic;

         N_AH           :in std_logic;

         TPRD           :out std_logic_vector(15 downto 0);
         TPRDSEL        :out std_logic
         );
end STPRDSL;

architecture TPRDSL of STPRDSL is
-- signal list --

    signal  rp_thev_reg :std_logic;

begin

    process(N_AH,N_RST)begin
        if(N_RST='0')then
            rp_thev_reg <= '0';
        elsif(N_AH' event and N_AH='1')then
            rp_thev_reg <= not N_RP_THDV;
        end if;
    end process;

    -- data selecter

    --データセレクタ
    process(STB1_FDT_CNT,STB2_FDT_CNT,STB3_FDT_CNT,STB4_FDT_CNT,
            L_FDT_CNT,rp_thev_reg,
            N_4412R,N_4482R,N_4484R,N_4486R,N_4488R)begin
        if(N_4412R='0')then
            TPRD <= rp_thev_reg & b"000" & L_FDT_CNT;
        elsif(N_4482R='0')then
            TPRD <= b"000000" & STB1_FDT_CNT;
        elsif(N_4484R='0')then
            TPRD <= b"000000" & STB2_FDT_CNT;
        elsif(N_4486R='0')then
            TPRD <= b"000000" & STB3_FDT_CNT;
        elsif(N_4488R='0')then
            TPRD <= b"000000" & STB4_FDT_CNT;
        else
            TPRD <= b"0000000000000000";
        end if;
    end process;

    TPRDSEL <= not N_4412R or not N_4482R 
         or not N_4484R or not N_4486R or not N_4488R;

end TPRDSL;
    



Back

HOME Corporate Product Verilog VHDL Link Contact Site map