AMBPEX5_v20_SX50T_CORE
adm/cl_ambpex5/rtl/ctrl_adsp_v2_decode_data_cs.vhd
00001 ---------------------------------------------------------------------------------------------------
00002 --
00003 -- Title       : ctrl_adsp_v2_decode_data_cs
00004 -- Author      : Dmitry Smekhov,Ilya Ivanov
00005 -- Company     : Instrumental System
00006 --
00007 -- Version     : 1.1
00008 ---------------------------------------------------------------------------------------------------
00009 --
00010 -- Description :  Модуль декодирования сигналов чтения из тетрады для Virtex2
00011 --
00012 ---------------------------------------------------------------------------------------------------
00013 --
00014 --      Version 1.1 17.06.2005
00015 --                              Удалены атрибуты RLOC и компоненты FMAP
00016 --
00017 ---------------------------------------------------------------------------------------------------
00018 
00019 library IEEE;
00020 use IEEE.STD_LOGIC_1164.all;  
00021 use ieee.std_logic_arith.all;
00022 
00023 -- synopsys translate_off
00024 library ieee;
00025 use ieee.vital_timing.all;      
00026 -- synopsys translate_on
00027 
00028 library unisim;
00029 use unisim.VCOMPONENTS.all;
00030 
00031 
00032 entity ctrl_adsp_v2_decode_data_cs is   
00033         generic(
00034                 trd                     : in integer;                   -- номер тетрады
00035                 reg                     : in integer                    -- номер регистра
00036                                                                                         -- 0 - STATUS
00037                                                                                         -- 1 - DATA
00038                                                                                         -- 2 - CMD_ADR
00039         );                                       
00040         port (
00041                 reset           : in std_logic;                 -- 0 - сброс
00042                 clk                     : in std_logic;                 -- тактовая частота
00043                 cmd_data_en     : in std_logic;                 -- 1 - разрешение декодирования CMD_DATA
00044                 adr                     : in std_logic_vector( 4 downto 0 );    -- шина адреса
00045                 rd                      : in std_logic;                                                 -- 0 - чтение данных
00046                 data_cs         : out std_logic                                                 -- 0 - чтение данных
00047         );
00048 end ctrl_adsp_v2_decode_data_cs;
00049 
00050 
00051 architecture ctrl_adsp_v2_decode_data_cs of ctrl_adsp_v2_decode_data_cs is
00052 
00053 signal cs0      : std_logic;    -- 1 - совпадение номера тетрады
00054 signal cs1      : std_logic;    -- 0 - чтение данных
00055 
00056 component fmap is
00057         port(
00058                 i1, i2, i3, i4  : in std_logic;
00059                 o                               : in std_logic
00060         );
00061 end component;
00062         
00063 --attribute rloc        : string;
00064 --attribute rloc        of fmap : component is "X0Y0";
00065 ----attribute rloc      of xcs1 : label is "R0C0.S0";
00066 --attribute rloc        of xd   : label is "X0Y0";
00067 
00068 begin
00069         
00070 -- дешифрация регистров STATUS, DATA, CMD_ADR
00071 gen0: if( reg/=3 ) generate
00072         
00073 cs0 <='1' when adr( 4 downto 2 )=conv_std_logic_vector( trd, 3 ) else '0';
00074 
00075         
00076 cs1 <='0' when  adr( 1 downto 0 )=conv_std_logic_vector( reg, 2 ) 
00077                                 and rd='0' and  cs0='1'
00078                                 else '1'  after 1 ns;
00079 --xcs0: fmap port map( o=>cs0, i1=>adr(2), i2=>adr(3), i3=>adr(4), i4=>'0' );
00080 
00081 end generate;
00082 
00083 -- дешифрация регистра CMD_ADR
00084 gen3: if( reg=3 ) generate
00085         
00086 cs0 <='1' when adr( 4 downto 2 )=conv_std_logic_vector( trd, 3 ) 
00087                            and cmd_data_en='1' else '0';
00088 
00089         
00090 cs1 <='0' when  adr( 1 downto 0 )=conv_std_logic_vector( reg, 2 ) 
00091                                 and rd='0' and  cs0='1'
00092                                 else '1'  after 1 ns;
00093 --xcs0: fmap port map( o=>cs0, i1=>adr(2), i2=>adr(3), i3=>adr(4), i4=>cmd_data_en );
00094 
00095 end generate;                                   
00096                         
00097 --xcs1: fmap port map( o=>cs1, i1=>cs0, i2=>rd, i3=>adr(0), i4=>adr(1) );
00098 xd:       fd   port map( q =>data_cs, c =>clk , d =>cs1  );
00099 
00100 
00101 end ctrl_adsp_v2_decode_data_cs;