--------------------------------------------
-- wrapper for the iserdes_ddr and pack_data
--
library ieee;
use ieee.std_logic_1164.all;

library UNISIM;
use UNISIM.vcomponents.all;

entity myserdes_ddr_wrapper is
generic
(-- width of the data for the system
sys_w       : integer := 1;
-- width of the data for the device
dev_w       : integer := 8);
  port (
  
		-- CLOCK:
		clk_in : in std_logic;
		clk_in_div : in std_logic;
		
		-- PADS IN:
		data_in_from_pins_p : in std_logic;
		data_in_from_pins_n : in std_logic;
		
		data_in_to_device : out std_logic_vector( dev_w - 1 downto 0 );
		
		bitslip : in std_logic;
				
		rst_in : in std_logic );
		
end myserdes_ddr_wrapper;

architecture behavioral of myserdes_ddr_wrapper is

component myserdes_ddr is
generic
(-- width of the data for the system
sys_w       : integer := 1;
-- width of the data for the device
dev_w       : integer := 8);
port
(
-- From the system into the device
DATA_IN_FROM_PINS_P     : in    std_logic_vector(sys_w-1 downto 0);
DATA_IN_FROM_PINS_N     : in    std_logic_vector(sys_w-1 downto 0);
DATA_IN_TO_DEVICE       : out   std_logic_vector(dev_w-1 downto 0);

BITSLIP                 : in    std_logic;                    -- Bitslip module is enabled in NETWORKING mode
-- User should tie it to '0' if not needed

-- Clock and reset signals
CLK_IN									: in    std_logic;  -- Fast clock from IOB, after IBUFGDS and BUFIO
CLK_DIV_IN							: in 		std_logic;  -- Divided fast clock from IBUFGDS and BUFR

IO_RESET                : in    std_logic);                   -- Reset signal for IO circuit
end component;

	-- data in signal:
	signal s_data_in_from_pins_p : std_logic_vector( sys_w-1 downto 0 );
	signal s_data_in_from_pins_n : std_logic_vector( sys_w-1 downto 0 );
			
begin
	
	-- convert std_logic to std_logic_vector
	s_data_in_from_pins_n(0) <= data_in_from_pins_n;
	s_data_in_from_pins_p(0) <= data_in_from_pins_p;
	
	-- instantiate the myserdes_ddr
	myserdes_ddr_inst : myserdes_ddr
	port map (
		DATA_IN_FROM_PINS_P => s_data_in_from_pins_p, DATA_IN_FROM_PINS_N => s_data_in_from_pins_n,
		DATA_IN_TO_DEVICE => data_in_to_device,
		BITSLIP => bitslip, CLK_IN => clk_in, CLK_DIV_IN => clk_in_div, IO_RESET => rst_in );
		
	
end architecture;

