-
Eric Kooistra authoredEric Kooistra authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
tech_transceiver_component_pkg.vhd 8.81 KiB
-------------------------------------------------------------------------------
--
-- Copyright (C) 2014
-- ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/>
-- P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
--
-- This program is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation, either version 3 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
--
-------------------------------------------------------------------------------
-- Purpose: IP components declarations for various devices that get wrapped by the tech components
LIBRARY IEEE, technology_lib;
USE IEEE.STD_LOGIC_1164.ALL;
USE technology_lib.technology_pkg.ALL;
PACKAGE tech_transceiver_component_pkg IS
------------------------------------------------------------------------------
-- ip_stratixiv
------------------------------------------------------------------------------
COMPONENT ip_stratixiv_hssi_gx_32b_generic IS
GENERIC (
g_mbps : NATURAL;
starting_channel_number : NATURAL := 0
);
PORT (
cal_blk_clk : IN STD_LOGIC ;
gxb_powerdown : IN STD_LOGIC_VECTOR (0 DOWNTO 0);
pll_inclk : IN STD_LOGIC ;
pll_powerdown : IN STD_LOGIC_VECTOR (0 DOWNTO 0);
reconfig_clk : IN STD_LOGIC ;
reconfig_togxb : IN STD_LOGIC_VECTOR (3 DOWNTO 0);
rx_analogreset : IN STD_LOGIC_VECTOR (0 DOWNTO 0);
rx_datain : IN STD_LOGIC_VECTOR (0 DOWNTO 0);
rx_digitalreset : IN STD_LOGIC_VECTOR (0 DOWNTO 0);
rx_enapatternalign : IN STD_LOGIC_VECTOR (0 DOWNTO 0);
rx_seriallpbken : IN STD_LOGIC_VECTOR (0 DOWNTO 0);
tx_ctrlenable : IN STD_LOGIC_VECTOR (3 DOWNTO 0);
tx_datain : IN STD_LOGIC_VECTOR (31 DOWNTO 0);
tx_digitalreset : IN STD_LOGIC_VECTOR (0 DOWNTO 0);
pll_locked : OUT STD_LOGIC_VECTOR (0 DOWNTO 0);
reconfig_fromgxb : OUT STD_LOGIC_VECTOR (16 DOWNTO 0);
rx_byteorderalignstatus : OUT STD_LOGIC_VECTOR (0 DOWNTO 0);
rx_clkout : OUT STD_LOGIC_VECTOR (0 DOWNTO 0);
rx_ctrldetect : OUT STD_LOGIC_VECTOR (3 DOWNTO 0);
rx_dataout : OUT STD_LOGIC_VECTOR (31 DOWNTO 0);
rx_disperr : OUT STD_LOGIC_VECTOR (3 DOWNTO 0);
rx_errdetect : OUT STD_LOGIC_VECTOR (3 DOWNTO 0);
rx_freqlocked : OUT STD_LOGIC_VECTOR (0 DOWNTO 0);
rx_patterndetect : OUT STD_LOGIC_VECTOR (3 DOWNTO 0);
tx_clkout : OUT STD_LOGIC_VECTOR (0 DOWNTO 0);
tx_dataout : OUT STD_LOGIC_VECTOR (0 DOWNTO 0)
);
END COMPONENT;
COMPONENT ip_stratixiv_hssi_tx_32b_generic IS
GENERIC(
g_mbps : NATURAL
);
PORT (
cal_blk_clk : IN STD_LOGIC ;
gxb_powerdown : IN STD_LOGIC_VECTOR (0 DOWNTO 0);
pll_inclk : IN STD_LOGIC ;
pll_powerdown : IN STD_LOGIC_VECTOR (0 DOWNTO 0);
tx_ctrlenable : IN STD_LOGIC_VECTOR (3 DOWNTO 0);
tx_datain : IN STD_LOGIC_VECTOR (31 DOWNTO 0);
tx_digitalreset : IN STD_LOGIC_VECTOR (0 DOWNTO 0);
pll_locked : OUT STD_LOGIC_VECTOR (0 DOWNTO 0);
tx_clkout : OUT STD_LOGIC_VECTOR (0 DOWNTO 0);
tx_dataout : OUT STD_LOGIC_VECTOR (0 DOWNTO 0)
);
END COMPONENT;
COMPONENT ip_stratixiv_hssi_rx_32b_generic IS
GENERIC (
g_mbps : NATURAL;
starting_channel_number : NATURAL := 0
);
PORT (
cal_blk_clk : IN STD_LOGIC ;
gxb_powerdown : IN STD_LOGIC_VECTOR (0 DOWNTO 0);
reconfig_clk : IN STD_LOGIC ;
reconfig_togxb : IN STD_LOGIC_VECTOR (3 DOWNTO 0);
rx_analogreset : IN STD_LOGIC_VECTOR (0 DOWNTO 0);
rx_cruclk : IN STD_LOGIC_VECTOR (0 DOWNTO 0) := (OTHERS => '0');
rx_datain : IN STD_LOGIC_VECTOR (0 DOWNTO 0);
rx_digitalreset : IN STD_LOGIC_VECTOR (0 DOWNTO 0);
rx_enapatternalign : IN STD_LOGIC_VECTOR (0 DOWNTO 0);
reconfig_fromgxb : OUT STD_LOGIC_VECTOR (16 DOWNTO 0);
rx_byteorderalignstatus : OUT STD_LOGIC_VECTOR (0 DOWNTO 0);
rx_clkout : OUT STD_LOGIC_VECTOR (0 DOWNTO 0);
rx_ctrldetect : OUT STD_LOGIC_VECTOR (3 DOWNTO 0);
rx_dataout : OUT STD_LOGIC_VECTOR (31 DOWNTO 0);
rx_disperr : OUT STD_LOGIC_VECTOR (3 DOWNTO 0);
rx_errdetect : OUT STD_LOGIC_VECTOR (3 DOWNTO 0);
rx_freqlocked : OUT STD_LOGIC_VECTOR (0 DOWNTO 0);
rx_patterndetect : OUT STD_LOGIC_VECTOR (3 DOWNTO 0)
);
END COMPONENT;
COMPONENT ip_stratixiv_hssi_gx_16b IS
GENERIC
(
starting_channel_number : NATURAL := 0
);
PORT
(
cal_blk_clk : IN STD_LOGIC ;
pll_inclk : IN STD_LOGIC ;
pll_powerdown : IN STD_LOGIC_VECTOR (0 DOWNTO 0);
reconfig_clk : IN STD_LOGIC ;
reconfig_togxb : IN STD_LOGIC_VECTOR (3 DOWNTO 0);
rx_analogreset : IN STD_LOGIC_VECTOR (0 DOWNTO 0);
rx_datain : IN STD_LOGIC_VECTOR (0 DOWNTO 0);
rx_digitalreset : IN STD_LOGIC_VECTOR (0 DOWNTO 0);
tx_ctrlenable : IN STD_LOGIC_VECTOR (1 DOWNTO 0);
tx_datain : IN STD_LOGIC_VECTOR (15 DOWNTO 0);
tx_digitalreset : IN STD_LOGIC_VECTOR (0 DOWNTO 0);
pll_locked : OUT STD_LOGIC_VECTOR (0 DOWNTO 0);
reconfig_fromgxb : OUT STD_LOGIC_VECTOR (16 DOWNTO 0);
rx_clkout : OUT STD_LOGIC_VECTOR (0 DOWNTO 0);
rx_ctrldetect : OUT STD_LOGIC_VECTOR (1 DOWNTO 0);
rx_dataout : OUT STD_LOGIC_VECTOR (15 DOWNTO 0);
rx_freqlocked : OUT STD_LOGIC_VECTOR (0 DOWNTO 0);
tx_clkout : OUT STD_LOGIC_VECTOR (0 DOWNTO 0);
tx_dataout : OUT STD_LOGIC_VECTOR (0 DOWNTO 0)
);
END COMPONENT;
COMPONENT ip_stratixiv_hssi_tx_16b IS
PORT
(
cal_blk_clk : IN STD_LOGIC ;
pll_inclk : IN STD_LOGIC ;
pll_powerdown : IN STD_LOGIC_VECTOR (0 DOWNTO 0);
tx_ctrlenable : IN STD_LOGIC_VECTOR (1 DOWNTO 0);
tx_datain : IN STD_LOGIC_VECTOR (15 DOWNTO 0);
tx_digitalreset : IN STD_LOGIC_VECTOR (0 DOWNTO 0);
pll_locked : OUT STD_LOGIC_VECTOR (0 DOWNTO 0);
tx_clkout : OUT STD_LOGIC_VECTOR (0 DOWNTO 0);
tx_dataout : OUT STD_LOGIC_VECTOR (0 DOWNTO 0)
);
END COMPONENT;
COMPONENT ip_stratixiv_hssi_rx_16b IS
GENERIC
(
starting_channel_number : NATURAL := 0
);
PORT
(
cal_blk_clk : IN STD_LOGIC ;
reconfig_clk : IN STD_LOGIC ;
reconfig_togxb : IN STD_LOGIC_VECTOR (3 DOWNTO 0);
rx_analogreset : IN STD_LOGIC_VECTOR (0 DOWNTO 0);
rx_cruclk : IN STD_LOGIC_VECTOR (0 DOWNTO 0) := (OTHERS => '0');
rx_datain : IN STD_LOGIC_VECTOR (0 DOWNTO 0);
rx_digitalreset : IN STD_LOGIC_VECTOR (0 DOWNTO 0);
reconfig_fromgxb : OUT STD_LOGIC_VECTOR (16 DOWNTO 0);
rx_clkout : OUT STD_LOGIC_VECTOR (0 DOWNTO 0);
rx_ctrldetect : OUT STD_LOGIC_VECTOR (1 DOWNTO 0);
rx_dataout : OUT STD_LOGIC_VECTOR (15 DOWNTO 0);
rx_freqlocked : OUT STD_LOGIC_VECTOR (0 DOWNTO 0)
);
END COMPONENT;
COMPONENT ip_stratixiv_gxb_reconfig_v91 IS
GENERIC (
g_nof_gx : NATURAL;
g_fromgxb_bus_w : NATURAL := 17;
g_togxb_bus_w : NATURAL := 4
);
PORT (
reconfig_clk : IN STD_LOGIC;
reconfig_fromgxb : IN STD_LOGIC_VECTOR(g_nof_gx*g_fromgxb_bus_w-1 DOWNTO 0);
busy : OUT STD_LOGIC;
reconfig_togxb : OUT STD_LOGIC_VECTOR(g_togxb_bus_w-1 DOWNTO 0)
);
END COMPONENT;
COMPONENT ip_stratixiv_gxb_reconfig_v111 IS
GENERIC (
g_soft : BOOLEAN := FALSE;
g_nof_gx : NATURAL;
g_fromgxb_bus_w : NATURAL := 17;
g_togxb_bus_w : NATURAL := 4
);
PORT (
reconfig_clk : IN STD_LOGIC;
reconfig_fromgxb : IN STD_LOGIC_VECTOR(tech_ceil_div(g_nof_gx, 4)*g_fromgxb_bus_w-1 DOWNTO 0);
busy : OUT STD_LOGIC;
reconfig_togxb : OUT STD_LOGIC_VECTOR(g_togxb_bus_w-1 DOWNTO 0)
);
END COMPONENT;
------------------------------------------------------------------------------
-- ip_arria10
------------------------------------------------------------------------------
END tech_transceiver_component_pkg;