From: Michael Boehmer Date: Mon, 15 Nov 2021 13:16:55 +0000 (+0100) Subject: CTS compiled with primitive DLM support. ITC[1] is used for sending. X-Git-Url: https://jspc29.x-matter.uni-frankfurt.de/git/?a=commitdiff_plain;h=115f2fe835813ca45d134d95c468c3648e2d0da5;p=trb3sc.git CTS compiled with primitive DLM support. ITC[1] is used for sending. --- diff --git a/cts/trb3sc_cts.prj b/cts/trb3sc_cts.prj index 1ad9b45..cd34c4c 100644 --- a/cts/trb3sc_cts.prj +++ b/cts/trb3sc_cts.prj @@ -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" diff --git a/cts/trb3sc_cts.vhd b/cts/trb3sc_cts.vhd index 21c7bbe..e2bffc7 100644 --- a/cts/trb3sc_cts.vhd +++ b/cts/trb3sc_cts.vhd @@ -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