diff --git a/hdl/combpm_gtwrapper.vhd b/hdl/combpm_gtwrapper.vhd index bb0b9861c0162f034aecdcaf212b7beeeb3199f0..c227c78fa30dbf3ebb5f0ab5d416ea34ee18f4c3 100644 --- a/hdl/combpm_gtwrapper.vhd +++ b/hdl/combpm_gtwrapper.vhd @@ -5,6 +5,8 @@ use ieee.std_logic_misc.all; library UNISIM; use UNISIM.vcomponents.all; +use work.combpm_gtwrapper_pkg.all; + entity combpm_gtwrapper is port( -- 100MHz clock, main ref clock @@ -40,7 +42,6 @@ entity combpm_gtwrapper is gt_rxclkactive : out std_logic_vector(C_NUM_CHAN-1 downto 0); gt_txresetdone : out std_logic_vector(C_NUM_CHAN-1 downto 0); gt_rxresetdone : out std_logic_vector(C_NUM_CHAN-1 downto 0); - gt_rxcdrlock : out std_logic_vector(C_NUM_CHAN-1 downto 0); gt_rxbyteisaligned : out std_logic_vector(C_NUM_CHAN-1 downto 0); gt_rxbyterealign : out std_logic_vector(C_NUM_CHAN-1 downto 0); gt_rxcommadet : out std_logic_vector(C_NUM_CHAN-1 downto 0); @@ -103,15 +104,13 @@ begin ----------------- -- MAP SIGNALS -- ----------------- - g_map_sigs:for I in 0 to C_NUM_CHAN generate + g_map_sigs:for I in 0 to C_NUM_CHAN-1 generate gt_txclkactive(I) <= txclkactive; gt_rxclkactive(I) <= rxclkactive; gt_txresetdone(I) <= txresetdone; gt_rxresetdone(I) <= rxresetdone; gt_qplllock(I) <= qplllock; - - - end generate g_glob_sigs; + end generate g_map_sigs; rstall <= or_reduce(gt_rstall); gt_txfault <= sfp_tx_fault; @@ -119,6 +118,9 @@ begin gt_modabs <= sfp_mod_abs; sfp_tx_disable <= gt_txdisable; + -- Temporary + qplllock <= '1'; + -------------------------- -- TRANSCEIVER INSTANCE -- -------------------------- @@ -146,7 +148,7 @@ begin gtwiz_userdata_tx_in => gt_datatx, gtwiz_userdata_rx_out => gt_datarx, gtrefclk01_in(0) => ref_clk, - qpll1lock_out(0) => qplllock, + --qpll1lock_out(0) => qplllock, qpll1outclk_out => open, qpll1outrefclk_out => open, gthrxn_in => sfp_rxn, @@ -166,7 +168,6 @@ begin rxbufstatus_out => open, rxbyteisaligned_out => gt_rxbyteisaligned, rxbyterealign_out => gt_rxbyterealign, - rxcdrlock_out => gt_rxcdrlock, rxclkcorcnt_out => open, rxcommadet_out => gt_rxcommadet, rxctrl0_out => open, diff --git a/hdl/combpm_gtwrapper_CAENELS4SFP_1L_pkg.vhd b/hdl/combpm_gtwrapper_CAENELS4SFP_1L_pkg.vhd index a9f6f0ab78b0cae852dec453d34c8137ae1a020d..3c342b02b3dc29660ca7af47d2867c0bfb7a48ff 100644 --- a/hdl/combpm_gtwrapper_CAENELS4SFP_1L_pkg.vhd +++ b/hdl/combpm_gtwrapper_CAENELS4SFP_1L_pkg.vhd @@ -1,7 +1,10 @@ +library ieee; +use ieee.std_logic_1164.all; + package combpm_gtwrapper_pkg is - constant C_NUM_CHAN = 1; + constant C_NUM_CHAN : natural := 1; - COMPONENT gtwizard_ultrascale_caenelsfmc4sfp + COMPONENT combpm_gtwizard PORT ( gtwiz_userclk_tx_reset_in : IN STD_LOGIC_VECTOR(0 DOWNTO 0); gtwiz_userclk_tx_srcclk_out : OUT STD_LOGIC_VECTOR(0 DOWNTO 0); @@ -25,7 +28,7 @@ package combpm_gtwrapper_pkg is gtwiz_userdata_tx_in : IN STD_LOGIC_VECTOR(15 DOWNTO 0); gtwiz_userdata_rx_out : OUT STD_LOGIC_VECTOR(15 DOWNTO 0); gtrefclk01_in : IN STD_LOGIC_VECTOR(0 DOWNTO 0); - qpll1lock_out : OUT STD_LOGIC_VECTOR(0 DOWNTO 0); + --qpll1lock_out : OUT STD_LOGIC_VECTOR(0 DOWNTO 0); qpll1outclk_out : OUT STD_LOGIC_VECTOR(0 DOWNTO 0); qpll1outrefclk_out : OUT STD_LOGIC_VECTOR(0 DOWNTO 0); gthrxn_in : IN STD_LOGIC_VECTOR(0 DOWNTO 0); @@ -36,21 +39,21 @@ package combpm_gtwrapper_pkg is rxmcommaalignen_in : IN STD_LOGIC_VECTOR(0 DOWNTO 0); rxpcommaalignen_in : IN STD_LOGIC_VECTOR(0 DOWNTO 0); tx8b10ben_in : IN STD_LOGIC_VECTOR(0 DOWNTO 0); - txctrl0_in : IN STD_LOGIC_VECTOR(63 DOWNTO 0); - txctrl1_in : IN STD_LOGIC_VECTOR(63 DOWNTO 0); - txctrl2_in : IN STD_LOGIC_VECTOR(31 DOWNTO 0); + txctrl0_in : IN STD_LOGIC_VECTOR(15 DOWNTO 0); + txctrl1_in : IN STD_LOGIC_VECTOR(15 DOWNTO 0); + txctrl2_in : IN STD_LOGIC_VECTOR(7 DOWNTO 0); gthtxn_out : OUT STD_LOGIC_VECTOR(0 DOWNTO 0); gthtxp_out : OUT STD_LOGIC_VECTOR(0 DOWNTO 0); gtpowergood_out : OUT STD_LOGIC_VECTOR(0 DOWNTO 0); - rxbufstatus_out : OUT STD_LOGIC_VECTOR(11 DOWNTO 0); + rxbufstatus_out : OUT STD_LOGIC_VECTOR(2 DOWNTO 0); rxbyteisaligned_out : OUT STD_LOGIC_VECTOR(0 DOWNTO 0); rxbyterealign_out : OUT STD_LOGIC_VECTOR(0 DOWNTO 0); - rxclkcorcnt_out : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); + rxclkcorcnt_out : OUT STD_LOGIC_VECTOR(1 DOWNTO 0); rxcommadet_out : OUT STD_LOGIC_VECTOR(0 DOWNTO 0); - rxctrl0_out : OUT STD_LOGIC_VECTOR(63 DOWNTO 0); - rxctrl1_out : OUT STD_LOGIC_VECTOR(63 DOWNTO 0); - rxctrl2_out : OUT STD_LOGIC_VECTOR(31 DOWNTO 0); - rxctrl3_out : OUT STD_LOGIC_VECTOR(31 DOWNTO 0); + rxctrl0_out : OUT STD_LOGIC_VECTOR(15 DOWNTO 0); + rxctrl1_out : OUT STD_LOGIC_VECTOR(15 DOWNTO 0); + rxctrl2_out : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); + rxctrl3_out : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); rxpmaresetdone_out : OUT STD_LOGIC_VECTOR(0 DOWNTO 0); txpmaresetdone_out : OUT STD_LOGIC_VECTOR(0 DOWNTO 0) ); diff --git a/ip_cores/CAENELSSFP_1L.xci b/ip_cores/CAENELSSFP_1L.xci index fd29c96b716f672870157d041bd57877299f7136..9e900ac4542d531374b8abb1e3e751407c96ce70 100644 --- a/ip_cores/CAENELSSFP_1L.xci +++ b/ip_cores/CAENELSSFP_1L.xci @@ -7,7 +7,7 @@ <spirit:componentInstances> <spirit:componentInstance> <spirit:instanceName>CAENELSSFP_1L</spirit:instanceName> - <spirit:componentRef spirit:vendor="xilinx.com" spirit:library="ip" spirit:name="combpm_gtwrapper" spirit:version="1.7"/> + <spirit:componentRef spirit:vendor="xilinx.com" spirit:library="ip" spirit:name="gtwizard_ultrascale" spirit:version="1.7"/> <spirit:configurableElementValues> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CHANNEL_ENABLE">"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000"</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_COMMON_SCALING_FACTOR">1</spirit:configurableElementValue>