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