URL
https://opencores.org/ocsvn/pcie_ds_dma/pcie_ds_dma/trunk
Subversion Repositories pcie_ds_dma
[/] [pcie_ds_dma/] [trunk/] [core/] [adm/] [dio64/] [trd_admdio64_in_v6.vhd] - Rev 6
Go to most recent revision | Compare with Previous | Blame | View Log
--------------------------------------------------------------------------------------------------- -- -- Title : trd_admdio64_in_v6 -- Author : Ilya Ivanov -- Company : Instrumental System -- -- Version : 1.2 --------------------------------------------------------------------------------------------------- -- -- Description : Приём цифрового потока -- --------------------------------------------------------------------------------------------------- -- -- Version 1.2 17.07.2007 -- Добавлены выходы регистров MODE0, MODE1, MODE2, MODE3 -- Добавлен выход счётчика слов -- --------------------------------------------------------------------------------------------------- -- -- Version 1.1 18.08.2006 -- Используется FIFO cl_fifo1024x64_v2 -- --------------------------------------------------------------------------------------------------- library ieee; use ieee.std_logic_1164.all; library work; use work.cl_chn_v3_pkg.all; use work.adm2_pkg.all; package trd_admdio64_in_v6_pkg is constant ID_DIO_IN : std_logic_vector( 15 downto 0 ):=x"0013"; -- идентификатор тетрады constant ID_MODE_DIO_IN : std_logic_vector( 15 downto 0 ):=x"0006"; -- модификатор тетрады constant VER_DIO_IN : std_logic_vector( 15 downto 0 ):=x"0102"; -- версия тетрады constant RES_DIO_IN : std_logic_vector( 15 downto 0 ):=x"0010"; -- ресурсы тетрады constant FIFO_DIO_IN : std_logic_vector( 15 downto 0 ):=x"0400"; -- размер FIFO constant FTYPE_DIO_IN : std_logic_vector( 15 downto 0 ):=x"0040"; -- ширина FIFO component trd_admdio64_in_v6 is port( -- GLOBAL reset : in std_logic; -- 0 - сброс clk : in std_logic; -- тактовая частота -- Управление тетрадой data_out : out std_logic_vector( 63 downto 0 ); -- шина данных DATA, выход через буфер data_out2 : out std_logic_vector( 63 downto 0 ); -- шина данных DATA, выход без буфера cmd_data_in : in std_logic_vector( 15 downto 0 ); -- шина данных CMD_DATA cmd : in bl_cmd; -- сигналы управления cmd_data_out : out std_logic_vector( 15 downto 0 ); -- выходы регистров, выход через буфер cmd_data_out2 : out std_logic_vector( 15 downto 0 ); -- выходы регистров, выход без буфера bx_irq : out std_logic; -- 1 - прерывание от тетрады bx_drq : out bl_drq; -- управление DMA mode0 : out std_logic_vector( 15 downto 0 ); -- регистр MODE0 mode1 : out std_logic_vector( 15 downto 0 ); -- регистр MODE1 mode2 : out std_logic_vector( 15 downto 0 ); -- регистр MODE2 mode3 : out std_logic_vector( 15 downto 0 ); -- регистр MODE3 fifo_rst_in : in std_logic:='1'; -- 0 - сброс FIFO (вход) fifo_rst : out std_logic; -- 0 - сброс FIFO (выход) start : out std_logic; -- 1 - разрешение работы (MODE0[5]) -- Запись FIFO data_in : in std_logic_vector(63 downto 0); -- данные для записи в FIFO data_wr : in std_logic; -- 1 - строб записи flag_wr : out bl_fifo_flag; -- флаги FIFO, синхронно с clk_wr flag_rd : out bl_fifo_flag; -- флаги FIFO, синхронно с clk clk_wr : in std_logic; -- тактовая частота записи в FIFO fifo_cnt_wr : out std_logic_vector( 9 downto 0 ); -- число слов в FIFO, синхронно с clk_wr fifo_cnt_rd : out std_logic_vector( 9 downto 0 ) -- число слов в FIFO, синхронно с clk -------------------------------------------- ); end component; end trd_admdio64_in_v6_pkg; library ieee; use ieee.std_logic_1164.all; library unisim; use unisim.vcomponents.all; library work; use work.cl_chn_v3_pkg.all; use work.adm2_pkg.all; use work.cl_fifo1024x65_v5_pkg.all; entity trd_admdio64_in_v6 is port( -- GLOBAL reset : in std_logic; -- 0 - сброс clk : in std_logic; -- тактовая частота -- Управление тетрадой data_out : out std_logic_vector( 63 downto 0 ); -- шина данных DATA, выход через буфер data_out2 : out std_logic_vector( 63 downto 0 ); -- шина данных DATA, выход без буфера cmd_data_in : in std_logic_vector( 15 downto 0 ); -- шина данных CMD_DATA cmd : in bl_cmd; -- сигналы управления cmd_data_out : out std_logic_vector( 15 downto 0 ); -- выходы регистров, выход через буфер cmd_data_out2 : out std_logic_vector( 15 downto 0 ); -- выходы регистров, выход без буфера bx_irq : out std_logic; -- 1 - прерывание от тетрады bx_drq : out bl_drq; -- управление DMA mode0 : out std_logic_vector( 15 downto 0 ); -- регистр MODE0 mode1 : out std_logic_vector( 15 downto 0 ); -- регистр MODE1 mode2 : out std_logic_vector( 15 downto 0 ); -- регистр MODE2 mode3 : out std_logic_vector( 15 downto 0 ); -- регистр MODE3 fifo_rst_in : in std_logic:='1'; -- 0 - сброс FIFO (вход) fifo_rst : out std_logic; -- 0 - сброс FIFO (выход) start : out std_logic; -- 1 - разрешение работы (MODE0[5]) -- Запись FIFO data_in : in std_logic_vector(63 downto 0); -- данные для записи в FIFO data_wr : in std_logic; -- 1 - строб записи flag_wr : out bl_fifo_flag; -- флаги FIFO, синхронно с clk_wr flag_rd : out bl_fifo_flag; -- флаги FIFO, синхронно с clk clk_wr : in std_logic; -- тактовая частота записи в FIFO fifo_cnt_wr : out std_logic_vector( 9 downto 0 ); -- число слов в FIFO, синхронно с clk_wr fifo_cnt_rd : out std_logic_vector( 9 downto 0 ) -- число слов в FIFO, синхронно с clk -------------------------------------------- ); end trd_admdio64_in_v6; architecture trd_admdio64_in_v6 of trd_admdio64_in_v6 is signal rst,fifo_rst0 : std_logic; signal flag_rdi : bl_fifo_flag; signal cmode0 : std_logic_vector(15 downto 0); signal status,sflag : std_logic_vector(15 downto 0); signal do : std_logic_vector(63 downto 0); signal fifo_rst1 : std_logic; begin xstatus: ctrl_buft16 port map( t => cmd.status_cs, i => status, o => cmd_data_out ); cmd_data_out2 <= status; xdata: ctrl_buft64 port map( t => cmd.data_oe, i => do, o => data_out ); data_out2 <= do; chn: cl_chn_v3 generic map( -- 2 - out - для тетрады вывода -- 1 - in - для тетрады ввода chn_type => 1 ) port map ( reset => reset, clk => clk, -- Флаги cmd_rdy => '1', rdy => flag_rdi.ef, fifo_flag => flag_rdi, -- Тетрада data_in => cmd_data_in, cmd => cmd, bx_irq => bx_irq, bx_drq => bx_drq, status => status, -- Управление mode0 => cmode0, mode1 => mode1, mode2 => mode2, mode3 => mode3, sflag => sflag, rst => rst, fifo_rst => fifo_rst0 ); x_fifo: cl_fifo1024x65_v5 port map( -- сброс reset => fifo_rst1, -- запись clk_wr => clk_wr, data_in => data_in, data_en => data_wr, flag_wr => flag_wr, --cnt_wr => fifo_cnt_wr, -- чтение clk_rd => clk, data_out => do, data_cs => cmd.data_cs, flag_rd => flag_rdi --cnt_rd => fifo_cnt_rd ); flag_rd <= flag_rdi; fifo_rst1 <= fifo_rst0 and fifo_rst_in; fifo_rst<=fifo_rst1; start <= cmode0(5); mode0 <= cmode0; end trd_admdio64_in_v6;
Go to most recent revision | Compare with Previous | Blame | View Log