OpenCores
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 2

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;
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.