]> jspc29.x-matter.uni-frankfurt.de Git - trb3sc.git/commitdiff
CTS compiled with primitive DLM support. ITC[1] is used for sending.
authorMichael Boehmer <mboehmer@ph.tum.de>
Mon, 15 Nov 2021 13:16:55 +0000 (14:16 +0100)
committerMichael Boehmer <mboehmer@ph.tum.de>
Mon, 15 Nov 2021 13:16:55 +0000 (14:16 +0100)
cts/trb3sc_cts.prj
cts/trb3sc_cts.vhd

index 1ad9b458e0701c27fdfe90f17100eafbe96bc6f1..cd34c4c5f71e18154a7a07c458df5e7d89adf893 100644 (file)
@@ -130,20 +130,20 @@ add_file -vhdl -lib work "../../trbnet/trb_net_onewire.vhd"
 add_file -vhdl -lib work "../../trbnet/trb_net16_addresses.vhd"
 
 #Media interface
-add_file -vhdl -lib work "../../trbnet/media_interfaces/sync/med_sync_define.vhd"
-add_file -vhdl -lib work "../../trbnet/media_interfaces/sync/rx_control.vhd"
-add_file -vhdl -lib work "../../trbnet/media_interfaces/sync/tx_control.vhd"
-add_file -vhdl -lib work "../../trbnet/media_interfaces/sync/rx_reset_fsm.vhd"
-add_file -vhdl -lib work "../../trbnet/media_interfaces/sync/tx_reset_fsm.vhd"
-add_file -vhdl -lib work "../../trbnet/media_interfaces/sync/sci_reader.vhd"
-add_file -vhdl -lib work "../../trbnet/media_interfaces/sync/med_sync_control.vhd"
+add_file -vhdl -lib work "../../trbnet/media_interfaces/sync/med_sync_define_RS.vhd"
+add_file -vhdl -lib work "../../trbnet/media_interfaces/sync/rx_control_RS.vhd"
+add_file -vhdl -lib work "../../trbnet/media_interfaces/sync/tx_control_RS.vhd"
+add_file -vhdl -lib work "../../trbnet/media_interfaces/sync/rx_reset_fsm_RS.vhd"
+add_file -vhdl -lib work "../../trbnet/media_interfaces/sync/tx_reset_fsm_RS.vhd"
+add_file -vhdl -lib work "../../trbnet/media_interfaces/sync/sci_reader_RS.vhd"
+add_file -vhdl -lib work "../../trbnet/media_interfaces/sync/med_sync_control_RS.vhd"
 add_file -vhdl -lib work "../../trbnet/media_interfaces/ecp3_sfp/serdes_sync_0.vhd"
 add_file -vhdl -lib work "../../trbnet/media_interfaces/ecp3_sfp/serdes_sync_3.vhd"
-add_file -vhdl -lib work "../../trbnet/media_interfaces/ecp3_sfp/serdes_sync_4.vhd"
-add_file -vhdl -lib work "../../trbnet/media_interfaces/ecp3_sfp/serdes_sync_4_slave3.vhd"
-add_file -vhdl -lib work "../../trbnet/media_interfaces/med_ecp3_sfp_sync.vhd"
-add_file -vhdl -lib work "../../trbnet/media_interfaces/med_ecp3_sfp_sync_4.vhd"
-add_file -vhdl -lib work "../../trbnet/media_interfaces/med_ecp3_sfp_sync_4_slave3.vhd"
+#add_file -vhdl -lib work "../../trbnet/media_interfaces/ecp3_sfp/serdes_sync_4.vhd"
+#add_file -vhdl -lib work "../../trbnet/media_interfaces/ecp3_sfp/serdes_sync_4_slave3.vhd"
+add_file -vhdl -lib work "../../trbnet/media_interfaces/med_ecp3_sfp_sync_RS.vhd"
+#add_file -vhdl -lib work "../../trbnet/media_interfaces/med_ecp3_sfp_sync_4.vhd"
+#add_file -vhdl -lib work "../../trbnet/media_interfaces/med_ecp3_sfp_sync_4_slave3.vhd"
 
 #TrbNet Endpoint
 add_file -vhdl -lib work "../../trbnet/trb_net16_term_buf.vhd"
index 21c7bbe7dd8b955770382e9bcd2f4dcf92250516..e2bffc7b8cb1b24bdd54a430bf2c1be76c48b84d 100644 (file)
@@ -103,11 +103,15 @@ architecture trb3sc_arch of trb3sc_cts is
   attribute syn_keep     : boolean;
   attribute syn_preserve : boolean;
   
-  signal clk_sys, clk_full, clk_full_osc, clk_cal   : std_logic;
-  signal GSR_N       : std_logic;
-  signal reset_i     : std_logic;
-  signal clear_i     : std_logic;
-  signal do_reboot_i, reboot_from_gbe : std_logic;
+  signal clk_sys           : std_logic;
+  signal clk_full          : std_logic;
+  signal clk_full_osc      : std_logic;
+  signal clk_cal           : std_logic;
+  signal GSR_N             : std_logic;
+  signal reset_i           : std_logic;
+  signal clear_i           : std_logic;
+  signal do_reboot_i       : std_logic;
+  signal reboot_from_gbe   : std_logic;
   
   signal time_counter      : unsigned(31 downto 0) := (others => '0');
   signal led               : std_logic_vector(1 downto 0);
@@ -190,6 +194,8 @@ architecture trb3sc_arch of trb3sc_cts is
 
   signal cts_addon_triggers_in       : std_logic_vector(ADDON_LINE_COUNT-1 downto 0);
 
+  signal cts_output_multiplexers_i   : std_logic_vector(CTS_OUTPUT_MULTIPLEXERS - 1 downto 0);
+
   signal cts_trg_send                : std_logic;
   signal cts_trg_type                : std_logic_vector(3 downto 0);
   signal cts_trg_number              : std_logic_vector(15 downto 0);
@@ -220,6 +226,9 @@ architecture trb3sc_arch of trb3sc_cts is
   attribute syn_keep of bustc_rx     : signal is true;
   attribute syn_preserve of bustc_rx : signal is true;   
   
+  signal tx_dlm_i                    : std_logic;
+  signal rx_dlm_i                    : std_logic;
+  
 begin
 
 ---------------------------------------------------------------------------
@@ -246,7 +255,6 @@ THE_CLOCK_RESET :  entity work.clock_reset_handler
     DEBUG_OUT       => debug_clock_reset
   );
 
-
   proc_make_reset : process begin
     wait until rising_edge(clk_sys);
     if(reset_via_gbe = '1') then
@@ -271,16 +279,16 @@ THE_CLOCK_RESET :  entity work.clock_reset_handler
 ---------------------------------------------------------------------------
 -- PCSA
 ---------------------------------------------------------------------------    
-bussci1_tx.data    <= (others => '0');
-bussci1_tx.ack     <= '0';
-bussci1_tx.nack    <= '0';
-bussci1_tx.unknown <= '1';
+  bussci1_tx.data    <= (others => '0');
+  bussci1_tx.ack     <= '0';
+  bussci1_tx.nack    <= '0';
+  bussci1_tx.unknown <= '1';
 
 ---------------------------------------------------------------------------
 -- PCSB   Downlink without backplane is SFP
 ---------------------------------------------------------------------------   
 gen_PCSB : if USE_BACKPLANE = c_NO and USE_ADDON = c_NO generate
-  THE_MEDIA_PCSB : entity work.med_ecp3_sfp_sync
+  THE_MEDIA_PCSB : entity work.med_ecp3_sfp_sync_RS
     generic map(
       SERDES_NUM    => 3,
       IS_SYNC_SLAVE => c_NO
@@ -295,10 +303,10 @@ gen_PCSB : if USE_BACKPLANE = c_NO and USE_ADDON = c_NO generate
       MEDIA_MED2INT      => med2int(0),
       MEDIA_INT2MED      => int2med(0),
       --Sync operation 
-      RX_DLM             => open,
-      RX_DLM_WORD        => open,
-      TX_DLM             => open,
-      TX_DLM_WORD        => open,
+      RX_DLM_OUT         => rx_dlm_i,
+      RX_DLM_WORD_OUT    => open,
+      TX_DLM_IN          => tx_dlm_i,
+      TX_DLM_WORD_IN     => x"aa",
       --SFP Connection
       SD_PRSNT_N_IN      => SFP_MOD0(1),
       SD_LOS_IN          => SFP_LOS(1),
@@ -311,112 +319,132 @@ gen_PCSB : if USE_BACKPLANE = c_NO and USE_ADDON = c_NO generate
       CTRL_DEBUG         => open
     );    
   PCSSW       <= "01001110"; --SFP2 on B3, AddOn on D1      
+
+  THE_SYNC_PROC: process( clk_sys )
+  begin
+    if( rising_edge(clk_sys) ) then
+      tx_dlm_i <= cts_output_multiplexers_i(0);
+    end if;
+  end process THE_SYNC_PROC;
+
+  --HDR_IO(10 downto 1) <= (others => '0');
+  HDR_IO(10)   <= '0';
+  HDR_IO(9)    <= '0';
+  HDR_IO(8)    <= '0';
+  HDR_IO(7)    <= '0';
+  HDR_IO(6)    <= '0';
+  HDR_IO(5)    <= '0';
+  HDR_IO(4)    <= '0';
+  HDR_IO(3)    <= '0';
+  HDR_IO(2)    <= rx_dlm_i;
+  HDR_IO(1)    <= tx_dlm_i;
+
 end generate;
 
 ---------------------------------------------------------------------------
 -- PCSC   4 downlinks
 ---------------------------------------------------------------------------    
--- bussci3_tx.data <= (others => '0');
--- bussci3_tx.ack  <= '0';
--- bussci3_tx.nack <= '0';
--- bussci3_tx.unknown <= '1';
-gen_PCSC : if USE_BACKPLANE = c_NO and USE_ADDON = c_YES generate
-  THE_MEDIA_PCSC : entity work.med_ecp3_sfp_sync_4
-    generic map(
-      IS_SYNC_SLAVE   => (c_NO, c_NO, c_NO, c_NO),
-      IS_USED         => (c_YES,c_YES ,c_YES ,c_YES)
-    )
-    port map(
-      CLK_REF_FULL       => clk_full_osc,
-      CLK_INTERNAL_FULL  => clk_full_osc,
-      SYSCLK             => clk_sys,
-      RESET              => reset_i,
-      CLEAR              => clear_i,
-      --Internal Connection
-      MEDIA_MED2INT(0)   => med2int(2),
-      MEDIA_MED2INT(1)   => med2int(3),
-      MEDIA_MED2INT(2)   => med2int(0),
-      MEDIA_MED2INT(3)   => med2int(1),
-      MEDIA_INT2MED(0)   => int2med(2),
-      MEDIA_INT2MED(1)   => int2med(3),
-      MEDIA_INT2MED(2)   => int2med(0),
-      MEDIA_INT2MED(3)   => int2med(1),
-      --Sync operation
-      RX_DLM             => open,
-      RX_DLM_WORD        => open,
-      TX_DLM             => open,
-      TX_DLM_WORD        => open,
-      --SFP Connection
-      SD_PRSNT_N_IN(0)   => HUB_MOD0(3),
-      SD_PRSNT_N_IN(1)   => HUB_MOD0(4),
-      SD_PRSNT_N_IN(2)   => HUB_MOD0(1),
-      SD_PRSNT_N_IN(3)   => HUB_MOD0(2),
-      SD_LOS_IN(0)       => HUB_LOS(3),
-      SD_LOS_IN(1)       => HUB_LOS(4),
-      SD_LOS_IN(2)       => HUB_LOS(1),
-      SD_LOS_IN(3)       => HUB_LOS(2),
-      SD_TXDIS_OUT(0)    => HUB_TXDIS(3),
-      SD_TXDIS_OUT(1)    => HUB_TXDIS(4),
-      SD_TXDIS_OUT(2)    => HUB_TXDIS(1),
-      SD_TXDIS_OUT(3)    => HUB_TXDIS(2),
-      --Control Interface
-      BUS_RX             => bussci3_rx,
-      BUS_TX             => bussci3_tx,
-      -- Status and control port
-      STAT_DEBUG         => open,
-      CTRL_DEBUG         => open
-    );      
-end generate;
-
-gen_PCSB_ADDON : if USE_BACKPLANE = c_NO and USE_ADDON = c_YES generate
-  THE_MEDIA_PCSB : entity work.med_ecp3_sfp_sync_4
-    generic map(
-      IS_SYNC_SLAVE   => (c_NO, c_NO, c_NO, c_NO),
-      IS_USED         => (c_YES,c_YES ,c_YES ,c_YES)
-    )
-    port map(
-      CLK_REF_FULL       => clk_full_osc,
-      CLK_INTERNAL_FULL  => clk_full_osc,
-      SYSCLK             => clk_sys,
-      RESET              => reset_i,
-      CLEAR              => clear_i,
-      --Internal Connection
-      MEDIA_MED2INT(0)   => med2int(4),
-      MEDIA_MED2INT(1)   => med2int(5),
-      MEDIA_MED2INT(2)   => med2int(6),
-      MEDIA_MED2INT(3)   => med2int(7),
-      MEDIA_INT2MED(0)   => int2med(4),
-      MEDIA_INT2MED(1)   => int2med(5),
-      MEDIA_INT2MED(2)   => int2med(6),
-      MEDIA_INT2MED(3)   => int2med(7),
-      --Sync operation
-      RX_DLM             => open,
-      RX_DLM_WORD        => open,
-      TX_DLM             => open,
-      TX_DLM_WORD        => open,
-      
-      --SFP Connection
-      SD_PRSNT_N_IN(0)   => HUB_MOD0(5),
-      SD_PRSNT_N_IN(1)   => HUB_MOD0(6),
-      SD_PRSNT_N_IN(2)   => HUB_MOD0(7),
-      SD_PRSNT_N_IN(3)   => HUB_MOD0(8),
-      SD_LOS_IN(0)       => HUB_LOS(5),
-      SD_LOS_IN(1)       => HUB_LOS(6),
-      SD_LOS_IN(2)       => HUB_LOS(7),
-      SD_LOS_IN(3)       => HUB_LOS(8),
-      SD_TXDIS_OUT(0)    => HUB_TXDIS(5),
-      SD_TXDIS_OUT(1)    => HUB_TXDIS(6),
-      SD_TXDIS_OUT(2)    => HUB_TXDIS(7),
-      SD_TXDIS_OUT(3)    => HUB_TXDIS(8),
-      --Control Interface
-      BUS_RX             => bussci2_rx,
-      BUS_TX             => bussci2_tx,
-      -- Status and control port
-      STAT_DEBUG         => open,
-      CTRL_DEBUG         => open
-    );      
-  PCSSW       <= "11100100"; --default 1:1          
-end generate;
+  bussci3_tx.data <= (others => '0');
+  bussci3_tx.ack  <= '0';
+  bussci3_tx.nack <= '0';
+  bussci3_tx.unknown <= '1';
+--gen_PCSC : if USE_BACKPLANE = c_NO and USE_ADDON = c_YES generate
+--  THE_MEDIA_PCSC : entity work.med_ecp3_sfp_sync_4
+--    generic map(
+--      IS_SYNC_SLAVE   => (c_NO, c_NO, c_NO, c_NO),
+--      IS_USED         => (c_YES,c_YES ,c_YES ,c_YES)
+--    )
+--    port map(
+--      CLK_REF_FULL       => clk_full_osc,
+--      CLK_INTERNAL_FULL  => clk_full_osc,
+--      SYSCLK             => clk_sys,
+--      RESET              => reset_i,
+--      CLEAR              => clear_i,
+--      --Internal Connection
+--      MEDIA_MED2INT(0)   => med2int(2),
+--      MEDIA_MED2INT(1)   => med2int(3),
+--      MEDIA_MED2INT(2)   => med2int(0),
+--      MEDIA_MED2INT(3)   => med2int(1),
+--      MEDIA_INT2MED(0)   => int2med(2),
+--      MEDIA_INT2MED(1)   => int2med(3),
+--      MEDIA_INT2MED(2)   => int2med(0),
+--      MEDIA_INT2MED(3)   => int2med(1),
+--      --Sync operation
+--      RX_DLM             => open,
+--      RX_DLM_WORD        => open,
+--      TX_DLM             => open,
+--      TX_DLM_WORD        => open,
+--      --SFP Connection
+--      SD_PRSNT_N_IN(0)   => HUB_MOD0(3),
+--      SD_PRSNT_N_IN(1)   => HUB_MOD0(4),
+--      SD_PRSNT_N_IN(2)   => HUB_MOD0(1),
+--      SD_PRSNT_N_IN(3)   => HUB_MOD0(2),
+--      SD_LOS_IN(0)       => HUB_LOS(3),
+--      SD_LOS_IN(1)       => HUB_LOS(4),
+--      SD_LOS_IN(2)       => HUB_LOS(1),
+--      SD_LOS_IN(3)       => HUB_LOS(2),
+--      SD_TXDIS_OUT(0)    => HUB_TXDIS(3),
+--      SD_TXDIS_OUT(1)    => HUB_TXDIS(4),
+--      SD_TXDIS_OUT(2)    => HUB_TXDIS(1),
+--      SD_TXDIS_OUT(3)    => HUB_TXDIS(2),
+--      --Control Interface
+--      BUS_RX             => bussci3_rx,
+--      BUS_TX             => bussci3_tx,
+--      -- Status and control port
+--      STAT_DEBUG         => open,
+--      CTRL_DEBUG         => open
+--    );      
+--end generate;
+
+--gen_PCSB_ADDON : if USE_BACKPLANE = c_NO and USE_ADDON = c_YES generate
+--  THE_MEDIA_PCSB : entity work.med_ecp3_sfp_sync_4
+--    generic map(
+--      IS_SYNC_SLAVE   => (c_NO, c_NO, c_NO, c_NO),
+--      IS_USED         => (c_YES,c_YES ,c_YES ,c_YES)
+--    )
+--    port map(
+--      CLK_REF_FULL       => clk_full_osc,
+--      CLK_INTERNAL_FULL  => clk_full_osc,
+--      SYSCLK             => clk_sys,
+--      RESET              => reset_i,
+--      CLEAR              => clear_i,
+--      --Internal Connection
+--      MEDIA_MED2INT(0)   => med2int(4),
+--      MEDIA_MED2INT(1)   => med2int(5),
+--      MEDIA_MED2INT(2)   => med2int(6),
+--      MEDIA_MED2INT(3)   => med2int(7),
+--      MEDIA_INT2MED(0)   => int2med(4),
+--      MEDIA_INT2MED(1)   => int2med(5),
+--      MEDIA_INT2MED(2)   => int2med(6),
+--      MEDIA_INT2MED(3)   => int2med(7),
+--      --Sync operation
+--      RX_DLM             => open,
+--      RX_DLM_WORD        => open,
+--      TX_DLM             => open,
+--      TX_DLM_WORD        => open,
+--      
+--      --SFP Connection
+--      SD_PRSNT_N_IN(0)   => HUB_MOD0(5),
+--      SD_PRSNT_N_IN(1)   => HUB_MOD0(6),
+--      SD_PRSNT_N_IN(2)   => HUB_MOD0(7),
+--      SD_PRSNT_N_IN(3)   => HUB_MOD0(8),
+--      SD_LOS_IN(0)       => HUB_LOS(5),
+--      SD_LOS_IN(1)       => HUB_LOS(6),
+--      SD_LOS_IN(2)       => HUB_LOS(7),
+--      SD_LOS_IN(3)       => HUB_LOS(8),
+--      SD_TXDIS_OUT(0)    => HUB_TXDIS(5),
+--      SD_TXDIS_OUT(1)    => HUB_TXDIS(6),
+--      SD_TXDIS_OUT(2)    => HUB_TXDIS(7),
+--      SD_TXDIS_OUT(3)    => HUB_TXDIS(8),
+--      --Control Interface
+--      BUS_RX             => bussci2_rx,
+--      BUS_TX             => bussci2_tx,
+--      -- Status and control port
+--      STAT_DEBUG         => open,
+--      CTRL_DEBUG         => open
+--    );      
+--  PCSSW       <= "11100100"; --default 1:1          
+--end generate;
 
 ---------------------------------------------------------------------------
 -- GbE (PCSD)
@@ -692,7 +720,7 @@ end generate;
       --
       PERIPH_TRIGGER_IN          => (others => '0'),
       --
-      OUTPUT_MULTIPLEXERS_OUT    => open,
+      OUTPUT_MULTIPLEXERS_OUT    => cts_output_multiplexers_i,
       --
       CTS_TRG_SEND_OUT           => cts_trg_send,
       CTS_TRG_TYPE_OUT           => cts_trg_type,
@@ -839,7 +867,7 @@ end generate;
       SPI_MISO_IN       => spi_miso,
       SPI_CLK_OUT       => spi_clk,
       --Header
-      HEADER_IO         => HDR_IO,
+      HEADER_IO         => open, --HDR_IO, -- needed for debug
       --LCD
       LCD_DATA_IN       => open,
       --ADC