From 00d656fa8dcf150ee1f009abc154c93c6ef3c5b0 Mon Sep 17 00:00:00 2001 From: Frans Schreuder <fransschreuder@gmail.com> Date: Tue, 15 Sep 2020 17:00:04 +0200 Subject: [PATCH] Copied changes made in rm4.10 to rm5.0 --- sources/templates/dma_control.vhd | 38998 ++++++---------- sources/templates/pcie_package.vhd | 3165 +- sources/templates/registermap.tex | 114 +- sources/templates/registers-4.10.html | 262 +- sources/templates/registers-4.10.yaml | 188 +- sources/templates/registers-5.0.html | 262 +- sources/templates/registers-5.0.yaml | 187 +- .../templates/registers-diff-4.10-5.0.html | 36 +- sources/templates/registers.pdf | Bin 276246 -> 272562 bytes 9 files changed, 14717 insertions(+), 28495 deletions(-) diff --git a/sources/templates/dma_control.vhd b/sources/templates/dma_control.vhd index 0bf88db54..f736cfc03 100644 --- a/sources/templates/dma_control.vhd +++ b/sources/templates/dma_control.vhd @@ -5951,6 +5951,7 @@ end process; -- 0 : TTC_DEC, select CentralRouter data (including TTC) for a specific GBT link -- + register_map_control_s.TTC_DEC_CTRL.L1A_DELAY <= REG_TTC_DEC_CTRL_L1A_DELAY_C; -- Number of BC to delay the L1A distribution to the frontends register_map_control_s.TTC_DEC_CTRL.BCID_ONBCR <= REG_TTC_DEC_CTRL_BCID_ONBCR_C; -- BCID is set to this value when BCR arrives register_map_control_s.TTC_DEC_CTRL.ECR_BCR_SWAP <= REG_TTC_DEC_CTRL_ECR_BCR_SWAP_C; -- ECR and BCR signals are swapped at the output of the TTC decoder (needed only for LAr TTC) register_map_control_s.TTC_DEC_CTRL.BUSY_OUTPUT_INHIBIT <= REG_TTC_DEC_CTRL_BUSY_OUTPUT_INHIBIT_C; -- forces the Busy LEMO output to BUSY-OFF @@ -7882,6 +7883,8 @@ end process; register_map_control_s.WISHBONE_CONTROL.WRITE_NOT_READ <= REG_WISHBONE_CONTROL_WRITE_NOT_READ_C; -- wishbone write command wishbone read command register_map_control_s.WISHBONE_CONTROL.ADDRESS <= REG_WISHBONE_CONTROL_ADDRESS_C; -- Slave address for Wishbone bus register_map_control_s.WISHBONE_WRITE.DATA <= REG_WISHBONE_WRITE_DATA_C; -- Wishbone + register_map_control_s.GLOBAL_STRIPS_CONFIG.TEST_MODULE_MASK <= REG_GLOBAL_STRIPS_CONFIG_TEST_MODULE_MASK_C; -- (for tests only) contains R3 mask for the simulated trigger data + register_map_control_s.GLOBAL_STRIPS_CONFIG.TEST_R3L1_TAG <= REG_GLOBAL_STRIPS_CONFIG_TEST_R3L1_TAG_C; -- (for tests only) contains R3 or L1 tag for the simulated trigger data register_map_control_s.GLOBAL_STRIPS_CONFIG.TTC_GENERATE_GATING_ENABLE <= REG_GLOBAL_STRIPS_CONFIG_TTC_GENERATE_GATING_ENABLE_C; -- Global control for gating signal generation. Enables generating trickle gating signal in response to TTC BCR. TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. (See also BC_START, and BC_STOP fields) if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then register_map_control_s.LCB_CTRL (0)(0).L0A_BCR_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_0_L0A_BCR_DELAY_C; -- TTC BCR signal will be delayed by this many BCs @@ -10075,26313 +10078,15336 @@ end process; if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then register_map_control_s.R3L1_CTRL (3)(3).R3_ENABLE <= REG_CR_ITK_R3L1_LINK_03_R3L1_3_R3_ENABLE_C; -- enables sending RoI R3 signals to the front-end end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(0).L0A_BCR_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_0_L0A_BCR_DELAY_C; -- TTC BCR signal will be delayed by this many BCs - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(0).L0A_FRAME_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_0_L0A_FRAME_DELAY_C; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(0).FRAME_PHASE <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_0_FRAME_PHASE_C; -- phase of LCB frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(0).TRICKLE_BC_START <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_0_TRICKLE_BC_START_C; -- Determines the start of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(0).TRICKLE_BC_STOP <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_0_TRICKLE_BC_STOP_C; -- Determines the end of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(0).LCB_DESTINATION_MUX <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_0_LCB_DESTINATION_MUX_C; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(0).TRICKLE_TRIG_RUN <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_0_TRICKLE_TRIG_RUN_C; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(0).TTC_L0A_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_0_TTC_L0A_ENABLE_C; -- enable generating L0A frames in response to TTC system signals - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(0).TTC_GENERATE_GATING_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_0_TTC_GENERATE_GATING_ENABLE_C; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(4)(0).WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_0_WRITE_PTR_C; -- Trickle configuration memory write pointer - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(4)(0).VALID_DATA_START <= REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_0_VALID_DATA_START_C; -- Start address of trickle configuration in trickle memory - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(4)(0).VALID_DATA_END <= REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_0_VALID_DATA_END_C; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(4)(0).HCC_MASK <= REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_0_HCC_MASK_C; -- HCC* module mask - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(4)(0).ABC_MASK_HCC_E <= REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_0_ABC_MASK_HCC_E_C; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(4)(0).ABC_MASK_HCC_D <= REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_0_ABC_MASK_HCC_D_C; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(4)(0).ABC_MASK_HCC_C <= REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_0_ABC_MASK_HCC_C_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(4)(0).ABC_MASK_HCC_B <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_B_C; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(4)(0).ABC_MASK_HCC_A <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_A_C; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(4)(0).ABC_MASK_HCC_9 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_9_C; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(4)(0).ABC_MASK_HCC_8 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_8_C; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(4)(0).ABC_MASK_HCC_7 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_7_C; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(4)(0).ABC_MASK_HCC_6 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_6_C; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(4)(0).ABC_MASK_HCC_5 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_5_C; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(4)(0).ABC_MASK_HCC_4 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_4_C; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(4)(0).ABC_MASK_HCC_3 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_3_C; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(4)(0).ABC_MASK_HCC_2 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_2_C; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(4)(0).ABC_MASK_HCC_1 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_1_C; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(4)(0).ABC_MASK_HCC_0 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_0_C; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(1).L0A_BCR_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_1_L0A_BCR_DELAY_C; -- TTC BCR signal will be delayed by this many BCs - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(1).L0A_FRAME_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_1_L0A_FRAME_DELAY_C; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(1).FRAME_PHASE <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_1_FRAME_PHASE_C; -- phase of LCB frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(1).TRICKLE_BC_START <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_1_TRICKLE_BC_START_C; -- Determines the start of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(1).TRICKLE_BC_STOP <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_1_TRICKLE_BC_STOP_C; -- Determines the end of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(1).LCB_DESTINATION_MUX <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_1_LCB_DESTINATION_MUX_C; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(1).TRICKLE_TRIG_RUN <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_1_TRICKLE_TRIG_RUN_C; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(1).TTC_L0A_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_1_TTC_L0A_ENABLE_C; -- enable generating L0A frames in response to TTC system signals - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(1).TTC_GENERATE_GATING_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_1_TTC_GENERATE_GATING_ENABLE_C; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(4)(1).WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_1_WRITE_PTR_C; -- Trickle configuration memory write pointer - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(4)(1).VALID_DATA_START <= REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_1_VALID_DATA_START_C; -- Start address of trickle configuration in trickle memory - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(4)(1).VALID_DATA_END <= REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_1_VALID_DATA_END_C; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(4)(1).HCC_MASK <= REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_1_HCC_MASK_C; -- HCC* module mask - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(4)(1).ABC_MASK_HCC_E <= REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_1_ABC_MASK_HCC_E_C; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(4)(1).ABC_MASK_HCC_D <= REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_1_ABC_MASK_HCC_D_C; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(4)(1).ABC_MASK_HCC_C <= REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_1_ABC_MASK_HCC_C_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(4)(1).ABC_MASK_HCC_B <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_B_C; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(4)(1).ABC_MASK_HCC_A <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_A_C; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(4)(1).ABC_MASK_HCC_9 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_9_C; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(4)(1).ABC_MASK_HCC_8 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_8_C; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(4)(1).ABC_MASK_HCC_7 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_7_C; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(4)(1).ABC_MASK_HCC_6 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_6_C; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(4)(1).ABC_MASK_HCC_5 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_5_C; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(4)(1).ABC_MASK_HCC_4 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_4_C; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(4)(1).ABC_MASK_HCC_3 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_3_C; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(4)(1).ABC_MASK_HCC_2 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_2_C; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(4)(1).ABC_MASK_HCC_1 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_1_C; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(4)(1).ABC_MASK_HCC_0 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_0_C; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(2).L0A_BCR_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_2_L0A_BCR_DELAY_C; -- TTC BCR signal will be delayed by this many BCs - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(2).L0A_FRAME_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_2_L0A_FRAME_DELAY_C; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(2).FRAME_PHASE <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_2_FRAME_PHASE_C; -- phase of LCB frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(2).TRICKLE_BC_START <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_2_TRICKLE_BC_START_C; -- Determines the start of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(2).TRICKLE_BC_STOP <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_2_TRICKLE_BC_STOP_C; -- Determines the end of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(2).LCB_DESTINATION_MUX <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_2_LCB_DESTINATION_MUX_C; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(2).TRICKLE_TRIG_RUN <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_2_TRICKLE_TRIG_RUN_C; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(2).TTC_L0A_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_2_TTC_L0A_ENABLE_C; -- enable generating L0A frames in response to TTC system signals - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(2).TTC_GENERATE_GATING_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_2_TTC_GENERATE_GATING_ENABLE_C; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(4)(2).WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_2_WRITE_PTR_C; -- Trickle configuration memory write pointer - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(4)(2).VALID_DATA_START <= REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_2_VALID_DATA_START_C; -- Start address of trickle configuration in trickle memory - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(4)(2).VALID_DATA_END <= REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_2_VALID_DATA_END_C; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(4)(2).HCC_MASK <= REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_2_HCC_MASK_C; -- HCC* module mask - + if MROD_GENERATE_REGS = true then + register_map_control_s.MROD_CTRL.OPTIONS <= REG_MROD_CTRL_OPTIONS_C; -- Extra options for MROD end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(4)(2).ABC_MASK_HCC_E <= REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_2_ABC_MASK_HCC_E_C; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) + if MROD_GENERATE_REGS = true then + register_map_control_s.MROD_CTRL.GOLTESTMODE <= REG_MROD_CTRL_GOLTESTMODE_C; -- GOL Test Mode (emulate CSM): + -- 0: Run Data Emulator when 1; 0: stop, load emulator fifo + -- 1: Enable Circulate when 1; 0: send fifo data only once + -- 2: Enable Triggered Mode when 1; 0: run continueously (no TTC) + -- 3: Enable pattern generator when 1; 0: off end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(4)(2).ABC_MASK_HCC_D <= REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_2_ABC_MASK_HCC_D_C; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - + if MROD_GENERATE_REGS = true then + register_map_control_s.MROD_EP0_CSMENABLE <= REG_MROD_EP0_CSMENABLE_C; -- EP0 CSM Data Enable channel 23-0 end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(4)(2).ABC_MASK_HCC_C <= REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_2_ABC_MASK_HCC_C_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - + if MROD_GENERATE_REGS = true then + register_map_control_s.MROD_EP0_EMPTYSUPPR <= REG_MROD_EP0_EMPTYSUPPR_C; -- EP0 Set Empty Suppression channel 23-0 end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(4)(2).ABC_MASK_HCC_B <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_B_C; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - + if MROD_GENERATE_REGS = true then + register_map_control_s.MROD_EP0_HPTDCMODE <= REG_MROD_EP0_HPTDCMODE_C; -- EP0 Set HPTDC Mode channel 23-0 end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(4)(2).ABC_MASK_HCC_A <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_A_C; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - + if MROD_GENERATE_REGS = true then + register_map_control_s.MROD_EP0_CLRFIFOS <= REG_MROD_EP0_CLRFIFOS_C; -- EP0 Clear FIFOs channel 23-0 end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(4)(2).ABC_MASK_HCC_9 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_9_C; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - + if MROD_GENERATE_REGS = true then + register_map_control_s.MROD_EP0_EMULOADENA <= REG_MROD_EP0_EMULOADENA_C; -- EP0 Emulator Load Enable channel 23-0 end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(4)(2).ABC_MASK_HCC_8 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_8_C; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - + if MROD_GENERATE_REGS = true then + register_map_control_s.MROD_EP0_TRXLOOPBACK <= REG_MROD_EP0_TRXLOOPBACK_C; -- EP0 Transceiver Loopback Enable channel 23-0 end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(4)(2).ABC_MASK_HCC_7 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_7_C; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - + if MROD_GENERATE_REGS = true then + register_map_control_s.MROD_EP0_TXCVRRESET <= REG_MROD_EP0_TXCVRRESET_C; -- EP0 Transceiver Reset all channel 23-0 end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(4)(2).ABC_MASK_HCC_6 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_6_C; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - + if MROD_GENERATE_REGS = true then + register_map_control_s.MROD_EP0_RXRESET <= REG_MROD_EP0_RXRESET_C; -- EP0 Receiver Reset channel 23-0 end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(4)(2).ABC_MASK_HCC_5 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_5_C; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - + if MROD_GENERATE_REGS = true then + register_map_control_s.MROD_EP0_TXRESET <= REG_MROD_EP0_TXRESET_C; -- EP0 Transmitter Reset channel 23-0 end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(4)(2).ABC_MASK_HCC_4 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_4_C; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - + if MROD_GENERATE_REGS = true then + register_map_control_s.MROD_EP1_CSMENABLE <= REG_MROD_EP1_CSMENABLE_C; -- EP1 CSM Data Enable channel 23-0 end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(4)(2).ABC_MASK_HCC_3 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_3_C; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - + if MROD_GENERATE_REGS = true then + register_map_control_s.MROD_EP1_EMPTYSUPPR <= REG_MROD_EP1_EMPTYSUPPR_C; -- EP1 Set Empty Suppression channel 23-0 end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(4)(2).ABC_MASK_HCC_2 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_2_C; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - + if MROD_GENERATE_REGS = true then + register_map_control_s.MROD_EP1_HPTDCMODE <= REG_MROD_EP1_HPTDCMODE_C; -- EP1 Set HPTDC Mode channel 23-0 end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(4)(2).ABC_MASK_HCC_1 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_1_C; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - + if MROD_GENERATE_REGS = true then + register_map_control_s.MROD_EP1_CLRFIFOS <= REG_MROD_EP1_CLRFIFOS_C; -- EP1 Clear FIFOs channel 23-0 end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(4)(2).ABC_MASK_HCC_0 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_0_C; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - + if MROD_GENERATE_REGS = true then + register_map_control_s.MROD_EP1_EMULOADENA <= REG_MROD_EP1_EMULOADENA_C; -- EP1 Emulator Load Enable channel 23-0 end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(3).L0A_BCR_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_3_L0A_BCR_DELAY_C; -- TTC BCR signal will be delayed by this many BCs + if MROD_GENERATE_REGS = true then + register_map_control_s.MROD_EP1_TRXLOOPBACK <= REG_MROD_EP1_TRXLOOPBACK_C; -- EP1 Transceiver Loopback Enable channel 23-0 end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(3).L0A_FRAME_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_3_L0A_FRAME_DELAY_C; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - + if MROD_GENERATE_REGS = true then + register_map_control_s.MROD_EP1_TXCVRRESET <= REG_MROD_EP1_TXCVRRESET_C; -- EP1 Transceiver Reset all channel 23-0 end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(3).FRAME_PHASE <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_3_FRAME_PHASE_C; -- phase of LCB frame with respect to TTC BCR signal + if MROD_GENERATE_REGS = true then + register_map_control_s.MROD_EP1_RXRESET <= REG_MROD_EP1_RXRESET_C; -- EP1 Receiver Reset channel 23-0 end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(3).TRICKLE_BC_START <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_3_TRICKLE_BC_START_C; -- Determines the start of the allowed BC interval for low-priority LCB frames + if MROD_GENERATE_REGS = true then + register_map_control_s.MROD_EP1_TXRESET <= REG_MROD_EP1_TXRESET_C; -- EP1 Transmitter Reset channel 23-0 end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(3).TRICKLE_BC_STOP <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_3_TRICKLE_BC_STOP_C; -- Determines the end of the allowed BC interval for low-priority LCB frames + ----------------------------------- + ---- GENERATED code END #1 ## ---- + ----------------------------------- + else + + for i in 0 to NUMBER_OF_DESCRIPTORS-1 loop + if(dma_descriptors_25_r_s(i).enable = '1') then + if(last_pc_pointer_v(i) > dma_descriptors_25_w_s(i).pc_pointer + pc_ptr_gap_25_s) then --If the current pc_pointer is 16MB smaller than the last one, we change cycles. The 16MB can be changed in the register PC_PTR_GAP (bar0). + dma_descriptors_25_w_s(i).evencycle_pc <= not dma_descriptors_25_w_s(i).evencycle_pc; --Toggle on wrap around end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(3).LCB_DESTINATION_MUX <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_3_LCB_DESTINATION_MUX_C; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(3).TRICKLE_TRIG_RUN <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_3_TRICKLE_TRIG_RUN_C; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(3).TTC_L0A_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_3_TTC_L0A_ENABLE_C; -- enable generating L0A frames in response to TTC system signals - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(3).TTC_GENERATE_GATING_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_3_TTC_GENERATE_GATING_ENABLE_C; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(4)(3).WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_3_WRITE_PTR_C; -- Trickle configuration memory write pointer - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(4)(3).VALID_DATA_START <= REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_3_VALID_DATA_START_C; -- Start address of trickle configuration in trickle memory - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(4)(3).VALID_DATA_END <= REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_3_VALID_DATA_END_C; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(4)(3).HCC_MASK <= REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_3_HCC_MASK_C; -- HCC* module mask - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(4)(3).ABC_MASK_HCC_E <= REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_3_ABC_MASK_HCC_E_C; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(4)(3).ABC_MASK_HCC_D <= REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_3_ABC_MASK_HCC_D_C; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(4)(3).ABC_MASK_HCC_C <= REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_3_ABC_MASK_HCC_C_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(4)(3).ABC_MASK_HCC_B <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_B_C; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(4)(3).ABC_MASK_HCC_A <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_A_C; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(4)(3).ABC_MASK_HCC_9 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_9_C; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(4)(3).ABC_MASK_HCC_8 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_8_C; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(4)(3).ABC_MASK_HCC_7 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_7_C; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(4)(3).ABC_MASK_HCC_6 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_6_C; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(4)(3).ABC_MASK_HCC_5 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_5_C; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(4)(3).ABC_MASK_HCC_4 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_4_C; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(4)(3).ABC_MASK_HCC_3 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_3_C; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(4)(3).ABC_MASK_HCC_2 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_2_C; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(4)(3).ABC_MASK_HCC_1 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_1_C; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(4)(3).ABC_MASK_HCC_0 <= REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_0_C; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (4)(0).FRAME_PHASE <= REG_CR_ITK_R3L1_LINK_04_R3L1_0_FRAME_PHASE_C; -- phase of R3L1 frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (4)(0).L1_ENABLE <= REG_CR_ITK_R3L1_LINK_04_R3L1_0_L1_ENABLE_C; -- enables sending TTC L1 signals to the front-end - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (4)(0).R3_ENABLE <= REG_CR_ITK_R3L1_LINK_04_R3L1_0_R3_ENABLE_C; -- enables sending RoI R3 signals to the front-end - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (4)(1).FRAME_PHASE <= REG_CR_ITK_R3L1_LINK_04_R3L1_1_FRAME_PHASE_C; -- phase of R3L1 frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (4)(1).L1_ENABLE <= REG_CR_ITK_R3L1_LINK_04_R3L1_1_L1_ENABLE_C; -- enables sending TTC L1 signals to the front-end - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (4)(1).R3_ENABLE <= REG_CR_ITK_R3L1_LINK_04_R3L1_1_R3_ENABLE_C; -- enables sending RoI R3 signals to the front-end - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (4)(2).FRAME_PHASE <= REG_CR_ITK_R3L1_LINK_04_R3L1_2_FRAME_PHASE_C; -- phase of R3L1 frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (4)(2).L1_ENABLE <= REG_CR_ITK_R3L1_LINK_04_R3L1_2_L1_ENABLE_C; -- enables sending TTC L1 signals to the front-end - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (4)(2).R3_ENABLE <= REG_CR_ITK_R3L1_LINK_04_R3L1_2_R3_ENABLE_C; -- enables sending RoI R3 signals to the front-end - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (4)(3).FRAME_PHASE <= REG_CR_ITK_R3L1_LINK_04_R3L1_3_FRAME_PHASE_C; -- phase of R3L1 frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (4)(3).L1_ENABLE <= REG_CR_ITK_R3L1_LINK_04_R3L1_3_L1_ENABLE_C; -- enables sending TTC L1 signals to the front-end - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (4)(3).R3_ENABLE <= REG_CR_ITK_R3L1_LINK_04_R3L1_3_R3_ENABLE_C; -- enables sending RoI R3 signals to the front-end - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(0).L0A_BCR_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_0_L0A_BCR_DELAY_C; -- TTC BCR signal will be delayed by this many BCs - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(0).L0A_FRAME_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_0_L0A_FRAME_DELAY_C; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(0).FRAME_PHASE <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_0_FRAME_PHASE_C; -- phase of LCB frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(0).TRICKLE_BC_START <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_0_TRICKLE_BC_START_C; -- Determines the start of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(0).TRICKLE_BC_STOP <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_0_TRICKLE_BC_STOP_C; -- Determines the end of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(0).LCB_DESTINATION_MUX <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_0_LCB_DESTINATION_MUX_C; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(0).TRICKLE_TRIG_RUN <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_0_TRICKLE_TRIG_RUN_C; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(0).TTC_L0A_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_0_TTC_L0A_ENABLE_C; -- enable generating L0A frames in response to TTC system signals - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(0).TTC_GENERATE_GATING_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_0_TTC_GENERATE_GATING_ENABLE_C; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(5)(0).WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_0_WRITE_PTR_C; -- Trickle configuration memory write pointer - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(5)(0).VALID_DATA_START <= REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_0_VALID_DATA_START_C; -- Start address of trickle configuration in trickle memory - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(5)(0).VALID_DATA_END <= REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_0_VALID_DATA_END_C; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(5)(0).HCC_MASK <= REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_0_HCC_MASK_C; -- HCC* module mask - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(5)(0).ABC_MASK_HCC_E <= REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_0_ABC_MASK_HCC_E_C; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(5)(0).ABC_MASK_HCC_D <= REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_0_ABC_MASK_HCC_D_C; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(5)(0).ABC_MASK_HCC_C <= REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_0_ABC_MASK_HCC_C_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(5)(0).ABC_MASK_HCC_B <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_B_C; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(5)(0).ABC_MASK_HCC_A <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_A_C; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(5)(0).ABC_MASK_HCC_9 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_9_C; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(5)(0).ABC_MASK_HCC_8 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_8_C; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(5)(0).ABC_MASK_HCC_7 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_7_C; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(5)(0).ABC_MASK_HCC_6 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_6_C; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(5)(0).ABC_MASK_HCC_5 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_5_C; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(5)(0).ABC_MASK_HCC_4 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_4_C; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(5)(0).ABC_MASK_HCC_3 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_3_C; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(5)(0).ABC_MASK_HCC_2 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_2_C; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(5)(0).ABC_MASK_HCC_1 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_1_C; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(5)(0).ABC_MASK_HCC_0 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_0_C; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(1).L0A_BCR_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_1_L0A_BCR_DELAY_C; -- TTC BCR signal will be delayed by this many BCs - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(1).L0A_FRAME_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_1_L0A_FRAME_DELAY_C; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(1).FRAME_PHASE <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_1_FRAME_PHASE_C; -- phase of LCB frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(1).TRICKLE_BC_START <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_1_TRICKLE_BC_START_C; -- Determines the start of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(1).TRICKLE_BC_STOP <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_1_TRICKLE_BC_STOP_C; -- Determines the end of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(1).LCB_DESTINATION_MUX <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_1_LCB_DESTINATION_MUX_C; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(1).TRICKLE_TRIG_RUN <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_1_TRICKLE_TRIG_RUN_C; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(1).TTC_L0A_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_1_TTC_L0A_ENABLE_C; -- enable generating L0A frames in response to TTC system signals - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(1).TTC_GENERATE_GATING_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_1_TTC_GENERATE_GATING_ENABLE_C; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(5)(1).WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_1_WRITE_PTR_C; -- Trickle configuration memory write pointer - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(5)(1).VALID_DATA_START <= REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_1_VALID_DATA_START_C; -- Start address of trickle configuration in trickle memory - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(5)(1).VALID_DATA_END <= REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_1_VALID_DATA_END_C; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(5)(1).HCC_MASK <= REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_1_HCC_MASK_C; -- HCC* module mask - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(5)(1).ABC_MASK_HCC_E <= REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_1_ABC_MASK_HCC_E_C; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(5)(1).ABC_MASK_HCC_D <= REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_1_ABC_MASK_HCC_D_C; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(5)(1).ABC_MASK_HCC_C <= REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_1_ABC_MASK_HCC_C_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(5)(1).ABC_MASK_HCC_B <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_B_C; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(5)(1).ABC_MASK_HCC_A <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_A_C; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(5)(1).ABC_MASK_HCC_9 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_9_C; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(5)(1).ABC_MASK_HCC_8 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_8_C; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(5)(1).ABC_MASK_HCC_7 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_7_C; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(5)(1).ABC_MASK_HCC_6 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_6_C; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(5)(1).ABC_MASK_HCC_5 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_5_C; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(5)(1).ABC_MASK_HCC_4 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_4_C; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(5)(1).ABC_MASK_HCC_3 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_3_C; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(5)(1).ABC_MASK_HCC_2 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_2_C; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(5)(1).ABC_MASK_HCC_1 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_1_C; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(5)(1).ABC_MASK_HCC_0 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_0_C; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(2).L0A_BCR_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_2_L0A_BCR_DELAY_C; -- TTC BCR signal will be delayed by this many BCs - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(2).L0A_FRAME_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_2_L0A_FRAME_DELAY_C; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(2).FRAME_PHASE <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_2_FRAME_PHASE_C; -- phase of LCB frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(2).TRICKLE_BC_START <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_2_TRICKLE_BC_START_C; -- Determines the start of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(2).TRICKLE_BC_STOP <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_2_TRICKLE_BC_STOP_C; -- Determines the end of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(2).LCB_DESTINATION_MUX <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_2_LCB_DESTINATION_MUX_C; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(2).TRICKLE_TRIG_RUN <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_2_TRICKLE_TRIG_RUN_C; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(2).TTC_L0A_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_2_TTC_L0A_ENABLE_C; -- enable generating L0A frames in response to TTC system signals - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(2).TTC_GENERATE_GATING_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_2_TTC_GENERATE_GATING_ENABLE_C; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(5)(2).WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_2_WRITE_PTR_C; -- Trickle configuration memory write pointer - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(5)(2).VALID_DATA_START <= REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_2_VALID_DATA_START_C; -- Start address of trickle configuration in trickle memory - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(5)(2).VALID_DATA_END <= REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_2_VALID_DATA_END_C; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(5)(2).HCC_MASK <= REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_2_HCC_MASK_C; -- HCC* module mask - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(5)(2).ABC_MASK_HCC_E <= REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_2_ABC_MASK_HCC_E_C; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(5)(2).ABC_MASK_HCC_D <= REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_2_ABC_MASK_HCC_D_C; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(5)(2).ABC_MASK_HCC_C <= REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_2_ABC_MASK_HCC_C_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(5)(2).ABC_MASK_HCC_B <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_B_C; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(5)(2).ABC_MASK_HCC_A <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_A_C; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(5)(2).ABC_MASK_HCC_9 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_9_C; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(5)(2).ABC_MASK_HCC_8 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_8_C; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(5)(2).ABC_MASK_HCC_7 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_7_C; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(5)(2).ABC_MASK_HCC_6 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_6_C; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(5)(2).ABC_MASK_HCC_5 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_5_C; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(5)(2).ABC_MASK_HCC_4 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_4_C; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(5)(2).ABC_MASK_HCC_3 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_3_C; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(5)(2).ABC_MASK_HCC_2 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_2_C; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(5)(2).ABC_MASK_HCC_1 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_1_C; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(5)(2).ABC_MASK_HCC_0 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_0_C; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(3).L0A_BCR_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_3_L0A_BCR_DELAY_C; -- TTC BCR signal will be delayed by this many BCs - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(3).L0A_FRAME_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_3_L0A_FRAME_DELAY_C; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(3).FRAME_PHASE <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_3_FRAME_PHASE_C; -- phase of LCB frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(3).TRICKLE_BC_START <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_3_TRICKLE_BC_START_C; -- Determines the start of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(3).TRICKLE_BC_STOP <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_3_TRICKLE_BC_STOP_C; -- Determines the end of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(3).LCB_DESTINATION_MUX <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_3_LCB_DESTINATION_MUX_C; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(3).TRICKLE_TRIG_RUN <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_3_TRICKLE_TRIG_RUN_C; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(3).TTC_L0A_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_3_TTC_L0A_ENABLE_C; -- enable generating L0A frames in response to TTC system signals - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(3).TTC_GENERATE_GATING_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_3_TTC_GENERATE_GATING_ENABLE_C; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(5)(3).WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_3_WRITE_PTR_C; -- Trickle configuration memory write pointer - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(5)(3).VALID_DATA_START <= REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_3_VALID_DATA_START_C; -- Start address of trickle configuration in trickle memory - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(5)(3).VALID_DATA_END <= REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_3_VALID_DATA_END_C; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(5)(3).HCC_MASK <= REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_3_HCC_MASK_C; -- HCC* module mask - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(5)(3).ABC_MASK_HCC_E <= REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_3_ABC_MASK_HCC_E_C; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(5)(3).ABC_MASK_HCC_D <= REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_3_ABC_MASK_HCC_D_C; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(5)(3).ABC_MASK_HCC_C <= REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_3_ABC_MASK_HCC_C_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(5)(3).ABC_MASK_HCC_B <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_B_C; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(5)(3).ABC_MASK_HCC_A <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_A_C; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(5)(3).ABC_MASK_HCC_9 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_9_C; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(5)(3).ABC_MASK_HCC_8 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_8_C; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(5)(3).ABC_MASK_HCC_7 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_7_C; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(5)(3).ABC_MASK_HCC_6 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_6_C; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(5)(3).ABC_MASK_HCC_5 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_5_C; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(5)(3).ABC_MASK_HCC_4 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_4_C; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(5)(3).ABC_MASK_HCC_3 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_3_C; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(5)(3).ABC_MASK_HCC_2 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_2_C; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(5)(3).ABC_MASK_HCC_1 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_1_C; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(5)(3).ABC_MASK_HCC_0 <= REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_0_C; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (5)(0).FRAME_PHASE <= REG_CR_ITK_R3L1_LINK_05_R3L1_0_FRAME_PHASE_C; -- phase of R3L1 frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (5)(0).L1_ENABLE <= REG_CR_ITK_R3L1_LINK_05_R3L1_0_L1_ENABLE_C; -- enables sending TTC L1 signals to the front-end - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (5)(0).R3_ENABLE <= REG_CR_ITK_R3L1_LINK_05_R3L1_0_R3_ENABLE_C; -- enables sending RoI R3 signals to the front-end - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (5)(1).FRAME_PHASE <= REG_CR_ITK_R3L1_LINK_05_R3L1_1_FRAME_PHASE_C; -- phase of R3L1 frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (5)(1).L1_ENABLE <= REG_CR_ITK_R3L1_LINK_05_R3L1_1_L1_ENABLE_C; -- enables sending TTC L1 signals to the front-end - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (5)(1).R3_ENABLE <= REG_CR_ITK_R3L1_LINK_05_R3L1_1_R3_ENABLE_C; -- enables sending RoI R3 signals to the front-end - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (5)(2).FRAME_PHASE <= REG_CR_ITK_R3L1_LINK_05_R3L1_2_FRAME_PHASE_C; -- phase of R3L1 frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (5)(2).L1_ENABLE <= REG_CR_ITK_R3L1_LINK_05_R3L1_2_L1_ENABLE_C; -- enables sending TTC L1 signals to the front-end - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (5)(2).R3_ENABLE <= REG_CR_ITK_R3L1_LINK_05_R3L1_2_R3_ENABLE_C; -- enables sending RoI R3 signals to the front-end - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (5)(3).FRAME_PHASE <= REG_CR_ITK_R3L1_LINK_05_R3L1_3_FRAME_PHASE_C; -- phase of R3L1 frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (5)(3).L1_ENABLE <= REG_CR_ITK_R3L1_LINK_05_R3L1_3_L1_ENABLE_C; -- enables sending TTC L1 signals to the front-end - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (5)(3).R3_ENABLE <= REG_CR_ITK_R3L1_LINK_05_R3L1_3_R3_ENABLE_C; -- enables sending RoI R3 signals to the front-end - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(0).L0A_BCR_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_0_L0A_BCR_DELAY_C; -- TTC BCR signal will be delayed by this many BCs - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(0).L0A_FRAME_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_0_L0A_FRAME_DELAY_C; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(0).FRAME_PHASE <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_0_FRAME_PHASE_C; -- phase of LCB frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(0).TRICKLE_BC_START <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_0_TRICKLE_BC_START_C; -- Determines the start of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(0).TRICKLE_BC_STOP <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_0_TRICKLE_BC_STOP_C; -- Determines the end of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(0).LCB_DESTINATION_MUX <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_0_LCB_DESTINATION_MUX_C; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(0).TRICKLE_TRIG_RUN <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_0_TRICKLE_TRIG_RUN_C; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(0).TTC_L0A_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_0_TTC_L0A_ENABLE_C; -- enable generating L0A frames in response to TTC system signals - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(0).TTC_GENERATE_GATING_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_0_TTC_GENERATE_GATING_ENABLE_C; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(6)(0).WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_0_WRITE_PTR_C; -- Trickle configuration memory write pointer - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(6)(0).VALID_DATA_START <= REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_0_VALID_DATA_START_C; -- Start address of trickle configuration in trickle memory - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(6)(0).VALID_DATA_END <= REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_0_VALID_DATA_END_C; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(6)(0).HCC_MASK <= REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_0_HCC_MASK_C; -- HCC* module mask - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(6)(0).ABC_MASK_HCC_E <= REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_0_ABC_MASK_HCC_E_C; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(6)(0).ABC_MASK_HCC_D <= REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_0_ABC_MASK_HCC_D_C; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(6)(0).ABC_MASK_HCC_C <= REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_0_ABC_MASK_HCC_C_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(6)(0).ABC_MASK_HCC_B <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_B_C; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(6)(0).ABC_MASK_HCC_A <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_A_C; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(6)(0).ABC_MASK_HCC_9 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_9_C; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(6)(0).ABC_MASK_HCC_8 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_8_C; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(6)(0).ABC_MASK_HCC_7 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_7_C; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(6)(0).ABC_MASK_HCC_6 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_6_C; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(6)(0).ABC_MASK_HCC_5 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_5_C; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(6)(0).ABC_MASK_HCC_4 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_4_C; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(6)(0).ABC_MASK_HCC_3 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_3_C; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(6)(0).ABC_MASK_HCC_2 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_2_C; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(6)(0).ABC_MASK_HCC_1 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_1_C; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(6)(0).ABC_MASK_HCC_0 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_0_C; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(1).L0A_BCR_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_1_L0A_BCR_DELAY_C; -- TTC BCR signal will be delayed by this many BCs - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(1).L0A_FRAME_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_1_L0A_FRAME_DELAY_C; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(1).FRAME_PHASE <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_1_FRAME_PHASE_C; -- phase of LCB frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(1).TRICKLE_BC_START <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_1_TRICKLE_BC_START_C; -- Determines the start of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(1).TRICKLE_BC_STOP <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_1_TRICKLE_BC_STOP_C; -- Determines the end of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(1).LCB_DESTINATION_MUX <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_1_LCB_DESTINATION_MUX_C; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(1).TRICKLE_TRIG_RUN <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_1_TRICKLE_TRIG_RUN_C; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(1).TTC_L0A_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_1_TTC_L0A_ENABLE_C; -- enable generating L0A frames in response to TTC system signals - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(1).TTC_GENERATE_GATING_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_1_TTC_GENERATE_GATING_ENABLE_C; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(6)(1).WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_1_WRITE_PTR_C; -- Trickle configuration memory write pointer - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(6)(1).VALID_DATA_START <= REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_1_VALID_DATA_START_C; -- Start address of trickle configuration in trickle memory - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(6)(1).VALID_DATA_END <= REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_1_VALID_DATA_END_C; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(6)(1).HCC_MASK <= REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_1_HCC_MASK_C; -- HCC* module mask - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(6)(1).ABC_MASK_HCC_E <= REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_1_ABC_MASK_HCC_E_C; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(6)(1).ABC_MASK_HCC_D <= REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_1_ABC_MASK_HCC_D_C; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(6)(1).ABC_MASK_HCC_C <= REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_1_ABC_MASK_HCC_C_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(6)(1).ABC_MASK_HCC_B <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_B_C; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(6)(1).ABC_MASK_HCC_A <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_A_C; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(6)(1).ABC_MASK_HCC_9 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_9_C; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(6)(1).ABC_MASK_HCC_8 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_8_C; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(6)(1).ABC_MASK_HCC_7 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_7_C; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(6)(1).ABC_MASK_HCC_6 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_6_C; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(6)(1).ABC_MASK_HCC_5 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_5_C; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(6)(1).ABC_MASK_HCC_4 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_4_C; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(6)(1).ABC_MASK_HCC_3 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_3_C; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(6)(1).ABC_MASK_HCC_2 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_2_C; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(6)(1).ABC_MASK_HCC_1 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_1_C; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(6)(1).ABC_MASK_HCC_0 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_0_C; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(2).L0A_BCR_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_2_L0A_BCR_DELAY_C; -- TTC BCR signal will be delayed by this many BCs - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(2).L0A_FRAME_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_2_L0A_FRAME_DELAY_C; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(2).FRAME_PHASE <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_2_FRAME_PHASE_C; -- phase of LCB frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(2).TRICKLE_BC_START <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_2_TRICKLE_BC_START_C; -- Determines the start of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(2).TRICKLE_BC_STOP <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_2_TRICKLE_BC_STOP_C; -- Determines the end of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(2).LCB_DESTINATION_MUX <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_2_LCB_DESTINATION_MUX_C; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(2).TRICKLE_TRIG_RUN <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_2_TRICKLE_TRIG_RUN_C; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(2).TTC_L0A_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_2_TTC_L0A_ENABLE_C; -- enable generating L0A frames in response to TTC system signals - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(2).TTC_GENERATE_GATING_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_2_TTC_GENERATE_GATING_ENABLE_C; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(6)(2).WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_2_WRITE_PTR_C; -- Trickle configuration memory write pointer - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(6)(2).VALID_DATA_START <= REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_2_VALID_DATA_START_C; -- Start address of trickle configuration in trickle memory - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(6)(2).VALID_DATA_END <= REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_2_VALID_DATA_END_C; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(6)(2).HCC_MASK <= REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_2_HCC_MASK_C; -- HCC* module mask - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(6)(2).ABC_MASK_HCC_E <= REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_2_ABC_MASK_HCC_E_C; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(6)(2).ABC_MASK_HCC_D <= REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_2_ABC_MASK_HCC_D_C; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(6)(2).ABC_MASK_HCC_C <= REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_2_ABC_MASK_HCC_C_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(6)(2).ABC_MASK_HCC_B <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_B_C; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(6)(2).ABC_MASK_HCC_A <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_A_C; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(6)(2).ABC_MASK_HCC_9 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_9_C; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(6)(2).ABC_MASK_HCC_8 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_8_C; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(6)(2).ABC_MASK_HCC_7 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_7_C; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(6)(2).ABC_MASK_HCC_6 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_6_C; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(6)(2).ABC_MASK_HCC_5 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_5_C; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(6)(2).ABC_MASK_HCC_4 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_4_C; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(6)(2).ABC_MASK_HCC_3 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_3_C; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(6)(2).ABC_MASK_HCC_2 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_2_C; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(6)(2).ABC_MASK_HCC_1 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_1_C; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(6)(2).ABC_MASK_HCC_0 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_0_C; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(3).L0A_BCR_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_3_L0A_BCR_DELAY_C; -- TTC BCR signal will be delayed by this many BCs - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(3).L0A_FRAME_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_3_L0A_FRAME_DELAY_C; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(3).FRAME_PHASE <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_3_FRAME_PHASE_C; -- phase of LCB frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(3).TRICKLE_BC_START <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_3_TRICKLE_BC_START_C; -- Determines the start of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(3).TRICKLE_BC_STOP <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_3_TRICKLE_BC_STOP_C; -- Determines the end of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(3).LCB_DESTINATION_MUX <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_3_LCB_DESTINATION_MUX_C; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(3).TRICKLE_TRIG_RUN <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_3_TRICKLE_TRIG_RUN_C; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(3).TTC_L0A_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_3_TTC_L0A_ENABLE_C; -- enable generating L0A frames in response to TTC system signals - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(3).TTC_GENERATE_GATING_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_3_TTC_GENERATE_GATING_ENABLE_C; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(6)(3).WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_3_WRITE_PTR_C; -- Trickle configuration memory write pointer - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(6)(3).VALID_DATA_START <= REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_3_VALID_DATA_START_C; -- Start address of trickle configuration in trickle memory - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(6)(3).VALID_DATA_END <= REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_3_VALID_DATA_END_C; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(6)(3).HCC_MASK <= REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_3_HCC_MASK_C; -- HCC* module mask - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(6)(3).ABC_MASK_HCC_E <= REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_3_ABC_MASK_HCC_E_C; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(6)(3).ABC_MASK_HCC_D <= REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_3_ABC_MASK_HCC_D_C; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(6)(3).ABC_MASK_HCC_C <= REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_3_ABC_MASK_HCC_C_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(6)(3).ABC_MASK_HCC_B <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_B_C; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(6)(3).ABC_MASK_HCC_A <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_A_C; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(6)(3).ABC_MASK_HCC_9 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_9_C; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(6)(3).ABC_MASK_HCC_8 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_8_C; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(6)(3).ABC_MASK_HCC_7 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_7_C; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(6)(3).ABC_MASK_HCC_6 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_6_C; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(6)(3).ABC_MASK_HCC_5 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_5_C; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(6)(3).ABC_MASK_HCC_4 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_4_C; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(6)(3).ABC_MASK_HCC_3 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_3_C; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(6)(3).ABC_MASK_HCC_2 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_2_C; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(6)(3).ABC_MASK_HCC_1 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_1_C; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(6)(3).ABC_MASK_HCC_0 <= REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_0_C; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (6)(0).FRAME_PHASE <= REG_CR_ITK_R3L1_LINK_06_R3L1_0_FRAME_PHASE_C; -- phase of R3L1 frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (6)(0).L1_ENABLE <= REG_CR_ITK_R3L1_LINK_06_R3L1_0_L1_ENABLE_C; -- enables sending TTC L1 signals to the front-end - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (6)(0).R3_ENABLE <= REG_CR_ITK_R3L1_LINK_06_R3L1_0_R3_ENABLE_C; -- enables sending RoI R3 signals to the front-end - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (6)(1).FRAME_PHASE <= REG_CR_ITK_R3L1_LINK_06_R3L1_1_FRAME_PHASE_C; -- phase of R3L1 frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (6)(1).L1_ENABLE <= REG_CR_ITK_R3L1_LINK_06_R3L1_1_L1_ENABLE_C; -- enables sending TTC L1 signals to the front-end - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (6)(1).R3_ENABLE <= REG_CR_ITK_R3L1_LINK_06_R3L1_1_R3_ENABLE_C; -- enables sending RoI R3 signals to the front-end - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (6)(2).FRAME_PHASE <= REG_CR_ITK_R3L1_LINK_06_R3L1_2_FRAME_PHASE_C; -- phase of R3L1 frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (6)(2).L1_ENABLE <= REG_CR_ITK_R3L1_LINK_06_R3L1_2_L1_ENABLE_C; -- enables sending TTC L1 signals to the front-end - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (6)(2).R3_ENABLE <= REG_CR_ITK_R3L1_LINK_06_R3L1_2_R3_ENABLE_C; -- enables sending RoI R3 signals to the front-end - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (6)(3).FRAME_PHASE <= REG_CR_ITK_R3L1_LINK_06_R3L1_3_FRAME_PHASE_C; -- phase of R3L1 frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (6)(3).L1_ENABLE <= REG_CR_ITK_R3L1_LINK_06_R3L1_3_L1_ENABLE_C; -- enables sending TTC L1 signals to the front-end - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (6)(3).R3_ENABLE <= REG_CR_ITK_R3L1_LINK_06_R3L1_3_R3_ENABLE_C; -- enables sending RoI R3 signals to the front-end - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(0).L0A_BCR_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_0_L0A_BCR_DELAY_C; -- TTC BCR signal will be delayed by this many BCs - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(0).L0A_FRAME_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_0_L0A_FRAME_DELAY_C; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(0).FRAME_PHASE <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_0_FRAME_PHASE_C; -- phase of LCB frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(0).TRICKLE_BC_START <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_0_TRICKLE_BC_START_C; -- Determines the start of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(0).TRICKLE_BC_STOP <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_0_TRICKLE_BC_STOP_C; -- Determines the end of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(0).LCB_DESTINATION_MUX <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_0_LCB_DESTINATION_MUX_C; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(0).TRICKLE_TRIG_RUN <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_0_TRICKLE_TRIG_RUN_C; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(0).TTC_L0A_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_0_TTC_L0A_ENABLE_C; -- enable generating L0A frames in response to TTC system signals - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(0).TTC_GENERATE_GATING_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_0_TTC_GENERATE_GATING_ENABLE_C; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(7)(0).WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_0_WRITE_PTR_C; -- Trickle configuration memory write pointer - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(7)(0).VALID_DATA_START <= REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_0_VALID_DATA_START_C; -- Start address of trickle configuration in trickle memory - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(7)(0).VALID_DATA_END <= REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_0_VALID_DATA_END_C; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(7)(0).HCC_MASK <= REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_0_HCC_MASK_C; -- HCC* module mask - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(7)(0).ABC_MASK_HCC_E <= REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_0_ABC_MASK_HCC_E_C; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(7)(0).ABC_MASK_HCC_D <= REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_0_ABC_MASK_HCC_D_C; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(7)(0).ABC_MASK_HCC_C <= REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_0_ABC_MASK_HCC_C_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(7)(0).ABC_MASK_HCC_B <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_B_C; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(7)(0).ABC_MASK_HCC_A <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_A_C; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(7)(0).ABC_MASK_HCC_9 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_9_C; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(7)(0).ABC_MASK_HCC_8 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_8_C; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(7)(0).ABC_MASK_HCC_7 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_7_C; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(7)(0).ABC_MASK_HCC_6 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_6_C; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(7)(0).ABC_MASK_HCC_5 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_5_C; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(7)(0).ABC_MASK_HCC_4 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_4_C; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(7)(0).ABC_MASK_HCC_3 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_3_C; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(7)(0).ABC_MASK_HCC_2 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_2_C; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(7)(0).ABC_MASK_HCC_1 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_1_C; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(7)(0).ABC_MASK_HCC_0 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_0_C; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(1).L0A_BCR_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_1_L0A_BCR_DELAY_C; -- TTC BCR signal will be delayed by this many BCs - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(1).L0A_FRAME_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_1_L0A_FRAME_DELAY_C; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(1).FRAME_PHASE <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_1_FRAME_PHASE_C; -- phase of LCB frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(1).TRICKLE_BC_START <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_1_TRICKLE_BC_START_C; -- Determines the start of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(1).TRICKLE_BC_STOP <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_1_TRICKLE_BC_STOP_C; -- Determines the end of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(1).LCB_DESTINATION_MUX <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_1_LCB_DESTINATION_MUX_C; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(1).TRICKLE_TRIG_RUN <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_1_TRICKLE_TRIG_RUN_C; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(1).TTC_L0A_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_1_TTC_L0A_ENABLE_C; -- enable generating L0A frames in response to TTC system signals - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(1).TTC_GENERATE_GATING_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_1_TTC_GENERATE_GATING_ENABLE_C; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(7)(1).WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_1_WRITE_PTR_C; -- Trickle configuration memory write pointer - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(7)(1).VALID_DATA_START <= REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_1_VALID_DATA_START_C; -- Start address of trickle configuration in trickle memory - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(7)(1).VALID_DATA_END <= REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_1_VALID_DATA_END_C; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(7)(1).HCC_MASK <= REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_1_HCC_MASK_C; -- HCC* module mask - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(7)(1).ABC_MASK_HCC_E <= REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_1_ABC_MASK_HCC_E_C; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(7)(1).ABC_MASK_HCC_D <= REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_1_ABC_MASK_HCC_D_C; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(7)(1).ABC_MASK_HCC_C <= REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_1_ABC_MASK_HCC_C_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(7)(1).ABC_MASK_HCC_B <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_B_C; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(7)(1).ABC_MASK_HCC_A <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_A_C; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(7)(1).ABC_MASK_HCC_9 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_9_C; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(7)(1).ABC_MASK_HCC_8 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_8_C; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(7)(1).ABC_MASK_HCC_7 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_7_C; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(7)(1).ABC_MASK_HCC_6 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_6_C; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(7)(1).ABC_MASK_HCC_5 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_5_C; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(7)(1).ABC_MASK_HCC_4 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_4_C; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(7)(1).ABC_MASK_HCC_3 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_3_C; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(7)(1).ABC_MASK_HCC_2 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_2_C; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(7)(1).ABC_MASK_HCC_1 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_1_C; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(7)(1).ABC_MASK_HCC_0 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_0_C; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(2).L0A_BCR_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_2_L0A_BCR_DELAY_C; -- TTC BCR signal will be delayed by this many BCs - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(2).L0A_FRAME_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_2_L0A_FRAME_DELAY_C; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(2).FRAME_PHASE <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_2_FRAME_PHASE_C; -- phase of LCB frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(2).TRICKLE_BC_START <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_2_TRICKLE_BC_START_C; -- Determines the start of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(2).TRICKLE_BC_STOP <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_2_TRICKLE_BC_STOP_C; -- Determines the end of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(2).LCB_DESTINATION_MUX <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_2_LCB_DESTINATION_MUX_C; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(2).TRICKLE_TRIG_RUN <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_2_TRICKLE_TRIG_RUN_C; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(2).TTC_L0A_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_2_TTC_L0A_ENABLE_C; -- enable generating L0A frames in response to TTC system signals - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(2).TTC_GENERATE_GATING_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_2_TTC_GENERATE_GATING_ENABLE_C; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(7)(2).WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_2_WRITE_PTR_C; -- Trickle configuration memory write pointer - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(7)(2).VALID_DATA_START <= REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_2_VALID_DATA_START_C; -- Start address of trickle configuration in trickle memory - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(7)(2).VALID_DATA_END <= REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_2_VALID_DATA_END_C; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(7)(2).HCC_MASK <= REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_2_HCC_MASK_C; -- HCC* module mask - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(7)(2).ABC_MASK_HCC_E <= REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_2_ABC_MASK_HCC_E_C; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(7)(2).ABC_MASK_HCC_D <= REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_2_ABC_MASK_HCC_D_C; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(7)(2).ABC_MASK_HCC_C <= REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_2_ABC_MASK_HCC_C_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(7)(2).ABC_MASK_HCC_B <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_B_C; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(7)(2).ABC_MASK_HCC_A <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_A_C; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(7)(2).ABC_MASK_HCC_9 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_9_C; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(7)(2).ABC_MASK_HCC_8 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_8_C; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(7)(2).ABC_MASK_HCC_7 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_7_C; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(7)(2).ABC_MASK_HCC_6 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_6_C; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(7)(2).ABC_MASK_HCC_5 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_5_C; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(7)(2).ABC_MASK_HCC_4 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_4_C; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(7)(2).ABC_MASK_HCC_3 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_3_C; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(7)(2).ABC_MASK_HCC_2 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_2_C; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(7)(2).ABC_MASK_HCC_1 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_1_C; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(7)(2).ABC_MASK_HCC_0 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_0_C; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(3).L0A_BCR_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_3_L0A_BCR_DELAY_C; -- TTC BCR signal will be delayed by this many BCs - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(3).L0A_FRAME_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_3_L0A_FRAME_DELAY_C; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(3).FRAME_PHASE <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_3_FRAME_PHASE_C; -- phase of LCB frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(3).TRICKLE_BC_START <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_3_TRICKLE_BC_START_C; -- Determines the start of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(3).TRICKLE_BC_STOP <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_3_TRICKLE_BC_STOP_C; -- Determines the end of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(3).LCB_DESTINATION_MUX <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_3_LCB_DESTINATION_MUX_C; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(3).TRICKLE_TRIG_RUN <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_3_TRICKLE_TRIG_RUN_C; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(3).TTC_L0A_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_3_TTC_L0A_ENABLE_C; -- enable generating L0A frames in response to TTC system signals - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(3).TTC_GENERATE_GATING_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_3_TTC_GENERATE_GATING_ENABLE_C; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(7)(3).WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_3_WRITE_PTR_C; -- Trickle configuration memory write pointer - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(7)(3).VALID_DATA_START <= REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_3_VALID_DATA_START_C; -- Start address of trickle configuration in trickle memory - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(7)(3).VALID_DATA_END <= REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_3_VALID_DATA_END_C; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(7)(3).HCC_MASK <= REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_3_HCC_MASK_C; -- HCC* module mask - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(7)(3).ABC_MASK_HCC_E <= REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_3_ABC_MASK_HCC_E_C; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(7)(3).ABC_MASK_HCC_D <= REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_3_ABC_MASK_HCC_D_C; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(7)(3).ABC_MASK_HCC_C <= REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_3_ABC_MASK_HCC_C_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(7)(3).ABC_MASK_HCC_B <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_B_C; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(7)(3).ABC_MASK_HCC_A <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_A_C; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(7)(3).ABC_MASK_HCC_9 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_9_C; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(7)(3).ABC_MASK_HCC_8 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_8_C; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(7)(3).ABC_MASK_HCC_7 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_7_C; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(7)(3).ABC_MASK_HCC_6 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_6_C; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(7)(3).ABC_MASK_HCC_5 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_5_C; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(7)(3).ABC_MASK_HCC_4 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_4_C; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(7)(3).ABC_MASK_HCC_3 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_3_C; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(7)(3).ABC_MASK_HCC_2 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_2_C; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(7)(3).ABC_MASK_HCC_1 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_1_C; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(7)(3).ABC_MASK_HCC_0 <= REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_0_C; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (7)(0).FRAME_PHASE <= REG_CR_ITK_R3L1_LINK_07_R3L1_0_FRAME_PHASE_C; -- phase of R3L1 frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (7)(0).L1_ENABLE <= REG_CR_ITK_R3L1_LINK_07_R3L1_0_L1_ENABLE_C; -- enables sending TTC L1 signals to the front-end - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (7)(0).R3_ENABLE <= REG_CR_ITK_R3L1_LINK_07_R3L1_0_R3_ENABLE_C; -- enables sending RoI R3 signals to the front-end - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (7)(1).FRAME_PHASE <= REG_CR_ITK_R3L1_LINK_07_R3L1_1_FRAME_PHASE_C; -- phase of R3L1 frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (7)(1).L1_ENABLE <= REG_CR_ITK_R3L1_LINK_07_R3L1_1_L1_ENABLE_C; -- enables sending TTC L1 signals to the front-end - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (7)(1).R3_ENABLE <= REG_CR_ITK_R3L1_LINK_07_R3L1_1_R3_ENABLE_C; -- enables sending RoI R3 signals to the front-end - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (7)(2).FRAME_PHASE <= REG_CR_ITK_R3L1_LINK_07_R3L1_2_FRAME_PHASE_C; -- phase of R3L1 frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (7)(2).L1_ENABLE <= REG_CR_ITK_R3L1_LINK_07_R3L1_2_L1_ENABLE_C; -- enables sending TTC L1 signals to the front-end - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (7)(2).R3_ENABLE <= REG_CR_ITK_R3L1_LINK_07_R3L1_2_R3_ENABLE_C; -- enables sending RoI R3 signals to the front-end - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (7)(3).FRAME_PHASE <= REG_CR_ITK_R3L1_LINK_07_R3L1_3_FRAME_PHASE_C; -- phase of R3L1 frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (7)(3).L1_ENABLE <= REG_CR_ITK_R3L1_LINK_07_R3L1_3_L1_ENABLE_C; -- enables sending TTC L1 signals to the front-end - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (7)(3).R3_ENABLE <= REG_CR_ITK_R3L1_LINK_07_R3L1_3_R3_ENABLE_C; -- enables sending RoI R3 signals to the front-end - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(0).L0A_BCR_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_0_L0A_BCR_DELAY_C; -- TTC BCR signal will be delayed by this many BCs - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(0).L0A_FRAME_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_0_L0A_FRAME_DELAY_C; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(0).FRAME_PHASE <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_0_FRAME_PHASE_C; -- phase of LCB frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(0).TRICKLE_BC_START <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_0_TRICKLE_BC_START_C; -- Determines the start of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(0).TRICKLE_BC_STOP <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_0_TRICKLE_BC_STOP_C; -- Determines the end of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(0).LCB_DESTINATION_MUX <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_0_LCB_DESTINATION_MUX_C; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(0).TRICKLE_TRIG_RUN <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_0_TRICKLE_TRIG_RUN_C; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(0).TTC_L0A_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_0_TTC_L0A_ENABLE_C; -- enable generating L0A frames in response to TTC system signals - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(0).TTC_GENERATE_GATING_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_0_TTC_GENERATE_GATING_ENABLE_C; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(8)(0).WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_0_WRITE_PTR_C; -- Trickle configuration memory write pointer - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(8)(0).VALID_DATA_START <= REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_0_VALID_DATA_START_C; -- Start address of trickle configuration in trickle memory - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(8)(0).VALID_DATA_END <= REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_0_VALID_DATA_END_C; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(8)(0).HCC_MASK <= REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_0_HCC_MASK_C; -- HCC* module mask - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(8)(0).ABC_MASK_HCC_E <= REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_0_ABC_MASK_HCC_E_C; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(8)(0).ABC_MASK_HCC_D <= REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_0_ABC_MASK_HCC_D_C; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(8)(0).ABC_MASK_HCC_C <= REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_0_ABC_MASK_HCC_C_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(8)(0).ABC_MASK_HCC_B <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_B_C; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(8)(0).ABC_MASK_HCC_A <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_A_C; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(8)(0).ABC_MASK_HCC_9 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_9_C; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(8)(0).ABC_MASK_HCC_8 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_8_C; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(8)(0).ABC_MASK_HCC_7 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_7_C; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(8)(0).ABC_MASK_HCC_6 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_6_C; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(8)(0).ABC_MASK_HCC_5 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_5_C; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(8)(0).ABC_MASK_HCC_4 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_4_C; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(8)(0).ABC_MASK_HCC_3 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_3_C; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(8)(0).ABC_MASK_HCC_2 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_2_C; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(8)(0).ABC_MASK_HCC_1 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_1_C; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(8)(0).ABC_MASK_HCC_0 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_0_C; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(1).L0A_BCR_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_1_L0A_BCR_DELAY_C; -- TTC BCR signal will be delayed by this many BCs - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(1).L0A_FRAME_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_1_L0A_FRAME_DELAY_C; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(1).FRAME_PHASE <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_1_FRAME_PHASE_C; -- phase of LCB frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(1).TRICKLE_BC_START <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_1_TRICKLE_BC_START_C; -- Determines the start of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(1).TRICKLE_BC_STOP <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_1_TRICKLE_BC_STOP_C; -- Determines the end of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(1).LCB_DESTINATION_MUX <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_1_LCB_DESTINATION_MUX_C; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(1).TRICKLE_TRIG_RUN <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_1_TRICKLE_TRIG_RUN_C; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(1).TTC_L0A_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_1_TTC_L0A_ENABLE_C; -- enable generating L0A frames in response to TTC system signals - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(1).TTC_GENERATE_GATING_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_1_TTC_GENERATE_GATING_ENABLE_C; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(8)(1).WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_1_WRITE_PTR_C; -- Trickle configuration memory write pointer - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(8)(1).VALID_DATA_START <= REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_1_VALID_DATA_START_C; -- Start address of trickle configuration in trickle memory - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(8)(1).VALID_DATA_END <= REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_1_VALID_DATA_END_C; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(8)(1).HCC_MASK <= REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_1_HCC_MASK_C; -- HCC* module mask - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(8)(1).ABC_MASK_HCC_E <= REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_1_ABC_MASK_HCC_E_C; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(8)(1).ABC_MASK_HCC_D <= REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_1_ABC_MASK_HCC_D_C; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(8)(1).ABC_MASK_HCC_C <= REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_1_ABC_MASK_HCC_C_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(8)(1).ABC_MASK_HCC_B <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_B_C; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(8)(1).ABC_MASK_HCC_A <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_A_C; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(8)(1).ABC_MASK_HCC_9 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_9_C; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(8)(1).ABC_MASK_HCC_8 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_8_C; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(8)(1).ABC_MASK_HCC_7 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_7_C; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(8)(1).ABC_MASK_HCC_6 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_6_C; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(8)(1).ABC_MASK_HCC_5 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_5_C; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(8)(1).ABC_MASK_HCC_4 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_4_C; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(8)(1).ABC_MASK_HCC_3 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_3_C; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(8)(1).ABC_MASK_HCC_2 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_2_C; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(8)(1).ABC_MASK_HCC_1 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_1_C; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(8)(1).ABC_MASK_HCC_0 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_0_C; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(2).L0A_BCR_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_2_L0A_BCR_DELAY_C; -- TTC BCR signal will be delayed by this many BCs - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(2).L0A_FRAME_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_2_L0A_FRAME_DELAY_C; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(2).FRAME_PHASE <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_2_FRAME_PHASE_C; -- phase of LCB frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(2).TRICKLE_BC_START <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_2_TRICKLE_BC_START_C; -- Determines the start of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(2).TRICKLE_BC_STOP <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_2_TRICKLE_BC_STOP_C; -- Determines the end of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(2).LCB_DESTINATION_MUX <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_2_LCB_DESTINATION_MUX_C; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(2).TRICKLE_TRIG_RUN <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_2_TRICKLE_TRIG_RUN_C; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(2).TTC_L0A_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_2_TTC_L0A_ENABLE_C; -- enable generating L0A frames in response to TTC system signals - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(2).TTC_GENERATE_GATING_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_2_TTC_GENERATE_GATING_ENABLE_C; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(8)(2).WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_2_WRITE_PTR_C; -- Trickle configuration memory write pointer - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(8)(2).VALID_DATA_START <= REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_2_VALID_DATA_START_C; -- Start address of trickle configuration in trickle memory - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(8)(2).VALID_DATA_END <= REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_2_VALID_DATA_END_C; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(8)(2).HCC_MASK <= REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_2_HCC_MASK_C; -- HCC* module mask - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(8)(2).ABC_MASK_HCC_E <= REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_2_ABC_MASK_HCC_E_C; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(8)(2).ABC_MASK_HCC_D <= REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_2_ABC_MASK_HCC_D_C; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(8)(2).ABC_MASK_HCC_C <= REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_2_ABC_MASK_HCC_C_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(8)(2).ABC_MASK_HCC_B <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_B_C; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(8)(2).ABC_MASK_HCC_A <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_A_C; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(8)(2).ABC_MASK_HCC_9 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_9_C; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(8)(2).ABC_MASK_HCC_8 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_8_C; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(8)(2).ABC_MASK_HCC_7 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_7_C; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(8)(2).ABC_MASK_HCC_6 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_6_C; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(8)(2).ABC_MASK_HCC_5 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_5_C; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(8)(2).ABC_MASK_HCC_4 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_4_C; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(8)(2).ABC_MASK_HCC_3 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_3_C; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(8)(2).ABC_MASK_HCC_2 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_2_C; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(8)(2).ABC_MASK_HCC_1 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_1_C; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(8)(2).ABC_MASK_HCC_0 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_0_C; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(3).L0A_BCR_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_3_L0A_BCR_DELAY_C; -- TTC BCR signal will be delayed by this many BCs - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(3).L0A_FRAME_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_3_L0A_FRAME_DELAY_C; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(3).FRAME_PHASE <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_3_FRAME_PHASE_C; -- phase of LCB frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(3).TRICKLE_BC_START <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_3_TRICKLE_BC_START_C; -- Determines the start of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(3).TRICKLE_BC_STOP <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_3_TRICKLE_BC_STOP_C; -- Determines the end of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(3).LCB_DESTINATION_MUX <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_3_LCB_DESTINATION_MUX_C; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(3).TRICKLE_TRIG_RUN <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_3_TRICKLE_TRIG_RUN_C; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(3).TTC_L0A_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_3_TTC_L0A_ENABLE_C; -- enable generating L0A frames in response to TTC system signals - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(3).TTC_GENERATE_GATING_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_3_TTC_GENERATE_GATING_ENABLE_C; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(8)(3).WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_3_WRITE_PTR_C; -- Trickle configuration memory write pointer - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(8)(3).VALID_DATA_START <= REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_3_VALID_DATA_START_C; -- Start address of trickle configuration in trickle memory - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(8)(3).VALID_DATA_END <= REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_3_VALID_DATA_END_C; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(8)(3).HCC_MASK <= REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_3_HCC_MASK_C; -- HCC* module mask - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(8)(3).ABC_MASK_HCC_E <= REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_3_ABC_MASK_HCC_E_C; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(8)(3).ABC_MASK_HCC_D <= REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_3_ABC_MASK_HCC_D_C; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(8)(3).ABC_MASK_HCC_C <= REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_3_ABC_MASK_HCC_C_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(8)(3).ABC_MASK_HCC_B <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_B_C; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(8)(3).ABC_MASK_HCC_A <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_A_C; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(8)(3).ABC_MASK_HCC_9 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_9_C; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(8)(3).ABC_MASK_HCC_8 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_8_C; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(8)(3).ABC_MASK_HCC_7 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_7_C; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(8)(3).ABC_MASK_HCC_6 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_6_C; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(8)(3).ABC_MASK_HCC_5 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_5_C; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(8)(3).ABC_MASK_HCC_4 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_4_C; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(8)(3).ABC_MASK_HCC_3 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_3_C; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(8)(3).ABC_MASK_HCC_2 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_2_C; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(8)(3).ABC_MASK_HCC_1 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_1_C; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(8)(3).ABC_MASK_HCC_0 <= REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_0_C; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (8)(0).FRAME_PHASE <= REG_CR_ITK_R3L1_LINK_08_R3L1_0_FRAME_PHASE_C; -- phase of R3L1 frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (8)(0).L1_ENABLE <= REG_CR_ITK_R3L1_LINK_08_R3L1_0_L1_ENABLE_C; -- enables sending TTC L1 signals to the front-end - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (8)(0).R3_ENABLE <= REG_CR_ITK_R3L1_LINK_08_R3L1_0_R3_ENABLE_C; -- enables sending RoI R3 signals to the front-end - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (8)(1).FRAME_PHASE <= REG_CR_ITK_R3L1_LINK_08_R3L1_1_FRAME_PHASE_C; -- phase of R3L1 frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (8)(1).L1_ENABLE <= REG_CR_ITK_R3L1_LINK_08_R3L1_1_L1_ENABLE_C; -- enables sending TTC L1 signals to the front-end - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (8)(1).R3_ENABLE <= REG_CR_ITK_R3L1_LINK_08_R3L1_1_R3_ENABLE_C; -- enables sending RoI R3 signals to the front-end - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (8)(2).FRAME_PHASE <= REG_CR_ITK_R3L1_LINK_08_R3L1_2_FRAME_PHASE_C; -- phase of R3L1 frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (8)(2).L1_ENABLE <= REG_CR_ITK_R3L1_LINK_08_R3L1_2_L1_ENABLE_C; -- enables sending TTC L1 signals to the front-end - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (8)(2).R3_ENABLE <= REG_CR_ITK_R3L1_LINK_08_R3L1_2_R3_ENABLE_C; -- enables sending RoI R3 signals to the front-end - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (8)(3).FRAME_PHASE <= REG_CR_ITK_R3L1_LINK_08_R3L1_3_FRAME_PHASE_C; -- phase of R3L1 frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (8)(3).L1_ENABLE <= REG_CR_ITK_R3L1_LINK_08_R3L1_3_L1_ENABLE_C; -- enables sending TTC L1 signals to the front-end - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (8)(3).R3_ENABLE <= REG_CR_ITK_R3L1_LINK_08_R3L1_3_R3_ENABLE_C; -- enables sending RoI R3 signals to the front-end - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(0).L0A_BCR_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_0_L0A_BCR_DELAY_C; -- TTC BCR signal will be delayed by this many BCs - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(0).L0A_FRAME_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_0_L0A_FRAME_DELAY_C; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(0).FRAME_PHASE <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_0_FRAME_PHASE_C; -- phase of LCB frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(0).TRICKLE_BC_START <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_0_TRICKLE_BC_START_C; -- Determines the start of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(0).TRICKLE_BC_STOP <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_0_TRICKLE_BC_STOP_C; -- Determines the end of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(0).LCB_DESTINATION_MUX <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_0_LCB_DESTINATION_MUX_C; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(0).TRICKLE_TRIG_RUN <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_0_TRICKLE_TRIG_RUN_C; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(0).TTC_L0A_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_0_TTC_L0A_ENABLE_C; -- enable generating L0A frames in response to TTC system signals - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(0).TTC_GENERATE_GATING_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_0_TTC_GENERATE_GATING_ENABLE_C; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(9)(0).WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_0_WRITE_PTR_C; -- Trickle configuration memory write pointer - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(9)(0).VALID_DATA_START <= REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_0_VALID_DATA_START_C; -- Start address of trickle configuration in trickle memory - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(9)(0).VALID_DATA_END <= REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_0_VALID_DATA_END_C; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(9)(0).HCC_MASK <= REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_0_HCC_MASK_C; -- HCC* module mask - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(9)(0).ABC_MASK_HCC_E <= REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_0_ABC_MASK_HCC_E_C; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(9)(0).ABC_MASK_HCC_D <= REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_0_ABC_MASK_HCC_D_C; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(9)(0).ABC_MASK_HCC_C <= REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_0_ABC_MASK_HCC_C_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(9)(0).ABC_MASK_HCC_B <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_B_C; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(9)(0).ABC_MASK_HCC_A <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_A_C; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(9)(0).ABC_MASK_HCC_9 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_9_C; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(9)(0).ABC_MASK_HCC_8 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_8_C; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(9)(0).ABC_MASK_HCC_7 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_7_C; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(9)(0).ABC_MASK_HCC_6 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_6_C; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(9)(0).ABC_MASK_HCC_5 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_5_C; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(9)(0).ABC_MASK_HCC_4 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_4_C; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(9)(0).ABC_MASK_HCC_3 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_3_C; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(9)(0).ABC_MASK_HCC_2 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_2_C; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(9)(0).ABC_MASK_HCC_1 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_1_C; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(9)(0).ABC_MASK_HCC_0 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_0_C; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(1).L0A_BCR_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_1_L0A_BCR_DELAY_C; -- TTC BCR signal will be delayed by this many BCs - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(1).L0A_FRAME_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_1_L0A_FRAME_DELAY_C; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(1).FRAME_PHASE <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_1_FRAME_PHASE_C; -- phase of LCB frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(1).TRICKLE_BC_START <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_1_TRICKLE_BC_START_C; -- Determines the start of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(1).TRICKLE_BC_STOP <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_1_TRICKLE_BC_STOP_C; -- Determines the end of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(1).LCB_DESTINATION_MUX <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_1_LCB_DESTINATION_MUX_C; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(1).TRICKLE_TRIG_RUN <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_1_TRICKLE_TRIG_RUN_C; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(1).TTC_L0A_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_1_TTC_L0A_ENABLE_C; -- enable generating L0A frames in response to TTC system signals - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(1).TTC_GENERATE_GATING_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_1_TTC_GENERATE_GATING_ENABLE_C; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(9)(1).WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_1_WRITE_PTR_C; -- Trickle configuration memory write pointer - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(9)(1).VALID_DATA_START <= REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_1_VALID_DATA_START_C; -- Start address of trickle configuration in trickle memory - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(9)(1).VALID_DATA_END <= REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_1_VALID_DATA_END_C; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(9)(1).HCC_MASK <= REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_1_HCC_MASK_C; -- HCC* module mask - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(9)(1).ABC_MASK_HCC_E <= REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_1_ABC_MASK_HCC_E_C; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(9)(1).ABC_MASK_HCC_D <= REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_1_ABC_MASK_HCC_D_C; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(9)(1).ABC_MASK_HCC_C <= REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_1_ABC_MASK_HCC_C_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(9)(1).ABC_MASK_HCC_B <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_B_C; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(9)(1).ABC_MASK_HCC_A <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_A_C; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(9)(1).ABC_MASK_HCC_9 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_9_C; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(9)(1).ABC_MASK_HCC_8 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_8_C; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(9)(1).ABC_MASK_HCC_7 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_7_C; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(9)(1).ABC_MASK_HCC_6 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_6_C; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(9)(1).ABC_MASK_HCC_5 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_5_C; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(9)(1).ABC_MASK_HCC_4 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_4_C; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(9)(1).ABC_MASK_HCC_3 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_3_C; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(9)(1).ABC_MASK_HCC_2 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_2_C; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(9)(1).ABC_MASK_HCC_1 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_1_C; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(9)(1).ABC_MASK_HCC_0 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_0_C; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(2).L0A_BCR_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_2_L0A_BCR_DELAY_C; -- TTC BCR signal will be delayed by this many BCs - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(2).L0A_FRAME_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_2_L0A_FRAME_DELAY_C; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(2).FRAME_PHASE <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_2_FRAME_PHASE_C; -- phase of LCB frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(2).TRICKLE_BC_START <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_2_TRICKLE_BC_START_C; -- Determines the start of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(2).TRICKLE_BC_STOP <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_2_TRICKLE_BC_STOP_C; -- Determines the end of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(2).LCB_DESTINATION_MUX <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_2_LCB_DESTINATION_MUX_C; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(2).TRICKLE_TRIG_RUN <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_2_TRICKLE_TRIG_RUN_C; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(2).TTC_L0A_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_2_TTC_L0A_ENABLE_C; -- enable generating L0A frames in response to TTC system signals - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(2).TTC_GENERATE_GATING_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_2_TTC_GENERATE_GATING_ENABLE_C; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(9)(2).WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_2_WRITE_PTR_C; -- Trickle configuration memory write pointer - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(9)(2).VALID_DATA_START <= REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_2_VALID_DATA_START_C; -- Start address of trickle configuration in trickle memory - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(9)(2).VALID_DATA_END <= REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_2_VALID_DATA_END_C; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(9)(2).HCC_MASK <= REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_2_HCC_MASK_C; -- HCC* module mask - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(9)(2).ABC_MASK_HCC_E <= REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_2_ABC_MASK_HCC_E_C; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(9)(2).ABC_MASK_HCC_D <= REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_2_ABC_MASK_HCC_D_C; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(9)(2).ABC_MASK_HCC_C <= REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_2_ABC_MASK_HCC_C_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(9)(2).ABC_MASK_HCC_B <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_B_C; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(9)(2).ABC_MASK_HCC_A <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_A_C; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(9)(2).ABC_MASK_HCC_9 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_9_C; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(9)(2).ABC_MASK_HCC_8 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_8_C; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(9)(2).ABC_MASK_HCC_7 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_7_C; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(9)(2).ABC_MASK_HCC_6 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_6_C; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(9)(2).ABC_MASK_HCC_5 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_5_C; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(9)(2).ABC_MASK_HCC_4 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_4_C; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(9)(2).ABC_MASK_HCC_3 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_3_C; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(9)(2).ABC_MASK_HCC_2 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_2_C; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(9)(2).ABC_MASK_HCC_1 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_1_C; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(9)(2).ABC_MASK_HCC_0 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_0_C; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(3).L0A_BCR_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_3_L0A_BCR_DELAY_C; -- TTC BCR signal will be delayed by this many BCs - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(3).L0A_FRAME_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_3_L0A_FRAME_DELAY_C; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(3).FRAME_PHASE <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_3_FRAME_PHASE_C; -- phase of LCB frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(3).TRICKLE_BC_START <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_3_TRICKLE_BC_START_C; -- Determines the start of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(3).TRICKLE_BC_STOP <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_3_TRICKLE_BC_STOP_C; -- Determines the end of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(3).LCB_DESTINATION_MUX <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_3_LCB_DESTINATION_MUX_C; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(3).TRICKLE_TRIG_RUN <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_3_TRICKLE_TRIG_RUN_C; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(3).TTC_L0A_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_3_TTC_L0A_ENABLE_C; -- enable generating L0A frames in response to TTC system signals - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(3).TTC_GENERATE_GATING_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_3_TTC_GENERATE_GATING_ENABLE_C; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(9)(3).WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_3_WRITE_PTR_C; -- Trickle configuration memory write pointer - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(9)(3).VALID_DATA_START <= REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_3_VALID_DATA_START_C; -- Start address of trickle configuration in trickle memory - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(9)(3).VALID_DATA_END <= REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_3_VALID_DATA_END_C; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(9)(3).HCC_MASK <= REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_3_HCC_MASK_C; -- HCC* module mask - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(9)(3).ABC_MASK_HCC_E <= REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_3_ABC_MASK_HCC_E_C; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(9)(3).ABC_MASK_HCC_D <= REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_3_ABC_MASK_HCC_D_C; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(9)(3).ABC_MASK_HCC_C <= REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_3_ABC_MASK_HCC_C_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(9)(3).ABC_MASK_HCC_B <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_B_C; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(9)(3).ABC_MASK_HCC_A <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_A_C; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(9)(3).ABC_MASK_HCC_9 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_9_C; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(9)(3).ABC_MASK_HCC_8 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_8_C; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(9)(3).ABC_MASK_HCC_7 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_7_C; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(9)(3).ABC_MASK_HCC_6 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_6_C; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(9)(3).ABC_MASK_HCC_5 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_5_C; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(9)(3).ABC_MASK_HCC_4 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_4_C; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(9)(3).ABC_MASK_HCC_3 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_3_C; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(9)(3).ABC_MASK_HCC_2 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_2_C; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(9)(3).ABC_MASK_HCC_1 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_1_C; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(9)(3).ABC_MASK_HCC_0 <= REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_0_C; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (9)(0).FRAME_PHASE <= REG_CR_ITK_R3L1_LINK_09_R3L1_0_FRAME_PHASE_C; -- phase of R3L1 frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (9)(0).L1_ENABLE <= REG_CR_ITK_R3L1_LINK_09_R3L1_0_L1_ENABLE_C; -- enables sending TTC L1 signals to the front-end - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (9)(0).R3_ENABLE <= REG_CR_ITK_R3L1_LINK_09_R3L1_0_R3_ENABLE_C; -- enables sending RoI R3 signals to the front-end - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (9)(1).FRAME_PHASE <= REG_CR_ITK_R3L1_LINK_09_R3L1_1_FRAME_PHASE_C; -- phase of R3L1 frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (9)(1).L1_ENABLE <= REG_CR_ITK_R3L1_LINK_09_R3L1_1_L1_ENABLE_C; -- enables sending TTC L1 signals to the front-end - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (9)(1).R3_ENABLE <= REG_CR_ITK_R3L1_LINK_09_R3L1_1_R3_ENABLE_C; -- enables sending RoI R3 signals to the front-end - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (9)(2).FRAME_PHASE <= REG_CR_ITK_R3L1_LINK_09_R3L1_2_FRAME_PHASE_C; -- phase of R3L1 frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (9)(2).L1_ENABLE <= REG_CR_ITK_R3L1_LINK_09_R3L1_2_L1_ENABLE_C; -- enables sending TTC L1 signals to the front-end - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (9)(2).R3_ENABLE <= REG_CR_ITK_R3L1_LINK_09_R3L1_2_R3_ENABLE_C; -- enables sending RoI R3 signals to the front-end - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (9)(3).FRAME_PHASE <= REG_CR_ITK_R3L1_LINK_09_R3L1_3_FRAME_PHASE_C; -- phase of R3L1 frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (9)(3).L1_ENABLE <= REG_CR_ITK_R3L1_LINK_09_R3L1_3_L1_ENABLE_C; -- enables sending TTC L1 signals to the front-end - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (9)(3).R3_ENABLE <= REG_CR_ITK_R3L1_LINK_09_R3L1_3_R3_ENABLE_C; -- enables sending RoI R3 signals to the front-end - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(0).L0A_BCR_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_0_L0A_BCR_DELAY_C; -- TTC BCR signal will be delayed by this many BCs - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(0).L0A_FRAME_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_0_L0A_FRAME_DELAY_C; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(0).FRAME_PHASE <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_0_FRAME_PHASE_C; -- phase of LCB frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(0).TRICKLE_BC_START <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_0_TRICKLE_BC_START_C; -- Determines the start of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(0).TRICKLE_BC_STOP <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_0_TRICKLE_BC_STOP_C; -- Determines the end of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(0).LCB_DESTINATION_MUX <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_0_LCB_DESTINATION_MUX_C; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(0).TRICKLE_TRIG_RUN <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_0_TRICKLE_TRIG_RUN_C; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(0).TTC_L0A_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_0_TTC_L0A_ENABLE_C; -- enable generating L0A frames in response to TTC system signals - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(0).TTC_GENERATE_GATING_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_0_TTC_GENERATE_GATING_ENABLE_C; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(10)(0).WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_0_WRITE_PTR_C; -- Trickle configuration memory write pointer - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(10)(0).VALID_DATA_START <= REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_0_VALID_DATA_START_C; -- Start address of trickle configuration in trickle memory - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(10)(0).VALID_DATA_END <= REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_0_VALID_DATA_END_C; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(10)(0).HCC_MASK <= REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_0_HCC_MASK_C; -- HCC* module mask - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(10)(0).ABC_MASK_HCC_E <= REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_0_ABC_MASK_HCC_E_C; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(10)(0).ABC_MASK_HCC_D <= REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_0_ABC_MASK_HCC_D_C; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(10)(0).ABC_MASK_HCC_C <= REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_0_ABC_MASK_HCC_C_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(10)(0).ABC_MASK_HCC_B <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_B_C; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(10)(0).ABC_MASK_HCC_A <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_A_C; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(10)(0).ABC_MASK_HCC_9 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_9_C; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(10)(0).ABC_MASK_HCC_8 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_8_C; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(10)(0).ABC_MASK_HCC_7 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_7_C; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(10)(0).ABC_MASK_HCC_6 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_6_C; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(10)(0).ABC_MASK_HCC_5 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_5_C; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(10)(0).ABC_MASK_HCC_4 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_4_C; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(10)(0).ABC_MASK_HCC_3 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_3_C; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(10)(0).ABC_MASK_HCC_2 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_2_C; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(10)(0).ABC_MASK_HCC_1 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_1_C; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(10)(0).ABC_MASK_HCC_0 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_0_C; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(1).L0A_BCR_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_1_L0A_BCR_DELAY_C; -- TTC BCR signal will be delayed by this many BCs - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(1).L0A_FRAME_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_1_L0A_FRAME_DELAY_C; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(1).FRAME_PHASE <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_1_FRAME_PHASE_C; -- phase of LCB frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(1).TRICKLE_BC_START <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_1_TRICKLE_BC_START_C; -- Determines the start of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(1).TRICKLE_BC_STOP <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_1_TRICKLE_BC_STOP_C; -- Determines the end of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(1).LCB_DESTINATION_MUX <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_1_LCB_DESTINATION_MUX_C; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(1).TRICKLE_TRIG_RUN <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_1_TRICKLE_TRIG_RUN_C; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(1).TTC_L0A_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_1_TTC_L0A_ENABLE_C; -- enable generating L0A frames in response to TTC system signals - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(1).TTC_GENERATE_GATING_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_1_TTC_GENERATE_GATING_ENABLE_C; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(10)(1).WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_1_WRITE_PTR_C; -- Trickle configuration memory write pointer - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(10)(1).VALID_DATA_START <= REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_1_VALID_DATA_START_C; -- Start address of trickle configuration in trickle memory - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(10)(1).VALID_DATA_END <= REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_1_VALID_DATA_END_C; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(10)(1).HCC_MASK <= REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_1_HCC_MASK_C; -- HCC* module mask - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(10)(1).ABC_MASK_HCC_E <= REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_1_ABC_MASK_HCC_E_C; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(10)(1).ABC_MASK_HCC_D <= REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_1_ABC_MASK_HCC_D_C; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(10)(1).ABC_MASK_HCC_C <= REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_1_ABC_MASK_HCC_C_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(10)(1).ABC_MASK_HCC_B <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_B_C; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(10)(1).ABC_MASK_HCC_A <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_A_C; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(10)(1).ABC_MASK_HCC_9 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_9_C; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(10)(1).ABC_MASK_HCC_8 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_8_C; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(10)(1).ABC_MASK_HCC_7 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_7_C; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(10)(1).ABC_MASK_HCC_6 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_6_C; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(10)(1).ABC_MASK_HCC_5 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_5_C; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(10)(1).ABC_MASK_HCC_4 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_4_C; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(10)(1).ABC_MASK_HCC_3 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_3_C; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(10)(1).ABC_MASK_HCC_2 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_2_C; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(10)(1).ABC_MASK_HCC_1 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_1_C; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(10)(1).ABC_MASK_HCC_0 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_0_C; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(2).L0A_BCR_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_2_L0A_BCR_DELAY_C; -- TTC BCR signal will be delayed by this many BCs - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(2).L0A_FRAME_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_2_L0A_FRAME_DELAY_C; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(2).FRAME_PHASE <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_2_FRAME_PHASE_C; -- phase of LCB frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(2).TRICKLE_BC_START <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_2_TRICKLE_BC_START_C; -- Determines the start of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(2).TRICKLE_BC_STOP <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_2_TRICKLE_BC_STOP_C; -- Determines the end of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(2).LCB_DESTINATION_MUX <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_2_LCB_DESTINATION_MUX_C; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(2).TRICKLE_TRIG_RUN <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_2_TRICKLE_TRIG_RUN_C; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(2).TTC_L0A_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_2_TTC_L0A_ENABLE_C; -- enable generating L0A frames in response to TTC system signals - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(2).TTC_GENERATE_GATING_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_2_TTC_GENERATE_GATING_ENABLE_C; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(10)(2).WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_2_WRITE_PTR_C; -- Trickle configuration memory write pointer - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(10)(2).VALID_DATA_START <= REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_2_VALID_DATA_START_C; -- Start address of trickle configuration in trickle memory - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(10)(2).VALID_DATA_END <= REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_2_VALID_DATA_END_C; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(10)(2).HCC_MASK <= REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_2_HCC_MASK_C; -- HCC* module mask - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(10)(2).ABC_MASK_HCC_E <= REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_2_ABC_MASK_HCC_E_C; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(10)(2).ABC_MASK_HCC_D <= REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_2_ABC_MASK_HCC_D_C; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(10)(2).ABC_MASK_HCC_C <= REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_2_ABC_MASK_HCC_C_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(10)(2).ABC_MASK_HCC_B <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_B_C; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(10)(2).ABC_MASK_HCC_A <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_A_C; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(10)(2).ABC_MASK_HCC_9 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_9_C; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(10)(2).ABC_MASK_HCC_8 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_8_C; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(10)(2).ABC_MASK_HCC_7 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_7_C; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(10)(2).ABC_MASK_HCC_6 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_6_C; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(10)(2).ABC_MASK_HCC_5 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_5_C; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(10)(2).ABC_MASK_HCC_4 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_4_C; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(10)(2).ABC_MASK_HCC_3 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_3_C; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(10)(2).ABC_MASK_HCC_2 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_2_C; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(10)(2).ABC_MASK_HCC_1 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_1_C; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(10)(2).ABC_MASK_HCC_0 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_0_C; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(3).L0A_BCR_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_3_L0A_BCR_DELAY_C; -- TTC BCR signal will be delayed by this many BCs - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(3).L0A_FRAME_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_3_L0A_FRAME_DELAY_C; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(3).FRAME_PHASE <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_3_FRAME_PHASE_C; -- phase of LCB frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(3).TRICKLE_BC_START <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_3_TRICKLE_BC_START_C; -- Determines the start of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(3).TRICKLE_BC_STOP <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_3_TRICKLE_BC_STOP_C; -- Determines the end of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(3).LCB_DESTINATION_MUX <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_3_LCB_DESTINATION_MUX_C; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(3).TRICKLE_TRIG_RUN <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_3_TRICKLE_TRIG_RUN_C; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(3).TTC_L0A_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_3_TTC_L0A_ENABLE_C; -- enable generating L0A frames in response to TTC system signals - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(3).TTC_GENERATE_GATING_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_3_TTC_GENERATE_GATING_ENABLE_C; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(10)(3).WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_3_WRITE_PTR_C; -- Trickle configuration memory write pointer - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(10)(3).VALID_DATA_START <= REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_3_VALID_DATA_START_C; -- Start address of trickle configuration in trickle memory - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(10)(3).VALID_DATA_END <= REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_3_VALID_DATA_END_C; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(10)(3).HCC_MASK <= REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_3_HCC_MASK_C; -- HCC* module mask - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(10)(3).ABC_MASK_HCC_E <= REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_3_ABC_MASK_HCC_E_C; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(10)(3).ABC_MASK_HCC_D <= REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_3_ABC_MASK_HCC_D_C; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(10)(3).ABC_MASK_HCC_C <= REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_3_ABC_MASK_HCC_C_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(10)(3).ABC_MASK_HCC_B <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_B_C; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(10)(3).ABC_MASK_HCC_A <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_A_C; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(10)(3).ABC_MASK_HCC_9 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_9_C; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(10)(3).ABC_MASK_HCC_8 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_8_C; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(10)(3).ABC_MASK_HCC_7 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_7_C; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(10)(3).ABC_MASK_HCC_6 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_6_C; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(10)(3).ABC_MASK_HCC_5 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_5_C; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(10)(3).ABC_MASK_HCC_4 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_4_C; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(10)(3).ABC_MASK_HCC_3 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_3_C; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(10)(3).ABC_MASK_HCC_2 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_2_C; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(10)(3).ABC_MASK_HCC_1 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_1_C; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(10)(3).ABC_MASK_HCC_0 <= REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_0_C; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (10)(0).FRAME_PHASE <= REG_CR_ITK_R3L1_LINK_10_R3L1_0_FRAME_PHASE_C; -- phase of R3L1 frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (10)(0).L1_ENABLE <= REG_CR_ITK_R3L1_LINK_10_R3L1_0_L1_ENABLE_C; -- enables sending TTC L1 signals to the front-end - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (10)(0).R3_ENABLE <= REG_CR_ITK_R3L1_LINK_10_R3L1_0_R3_ENABLE_C; -- enables sending RoI R3 signals to the front-end - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (10)(1).FRAME_PHASE <= REG_CR_ITK_R3L1_LINK_10_R3L1_1_FRAME_PHASE_C; -- phase of R3L1 frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (10)(1).L1_ENABLE <= REG_CR_ITK_R3L1_LINK_10_R3L1_1_L1_ENABLE_C; -- enables sending TTC L1 signals to the front-end - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (10)(1).R3_ENABLE <= REG_CR_ITK_R3L1_LINK_10_R3L1_1_R3_ENABLE_C; -- enables sending RoI R3 signals to the front-end - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (10)(2).FRAME_PHASE <= REG_CR_ITK_R3L1_LINK_10_R3L1_2_FRAME_PHASE_C; -- phase of R3L1 frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (10)(2).L1_ENABLE <= REG_CR_ITK_R3L1_LINK_10_R3L1_2_L1_ENABLE_C; -- enables sending TTC L1 signals to the front-end - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (10)(2).R3_ENABLE <= REG_CR_ITK_R3L1_LINK_10_R3L1_2_R3_ENABLE_C; -- enables sending RoI R3 signals to the front-end - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (10)(3).FRAME_PHASE <= REG_CR_ITK_R3L1_LINK_10_R3L1_3_FRAME_PHASE_C; -- phase of R3L1 frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (10)(3).L1_ENABLE <= REG_CR_ITK_R3L1_LINK_10_R3L1_3_L1_ENABLE_C; -- enables sending TTC L1 signals to the front-end - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (10)(3).R3_ENABLE <= REG_CR_ITK_R3L1_LINK_10_R3L1_3_R3_ENABLE_C; -- enables sending RoI R3 signals to the front-end - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(0).L0A_BCR_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_0_L0A_BCR_DELAY_C; -- TTC BCR signal will be delayed by this many BCs - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(0).L0A_FRAME_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_0_L0A_FRAME_DELAY_C; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(0).FRAME_PHASE <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_0_FRAME_PHASE_C; -- phase of LCB frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(0).TRICKLE_BC_START <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_0_TRICKLE_BC_START_C; -- Determines the start of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(0).TRICKLE_BC_STOP <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_0_TRICKLE_BC_STOP_C; -- Determines the end of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(0).LCB_DESTINATION_MUX <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_0_LCB_DESTINATION_MUX_C; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(0).TRICKLE_TRIG_RUN <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_0_TRICKLE_TRIG_RUN_C; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(0).TTC_L0A_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_0_TTC_L0A_ENABLE_C; -- enable generating L0A frames in response to TTC system signals - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(0).TTC_GENERATE_GATING_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_0_TTC_GENERATE_GATING_ENABLE_C; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(11)(0).WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_0_WRITE_PTR_C; -- Trickle configuration memory write pointer - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(11)(0).VALID_DATA_START <= REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_0_VALID_DATA_START_C; -- Start address of trickle configuration in trickle memory - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(11)(0).VALID_DATA_END <= REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_0_VALID_DATA_END_C; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(11)(0).HCC_MASK <= REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_0_HCC_MASK_C; -- HCC* module mask - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(11)(0).ABC_MASK_HCC_E <= REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_0_ABC_MASK_HCC_E_C; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(11)(0).ABC_MASK_HCC_D <= REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_0_ABC_MASK_HCC_D_C; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(11)(0).ABC_MASK_HCC_C <= REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_0_ABC_MASK_HCC_C_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(11)(0).ABC_MASK_HCC_B <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_B_C; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(11)(0).ABC_MASK_HCC_A <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_A_C; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(11)(0).ABC_MASK_HCC_9 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_9_C; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(11)(0).ABC_MASK_HCC_8 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_8_C; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(11)(0).ABC_MASK_HCC_7 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_7_C; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(11)(0).ABC_MASK_HCC_6 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_6_C; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(11)(0).ABC_MASK_HCC_5 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_5_C; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(11)(0).ABC_MASK_HCC_4 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_4_C; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(11)(0).ABC_MASK_HCC_3 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_3_C; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(11)(0).ABC_MASK_HCC_2 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_2_C; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(11)(0).ABC_MASK_HCC_1 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_1_C; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(11)(0).ABC_MASK_HCC_0 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_0_C; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(1).L0A_BCR_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_1_L0A_BCR_DELAY_C; -- TTC BCR signal will be delayed by this many BCs - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(1).L0A_FRAME_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_1_L0A_FRAME_DELAY_C; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(1).FRAME_PHASE <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_1_FRAME_PHASE_C; -- phase of LCB frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(1).TRICKLE_BC_START <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_1_TRICKLE_BC_START_C; -- Determines the start of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(1).TRICKLE_BC_STOP <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_1_TRICKLE_BC_STOP_C; -- Determines the end of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(1).LCB_DESTINATION_MUX <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_1_LCB_DESTINATION_MUX_C; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(1).TRICKLE_TRIG_RUN <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_1_TRICKLE_TRIG_RUN_C; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(1).TTC_L0A_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_1_TTC_L0A_ENABLE_C; -- enable generating L0A frames in response to TTC system signals - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(1).TTC_GENERATE_GATING_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_1_TTC_GENERATE_GATING_ENABLE_C; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(11)(1).WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_1_WRITE_PTR_C; -- Trickle configuration memory write pointer - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(11)(1).VALID_DATA_START <= REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_1_VALID_DATA_START_C; -- Start address of trickle configuration in trickle memory - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(11)(1).VALID_DATA_END <= REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_1_VALID_DATA_END_C; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(11)(1).HCC_MASK <= REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_1_HCC_MASK_C; -- HCC* module mask - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(11)(1).ABC_MASK_HCC_E <= REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_1_ABC_MASK_HCC_E_C; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(11)(1).ABC_MASK_HCC_D <= REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_1_ABC_MASK_HCC_D_C; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(11)(1).ABC_MASK_HCC_C <= REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_1_ABC_MASK_HCC_C_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(11)(1).ABC_MASK_HCC_B <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_B_C; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(11)(1).ABC_MASK_HCC_A <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_A_C; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(11)(1).ABC_MASK_HCC_9 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_9_C; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(11)(1).ABC_MASK_HCC_8 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_8_C; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(11)(1).ABC_MASK_HCC_7 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_7_C; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(11)(1).ABC_MASK_HCC_6 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_6_C; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(11)(1).ABC_MASK_HCC_5 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_5_C; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(11)(1).ABC_MASK_HCC_4 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_4_C; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(11)(1).ABC_MASK_HCC_3 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_3_C; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(11)(1).ABC_MASK_HCC_2 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_2_C; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(11)(1).ABC_MASK_HCC_1 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_1_C; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(11)(1).ABC_MASK_HCC_0 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_0_C; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(2).L0A_BCR_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_2_L0A_BCR_DELAY_C; -- TTC BCR signal will be delayed by this many BCs - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(2).L0A_FRAME_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_2_L0A_FRAME_DELAY_C; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(2).FRAME_PHASE <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_2_FRAME_PHASE_C; -- phase of LCB frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(2).TRICKLE_BC_START <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_2_TRICKLE_BC_START_C; -- Determines the start of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(2).TRICKLE_BC_STOP <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_2_TRICKLE_BC_STOP_C; -- Determines the end of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(2).LCB_DESTINATION_MUX <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_2_LCB_DESTINATION_MUX_C; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(2).TRICKLE_TRIG_RUN <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_2_TRICKLE_TRIG_RUN_C; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(2).TTC_L0A_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_2_TTC_L0A_ENABLE_C; -- enable generating L0A frames in response to TTC system signals - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(2).TTC_GENERATE_GATING_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_2_TTC_GENERATE_GATING_ENABLE_C; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(11)(2).WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_2_WRITE_PTR_C; -- Trickle configuration memory write pointer - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(11)(2).VALID_DATA_START <= REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_2_VALID_DATA_START_C; -- Start address of trickle configuration in trickle memory - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(11)(2).VALID_DATA_END <= REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_2_VALID_DATA_END_C; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(11)(2).HCC_MASK <= REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_2_HCC_MASK_C; -- HCC* module mask - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(11)(2).ABC_MASK_HCC_E <= REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_2_ABC_MASK_HCC_E_C; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(11)(2).ABC_MASK_HCC_D <= REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_2_ABC_MASK_HCC_D_C; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(11)(2).ABC_MASK_HCC_C <= REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_2_ABC_MASK_HCC_C_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(11)(2).ABC_MASK_HCC_B <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_B_C; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(11)(2).ABC_MASK_HCC_A <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_A_C; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(11)(2).ABC_MASK_HCC_9 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_9_C; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(11)(2).ABC_MASK_HCC_8 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_8_C; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(11)(2).ABC_MASK_HCC_7 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_7_C; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(11)(2).ABC_MASK_HCC_6 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_6_C; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(11)(2).ABC_MASK_HCC_5 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_5_C; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(11)(2).ABC_MASK_HCC_4 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_4_C; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(11)(2).ABC_MASK_HCC_3 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_3_C; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(11)(2).ABC_MASK_HCC_2 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_2_C; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(11)(2).ABC_MASK_HCC_1 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_1_C; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(11)(2).ABC_MASK_HCC_0 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_0_C; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(3).L0A_BCR_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_3_L0A_BCR_DELAY_C; -- TTC BCR signal will be delayed by this many BCs - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(3).L0A_FRAME_DELAY <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_3_L0A_FRAME_DELAY_C; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(3).FRAME_PHASE <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_3_FRAME_PHASE_C; -- phase of LCB frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(3).TRICKLE_BC_START <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_3_TRICKLE_BC_START_C; -- Determines the start of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(3).TRICKLE_BC_STOP <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_3_TRICKLE_BC_STOP_C; -- Determines the end of the allowed BC interval for low-priority LCB frames - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(3).LCB_DESTINATION_MUX <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_3_LCB_DESTINATION_MUX_C; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(3).TRICKLE_TRIG_RUN <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_3_TRICKLE_TRIG_RUN_C; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(3).TTC_L0A_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_3_TTC_L0A_ENABLE_C; -- enable generating L0A frames in response to TTC system signals - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(3).TTC_GENERATE_GATING_ENABLE <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_3_TTC_GENERATE_GATING_ENABLE_C; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(11)(3).WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_3_WRITE_PTR_C; -- Trickle configuration memory write pointer - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(11)(3).VALID_DATA_START <= REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_3_VALID_DATA_START_C; -- Start address of trickle configuration in trickle memory - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(11)(3).VALID_DATA_END <= REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_3_VALID_DATA_END_C; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(11)(3).HCC_MASK <= REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_3_HCC_MASK_C; -- HCC* module mask - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(11)(3).ABC_MASK_HCC_E <= REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_3_ABC_MASK_HCC_E_C; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(11)(3).ABC_MASK_HCC_D <= REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_3_ABC_MASK_HCC_D_C; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C(11)(3).ABC_MASK_HCC_C <= REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_3_ABC_MASK_HCC_C_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(11)(3).ABC_MASK_HCC_B <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_B_C; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(11)(3).ABC_MASK_HCC_A <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_A_C; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(11)(3).ABC_MASK_HCC_9 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_9_C; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8(11)(3).ABC_MASK_HCC_8 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_8_C; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(11)(3).ABC_MASK_HCC_7 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_7_C; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(11)(3).ABC_MASK_HCC_6 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_6_C; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(11)(3).ABC_MASK_HCC_5 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_5_C; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4(11)(3).ABC_MASK_HCC_4 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_4_C; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(11)(3).ABC_MASK_HCC_3 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_3_C; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(11)(3).ABC_MASK_HCC_2 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_2_C; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(11)(3).ABC_MASK_HCC_1 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_1_C; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0(11)(3).ABC_MASK_HCC_0 <= REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_0_C; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (11)(0).FRAME_PHASE <= REG_CR_ITK_R3L1_LINK_11_R3L1_0_FRAME_PHASE_C; -- phase of R3L1 frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (11)(0).L1_ENABLE <= REG_CR_ITK_R3L1_LINK_11_R3L1_0_L1_ENABLE_C; -- enables sending TTC L1 signals to the front-end - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (11)(0).R3_ENABLE <= REG_CR_ITK_R3L1_LINK_11_R3L1_0_R3_ENABLE_C; -- enables sending RoI R3 signals to the front-end - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (11)(1).FRAME_PHASE <= REG_CR_ITK_R3L1_LINK_11_R3L1_1_FRAME_PHASE_C; -- phase of R3L1 frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (11)(1).L1_ENABLE <= REG_CR_ITK_R3L1_LINK_11_R3L1_1_L1_ENABLE_C; -- enables sending TTC L1 signals to the front-end - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (11)(1).R3_ENABLE <= REG_CR_ITK_R3L1_LINK_11_R3L1_1_R3_ENABLE_C; -- enables sending RoI R3 signals to the front-end - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (11)(2).FRAME_PHASE <= REG_CR_ITK_R3L1_LINK_11_R3L1_2_FRAME_PHASE_C; -- phase of R3L1 frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (11)(2).L1_ENABLE <= REG_CR_ITK_R3L1_LINK_11_R3L1_2_L1_ENABLE_C; -- enables sending TTC L1 signals to the front-end - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (11)(2).R3_ENABLE <= REG_CR_ITK_R3L1_LINK_11_R3L1_2_R3_ENABLE_C; -- enables sending RoI R3 signals to the front-end - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (11)(3).FRAME_PHASE <= REG_CR_ITK_R3L1_LINK_11_R3L1_3_FRAME_PHASE_C; -- phase of R3L1 frame with respect to TTC BCR signal - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (11)(3).L1_ENABLE <= REG_CR_ITK_R3L1_LINK_11_R3L1_3_L1_ENABLE_C; -- enables sending TTC L1 signals to the front-end - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (11)(3).R3_ENABLE <= REG_CR_ITK_R3L1_LINK_11_R3L1_3_R3_ENABLE_C; -- enables sending RoI R3 signals to the front-end - end if; - if MROD_GENERATE_REGS = true then - register_map_control_s.MROD_CTRL.OPTIONS <= REG_MROD_CTRL_OPTIONS_C; -- Extra options for MROD - end if; - if MROD_GENERATE_REGS = true then - register_map_control_s.MROD_CTRL.GOLTESTMODE <= REG_MROD_CTRL_GOLTESTMODE_C; -- GOL Test Mode (emulate CSM): - -- 0: Run Data Emulator when 1; 0: stop, load emulator fifo - -- 1: Enable Circulate when 1; 0: send fifo data only once - -- 2: Enable Triggered Mode when 1; 0: run continueously (no TTC) - -- 3: Enable pattern generator when 1; 0: off - - end if; - if MROD_GENERATE_REGS = true then - register_map_control_s.MROD_EP0_CSMENABLE <= REG_MROD_EP0_CSMENABLE_C; -- EP0 CSM Data Enable channel 23-0 - end if; - if MROD_GENERATE_REGS = true then - register_map_control_s.MROD_EP0_EMPTYSUPPR <= REG_MROD_EP0_EMPTYSUPPR_C; -- EP0 Set Empty Suppression channel 23-0 - end if; - if MROD_GENERATE_REGS = true then - register_map_control_s.MROD_EP0_HPTDCMODE <= REG_MROD_EP0_HPTDCMODE_C; -- EP0 Set HPTDC Mode channel 23-0 - end if; - if MROD_GENERATE_REGS = true then - register_map_control_s.MROD_EP0_CLRFIFOS <= REG_MROD_EP0_CLRFIFOS_C; -- EP0 Clear FIFOs channel 23-0 - end if; - if MROD_GENERATE_REGS = true then - register_map_control_s.MROD_EP0_EMULOADENA <= REG_MROD_EP0_EMULOADENA_C; -- EP0 Emulator Load Enable channel 23-0 - end if; - if MROD_GENERATE_REGS = true then - register_map_control_s.MROD_EP0_TRXLOOPBACK <= REG_MROD_EP0_TRXLOOPBACK_C; -- EP0 Transceiver Loopback Enable channel 23-0 - end if; - if MROD_GENERATE_REGS = true then - register_map_control_s.MROD_EP0_TXCVRRESET <= REG_MROD_EP0_TXCVRRESET_C; -- EP0 Transceiver Reset all channel 23-0 - end if; - if MROD_GENERATE_REGS = true then - register_map_control_s.MROD_EP0_RXRESET <= REG_MROD_EP0_RXRESET_C; -- EP0 Receiver Reset channel 23-0 - end if; - if MROD_GENERATE_REGS = true then - register_map_control_s.MROD_EP0_TXRESET <= REG_MROD_EP0_TXRESET_C; -- EP0 Transmitter Reset channel 23-0 - end if; - if MROD_GENERATE_REGS = true then - register_map_control_s.MROD_EP1_CSMENABLE <= REG_MROD_EP1_CSMENABLE_C; -- EP1 CSM Data Enable channel 23-0 - end if; - if MROD_GENERATE_REGS = true then - register_map_control_s.MROD_EP1_EMPTYSUPPR <= REG_MROD_EP1_EMPTYSUPPR_C; -- EP1 Set Empty Suppression channel 23-0 - end if; - if MROD_GENERATE_REGS = true then - register_map_control_s.MROD_EP1_HPTDCMODE <= REG_MROD_EP1_HPTDCMODE_C; -- EP1 Set HPTDC Mode channel 23-0 - end if; - if MROD_GENERATE_REGS = true then - register_map_control_s.MROD_EP1_CLRFIFOS <= REG_MROD_EP1_CLRFIFOS_C; -- EP1 Clear FIFOs channel 23-0 - end if; - if MROD_GENERATE_REGS = true then - register_map_control_s.MROD_EP1_EMULOADENA <= REG_MROD_EP1_EMULOADENA_C; -- EP1 Emulator Load Enable channel 23-0 - end if; - if MROD_GENERATE_REGS = true then - register_map_control_s.MROD_EP1_TRXLOOPBACK <= REG_MROD_EP1_TRXLOOPBACK_C; -- EP1 Transceiver Loopback Enable channel 23-0 - end if; - if MROD_GENERATE_REGS = true then - register_map_control_s.MROD_EP1_TXCVRRESET <= REG_MROD_EP1_TXCVRRESET_C; -- EP1 Transceiver Reset all channel 23-0 - end if; - if MROD_GENERATE_REGS = true then - register_map_control_s.MROD_EP1_RXRESET <= REG_MROD_EP1_RXRESET_C; -- EP1 Receiver Reset channel 23-0 - end if; - if MROD_GENERATE_REGS = true then - register_map_control_s.MROD_EP1_TXRESET <= REG_MROD_EP1_TXRESET_C; -- EP1 Transmitter Reset channel 23-0 - end if; - ----------------------------------- - ---- GENERATED code END #1 ## ---- - ----------------------------------- - else - - for i in 0 to NUMBER_OF_DESCRIPTORS-1 loop - if(dma_descriptors_25_r_s(i).enable = '1') then - if(last_pc_pointer_v(i) > dma_descriptors_25_w_s(i).pc_pointer + pc_ptr_gap_25_s) then --If the current pc_pointer is 16MB smaller than the last one, we change cycles. The 16MB can be changed in the register PC_PTR_GAP (bar0). - dma_descriptors_25_w_s(i).evencycle_pc <= not dma_descriptors_25_w_s(i).evencycle_pc; --Toggle on wrap around - end if; - else - dma_descriptors_25_w_s(i).evencycle_pc <= '0'; - end if; - last_pc_pointer_v(i) := dma_descriptors_25_w_s(i).pc_pointer; - end loop; - - dma_descriptors_enable_written_25_s <= '0'; - register_map_control_s <= register_map_control_s; --store read (PCIe Write) register map - register_read_done_25_s <= '0'; - register_read_data_25_s <= register_read_data_25_s; - - - --! - --! generated self clearing "write only" register clear assignment - -- Bar 0 - flush_fifo_25_s <= '0'; - dma_soft_reset_25_s <= '0'; - reset_global_soft_25_s <= '0'; - - if register_map_control_s.DMA_BUSY_STATUS.CLEAR_LATCH="1" then - tohost_busy_latched_25_s <= '0'; - fromhost_busy_latched_25_s <= '0'; - end if; - if tohost_busy_25_s = '1' then - tohost_busy_latched_25_s <= '1'; - end if; - if fromhost_busy_25_s = '1' then - fromhost_busy_latched_25_s <= '1'; - end if; - - ------------------------------------ - ---- ## GENERATED CODE BEGIN #2 ---- - ------------------------------------ - register_map_control_s.CRTOHOST_FIFO_STATUS.CLEAR <= REG_CRTOHOST_FIFO_STATUS_CLEAR_C; -- Any write to this register clears the latched FULL flags - register_map_control_s.CRFROMHOST_FIFO_STATUS.CLEAR <= REG_CRFROMHOST_FIFO_STATUS_CLEAR_C; -- Any write to this register clears the latched FULL flags - register_map_control_s.TTC_BUSY_CLEAR <= REG_TTC_BUSY_CLEAR_C; -- clears the latching busy bits in TTC_BUSY_ACCEPTED - register_map_control_s.TTC_EMU_RESET <= REG_TTC_EMU_RESET_C; -- Any write to this register resets the TTC Emulator to the default state. - register_map_control_s.TTC_ECR_MONITOR.CLEAR <= REG_TTC_ECR_MONITOR_CLEAR_C; -- Counts the number of ECRs received from the TTC system, any write to this register clears the counter - register_map_control_s.TTC_TTYPE_MONITOR.CLEAR <= REG_TTC_TTYPE_MONITOR_CLEAR_C; -- Counts the number of TType received from the TTC system, any write to this register clears the counter - register_map_control_s.TTC_BCR_PERIODICITY_MONITOR.CLEAR <= REG_TTC_BCR_PERIODICITY_MONITOR_CLEAR_C; -- Counts the number of times the BCR period does not match 3564, any write to this register clears the counter - register_map_control_s.XOFF_FM_HIGH_THRESH.CLEAR_LATCH <= REG_XOFF_FM_HIGH_THRESH_CLEAR_LATCH_C; -- Writing this register will clear all CROSS_LATCHED bits - register_map_control_s.DMA_BUSY_STATUS.CLEAR_LATCH <= REG_DMA_BUSY_STATUS_CLEAR_LATCH_C; -- Any write to this register clears TOHOST_BUSY_LATCHED - register_map_control_s.FM_BUSY_CHANNEL_STATUS.CLEAR_LATCH <= REG_FM_BUSY_CHANNEL_STATUS_CLEAR_LATCH_C; -- Any write to this register will clear the BUSY_LATCHED bits - register_map_control_s.BUSY_MAIN_OUTPUT_FIFO_STATUS.CLEAR_LATCHED <= REG_BUSY_MAIN_OUTPUT_FIFO_STATUS_CLEAR_LATCHED_C; -- Any write to this register will clear the - register_map_control_s.I2C_WR.I2C_WREN <= REG_I2C_WR_I2C_WREN_C; -- Any write to this register triggers an I2C read or write sequence - register_map_control_s.I2C_RD.I2C_RDEN <= REG_I2C_RD_I2C_RDEN_C; -- Any write to this register pops the last I2C data from the FIFO - register_map_control_s.INT_TEST.TRIGGER <= REG_INT_TEST_TRIGGER_C; -- Fire a test MSIx interrupt set in IRQ - if EMU_GENERATE_REGS then - register_map_control_s.FMEMU_RANDOM_RAM.WE <= REG_FMEMU_RANDOM_RAM_WE_C; -- Any write to this register (DATA) triggers a write to the ramblock - end if; - register_map_control_s.WISHBONE_WRITE.WRITE_ENABLE <= REG_WISHBONE_WRITE_WRITE_ENABLE_C; -- Any write to this register triggers a write to the Wupper to Wishbone fifo - register_map_control_s.WISHBONE_READ.READ_ENABLE <= REG_WISHBONE_READ_READ_ENABLE_C; -- Any write to this register triggers a read from the Wishbone to Wupper fifo - register_map_control_s.GLOBAL_STRIPS_CONFIG.TRICKLE_TRIG_PULSE <= REG_GLOBAL_STRIPS_CONFIG_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger for every LCB link connected to this FELIX device - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (0)(0).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_0_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(0)(0).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_0_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (0)(1).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_1_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(0)(1).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_1_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (0)(2).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_2_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(0)(2).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_2_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (0)(3).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_3_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(0)(3).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_3_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (1)(0).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_0_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(1)(0).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_0_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (1)(1).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_1_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(1)(1).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_1_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (1)(2).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_2_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(1)(2).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_2_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (1)(3).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_3_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(1)(3).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_3_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (2)(0).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_0_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(2)(0).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_0_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (2)(1).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_1_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(2)(1).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_1_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (2)(2).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_2_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(2)(2).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_2_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (2)(3).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_3_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(2)(3).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_3_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (3)(0).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_0_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(3)(0).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_0_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (3)(1).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_1_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(3)(1).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_1_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (3)(2).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_2_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(3)(2).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_2_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (3)(3).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_3_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(3)(3).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_3_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(0).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_0_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(4)(0).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_0_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(1).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_1_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(4)(1).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_1_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(2).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_2_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(4)(2).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_2_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(3).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_3_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(4)(3).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_3_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(0).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_0_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(5)(0).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_0_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(1).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_1_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(5)(1).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_1_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(2).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_2_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(5)(2).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_2_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(3).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_3_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(5)(3).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_3_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(0).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_0_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(6)(0).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_0_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(1).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_1_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(6)(1).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_1_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(2).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_2_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(6)(2).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_2_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(3).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_3_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(6)(3).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_3_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(0).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_0_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(7)(0).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_0_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(1).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_1_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(7)(1).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_1_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(2).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_2_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(7)(2).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_2_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(3).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_3_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(7)(3).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_3_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(0).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_0_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(8)(0).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_0_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(1).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_1_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(8)(1).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_1_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(2).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_2_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(8)(2).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_2_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(3).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_3_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(8)(3).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_3_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(0).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_0_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(9)(0).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_0_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(1).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_1_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(9)(1).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_1_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(2).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_2_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(9)(2).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_2_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(3).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_3_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(9)(3).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_3_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(0).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_0_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(10)(0).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_0_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(1).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_1_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(10)(1).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_1_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(2).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_2_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(10)(2).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_2_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(3).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_3_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(10)(3).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_3_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(0).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_0_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(11)(0).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_0_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(1).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_1_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(11)(1).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_1_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(2).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_2_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(11)(2).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_2_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(3).TRICKLE_TRIG_PULSE <= REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_3_TRICKLE_TRIG_PULSE_C; -- writing to this register issues a single trickle trigger - end if; - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG(11)(3).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_3_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - end if; - ----------------------------------- - ---- GENERATED code END #2 ## ---- - ----------------------------------- - - if(register_read_enable_25_s = '1') then - register_read_done_25_s <= '1'; - register_read_data_25_s <= (others => '0'); --default value - --Read registers in BAR0 - if(bar_id_25_s = "000") then - register_read_address_v := register_read_address_25_s(19 downto 4)&"0000"; - case(register_read_address_v) is - when REG_DESCRIPTOR_0 => register_read_data_25_s <= dma_descriptors_25_r_s( 0).end_address& - dma_descriptors_25_r_s( 0).start_address; - when REG_DESCRIPTOR_0a => register_read_data_25_s <= dma_descriptors_25_r_s( 0).pc_pointer& - x"000000000000"&"000"& - dma_descriptors_25_r_s( 0).wrap_around& - dma_descriptors_25_r_s( 0).read_not_write& - dma_descriptors_25_r_s( 0).dword_count; - when REG_DESCRIPTOR_1 => register_read_data_25_s <= dma_descriptors_25_r_s( 1).end_address& - dma_descriptors_25_r_s( 1).start_address; - when REG_DESCRIPTOR_1a => register_read_data_25_s <= dma_descriptors_25_r_s( 1).pc_pointer& - x"000000000000"&"000"& - dma_descriptors_25_r_s( 1).wrap_around& - dma_descriptors_25_r_s( 1).read_not_write& - dma_descriptors_25_r_s( 1).dword_count; - when REG_DESCRIPTOR_2 => register_read_data_25_s <= dma_descriptors_25_r_s( 2).end_address& - dma_descriptors_25_r_s( 2).start_address; - when REG_DESCRIPTOR_2a => register_read_data_25_s <= dma_descriptors_25_r_s( 2).pc_pointer& - x"000000000000"&"000"& - dma_descriptors_25_r_s( 2).wrap_around& - dma_descriptors_25_r_s( 2).read_not_write& - dma_descriptors_25_r_s( 2).dword_count; - when REG_DESCRIPTOR_3 => register_read_data_25_s <= dma_descriptors_25_r_s( 3).end_address& - dma_descriptors_25_r_s( 3).start_address; - when REG_DESCRIPTOR_3a => register_read_data_25_s <= dma_descriptors_25_r_s( 3).pc_pointer& - x"000000000000"&"000"& - dma_descriptors_25_r_s( 3).wrap_around& - dma_descriptors_25_r_s( 3).read_not_write& - dma_descriptors_25_r_s( 3).dword_count; - when REG_DESCRIPTOR_4 => register_read_data_25_s <= dma_descriptors_25_r_s( 4).end_address& - dma_descriptors_25_r_s( 4).start_address; - when REG_DESCRIPTOR_4a => register_read_data_25_s <= dma_descriptors_25_r_s( 4).pc_pointer& - x"000000000000"&"000"& - dma_descriptors_25_r_s( 4).wrap_around& - dma_descriptors_25_r_s( 4).read_not_write& - dma_descriptors_25_r_s( 4).dword_count; - when REG_DESCRIPTOR_5 => register_read_data_25_s <= dma_descriptors_25_r_s( 5).end_address& - dma_descriptors_25_r_s( 5).start_address; - when REG_DESCRIPTOR_5a => register_read_data_25_s <= dma_descriptors_25_r_s( 5).pc_pointer& - x"000000000000"&"000"& - dma_descriptors_25_r_s( 5).wrap_around& - dma_descriptors_25_r_s( 5).read_not_write& - dma_descriptors_25_r_s( 5).dword_count; - when REG_DESCRIPTOR_6 => register_read_data_25_s <= dma_descriptors_25_r_s( 6).end_address& - dma_descriptors_25_r_s( 6).start_address; - when REG_DESCRIPTOR_6a => register_read_data_25_s <= dma_descriptors_25_r_s( 6).pc_pointer& - x"000000000000"&"000"& - dma_descriptors_25_r_s( 6).wrap_around& - dma_descriptors_25_r_s( 6).read_not_write& - dma_descriptors_25_r_s( 6).dword_count; - when REG_DESCRIPTOR_7 => register_read_data_25_s <= dma_descriptors_25_r_s( 7).end_address& - dma_descriptors_25_r_s( 7).start_address; - when REG_DESCRIPTOR_7a => register_read_data_25_s <= dma_descriptors_25_r_s( 7).pc_pointer& - x"000000000000"&"000"& - dma_descriptors_25_r_s( 7).wrap_around& - dma_descriptors_25_r_s( 7).read_not_write& - dma_descriptors_25_r_s( 7).dword_count; - when REG_STATUS_0 => register_read_data_25_s <= x"000000000000000"&"0"& - dma_descriptors_25_r_s(0 ).evencycle_pc& - dma_status_25_s(0 ).evencycle_dma& - (not dma_descriptors_25_r_s(0 ).enable)& - dma_status_25_s(0 ).current_address; - when REG_STATUS_1 => register_read_data_25_s <= x"000000000000000"&"0"& - dma_descriptors_25_r_s(1 ).evencycle_pc& - dma_status_25_s(1 ).evencycle_dma& - (not dma_descriptors_25_r_s(1 ).enable)& - dma_status_25_s(1 ).current_address; - when REG_STATUS_2 => register_read_data_25_s <= x"000000000000000"&"0"& - dma_descriptors_25_r_s(2 ).evencycle_pc& - dma_status_25_s(2 ).evencycle_dma& - (not dma_descriptors_25_r_s(2 ).enable)& - dma_status_25_s(2 ).current_address; - when REG_STATUS_3 => register_read_data_25_s <= x"000000000000000"&"0"& - dma_descriptors_25_r_s(3 ).evencycle_pc& - dma_status_25_s(2 ).evencycle_dma& - (not dma_descriptors_25_r_s(3 ).enable)& - dma_status_25_s(3 ).current_address; - when REG_STATUS_4 => register_read_data_25_s <= x"000000000000000"&"0"& - dma_descriptors_25_r_s(4 ).evencycle_pc& - dma_status_25_s(4 ).evencycle_dma& - (not dma_descriptors_25_r_s(4 ).enable)& - dma_status_25_s(4 ).current_address; - when REG_STATUS_5 => register_read_data_25_s <= x"000000000000000"&"0"& - dma_descriptors_25_r_s(5 ).evencycle_pc& - dma_status_25_s(5 ).evencycle_dma& - (not dma_descriptors_25_r_s(5 ).enable)& - dma_status_25_s(5 ).current_address; - when REG_STATUS_6 => register_read_data_25_s <= x"000000000000000"&"0"& - dma_descriptors_25_r_s(6 ).evencycle_pc& - dma_status_25_s(6 ).evencycle_dma& - (not dma_descriptors_25_r_s(6 ).enable)& - dma_status_25_s(6 ).current_address; - when REG_STATUS_7 => register_read_data_25_s <= x"000000000000000"&"0"& - dma_descriptors_25_r_s(7 ).evencycle_pc& - dma_status_25_s(7 ).evencycle_dma& - (not dma_descriptors_25_r_s(7 ).enable)& - dma_status_25_s(7 ).current_address; - when REG_DESCRIPTOR_ENABLE => for i in 0 to (NUMBER_OF_DESCRIPTORS-1) loop - register_read_data_25_s(i) <= dma_descriptors_25_r_s(i).enable; - end loop; - register_read_data_25_s(127 downto (NUMBER_OF_DESCRIPTORS)) <= (others =>'0'); - when REG_FIFO_FLUSH => register_read_data_25_s <= (others => '0'); - when REG_DMA_RESET => register_read_data_25_s <= (others => '0'); - when REG_SOFT_RESET => register_read_data_25_s <= (others => '0'); - when REG_REGISTER_RESET => register_read_data_25_s <= (others => '0'); - when REG_FROMHOST_FULL_THRESH => register_read_data_25_s <= x"00000000_00000000" & - x"0000_0000_0"&"000"&fromhost_pfull_threshold_assert_s& - x"0"&"000"&fromhost_pfull_threshold_negate_s; - when REG_TOHOST_FULL_THRESH => register_read_data_25_s <= x"00000000_00000000" & - x"0000_0000_0"&tohost_pfull_threshold_assert_s& - x"0"&tohost_pfull_threshold_negate_s; - when REG_BUSY_THRESH_ASSERT => register_read_data_25_s <= x"0000_0000_0000_0000"&busy_threshold_assert; - when REG_BUSY_THRESH_NEGATE => register_read_data_25_s <= x"0000_0000_0000_0000"&busy_threshold_negate; - when REG_BUSY_STATUS => register_read_data_25_s <= x"0000_0000_0000_0000_0000_0000_0000_000"&"00"& - fromhost_busy_25_s& - tohost_busy_25_s; - when REG_PC_PTR_GAP => register_read_data_25_s <= x"0000_0000_0000_0000"&pc_ptr_gap_25_s; - when others => register_read_data_25_s <= (others => '0'); - - - end case; - --Read registers in BAR1 - elsif(bar_id_25_s = "001") then - register_read_address_v := register_read_address_25_s(19 downto 4)&"0000"; - case(register_read_address_v) is - when REG_INT_VEC_00 => register_read_data_25_s(63 downto 0) <= int_vector_25_s(0).int_vec_add; - register_read_data_25_s(95 downto 64) <= int_vector_25_s(0).int_vec_data; - register_read_data_25_s(127 downto 96) <= int_vector_25_s(0).int_vec_ctrl; - when REG_INT_VEC_01 => register_read_data_25_s(63 downto 0) <= int_vector_25_s(1).int_vec_add; - register_read_data_25_s(95 downto 64) <= int_vector_25_s(1).int_vec_data; - register_read_data_25_s(127 downto 96) <= int_vector_25_s(1).int_vec_ctrl; - when REG_INT_VEC_02 => register_read_data_25_s(63 downto 0) <= int_vector_25_s(2).int_vec_add; - register_read_data_25_s(95 downto 64) <= int_vector_25_s(2).int_vec_data; - register_read_data_25_s(127 downto 96) <= int_vector_25_s(2).int_vec_ctrl; - when REG_INT_VEC_03 => register_read_data_25_s(63 downto 0) <= int_vector_25_s(3).int_vec_add; - register_read_data_25_s(95 downto 64) <= int_vector_25_s(3).int_vec_data; - register_read_data_25_s(127 downto 96) <= int_vector_25_s(3).int_vec_ctrl; - when REG_INT_VEC_04 => register_read_data_25_s(63 downto 0) <= int_vector_25_s(4).int_vec_add; - register_read_data_25_s(95 downto 64) <= int_vector_25_s(4).int_vec_data; - register_read_data_25_s(127 downto 96) <= int_vector_25_s(4).int_vec_ctrl; - when REG_INT_VEC_05 => register_read_data_25_s(63 downto 0) <= int_vector_25_s(5).int_vec_add; - register_read_data_25_s(95 downto 64) <= int_vector_25_s(5).int_vec_data; - register_read_data_25_s(127 downto 96) <= int_vector_25_s(5).int_vec_ctrl; - when REG_INT_VEC_06 => register_read_data_25_s(63 downto 0) <= int_vector_25_s(6).int_vec_add; - register_read_data_25_s(95 downto 64) <= int_vector_25_s(6).int_vec_data; - register_read_data_25_s(127 downto 96) <= int_vector_25_s(6).int_vec_ctrl; - when REG_INT_VEC_07 => register_read_data_25_s(63 downto 0) <= int_vector_25_s(7).int_vec_add; - register_read_data_25_s(95 downto 64) <= int_vector_25_s(7).int_vec_data; - register_read_data_25_s(127 downto 96) <= int_vector_25_s(7).int_vec_ctrl; - when REG_INT_VEC_08 => register_read_data_25_s(63 downto 0) <= int_vector_25_s(8).int_vec_add; - register_read_data_25_s(95 downto 64) <= int_vector_25_s(8).int_vec_data; - register_read_data_25_s(127 downto 96) <= int_vector_25_s(8).int_vec_ctrl; - when REG_INT_VEC_09 => register_read_data_25_s(63 downto 0) <= int_vector_25_s(9).int_vec_add; - register_read_data_25_s(95 downto 64) <= int_vector_25_s(9).int_vec_data; - register_read_data_25_s(127 downto 96) <= int_vector_25_s(9).int_vec_ctrl; - when REG_INT_VEC_10 => register_read_data_25_s(63 downto 0) <= int_vector_25_s(10).int_vec_add; - register_read_data_25_s(95 downto 64) <= int_vector_25_s(10).int_vec_data; - register_read_data_25_s(127 downto 96) <= int_vector_25_s(10).int_vec_ctrl; - when REG_INT_VEC_11 => register_read_data_25_s(63 downto 0) <= int_vector_25_s(11).int_vec_add; - register_read_data_25_s(95 downto 64) <= int_vector_25_s(11).int_vec_data; - register_read_data_25_s(127 downto 96) <= int_vector_25_s(11).int_vec_ctrl; - when REG_INT_VEC_12 => register_read_data_25_s(63 downto 0) <= int_vector_25_s(12).int_vec_add; - register_read_data_25_s(95 downto 64) <= int_vector_25_s(12).int_vec_data; - register_read_data_25_s(127 downto 96) <= int_vector_25_s(12).int_vec_ctrl; - when REG_INT_VEC_13 => register_read_data_25_s(63 downto 0) <= int_vector_25_s(13).int_vec_add; - register_read_data_25_s(95 downto 64) <= int_vector_25_s(13).int_vec_data; - register_read_data_25_s(127 downto 96) <= int_vector_25_s(13).int_vec_ctrl; - when REG_INT_VEC_14 => register_read_data_25_s(63 downto 0) <= int_vector_25_s(14).int_vec_add; - register_read_data_25_s(95 downto 64) <= int_vector_25_s(14).int_vec_data; - register_read_data_25_s(127 downto 96) <= int_vector_25_s(14).int_vec_ctrl; - when REG_INT_VEC_15 => register_read_data_25_s(63 downto 0) <= int_vector_25_s(15).int_vec_add; - register_read_data_25_s(95 downto 64) <= int_vector_25_s(15).int_vec_data; - register_read_data_25_s(127 downto 96) <= int_vector_25_s(15).int_vec_ctrl; - when REG_INT_TAB_EN => register_read_data_25_s(NUMBER_OF_INTERRUPTS-1 downto 0) <= int_table_en_s; - when others => register_read_data_25_s <= (others => '0'); - end case; - --Read registers in BAR2 - elsif(bar_id_25_s = "010") then - register_read_address_v := register_read_address_25_s(19 downto 4)&"0000"; - case(register_read_address_v) is - --! - --! generated registers read - ------------------------------------ - ---- ## GENERATED code BEGIN #3 ---- - ------------------------------------ - -- - -- Control Registers - -- - when REG_STATUS_LEDS => register_read_data_25_s(7 downto 0) <= register_map_control_s.STATUS_LEDS; -- Board GPIO Leds - when REG_TIMEOUT_CTRL => register_read_data_25_s(32 downto 32) <= register_map_control_s.TIMEOUT_CTRL.ENABLE; -- 1 enables the timout trailer generation for ToHost mode - register_read_data_25_s(31 downto 0) <= register_map_control_s.TIMEOUT_CTRL.TIMEOUT; -- Number of 40 MHz clock cycles after which a timeout occurs. - when REG_CRTOHOST_FIFO_STATUS => register_read_data_25_s(64 downto 64) <= register_map_control_s.CRTOHOST_FIFO_STATUS.CLEAR; -- Any write to this register clears the latched FULL flags - register_read_data_25_s(47 downto 24) <= register_map_monitor_s.register_map_crtohost_monitor.CRTOHOST_FIFO_STATUS.FULL; -- Every bit represents the full flag of a channel FIFO - register_read_data_25_s(23 downto 0) <= register_map_monitor_s.register_map_crtohost_monitor.CRTOHOST_FIFO_STATUS.FULL_LATCHED; -- like FULL but a latched state, clear by writing to this register - when REG_CRFROMHOST_FIFO_STATUS => register_read_data_25_s(64 downto 64) <= register_map_control_s.CRFROMHOST_FIFO_STATUS.CLEAR; -- Any write to this register clears the latched FULL flags - register_read_data_25_s(47 downto 24) <= register_map_monitor_s.register_map_crfromhost_monitor.CRFROMHOST_FIFO_STATUS.FULL; -- Every bit represents the full flag of a channel FIFO - register_read_data_25_s(23 downto 0) <= register_map_monitor_s.register_map_crfromhost_monitor.CRFROMHOST_FIFO_STATUS.FULL_LATCHED; -- like FULL but a latched state, clear by writing to this register - when REG_BROADCAST_ENABLE_00 => - if GBT_NUM > 0 then - register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(0); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_01 => - if GBT_NUM > 1 then - register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(1); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_02 => - if GBT_NUM > 2 then - register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(2); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_03 => - if GBT_NUM > 3 then - register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(3); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_04 => - if GBT_NUM > 4 then - register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(4); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_05 => - if GBT_NUM > 5 then - register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(5); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_06 => - if GBT_NUM > 6 then - register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(6); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_07 => - if GBT_NUM > 7 then - register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(7); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_08 => - if GBT_NUM > 8 then - register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(8); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_09 => - if GBT_NUM > 9 then - register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(9); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_10 => - if GBT_NUM > 10 then - register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(10); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_11 => - if GBT_NUM > 11 then - register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(11); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_12 => - if GBT_NUM > 12 then - register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(12); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_13 => - if GBT_NUM > 13 then - register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(13); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_14 => - if GBT_NUM > 14 then - register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(14); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_15 => - if GBT_NUM > 15 then - register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(15); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_16 => - if GBT_NUM > 16 then - register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(16); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_17 => - if GBT_NUM > 17 then - register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(17); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_18 => - if GBT_NUM > 18 then - register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(18); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_19 => - if GBT_NUM > 19 then - register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(19); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_20 => - if GBT_NUM > 20 then - register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(20); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_21 => - if GBT_NUM > 21 then - register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(21); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_22 => - if GBT_NUM > 22 then - register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(22); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_23 => - if GBT_NUM > 23 then - register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(23); -- Enable path to be included in a broadcast message. - end if; - when REG_LINK_00_HAS_STREAM_ID => - if GBT_NUM > 0 then - register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(0).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(0).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(0).EGROUP4; -- EPATH is associated with a STREAM ID - register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(0).EGROUP3; -- EPATH is associated with a STREAM ID - register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(0).EGROUP2; -- EPATH is associated with a STREAM ID - register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(0).EGROUP1; -- EPATH is associated with a STREAM ID - register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(0).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_01_HAS_STREAM_ID => - if GBT_NUM > 1 then - register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(1).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(1).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(1).EGROUP4; -- EPATH is associated with a STREAM ID - register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(1).EGROUP3; -- EPATH is associated with a STREAM ID - register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(1).EGROUP2; -- EPATH is associated with a STREAM ID - register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(1).EGROUP1; -- EPATH is associated with a STREAM ID - register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(1).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_02_HAS_STREAM_ID => - if GBT_NUM > 2 then - register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(2).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(2).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(2).EGROUP4; -- EPATH is associated with a STREAM ID - register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(2).EGROUP3; -- EPATH is associated with a STREAM ID - register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(2).EGROUP2; -- EPATH is associated with a STREAM ID - register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(2).EGROUP1; -- EPATH is associated with a STREAM ID - register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(2).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_03_HAS_STREAM_ID => - if GBT_NUM > 3 then - register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(3).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(3).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(3).EGROUP4; -- EPATH is associated with a STREAM ID - register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(3).EGROUP3; -- EPATH is associated with a STREAM ID - register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(3).EGROUP2; -- EPATH is associated with a STREAM ID - register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(3).EGROUP1; -- EPATH is associated with a STREAM ID - register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(3).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_04_HAS_STREAM_ID => - if GBT_NUM > 4 then - register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(4).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(4).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(4).EGROUP4; -- EPATH is associated with a STREAM ID - register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(4).EGROUP3; -- EPATH is associated with a STREAM ID - register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(4).EGROUP2; -- EPATH is associated with a STREAM ID - register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(4).EGROUP1; -- EPATH is associated with a STREAM ID - register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(4).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_05_HAS_STREAM_ID => - if GBT_NUM > 5 then - register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(5).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(5).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(5).EGROUP4; -- EPATH is associated with a STREAM ID - register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(5).EGROUP3; -- EPATH is associated with a STREAM ID - register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(5).EGROUP2; -- EPATH is associated with a STREAM ID - register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(5).EGROUP1; -- EPATH is associated with a STREAM ID - register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(5).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_06_HAS_STREAM_ID => - if GBT_NUM > 6 then - register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(6).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(6).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(6).EGROUP4; -- EPATH is associated with a STREAM ID - register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(6).EGROUP3; -- EPATH is associated with a STREAM ID - register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(6).EGROUP2; -- EPATH is associated with a STREAM ID - register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(6).EGROUP1; -- EPATH is associated with a STREAM ID - register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(6).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_07_HAS_STREAM_ID => - if GBT_NUM > 7 then - register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(7).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(7).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(7).EGROUP4; -- EPATH is associated with a STREAM ID - register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(7).EGROUP3; -- EPATH is associated with a STREAM ID - register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(7).EGROUP2; -- EPATH is associated with a STREAM ID - register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(7).EGROUP1; -- EPATH is associated with a STREAM ID - register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(7).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_08_HAS_STREAM_ID => - if GBT_NUM > 8 then - register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(8).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(8).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(8).EGROUP4; -- EPATH is associated with a STREAM ID - register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(8).EGROUP3; -- EPATH is associated with a STREAM ID - register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(8).EGROUP2; -- EPATH is associated with a STREAM ID - register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(8).EGROUP1; -- EPATH is associated with a STREAM ID - register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(8).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_09_HAS_STREAM_ID => - if GBT_NUM > 9 then - register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(9).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(9).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(9).EGROUP4; -- EPATH is associated with a STREAM ID - register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(9).EGROUP3; -- EPATH is associated with a STREAM ID - register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(9).EGROUP2; -- EPATH is associated with a STREAM ID - register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(9).EGROUP1; -- EPATH is associated with a STREAM ID - register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(9).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_10_HAS_STREAM_ID => - if GBT_NUM > 10 then - register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(10).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(10).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(10).EGROUP4; -- EPATH is associated with a STREAM ID - register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(10).EGROUP3; -- EPATH is associated with a STREAM ID - register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(10).EGROUP2; -- EPATH is associated with a STREAM ID - register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(10).EGROUP1; -- EPATH is associated with a STREAM ID - register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(10).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_11_HAS_STREAM_ID => - if GBT_NUM > 11 then - register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(11).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(11).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(11).EGROUP4; -- EPATH is associated with a STREAM ID - register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(11).EGROUP3; -- EPATH is associated with a STREAM ID - register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(11).EGROUP2; -- EPATH is associated with a STREAM ID - register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(11).EGROUP1; -- EPATH is associated with a STREAM ID - register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(11).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_12_HAS_STREAM_ID => - if GBT_NUM > 12 then - register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(12).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(12).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(12).EGROUP4; -- EPATH is associated with a STREAM ID - register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(12).EGROUP3; -- EPATH is associated with a STREAM ID - register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(12).EGROUP2; -- EPATH is associated with a STREAM ID - register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(12).EGROUP1; -- EPATH is associated with a STREAM ID - register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(12).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_13_HAS_STREAM_ID => - if GBT_NUM > 13 then - register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(13).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(13).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(13).EGROUP4; -- EPATH is associated with a STREAM ID - register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(13).EGROUP3; -- EPATH is associated with a STREAM ID - register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(13).EGROUP2; -- EPATH is associated with a STREAM ID - register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(13).EGROUP1; -- EPATH is associated with a STREAM ID - register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(13).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_14_HAS_STREAM_ID => - if GBT_NUM > 14 then - register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(14).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(14).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(14).EGROUP4; -- EPATH is associated with a STREAM ID - register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(14).EGROUP3; -- EPATH is associated with a STREAM ID - register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(14).EGROUP2; -- EPATH is associated with a STREAM ID - register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(14).EGROUP1; -- EPATH is associated with a STREAM ID - register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(14).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_15_HAS_STREAM_ID => - if GBT_NUM > 15 then - register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(15).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(15).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(15).EGROUP4; -- EPATH is associated with a STREAM ID - register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(15).EGROUP3; -- EPATH is associated with a STREAM ID - register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(15).EGROUP2; -- EPATH is associated with a STREAM ID - register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(15).EGROUP1; -- EPATH is associated with a STREAM ID - register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(15).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_16_HAS_STREAM_ID => - if GBT_NUM > 16 then - register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(16).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(16).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(16).EGROUP4; -- EPATH is associated with a STREAM ID - register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(16).EGROUP3; -- EPATH is associated with a STREAM ID - register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(16).EGROUP2; -- EPATH is associated with a STREAM ID - register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(16).EGROUP1; -- EPATH is associated with a STREAM ID - register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(16).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_17_HAS_STREAM_ID => - if GBT_NUM > 17 then - register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(17).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(17).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(17).EGROUP4; -- EPATH is associated with a STREAM ID - register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(17).EGROUP3; -- EPATH is associated with a STREAM ID - register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(17).EGROUP2; -- EPATH is associated with a STREAM ID - register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(17).EGROUP1; -- EPATH is associated with a STREAM ID - register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(17).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_18_HAS_STREAM_ID => - if GBT_NUM > 18 then - register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(18).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(18).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(18).EGROUP4; -- EPATH is associated with a STREAM ID - register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(18).EGROUP3; -- EPATH is associated with a STREAM ID - register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(18).EGROUP2; -- EPATH is associated with a STREAM ID - register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(18).EGROUP1; -- EPATH is associated with a STREAM ID - register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(18).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_19_HAS_STREAM_ID => - if GBT_NUM > 19 then - register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(19).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(19).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(19).EGROUP4; -- EPATH is associated with a STREAM ID - register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(19).EGROUP3; -- EPATH is associated with a STREAM ID - register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(19).EGROUP2; -- EPATH is associated with a STREAM ID - register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(19).EGROUP1; -- EPATH is associated with a STREAM ID - register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(19).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_20_HAS_STREAM_ID => - if GBT_NUM > 20 then - register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(20).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(20).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(20).EGROUP4; -- EPATH is associated with a STREAM ID - register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(20).EGROUP3; -- EPATH is associated with a STREAM ID - register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(20).EGROUP2; -- EPATH is associated with a STREAM ID - register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(20).EGROUP1; -- EPATH is associated with a STREAM ID - register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(20).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_21_HAS_STREAM_ID => - if GBT_NUM > 21 then - register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(21).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(21).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(21).EGROUP4; -- EPATH is associated with a STREAM ID - register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(21).EGROUP3; -- EPATH is associated with a STREAM ID - register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(21).EGROUP2; -- EPATH is associated with a STREAM ID - register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(21).EGROUP1; -- EPATH is associated with a STREAM ID - register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(21).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_22_HAS_STREAM_ID => - if GBT_NUM > 22 then - register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(22).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(22).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(22).EGROUP4; -- EPATH is associated with a STREAM ID - register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(22).EGROUP3; -- EPATH is associated with a STREAM ID - register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(22).EGROUP2; -- EPATH is associated with a STREAM ID - register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(22).EGROUP1; -- EPATH is associated with a STREAM ID - register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(22).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_23_HAS_STREAM_ID => - if GBT_NUM > 23 then - register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(23).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(23).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(23).EGROUP4; -- EPATH is associated with a STREAM ID - register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(23).EGROUP3; -- EPATH is associated with a STREAM ID - register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(23).EGROUP2; -- EPATH is associated with a STREAM ID - register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(23).EGROUP1; -- EPATH is associated with a STREAM ID - register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(23).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_DECODING_LINK00_EGROUP0_CTRL => - if GBT_NUM > 0 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (0)(0).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(0).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(0).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK00_EGROUP1_CTRL => - if GBT_NUM > 0 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (0)(1).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(1).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(1).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK00_EGROUP2_CTRL => - if GBT_NUM > 0 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (0)(2).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(2).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(2).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK00_EGROUP3_CTRL => - if GBT_NUM > 0 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (0)(3).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(3).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(3).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK00_EGROUP4_CTRL => - if GBT_NUM > 0 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (0)(4).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(4).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(4).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK00_EGROUP5_CTRL => - if GBT_NUM > 0 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (0)(5).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(5).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(5).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(5).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(5).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK00_EGROUP6_CTRL => - if GBT_NUM > 0 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (0)(6).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(6).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(6).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(6).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(6).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK01_EGROUP0_CTRL => - if GBT_NUM > 1 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (1)(0).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(0).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(0).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK01_EGROUP1_CTRL => - if GBT_NUM > 1 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (1)(1).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(1).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(1).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK01_EGROUP2_CTRL => - if GBT_NUM > 1 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (1)(2).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(2).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(2).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK01_EGROUP3_CTRL => - if GBT_NUM > 1 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (1)(3).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(3).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(3).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK01_EGROUP4_CTRL => - if GBT_NUM > 1 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (1)(4).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(4).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(4).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK01_EGROUP5_CTRL => - if GBT_NUM > 1 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (1)(5).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(5).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(5).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(5).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(5).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK01_EGROUP6_CTRL => - if GBT_NUM > 1 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (1)(6).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(6).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(6).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(6).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(6).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK02_EGROUP0_CTRL => - if GBT_NUM > 2 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (2)(0).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(0).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(0).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK02_EGROUP1_CTRL => - if GBT_NUM > 2 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (2)(1).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(1).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(1).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK02_EGROUP2_CTRL => - if GBT_NUM > 2 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (2)(2).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(2).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(2).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK02_EGROUP3_CTRL => - if GBT_NUM > 2 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (2)(3).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(3).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(3).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK02_EGROUP4_CTRL => - if GBT_NUM > 2 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (2)(4).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(4).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(4).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK02_EGROUP5_CTRL => - if GBT_NUM > 2 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (2)(5).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(5).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(5).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(5).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(5).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK02_EGROUP6_CTRL => - if GBT_NUM > 2 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (2)(6).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(6).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(6).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(6).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(6).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK03_EGROUP0_CTRL => - if GBT_NUM > 3 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (3)(0).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(0).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(0).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK03_EGROUP1_CTRL => - if GBT_NUM > 3 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (3)(1).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(1).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(1).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK03_EGROUP2_CTRL => - if GBT_NUM > 3 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (3)(2).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(2).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(2).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK03_EGROUP3_CTRL => - if GBT_NUM > 3 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (3)(3).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(3).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(3).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK03_EGROUP4_CTRL => - if GBT_NUM > 3 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (3)(4).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(4).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(4).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK03_EGROUP5_CTRL => - if GBT_NUM > 3 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (3)(5).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(5).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(5).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(5).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(5).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK03_EGROUP6_CTRL => - if GBT_NUM > 3 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (3)(6).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(6).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(6).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(6).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(6).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK04_EGROUP0_CTRL => - if GBT_NUM > 4 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (4)(0).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(0).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(0).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK04_EGROUP1_CTRL => - if GBT_NUM > 4 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (4)(1).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(1).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(1).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK04_EGROUP2_CTRL => - if GBT_NUM > 4 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (4)(2).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(2).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(2).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK04_EGROUP3_CTRL => - if GBT_NUM > 4 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (4)(3).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(3).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(3).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK04_EGROUP4_CTRL => - if GBT_NUM > 4 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (4)(4).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(4).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(4).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK04_EGROUP5_CTRL => - if GBT_NUM > 4 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (4)(5).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(5).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(5).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(5).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(5).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK04_EGROUP6_CTRL => - if GBT_NUM > 4 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (4)(6).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(6).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(6).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(6).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(6).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK05_EGROUP0_CTRL => - if GBT_NUM > 5 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (5)(0).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(0).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(0).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK05_EGROUP1_CTRL => - if GBT_NUM > 5 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (5)(1).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(1).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(1).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK05_EGROUP2_CTRL => - if GBT_NUM > 5 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (5)(2).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(2).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(2).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK05_EGROUP3_CTRL => - if GBT_NUM > 5 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (5)(3).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(3).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(3).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK05_EGROUP4_CTRL => - if GBT_NUM > 5 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (5)(4).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(4).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(4).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK05_EGROUP5_CTRL => - if GBT_NUM > 5 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (5)(5).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(5).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(5).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(5).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(5).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK05_EGROUP6_CTRL => - if GBT_NUM > 5 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (5)(6).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(6).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(6).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(6).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(6).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK06_EGROUP0_CTRL => - if GBT_NUM > 6 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (6)(0).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(0).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(0).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK06_EGROUP1_CTRL => - if GBT_NUM > 6 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (6)(1).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(1).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(1).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK06_EGROUP2_CTRL => - if GBT_NUM > 6 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (6)(2).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(2).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(2).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK06_EGROUP3_CTRL => - if GBT_NUM > 6 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (6)(3).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(3).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(3).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK06_EGROUP4_CTRL => - if GBT_NUM > 6 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (6)(4).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(4).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(4).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK06_EGROUP5_CTRL => - if GBT_NUM > 6 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (6)(5).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(5).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(5).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(5).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(5).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK06_EGROUP6_CTRL => - if GBT_NUM > 6 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (6)(6).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(6).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(6).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(6).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(6).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK07_EGROUP0_CTRL => - if GBT_NUM > 7 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (7)(0).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(0).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(0).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK07_EGROUP1_CTRL => - if GBT_NUM > 7 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (7)(1).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(1).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(1).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK07_EGROUP2_CTRL => - if GBT_NUM > 7 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (7)(2).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(2).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(2).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK07_EGROUP3_CTRL => - if GBT_NUM > 7 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (7)(3).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(3).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(3).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK07_EGROUP4_CTRL => - if GBT_NUM > 7 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (7)(4).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(4).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(4).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK07_EGROUP5_CTRL => - if GBT_NUM > 7 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (7)(5).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(5).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(5).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(5).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(5).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK07_EGROUP6_CTRL => - if GBT_NUM > 7 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (7)(6).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(6).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(6).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(6).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(6).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK08_EGROUP0_CTRL => - if GBT_NUM > 8 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (8)(0).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(0).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(0).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK08_EGROUP1_CTRL => - if GBT_NUM > 8 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (8)(1).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(1).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(1).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK08_EGROUP2_CTRL => - if GBT_NUM > 8 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (8)(2).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(2).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(2).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK08_EGROUP3_CTRL => - if GBT_NUM > 8 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (8)(3).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(3).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(3).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK08_EGROUP4_CTRL => - if GBT_NUM > 8 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (8)(4).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(4).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(4).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK08_EGROUP5_CTRL => - if GBT_NUM > 8 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (8)(5).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(5).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(5).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(5).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(5).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK08_EGROUP6_CTRL => - if GBT_NUM > 8 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (8)(6).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(6).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(6).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(6).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(6).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK09_EGROUP0_CTRL => - if GBT_NUM > 9 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (9)(0).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(0).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(0).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK09_EGROUP1_CTRL => - if GBT_NUM > 9 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (9)(1).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(1).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(1).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK09_EGROUP2_CTRL => - if GBT_NUM > 9 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (9)(2).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(2).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(2).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK09_EGROUP3_CTRL => - if GBT_NUM > 9 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (9)(3).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(3).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(3).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK09_EGROUP4_CTRL => - if GBT_NUM > 9 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (9)(4).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(4).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(4).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK09_EGROUP5_CTRL => - if GBT_NUM > 9 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (9)(5).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(5).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(5).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(5).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(5).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK09_EGROUP6_CTRL => - if GBT_NUM > 9 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (9)(6).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(6).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(6).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(6).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(6).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK10_EGROUP0_CTRL => - if GBT_NUM > 10 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (10)(0).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(0).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(0).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK10_EGROUP1_CTRL => - if GBT_NUM > 10 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (10)(1).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(1).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(1).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK10_EGROUP2_CTRL => - if GBT_NUM > 10 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (10)(2).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(2).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(2).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK10_EGROUP3_CTRL => - if GBT_NUM > 10 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (10)(3).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(3).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(3).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK10_EGROUP4_CTRL => - if GBT_NUM > 10 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (10)(4).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(4).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(4).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK10_EGROUP5_CTRL => - if GBT_NUM > 10 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (10)(5).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(5).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(5).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(5).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(5).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK10_EGROUP6_CTRL => - if GBT_NUM > 10 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (10)(6).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(6).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(6).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(6).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(6).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK11_EGROUP0_CTRL => - if GBT_NUM > 11 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (11)(0).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(0).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(0).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK11_EGROUP1_CTRL => - if GBT_NUM > 11 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (11)(1).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(1).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(1).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK11_EGROUP2_CTRL => - if GBT_NUM > 11 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (11)(2).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(2).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(2).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK11_EGROUP3_CTRL => - if GBT_NUM > 11 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (11)(3).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(3).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(3).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK11_EGROUP4_CTRL => - if GBT_NUM > 11 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (11)(4).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(4).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(4).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK11_EGROUP5_CTRL => - if GBT_NUM > 11 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (11)(5).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(5).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(5).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(5).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(5).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_DECODING_LINK11_EGROUP6_CTRL => - if GBT_NUM > 11 then - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (11)(6).EPATH_ALMOST_FULL; -- FIFO full indication - register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(6).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(6).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(6).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(6).EPATH_ENA; -- Enable bits per EPROC - end if; - when REG_MINI_EGROUP_TOHOST_00 => - if GBT_NUM > 0 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (0).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(0).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(0).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (0).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(0).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(0).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (0).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(0).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(0).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(0).EC_ENABLE; -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_01 => - if GBT_NUM > 1 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (1).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(1).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(1).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (1).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(1).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(1).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (1).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(1).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(1).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(1).EC_ENABLE; -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_02 => - if GBT_NUM > 2 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (2).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(2).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(2).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (2).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(2).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(2).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (2).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(2).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(2).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(2).EC_ENABLE; -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_03 => - if GBT_NUM > 3 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (3).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(3).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(3).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (3).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(3).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(3).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (3).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(3).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(3).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(3).EC_ENABLE; -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_04 => - if GBT_NUM > 4 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (4).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(4).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(4).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (4).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(4).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(4).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (4).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(4).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(4).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(4).EC_ENABLE; -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_05 => - if GBT_NUM > 5 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (5).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(5).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(5).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (5).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(5).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(5).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (5).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(5).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(5).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(5).EC_ENABLE; -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_06 => - if GBT_NUM > 6 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (6).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(6).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(6).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (6).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(6).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(6).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (6).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(6).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(6).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(6).EC_ENABLE; -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_07 => - if GBT_NUM > 7 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (7).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(7).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(7).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (7).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(7).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(7).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (7).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(7).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(7).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(7).EC_ENABLE; -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_08 => - if GBT_NUM > 8 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (8).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(8).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(8).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (8).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(8).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(8).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (8).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(8).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(8).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(8).EC_ENABLE; -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_09 => - if GBT_NUM > 9 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (9).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(9).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(9).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (9).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(9).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(9).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (9).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(9).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(9).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(9).EC_ENABLE; -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_10 => - if GBT_NUM > 10 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (10).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(10).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(10).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (10).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(10).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(10).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (10).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(10).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(10).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(10).EC_ENABLE; -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_11 => - if GBT_NUM > 11 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (11).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(11).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(11).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (11).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(11).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(11).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (11).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(11).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(11).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(11).EC_ENABLE; -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_12 => - if GBT_NUM > 12 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (12).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(12).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(12).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (12).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(12).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(12).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (12).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(12).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(12).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(12).EC_ENABLE; -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_13 => - if GBT_NUM > 13 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (13).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(13).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(13).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (13).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(13).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(13).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (13).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(13).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(13).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(13).EC_ENABLE; -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_14 => - if GBT_NUM > 14 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (14).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(14).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(14).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (14).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(14).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(14).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (14).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(14).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(14).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(14).EC_ENABLE; -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_15 => - if GBT_NUM > 15 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (15).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(15).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(15).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (15).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(15).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(15).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (15).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(15).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(15).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(15).EC_ENABLE; -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_16 => - if GBT_NUM > 16 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (16).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(16).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(16).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (16).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(16).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(16).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (16).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(16).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(16).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(16).EC_ENABLE; -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_17 => - if GBT_NUM > 17 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (17).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(17).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(17).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (17).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(17).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(17).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (17).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(17).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(17).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(17).EC_ENABLE; -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_18 => - if GBT_NUM > 18 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (18).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(18).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(18).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (18).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(18).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(18).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (18).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(18).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(18).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(18).EC_ENABLE; -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_19 => - if GBT_NUM > 19 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (19).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(19).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(19).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (19).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(19).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(19).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (19).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(19).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(19).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(19).EC_ENABLE; -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_20 => - if GBT_NUM > 20 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (20).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(20).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(20).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (20).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(20).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(20).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (20).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(20).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(20).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(20).EC_ENABLE; -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_21 => - if GBT_NUM > 21 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (21).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(21).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(21).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (21).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(21).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(21).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (21).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(21).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(21).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(21).EC_ENABLE; -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_22 => - if GBT_NUM > 22 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (22).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(22).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(22).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (22).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(22).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(22).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (22).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(22).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(22).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(22).EC_ENABLE; -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_23 => - if GBT_NUM > 23 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (23).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(23).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(23).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (23).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(23).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(23).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (23).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(23).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(23).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(23).EC_ENABLE; -- Enables the EC channel - end if; - when REG_TTC_TOHOST_ENABLE => register_read_data_25_s(0 downto 0) <= register_map_control_s.TTC_TOHOST_ENABLE; -- Enables the ToHost Mini Egroup in TTC mode - when REG_DECODING_REVERSE_10B => register_read_data_25_s(0 downto 0) <= register_map_control_s.DECODING_REVERSE_10B; -- Reverse 10-bit word of elink data for 8b10b E-links - -- 1: Receive 10-bit word in ToHost E-Paths, MSB first - -- 0: Receive 10-bit word in ToHost E-Paths, LSB first - - when REG_ENCODING_REVERSE_10B => register_read_data_25_s(0 downto 0) <= register_map_control_s.ENCODING_REVERSE_10B; -- Reverse 10-bit word of elink data for 8b10b E-links. 1 MSB first, 0 LSB first - when REG_ENCODING_LINK00_EGROUP0_CTRL => - if GBT_NUM > 0 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(0).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (0)(0).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(0).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(0).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK00_EGROUP1_CTRL => - if GBT_NUM > 0 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(1).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (0)(1).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(1).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(1).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK00_EGROUP2_CTRL => - if GBT_NUM > 0 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(2).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (0)(2).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(2).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(2).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK00_EGROUP3_CTRL => - if GBT_NUM > 0 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(3).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (0)(3).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(3).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(3).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK00_EGROUP4_CTRL => - if GBT_NUM > 0 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(4).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (0)(4).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(4).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(4).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK01_EGROUP0_CTRL => - if GBT_NUM > 1 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(0).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (1)(0).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(0).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(0).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK01_EGROUP1_CTRL => - if GBT_NUM > 1 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(1).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (1)(1).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(1).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(1).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK01_EGROUP2_CTRL => - if GBT_NUM > 1 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(2).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (1)(2).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(2).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(2).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK01_EGROUP3_CTRL => - if GBT_NUM > 1 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(3).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (1)(3).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(3).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(3).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK01_EGROUP4_CTRL => - if GBT_NUM > 1 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(4).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (1)(4).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(4).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(4).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK02_EGROUP0_CTRL => - if GBT_NUM > 2 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(0).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (2)(0).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(0).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(0).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK02_EGROUP1_CTRL => - if GBT_NUM > 2 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(1).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (2)(1).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(1).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(1).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK02_EGROUP2_CTRL => - if GBT_NUM > 2 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(2).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (2)(2).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(2).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(2).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK02_EGROUP3_CTRL => - if GBT_NUM > 2 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(3).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (2)(3).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(3).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(3).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK02_EGROUP4_CTRL => - if GBT_NUM > 2 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(4).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (2)(4).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(4).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(4).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK03_EGROUP0_CTRL => - if GBT_NUM > 3 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(0).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (3)(0).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(0).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(0).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK03_EGROUP1_CTRL => - if GBT_NUM > 3 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(1).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (3)(1).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(1).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(1).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK03_EGROUP2_CTRL => - if GBT_NUM > 3 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(2).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (3)(2).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(2).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(2).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK03_EGROUP3_CTRL => - if GBT_NUM > 3 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(3).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (3)(3).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(3).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(3).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK03_EGROUP4_CTRL => - if GBT_NUM > 3 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(4).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (3)(4).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(4).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(4).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK04_EGROUP0_CTRL => - if GBT_NUM > 4 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(0).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (4)(0).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(0).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(0).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK04_EGROUP1_CTRL => - if GBT_NUM > 4 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(1).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (4)(1).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(1).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(1).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK04_EGROUP2_CTRL => - if GBT_NUM > 4 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(2).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (4)(2).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(2).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(2).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK04_EGROUP3_CTRL => - if GBT_NUM > 4 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(3).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (4)(3).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(3).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(3).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK04_EGROUP4_CTRL => - if GBT_NUM > 4 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(4).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (4)(4).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(4).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(4).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK05_EGROUP0_CTRL => - if GBT_NUM > 5 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(0).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (5)(0).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(0).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(0).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK05_EGROUP1_CTRL => - if GBT_NUM > 5 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(1).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (5)(1).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(1).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(1).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK05_EGROUP2_CTRL => - if GBT_NUM > 5 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(2).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (5)(2).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(2).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(2).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK05_EGROUP3_CTRL => - if GBT_NUM > 5 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(3).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (5)(3).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(3).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(3).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK05_EGROUP4_CTRL => - if GBT_NUM > 5 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(4).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (5)(4).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(4).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(4).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK06_EGROUP0_CTRL => - if GBT_NUM > 6 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(0).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (6)(0).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(0).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(0).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK06_EGROUP1_CTRL => - if GBT_NUM > 6 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(1).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (6)(1).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(1).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(1).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK06_EGROUP2_CTRL => - if GBT_NUM > 6 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(2).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (6)(2).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(2).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(2).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK06_EGROUP3_CTRL => - if GBT_NUM > 6 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(3).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (6)(3).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(3).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(3).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK06_EGROUP4_CTRL => - if GBT_NUM > 6 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(4).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (6)(4).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(4).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(4).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK07_EGROUP0_CTRL => - if GBT_NUM > 7 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(0).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (7)(0).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(0).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(0).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK07_EGROUP1_CTRL => - if GBT_NUM > 7 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(1).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (7)(1).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(1).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(1).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK07_EGROUP2_CTRL => - if GBT_NUM > 7 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(2).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (7)(2).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(2).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(2).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK07_EGROUP3_CTRL => - if GBT_NUM > 7 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(3).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (7)(3).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(3).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(3).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK07_EGROUP4_CTRL => - if GBT_NUM > 7 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(4).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (7)(4).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(4).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(4).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK08_EGROUP0_CTRL => - if GBT_NUM > 8 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(0).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (8)(0).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(0).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(0).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK08_EGROUP1_CTRL => - if GBT_NUM > 8 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(1).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (8)(1).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(1).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(1).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK08_EGROUP2_CTRL => - if GBT_NUM > 8 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(2).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (8)(2).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(2).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(2).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK08_EGROUP3_CTRL => - if GBT_NUM > 8 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(3).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (8)(3).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(3).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(3).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK08_EGROUP4_CTRL => - if GBT_NUM > 8 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(4).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (8)(4).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(4).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(4).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK09_EGROUP0_CTRL => - if GBT_NUM > 9 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(0).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (9)(0).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(0).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(0).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK09_EGROUP1_CTRL => - if GBT_NUM > 9 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(1).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (9)(1).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(1).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(1).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK09_EGROUP2_CTRL => - if GBT_NUM > 9 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(2).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (9)(2).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(2).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(2).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK09_EGROUP3_CTRL => - if GBT_NUM > 9 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(3).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (9)(3).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(3).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(3).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK09_EGROUP4_CTRL => - if GBT_NUM > 9 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(4).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (9)(4).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(4).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(4).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK10_EGROUP0_CTRL => - if GBT_NUM > 10 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(0).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (10)(0).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(0).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(0).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK10_EGROUP1_CTRL => - if GBT_NUM > 10 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(1).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (10)(1).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(1).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(1).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK10_EGROUP2_CTRL => - if GBT_NUM > 10 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(2).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (10)(2).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(2).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(2).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK10_EGROUP3_CTRL => - if GBT_NUM > 10 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(3).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (10)(3).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(3).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(3).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK10_EGROUP4_CTRL => - if GBT_NUM > 10 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(4).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (10)(4).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(4).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(4).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK11_EGROUP0_CTRL => - if GBT_NUM > 11 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(0).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (11)(0).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(0).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(0).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK11_EGROUP1_CTRL => - if GBT_NUM > 11 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(1).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (11)(1).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(1).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(1).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK11_EGROUP2_CTRL => - if GBT_NUM > 11 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(2).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (11)(2).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(2).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(2).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK11_EGROUP3_CTRL => - if GBT_NUM > 11 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(3).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (11)(3).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(3).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(3).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK11_EGROUP4_CTRL => - if GBT_NUM > 11 then - register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(4).TTC_OPTION; -- Selects TTC bits sent to the E-link - register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (11)(4).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full - register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath - register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(4).EPATH_WIDTH; -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(4).EPATH_ENA; -- Enable bits per E-PATH - end if; - when REG_MINI_EGROUP_FROMHOST_00 => - if GBT_NUM > 0 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (0).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(0).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(0).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (0).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(0).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(0).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (0).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(0).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(0).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(0).EC_ENABLE; -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_01 => - if GBT_NUM > 1 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (1).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(1).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(1).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (1).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(1).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(1).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (1).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(1).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(1).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(1).EC_ENABLE; -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_02 => - if GBT_NUM > 2 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (2).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(2).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(2).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (2).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(2).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(2).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (2).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(2).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(2).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(2).EC_ENABLE; -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_03 => - if GBT_NUM > 3 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (3).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(3).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(3).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (3).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(3).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(3).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (3).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(3).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(3).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(3).EC_ENABLE; -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_04 => - if GBT_NUM > 4 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (4).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(4).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(4).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (4).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(4).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(4).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (4).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(4).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(4).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(4).EC_ENABLE; -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_05 => - if GBT_NUM > 5 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (5).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(5).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(5).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (5).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(5).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(5).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (5).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(5).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(5).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(5).EC_ENABLE; -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_06 => - if GBT_NUM > 6 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (6).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(6).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(6).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (6).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(6).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(6).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (6).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(6).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(6).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(6).EC_ENABLE; -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_07 => - if GBT_NUM > 7 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (7).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(7).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(7).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (7).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(7).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(7).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (7).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(7).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(7).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(7).EC_ENABLE; -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_08 => - if GBT_NUM > 8 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (8).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(8).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(8).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (8).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(8).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(8).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (8).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(8).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(8).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(8).EC_ENABLE; -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_09 => - if GBT_NUM > 9 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (9).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(9).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(9).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (9).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(9).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(9).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (9).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(9).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(9).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(9).EC_ENABLE; -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_10 => - if GBT_NUM > 10 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (10).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(10).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(10).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (10).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(10).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(10).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (10).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(10).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(10).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(10).EC_ENABLE; -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_11 => - if GBT_NUM > 11 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (11).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(11).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(11).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (11).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(11).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(11).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (11).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(11).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(11).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(11).EC_ENABLE; -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_12 => - if GBT_NUM > 12 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (12).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(12).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(12).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (12).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(12).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(12).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (12).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(12).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(12).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(12).EC_ENABLE; -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_13 => - if GBT_NUM > 13 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (13).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(13).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(13).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (13).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(13).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(13).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (13).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(13).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(13).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(13).EC_ENABLE; -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_14 => - if GBT_NUM > 14 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (14).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(14).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(14).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (14).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(14).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(14).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (14).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(14).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(14).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(14).EC_ENABLE; -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_15 => - if GBT_NUM > 15 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (15).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(15).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(15).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (15).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(15).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(15).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (15).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(15).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(15).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(15).EC_ENABLE; -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_16 => - if GBT_NUM > 16 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (16).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(16).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(16).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (16).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(16).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(16).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (16).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(16).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(16).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(16).EC_ENABLE; -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_17 => - if GBT_NUM > 17 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (17).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(17).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(17).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (17).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(17).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(17).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (17).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(17).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(17).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(17).EC_ENABLE; -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_18 => - if GBT_NUM > 18 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (18).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(18).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(18).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (18).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(18).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(18).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (18).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(18).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(18).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(18).EC_ENABLE; -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_19 => - if GBT_NUM > 19 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (19).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(19).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(19).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (19).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(19).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(19).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (19).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(19).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(19).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(19).EC_ENABLE; -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_20 => - if GBT_NUM > 20 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (20).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(20).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(20).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (20).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(20).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(20).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (20).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(20).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(20).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(20).EC_ENABLE; -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_21 => - if GBT_NUM > 21 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (21).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(21).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(21).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (21).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(21).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(21).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (21).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(21).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(21).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(21).EC_ENABLE; -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_22 => - if GBT_NUM > 22 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (22).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(22).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(22).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (22).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(22).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(22).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (22).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(22).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(22).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(22).EC_ENABLE; -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_23 => - if GBT_NUM > 23 then - register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (23).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full - register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(23).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(23).AUX_ENABLE; -- Enables the AUX channel - register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (23).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full - register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(23).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(23).IC_ENABLE; -- Enables the IC channel - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (23).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full - register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(23).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(23).EC_ENCODING; -- Configures encoding of the EC channel - register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(23).EC_ENABLE; -- Configures the FromHost Mini egroup - end if; - when REG_FE_EMU_ENA => register_read_data_25_s(1 downto 1) <= register_map_control_s.FE_EMU_ENA.EMU_TOFRONTEND; -- Enable GBT dummy emulator ToFrontEnd - register_read_data_25_s(0 downto 0) <= register_map_control_s.FE_EMU_ENA.EMU_TOHOST; -- Enable GBT dummy emulator ToHost - when REG_FE_EMU_CONFIG => register_read_data_25_s(54 downto 47) <= register_map_control_s.FE_EMU_CONFIG.WE; -- write enable array, every bit is one emulator RAM block - register_read_data_25_s(46 downto 33) <= register_map_control_s.FE_EMU_CONFIG.WRADDR; -- write address bus - register_read_data_25_s(32 downto 0) <= register_map_control_s.FE_EMU_CONFIG.WRDATA; -- write data bus - when REG_FE_EMU_READ => register_read_data_25_s(35 downto 33) <= register_map_control_s.FE_EMU_READ.SEL; -- Select ramblock to read back - register_read_data_25_s(32 downto 0) <= register_map_monitor_s.register_map_gbtemu_monitor.FE_EMU_READ.DATA; -- Read back ramblock at FE_EMU_CONFIG.WRADDR - when REG_GBT_CHANNEL_DISABLE => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_CHANNEL_DISABLE; -- Disable selected lpGBT, GBT or FULL mode channel - when REG_GBT_GENERAL_CTRL => register_read_data_25_s(63 downto 0) <= register_map_control_s.GBT_GENERAL_CTRL; -- Alignment chk reset (not self clearing) - when REG_GBT_MODE_CTRL => register_read_data_25_s(2 downto 2) <= register_map_control_s.GBT_MODE_CTRL.RX_ALIGN_TB_SW; -- RX_ALIGN_TB_SW - register_read_data_25_s(1 downto 1) <= register_map_control_s.GBT_MODE_CTRL.RX_ALIGN_SW; -- RX_ALIGN_SW - register_read_data_25_s(0 downto 0) <= register_map_control_s.GBT_MODE_CTRL.DESMUX_USE_SW; -- DESMUX_USE_SW - when REG_GBT_RXSLIDE_SELECT => - if GBT_GENERATE_ALL_REGS then - register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_RXSLIDE_SELECT; -- RxSlide select [47:0] - end if; - when REG_GBT_RXSLIDE_MANUAL => - if GBT_GENERATE_ALL_REGS then - register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_RXSLIDE_MANUAL; -- RxSlide select [47:0] - end if; - when REG_GBT_TXUSRRDY => - if GBT_GENERATE_ALL_REGS then - register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_TXUSRRDY; -- TxUsrRdy [47:0] - end if; - when REG_GBT_RXUSRRDY => - if GBT_GENERATE_ALL_REGS then - register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_RXUSRRDY; -- RxUsrRdy [47:0] - end if; - when REG_GBT_SOFT_RESET => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_SOFT_RESET; -- SOFT_RESET [47:0] - when REG_GBT_GTTX_RESET => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_GTTX_RESET; -- GTTX_RESET [47:0] - when REG_GBT_GTRX_RESET => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_GTRX_RESET; -- GTRX_RESET [47:0] - when REG_GBT_PLL_RESET => register_read_data_25_s(59 downto 48) <= register_map_control_s.GBT_PLL_RESET.QPLL_RESET; -- QPLL_RESET [11:0] - register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_PLL_RESET.CPLL_RESET; -- CPLL_RESET [47:0] - when REG_GBT_SOFT_TX_RESET => - if GBT_GENERATE_ALL_REGS then - register_read_data_25_s(59 downto 48) <= register_map_control_s.GBT_SOFT_TX_RESET.RESET_ALL; -- SOFT_TX_RESET_ALL [11:0] - register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_SOFT_TX_RESET.RESET_GT; -- SOFT_TX_RESET_GT [47:0] - end if; - when REG_GBT_SOFT_RX_RESET => - if GBT_GENERATE_ALL_REGS then - register_read_data_25_s(59 downto 48) <= register_map_control_s.GBT_SOFT_RX_RESET.RESET_ALL; -- SOFT_TX_RESET_ALL [11:0] - register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_SOFT_RX_RESET.RESET_GT; -- SOFT_TX_RESET_GT [47:0] - end if; - when REG_GBT_ODD_EVEN => - if GBT_GENERATE_ALL_REGS then - register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_ODD_EVEN; -- OddEven [47:0] - end if; - when REG_GBT_TOPBOT => - if GBT_GENERATE_ALL_REGS then - register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_TOPBOT; -- TopBot [47:0] - end if; - when REG_GBT_TX_TC_DLY_VALUE1 => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_TX_TC_DLY_VALUE1; -- TX_TC_DLY_VALUE [47:0] - when REG_GBT_TX_TC_DLY_VALUE2 => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_TX_TC_DLY_VALUE2; -- TX_TC_DLY_VALUE [95:48] - when REG_GBT_TX_TC_DLY_VALUE3 => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_TX_TC_DLY_VALUE3; -- TX_TC_DLY_VALUE [143:96] - when REG_GBT_TX_TC_DLY_VALUE4 => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_TX_TC_DLY_VALUE4; -- TX_TC_DLY_VALUE [191:144] - when REG_GBT_DATA_TXFORMAT1 => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_DATA_TXFORMAT1; -- DATA_TXFORMAT [47:0] - when REG_GBT_DATA_TXFORMAT2 => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_DATA_TXFORMAT2; -- DATA_TXFORMAT [95:48] - when REG_GBT_DATA_RXFORMAT1 => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_DATA_RXFORMAT1; -- DATA_RXFORMAT [47:0] - when REG_GBT_DATA_RXFORMAT2 => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_DATA_RXFORMAT2; -- DATA_RXFORMAT [95:0] - when REG_GBT_TX_RESET => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_TX_RESET; -- TX Logic reset [47:0] - when REG_GBT_RX_RESET => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_RX_RESET; -- RX Logic reset [47:0] - when REG_GBT_TX_TC_METHOD => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_TX_TC_METHOD; -- TX time domain crossing method [47:0] - when REG_GBT_OUTMUX_SEL => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_OUTMUX_SEL; -- Descrambler output MUX selection [47:0] - when REG_GBT_TC_EDGE => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_TC_EDGE; -- Sampling edge selection for TX domain crossing [47:0] - when REG_GBT_TXPOLARITY => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_TXPOLARITY; -- 0: default polarity - -- 1: reversed polarity for transmitter of GTH channels - - when REG_GBT_RXPOLARITY => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_RXPOLARITY; -- 0: default polarity - -- 1: reversed polarity for the receiver of the GTH channels - - when REG_GTH_LOOPBACK_CONTROL => register_read_data_25_s(2 downto 0) <= register_map_control_s.GTH_LOOPBACK_CONTROL; -- Controls loopback for loopback: read UG476 for the details. NOTE: the TXBUFFER is disabled, near end PCS loopback is not supported. - -- 000: Normal operation - -- 001: Near-End PCS Loopback - -- 010: Near-End PMA Loopback - -- 011: Reserved - -- 100: Far-End PMA Loopback - -- 101: Reserved - -- 110: Far-End PCS Loopback - - when REG_GBT_TOHOST_FANOUT => register_read_data_25_s(48 downto 48) <= register_map_control_s.GBT_TOHOST_FANOUT.LOCK; -- Locks this particular register. If set prevents software from touching it. - register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_TOHOST_FANOUT.SEL; -- ToHost FanOut/Selector. Every bitfield is a channel: - -- 1 : GBT_EMU, select GBT Emulator for a specific CentralRouter channel - -- 0 : GBT_WRAP, select real GBT link for a specific CentralRouter channel - - when REG_GBT_TOFRONTEND_FANOUT => register_read_data_25_s(48 downto 48) <= register_map_control_s.GBT_TOFRONTEND_FANOUT.LOCK; -- Locks this particular register. If set prevents software from touching it. - register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_TOFRONTEND_FANOUT.SEL; -- ToFrontEnd FanOut/Selector. Every bitfield is a channel: - -- 1 : GBT_EMU, select GBT Emulator for a specific GBT link - -- 0 : TTC_DEC, select CentralRouter data (including TTC) for a specific GBT link - -- - - when REG_TTC_DEC_CTRL => register_read_data_25_s(26 downto 15) <= register_map_control_s.TTC_DEC_CTRL.BCID_ONBCR; -- BCID is set to this value when BCR arrives - register_read_data_25_s(14 downto 14) <= register_map_monitor_s.register_map_ttc_monitor.TTC_DEC_CTRL.BUSY_OUTPUT_STATUS; -- Actual status of the BUSY LEMO output signal - register_read_data_25_s(13 downto 13) <= register_map_control_s.TTC_DEC_CTRL.ECR_BCR_SWAP; -- ECR and BCR signals are swapped at the output of the TTC decoder (needed only for LAr TTC) - register_read_data_25_s(12 downto 12) <= register_map_control_s.TTC_DEC_CTRL.BUSY_OUTPUT_INHIBIT; -- forces the Busy LEMO output to BUSY-OFF - register_read_data_25_s(11 downto 11) <= register_map_control_s.TTC_DEC_CTRL.TOHOST_RST; -- reset toHost in ttc decoder - register_read_data_25_s(10 downto 10) <= register_map_control_s.TTC_DEC_CTRL.TT_BCH_EN; -- trigger type enable / disable for TTC-ToHost - register_read_data_25_s(9 downto 2) <= register_map_control_s.TTC_DEC_CTRL.XL1ID_SW; -- set XL1ID value, the value to be set by XL1ID_RST signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.TTC_DEC_CTRL.XL1ID_RST; -- giving a trigger signal to reset XL1ID value - register_read_data_25_s(0 downto 0) <= register_map_control_s.TTC_DEC_CTRL.MASTER_BUSY; -- L1A trigger throttling - when REG_TTC_EMU => register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_ttc_monitor.TTC_EMU.FULL; -- TTC Emulator memory full indication - register_read_data_25_s(1 downto 1) <= register_map_control_s.TTC_EMU.SEL; -- Select TTC data source 1 TTC Emu | 0 TTC Decoder - register_read_data_25_s(0 downto 0) <= register_map_control_s.TTC_EMU.ENA; -- Clear to load into the TTC emulator’s memory the required sequence, Set to run the TTC emulator sequence - when REG_TTC_DELAY_00 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_01 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (1); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_02 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (2); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_03 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (3); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_04 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (4); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_05 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (5); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_06 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (6); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_07 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (7); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_08 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (8); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_09 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (9); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_10 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (10); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_11 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (11); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_12 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (12); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_13 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (13); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_14 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (14); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_15 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (15); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_16 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (16); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_17 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (17); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_18 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (18); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_19 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (19); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_20 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (20); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_21 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (21); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_22 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (22); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_23 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (23); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_24 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (24); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_25 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (25); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_26 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (26); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_27 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (27); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_28 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (28); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_29 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (29); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_30 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (30); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_31 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (31); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_32 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (32); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_33 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (33); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_34 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (34); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_35 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (35); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_36 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (36); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_37 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (37); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_38 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (38); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_39 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (39); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_40 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (40); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_41 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (41); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_42 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (42); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_43 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (43); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_44 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (44); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_45 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (45); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_46 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (46); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_47 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (47); -- Controls the TTC Fanout delay values - when REG_TTC_BUSY_TIMING_CTRL => register_read_data_25_s(51 downto 32) <= register_map_control_s.TTC_BUSY_TIMING_CTRL.PRESCALE; -- Prescales the 40MHz clock to create an internal slow clock - register_read_data_25_s(31 downto 16) <= register_map_control_s.TTC_BUSY_TIMING_CTRL.BUSY_WIDTH; -- Minimum number of 40MHz clocks that the busy is asserted - register_read_data_25_s(15 downto 0) <= register_map_control_s.TTC_BUSY_TIMING_CTRL.LIMIT_TIME; -- Number of prescaled clocks a given busy must be asserted before it is recognized - when REG_TTC_BUSY_CLEAR => register_read_data_25_s(64 downto 64) <= register_map_control_s.TTC_BUSY_CLEAR; -- clears the latching busy bits in TTC_BUSY_ACCEPTED - when REG_TTC_EMU_CONTROL => register_read_data_25_s(32 downto 27) <= register_map_control_s.TTC_EMU_CONTROL.BROADCAST; -- Broadcast data - register_read_data_25_s(26 downto 26) <= register_map_control_s.TTC_EMU_CONTROL.ECR; -- Event counter reset - register_read_data_25_s(25 downto 25) <= register_map_control_s.TTC_EMU_CONTROL.BCR; -- Bunch counter reset - register_read_data_25_s(24 downto 24) <= register_map_control_s.TTC_EMU_CONTROL.L1A; -- Level 1 Accept - when REG_TTC_EMU_L1A_PERIOD => register_read_data_25_s(31 downto 0) <= register_map_control_s.TTC_EMU_L1A_PERIOD; -- L1A period in BC. 0 means manual L1A with TTC_EMU_CONTROL.L1A - when REG_TTC_EMU_ECR_PERIOD => register_read_data_25_s(31 downto 0) <= register_map_control_s.TTC_EMU_ECR_PERIOD; -- ECR period in BC. 0 means manual ECR with TTC_EMU_CONTROL.ECR - when REG_TTC_EMU_BCR_PERIOD => register_read_data_25_s(31 downto 0) <= register_map_control_s.TTC_EMU_BCR_PERIOD; -- BCR period in BC. 0 means manual BCR with TTC_EMU_CONTROL.BCR - when REG_TTC_EMU_LONG_CHANNEL_DATA => register_read_data_25_s(31 downto 0) <= register_map_control_s.TTC_EMU_LONG_CHANNEL_DATA; -- Long channel data for the TTC emulator - when REG_TTC_EMU_RESET => register_read_data_25_s(64 downto 64) <= register_map_control_s.TTC_EMU_RESET; -- Any write to this register resets the TTC Emulator to the default state. - when REG_TTC_ECR_MONITOR => register_read_data_25_s(64 downto 64) <= register_map_control_s.TTC_ECR_MONITOR.CLEAR; -- Counts the number of ECRs received from the TTC system, any write to this register clears the counter - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_ECR_MONITOR.VALUE; -- Counts the number of ECRs received from the TTC system, any write to this register clears the counter - when REG_TTC_TTYPE_MONITOR => register_read_data_25_s(64 downto 64) <= register_map_control_s.TTC_TTYPE_MONITOR.CLEAR; -- Counts the number of TType received from the TTC system, any write to this register clears the counter - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_TTYPE_MONITOR.VALUE; -- Counts the number of TType received from the TTC system, any write to this register clears the counter - when REG_TTC_BCR_PERIODICITY_MONITOR => register_read_data_25_s(64 downto 64) <= register_map_control_s.TTC_BCR_PERIODICITY_MONITOR.CLEAR; -- Counts the number of times the BCR period does not match 3564, any write to this register clears the counter - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BCR_PERIODICITY_MONITOR.VALUE; -- Counts the number of times the BCR period does not match 3564, any write to this register clears the counter - when REG_XOFF_FM_CH_FIFO_THRESH_LOW => register_read_data_25_s(3 downto 0) <= register_map_control_s.XOFF_FM_CH_FIFO_THRESH_LOW; -- Controls the low threshold of the channel fifo in FULL mode on which - -- an Xon will be asserted, bitfields control 4 MSB - - when REG_XOFF_FM_CH_FIFO_THRESH_HIGH => register_read_data_25_s(3 downto 0) <= register_map_control_s.XOFF_FM_CH_FIFO_THRESH_HIGH; -- Controls the high threshold of the channel fifo in FULL mode on which - -- an Xoff will be asserted, bitfields control 4 MSB - name: XOFF_FM_LOW_THRESH_CROSSED - - when REG_XOFF_FM_HIGH_THRESH => register_read_data_25_s(64 downto 64) <= register_map_control_s.XOFF_FM_HIGH_THRESH.CLEAR_LATCH; -- Writing this register will clear all CROSS_LATCHED bits - register_read_data_25_s(47 downto 24) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_FM_HIGH_THRESH.CROSS_LATCHED; -- FIFO filled beyond the high threshold, 1 latch bit per channel - register_read_data_25_s(23 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_FM_HIGH_THRESH.CROSSED; -- FIFO filled beyond the high threshold, 1 bit per channel - when REG_XOFF_FM_SOFT_XOFF => register_read_data_25_s(23 downto 0) <= register_map_control_s.XOFF_FM_SOFT_XOFF; -- Set any bit in this register to assert XOFF for the given channel, clearing bits will assert XON - when REG_XOFF_ENABLE => register_read_data_25_s(23 downto 0) <= register_map_control_s.XOFF_ENABLE; -- Enable XOFF assertion (To Frontend) in case the FULL mode CH FIFO gets beyond thresholds. One bit per channel - when REG_DMA_BUSY_STATUS => register_read_data_25_s(64 downto 64) <= register_map_control_s.DMA_BUSY_STATUS.CLEAR_LATCH; -- Any write to this register clears TOHOST_BUSY_LATCHED - register_read_data_25_s(4 downto 4) <= register_map_control_s.DMA_BUSY_STATUS.ENABLE; -- Enable the DMA buffer on the server as a source of busy - register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_xoff_monitor.DMA_BUSY_STATUS.TOHOST_BUSY_LATCHED; -- A tohost descriptor has passed BUSY_THRESHOLD_ASSERT in the past, busy flag was set - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_xoff_monitor.DMA_BUSY_STATUS.FROMHOST_BUSY_LATCHED; -- A fromhost descriptor has passed BUSY_THRESHOLD_ASSERT in the past, busy flag was set - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_xoff_monitor.DMA_BUSY_STATUS.FROMHOST_BUSY; -- A fromhost descriptor passed BUSY_THRESHOLD_ASSERT, busy flag set - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.DMA_BUSY_STATUS.TOHOST_BUSY; -- A tohost descriptor passed BUSY_THRESHOLD_ASSERT, busy flag set - when REG_FM_BUSY_CHANNEL_STATUS => register_read_data_25_s(64 downto 64) <= register_map_control_s.FM_BUSY_CHANNEL_STATUS.CLEAR_LATCH; -- Any write to this register will clear the BUSY_LATCHED bits - register_read_data_25_s(47 downto 24) <= register_map_monitor_s.register_map_xoff_monitor.FM_BUSY_CHANNEL_STATUS.BUSY_LATCHED; -- one Indicates that the given FULL mode channel has received BUSY-ON - register_read_data_25_s(23 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.FM_BUSY_CHANNEL_STATUS.BUSY; -- one Indicates that the given FULL mode channel is currently in BUSY state - when REG_BUSY_MAIN_OUTPUT_FIFO_THRESH => register_read_data_25_s(24 downto 24) <= register_map_control_s.BUSY_MAIN_OUTPUT_FIFO_THRESH.BUSY_ENABLE; -- Enable busy generation if thresholds are crossed - register_read_data_25_s(23 downto 12) <= register_map_control_s.BUSY_MAIN_OUTPUT_FIFO_THRESH.LOW; -- Low, Negate threshold of busy generation from main output fifo - register_read_data_25_s(11 downto 0) <= register_map_control_s.BUSY_MAIN_OUTPUT_FIFO_THRESH.HIGH; -- High, Assert threshold of busy generation from main output fifo - when REG_BUSY_MAIN_OUTPUT_FIFO_STATUS => register_read_data_25_s(64 downto 64) <= register_map_control_s.BUSY_MAIN_OUTPUT_FIFO_STATUS.CLEAR_LATCHED; -- Any write to this register will clear the - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_xoff_monitor.BUSY_MAIN_OUTPUT_FIFO_STATUS.HIGH_THRESH_CROSSED_LATCHED; -- Main output fifo has been full beyond HIGH THRESHOLD, write to clear - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_xoff_monitor.BUSY_MAIN_OUTPUT_FIFO_STATUS.HIGH_THRESH_CROSSED; -- Main output fifo is full beyond HIGH THRESHOLD - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.BUSY_MAIN_OUTPUT_FIFO_STATUS.LOW_THRESH_CROSSED; -- Main output fifo is full beyond LOW THRESHOLD - when REG_ELINK_BUSY_ENABLE00 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE01 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (1); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE02 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (2); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE03 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (3); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE04 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (4); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE05 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (5); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE06 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (6); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE07 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (7); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE08 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (8); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE09 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (9); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE10 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (10); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE11 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (11); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE12 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (12); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE13 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (13); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE14 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (14); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE15 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (15); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE16 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (16); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE17 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (17); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE18 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (18); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE19 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (19); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE20 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (20); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE21 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (21); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE22 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (22); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE23 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (23); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_HK_CTRL_I2C => register_read_data_25_s(1 downto 1) <= register_map_control_s.HK_CTRL_I2C.CONFIG_TRIG; -- i2c_config_trig - register_read_data_25_s(0 downto 0) <= register_map_control_s.HK_CTRL_I2C.CLKFREQ_SEL; -- i2c_clkfreq_sel - when REG_HK_CTRL_FMC => register_read_data_25_s(7 downto 7) <= register_map_monitor_s.register_map_hk_monitor.HK_CTRL_FMC.SI5345_LOL; -- Loss of lock pin, only connected on FLX711 - register_read_data_25_s(6 downto 5) <= register_map_control_s.HK_CTRL_FMC.SI5345_INSEL; -- Selects the input clock source - -- 0 : FPGA (FMC LA01) - -- 1 : FMC OSC (40.079 MHz) - -- 2 : FPGA (FMC LA18) - - register_read_data_25_s(4 downto 3) <= register_map_control_s.HK_CTRL_FMC.SI5345_A; -- Si5345 I2C address select 2 LSB (0x0:default, dev id 0x68) - register_read_data_25_s(2 downto 2) <= register_map_control_s.HK_CTRL_FMC.SI5345_OE; -- Si5345 active low output enable (0:enable) - register_read_data_25_s(1 downto 1) <= register_map_control_s.HK_CTRL_FMC.SI5345_RSTN; -- Si5345 active low output enable (0:reset) - register_read_data_25_s(0 downto 0) <= register_map_control_s.HK_CTRL_FMC.SI5345_SEL; -- Si5345 programming mode - -- 1 : I2C mode (default) - -- 0 : SPI mode - - when REG_HK_MON_FMC => register_read_data_25_s(1 downto 1) <= register_map_control_s.HK_MON_FMC.SI5345_LOL; -- Si5345 Loss Of Lock pin - register_read_data_25_s(0 downto 0) <= register_map_control_s.HK_MON_FMC.SI5345_INTR; -- Si5345 Interrupt flagging chip change of status - when REG_MMCM_MAIN => register_read_data_25_s(3 downto 3) <= register_map_control_s.MMCM_MAIN.LCLK_SEL; -- 1: LCLK - -- 0: TTC - - register_read_data_25_s(2 downto 1) <= register_map_monitor_s.register_map_hk_monitor.MMCM_MAIN.MAIN_INPUT; -- Main MMCM Oscillator Input - -- 2: LCLK fixed - -- 1: TTC fixed - -- 0: selectable - - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_hk_monitor.MMCM_MAIN.PLL_LOCK; -- Main MMCM PLL Lock Status - when REG_I2C_WR => register_read_data_25_s(64 downto 64) <= register_map_control_s.I2C_WR.I2C_WREN; -- Any write to this register triggers an I2C read or write sequence - register_read_data_25_s(25 downto 25) <= register_map_monitor_s.register_map_hk_monitor.I2C_WR.I2C_FULL; -- I2C FIFO full - register_read_data_25_s(24 downto 24) <= register_map_control_s.I2C_WR.WRITE_2BYTES; -- Write two bytes - register_read_data_25_s(23 downto 16) <= register_map_control_s.I2C_WR.DATA_BYTE2; -- Data byte 2 - register_read_data_25_s(15 downto 8) <= register_map_control_s.I2C_WR.DATA_BYTE1; -- Data byte 1 - register_read_data_25_s(7 downto 1) <= register_map_control_s.I2C_WR.SLAVE_ADDRESS; -- Slave address - register_read_data_25_s(0 downto 0) <= register_map_control_s.I2C_WR.READ_NOT_WRITE; -- READ/<o>WRITE</o> - when REG_I2C_RD => register_read_data_25_s(64 downto 64) <= register_map_control_s.I2C_RD.I2C_RDEN; -- Any write to this register pops the last I2C data from the FIFO - register_read_data_25_s(8 downto 8) <= register_map_monitor_s.register_map_hk_monitor.I2C_RD.I2C_EMPTY; -- I2C FIFO Empty - register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_hk_monitor.I2C_RD.I2C_DOUT; -- I2C READ Data - when REG_INT_TEST => register_read_data_25_s(64 downto 64) <= register_map_control_s.INT_TEST.TRIGGER; -- Fire a test MSIx interrupt set in IRQ - register_read_data_25_s(3 downto 0) <= register_map_control_s.INT_TEST.IRQ; -- Set this field to a value equal to the MSIX interrupt to be fired. The write triggers the interrupt immediately. - when REG_CONFIG_FLASH_WR => register_read_data_25_s(57 downto 57) <= register_map_control_s.CONFIG_FLASH_WR.FAST_WRITE; -- Write command only. Only used for fast programming. - register_read_data_25_s(56 downto 56) <= register_map_control_s.CONFIG_FLASH_WR.FAST_READ; -- Status reading without command writing. Only used for fast programming. - register_read_data_25_s(55 downto 55) <= register_map_control_s.CONFIG_FLASH_WR.PAR_CTRL; -- Choose use FW or uC to select the Flash partition. 1 FW | 0 uC. - register_read_data_25_s(54 downto 53) <= register_map_control_s.CONFIG_FLASH_WR.PAR_WR; -- Choose Flash partition. Valid when PAR_CTRL is 1. - register_read_data_25_s(52 downto 52) <= register_map_control_s.CONFIG_FLASH_WR.FLASH_SEL; -- 1 takes control over flash, 0 gives JTAG control over flash - register_read_data_25_s(51 downto 51) <= register_map_control_s.CONFIG_FLASH_WR.DO_INIT; -- Untested feature, don't use it yet. - register_read_data_25_s(50 downto 50) <= register_map_control_s.CONFIG_FLASH_WR.DO_READSTATUS; -- Reads status from flash - register_read_data_25_s(49 downto 49) <= register_map_control_s.CONFIG_FLASH_WR.DO_CLEARSTATUS; -- Clears status reading from flash, back to normal flash operation - register_read_data_25_s(48 downto 48) <= register_map_control_s.CONFIG_FLASH_WR.DO_ERASEBLOCK; -- Erased the current block of the flash, this register has to be cleared by software - register_read_data_25_s(47 downto 47) <= register_map_control_s.CONFIG_FLASH_WR.DO_UNLOCK_BLOCK; -- Unlock writes to the current block, this register has to be cleared by software - register_read_data_25_s(46 downto 46) <= register_map_control_s.CONFIG_FLASH_WR.DO_READ; -- Reads the 16 bits from current address, this register has to be cleared by software - register_read_data_25_s(45 downto 45) <= register_map_control_s.CONFIG_FLASH_WR.DO_WRITE; -- Writes the 16 bits to current address, this register has to be cleared by software - register_read_data_25_s(44 downto 44) <= register_map_control_s.CONFIG_FLASH_WR.DO_READDEVICEID; -- DIN should return 0x0089, this register has to be cleared by software - register_read_data_25_s(43 downto 43) <= register_map_control_s.CONFIG_FLASH_WR.DO_RESET; -- Can be used in the future, currently disconnected in firmware - register_read_data_25_s(42 downto 16) <= register_map_control_s.CONFIG_FLASH_WR.ADDRESS; -- Address for read and write operations (25 bits, upper 2 bits are controlled by uC) - register_read_data_25_s(15 downto 0) <= register_map_control_s.CONFIG_FLASH_WR.WRITE_DATA; -- Value of data to write towards flash - when REG_RXUSRCLK_FREQ => register_read_data_25_s(38 downto 38) <= register_map_monitor_s.register_map_hk_monitor.RXUSRCLK_FREQ.VALID; -- Indicates that the frequency measurement is valid - register_read_data_25_s(37 downto 32) <= register_map_control_s.RXUSRCLK_FREQ.CHANNEL; -- Select the Transceiver channel to measure the clock from. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_hk_monitor.RXUSRCLK_FREQ.VAL; -- Frequency in Hz of the selected channel - when REG_FELIG_DATA_GEN_CONFIG_00 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(0).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. - register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(0).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. - register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(0).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(0).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(0).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. - register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(0).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA - end if; - when REG_FELIG_DATA_GEN_CONFIG_01 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(1).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. - register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(1).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. - register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(1).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(1).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(1).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. - register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(1).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA - end if; - when REG_FELIG_DATA_GEN_CONFIG_02 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(2).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. - register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(2).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. - register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(2).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(2).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(2).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. - register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(2).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA - end if; - when REG_FELIG_DATA_GEN_CONFIG_03 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(3).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. - register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(3).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. - register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(3).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(3).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(3).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. - register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(3).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA - end if; - when REG_FELIG_DATA_GEN_CONFIG_04 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(4).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. - register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(4).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. - register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(4).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(4).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(4).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. - register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(4).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA - end if; - when REG_FELIG_DATA_GEN_CONFIG_05 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(5).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. - register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(5).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. - register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(5).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(5).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(5).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. - register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(5).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA - end if; - when REG_FELIG_DATA_GEN_CONFIG_06 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(6).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. - register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(6).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. - register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(6).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(6).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(6).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. - register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(6).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA - end if; - when REG_FELIG_DATA_GEN_CONFIG_07 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(7).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. - register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(7).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. - register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(7).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(7).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(7).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. - register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(7).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA - end if; - when REG_FELIG_DATA_GEN_CONFIG_08 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(8).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. - register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(8).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. - register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(8).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(8).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(8).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. - register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(8).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA - end if; - when REG_FELIG_DATA_GEN_CONFIG_09 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(9).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. - register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(9).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. - register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(9).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(9).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(9).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. - register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(9).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA - end if; - when REG_FELIG_DATA_GEN_CONFIG_10 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(10).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. - register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(10).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. - register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(10).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(10).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(10).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. - register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(10).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA - end if; - when REG_FELIG_DATA_GEN_CONFIG_11 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(11).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. - register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(11).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. - register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(11).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(11).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(11).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. - register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(11).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA - end if; - when REG_FELIG_DATA_GEN_CONFIG_12 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(12).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. - register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(12).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. - register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(12).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(12).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(12).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. - register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(12).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA - end if; - when REG_FELIG_DATA_GEN_CONFIG_13 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(13).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. - register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(13).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. - register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(13).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(13).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(13).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. - register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(13).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA - end if; - when REG_FELIG_DATA_GEN_CONFIG_14 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(14).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. - register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(14).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. - register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(14).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(14).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(14).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. - register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(14).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA - end if; - when REG_FELIG_DATA_GEN_CONFIG_15 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(15).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. - register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(15).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. - register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(15).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(15).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(15).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. - register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(15).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA - end if; - when REG_FELIG_DATA_GEN_CONFIG_16 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(16).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. - register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(16).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. - register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(16).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(16).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(16).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. - register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(16).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA - end if; - when REG_FELIG_DATA_GEN_CONFIG_17 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(17).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. - register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(17).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. - register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(17).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(17).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(17).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. - register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(17).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA - end if; - when REG_FELIG_DATA_GEN_CONFIG_18 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(18).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. - register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(18).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. - register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(18).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(18).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(18).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. - register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(18).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA - end if; - when REG_FELIG_DATA_GEN_CONFIG_19 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(19).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. - register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(19).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. - register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(19).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(19).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(19).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. - register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(19).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA - end if; - when REG_FELIG_DATA_GEN_CONFIG_20 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(20).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. - register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(20).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. - register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(20).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(20).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(20).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. - register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(20).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA - end if; - when REG_FELIG_DATA_GEN_CONFIG_21 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(21).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. - register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(21).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. - register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(21).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(21).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(21).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. - register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(21).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA - end if; - when REG_FELIG_DATA_GEN_CONFIG_22 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(22).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. - register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(22).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. - register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(22).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(22).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(22).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. - register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(22).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA - end if; - when REG_FELIG_DATA_GEN_CONFIG_23 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(23).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. - register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(23).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. - register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(23).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(23).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(23).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. - register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(23).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA - end if; - when REG_FELIG_ELINK_CONFIG_00 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(0).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(0).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(0).OUTPUT_WIDTH; -- FELIG elink data output width. - end if; - when REG_FELIG_ELINK_CONFIG_01 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(1).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(1).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(1).OUTPUT_WIDTH; -- FELIG elink data output width. - end if; - when REG_FELIG_ELINK_CONFIG_02 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(2).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(2).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(2).OUTPUT_WIDTH; -- FELIG elink data output width. - end if; - when REG_FELIG_ELINK_CONFIG_03 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(3).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(3).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(3).OUTPUT_WIDTH; -- FELIG elink data output width. - end if; - when REG_FELIG_ELINK_CONFIG_04 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(4).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(4).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(4).OUTPUT_WIDTH; -- FELIG elink data output width. - end if; - when REG_FELIG_ELINK_CONFIG_05 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(5).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(5).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(5).OUTPUT_WIDTH; -- FELIG elink data output width. - end if; - when REG_FELIG_ELINK_CONFIG_06 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(6).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(6).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(6).OUTPUT_WIDTH; -- FELIG elink data output width. - end if; - when REG_FELIG_ELINK_CONFIG_07 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(7).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(7).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(7).OUTPUT_WIDTH; -- FELIG elink data output width. - end if; - when REG_FELIG_ELINK_CONFIG_08 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(8).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(8).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(8).OUTPUT_WIDTH; -- FELIG elink data output width. - end if; - when REG_FELIG_ELINK_CONFIG_09 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(9).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(9).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(9).OUTPUT_WIDTH; -- FELIG elink data output width. - end if; - when REG_FELIG_ELINK_CONFIG_10 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(10).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(10).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(10).OUTPUT_WIDTH; -- FELIG elink data output width. - end if; - when REG_FELIG_ELINK_CONFIG_11 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(11).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(11).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(11).OUTPUT_WIDTH; -- FELIG elink data output width. - end if; - when REG_FELIG_ELINK_CONFIG_12 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(12).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(12).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(12).OUTPUT_WIDTH; -- FELIG elink data output width. - end if; - when REG_FELIG_ELINK_CONFIG_13 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(13).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(13).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(13).OUTPUT_WIDTH; -- FELIG elink data output width. - end if; - when REG_FELIG_ELINK_CONFIG_14 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(14).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(14).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(14).OUTPUT_WIDTH; -- FELIG elink data output width. - end if; - when REG_FELIG_ELINK_CONFIG_15 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(15).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(15).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(15).OUTPUT_WIDTH; -- FELIG elink data output width. - end if; - when REG_FELIG_ELINK_CONFIG_16 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(16).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(16).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(16).OUTPUT_WIDTH; -- FELIG elink data output width. - end if; - when REG_FELIG_ELINK_CONFIG_17 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(17).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(17).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(17).OUTPUT_WIDTH; -- FELIG elink data output width. - end if; - when REG_FELIG_ELINK_CONFIG_18 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(18).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(18).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(18).OUTPUT_WIDTH; -- FELIG elink data output width. - end if; - when REG_FELIG_ELINK_CONFIG_19 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(19).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(19).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(19).OUTPUT_WIDTH; -- FELIG elink data output width. - end if; - when REG_FELIG_ELINK_CONFIG_20 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(20).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(20).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(20).OUTPUT_WIDTH; -- FELIG elink data output width. - end if; - when REG_FELIG_ELINK_CONFIG_21 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(21).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(21).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(21).OUTPUT_WIDTH; -- FELIG elink data output width. - end if; - when REG_FELIG_ELINK_CONFIG_22 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(22).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(22).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(22).OUTPUT_WIDTH; -- FELIG elink data output width. - end if; - when REG_FELIG_ELINK_CONFIG_23 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(23).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(23).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(23).OUTPUT_WIDTH; -- FELIG elink data output width. - end if; - when REG_FELIG_ELINK_ENABLE_00 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. - end if; - when REG_FELIG_ELINK_ENABLE_01 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(1); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. - end if; - when REG_FELIG_ELINK_ENABLE_02 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(2); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. - end if; - when REG_FELIG_ELINK_ENABLE_03 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(3); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. - end if; - when REG_FELIG_ELINK_ENABLE_04 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(4); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. - end if; - when REG_FELIG_ELINK_ENABLE_05 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(5); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. - end if; - when REG_FELIG_ELINK_ENABLE_06 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(6); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. - end if; - when REG_FELIG_ELINK_ENABLE_07 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(7); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. - end if; - when REG_FELIG_ELINK_ENABLE_08 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(8); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. - end if; - when REG_FELIG_ELINK_ENABLE_09 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(9); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. - end if; - when REG_FELIG_ELINK_ENABLE_10 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(10); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. - end if; - when REG_FELIG_ELINK_ENABLE_11 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(11); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. - end if; - when REG_FELIG_ELINK_ENABLE_12 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(12); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. - end if; - when REG_FELIG_ELINK_ENABLE_13 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(13); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. - end if; - when REG_FELIG_ELINK_ENABLE_14 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(14); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. - end if; - when REG_FELIG_ELINK_ENABLE_15 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(15); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. - end if; - when REG_FELIG_ELINK_ENABLE_16 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(16); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. - end if; - when REG_FELIG_ELINK_ENABLE_17 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(17); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. - end if; - when REG_FELIG_ELINK_ENABLE_18 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(18); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. - end if; - when REG_FELIG_ELINK_ENABLE_19 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(19); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. - end if; - when REG_FELIG_ELINK_ENABLE_20 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(20); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. - end if; - when REG_FELIG_ELINK_ENABLE_21 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(21); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. - end if; - when REG_FELIG_ELINK_ENABLE_22 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(22); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. - end if; - when REG_FELIG_ELINK_ENABLE_23 => - if EMU_GENERATE_REGS then - register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(23); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. - end if; - when REG_FELIG_GLOBAL_CONTROL => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 36) <= register_map_control_s.FELIG_GLOBAL_CONTROL.FAKE_L1A_RATE; -- Sets the internal fake L1 trigger rate. [25ns/LSB] - register_read_data_25_s(35 downto 14) <= register_map_control_s.FELIG_GLOBAL_CONTROL.PICXO_OFFSET_PPM; -- When OFFSET_EN is 1, this directly sets the output frequency, within the given adjustment range. - register_read_data_25_s(12 downto 12) <= register_map_control_s.FELIG_GLOBAL_CONTROL.TRACK_DATA; -- FELIG GT core control. Must be set to enable normal operation. - register_read_data_25_s(11 downto 11) <= register_map_control_s.FELIG_GLOBAL_CONTROL.RXUSERRDY; -- FELIG GT core control. Must be set to enable normal operation. - register_read_data_25_s(10 downto 10) <= register_map_control_s.FELIG_GLOBAL_CONTROL.TXUSERRDY; -- FELIG GT core control. Must be set to enable normal operation. - register_read_data_25_s(9 downto 9) <= register_map_control_s.FELIG_GLOBAL_CONTROL.AUTO_RESET; -- FELIG GT core control. If set the GT core automatically resets on data error. - register_read_data_25_s(8 downto 8) <= register_map_control_s.FELIG_GLOBAL_CONTROL.PICXO_RESET; -- FELIG GT core control. Manual PICXO reset. - register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_GLOBAL_CONTROL.GTTX_RESET; -- FELIG GT core control. Manual GT TX reset - register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_GLOBAL_CONTROL.CPLL_RESET; -- FELIG GT core control. Manual CPLL reset. - register_read_data_25_s(5 downto 0) <= register_map_control_s.FELIG_GLOBAL_CONTROL.X3_X4_OUTPUT_SELECT; -- X3/X4 SMA output source select. - end if; - when REG_FELIG_LANE_CONFIG_00 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(0).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(0).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(0).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(0).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(0).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(0).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(0).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(0).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(0).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(0).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(0).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) - end if; - when REG_FELIG_LANE_CONFIG_01 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(1).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(1).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(1).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(1).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(1).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(1).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(1).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(1).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(1).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(1).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(1).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) - end if; - when REG_FELIG_LANE_CONFIG_02 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(2).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(2).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(2).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(2).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(2).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(2).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(2).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(2).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(2).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(2).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(2).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) - end if; - when REG_FELIG_LANE_CONFIG_03 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(3).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(3).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(3).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(3).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(3).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(3).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(3).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(3).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(3).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(3).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(3).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) - end if; - when REG_FELIG_LANE_CONFIG_04 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(4).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(4).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(4).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(4).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(4).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(4).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(4).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(4).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(4).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(4).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(4).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) - end if; - when REG_FELIG_LANE_CONFIG_05 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(5).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(5).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(5).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(5).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(5).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(5).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(5).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(5).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(5).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(5).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(5).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) - end if; - when REG_FELIG_LANE_CONFIG_06 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(6).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(6).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(6).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(6).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(6).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(6).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(6).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(6).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(6).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(6).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(6).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) - end if; - when REG_FELIG_LANE_CONFIG_07 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(7).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(7).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(7).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(7).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(7).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(7).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(7).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(7).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(7).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(7).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(7).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) - end if; - when REG_FELIG_LANE_CONFIG_08 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(8).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(8).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(8).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(8).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(8).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(8).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(8).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(8).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(8).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(8).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(8).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) - end if; - when REG_FELIG_LANE_CONFIG_09 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(9).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(9).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(9).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(9).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(9).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(9).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(9).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(9).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(9).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(9).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(9).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) - end if; - when REG_FELIG_LANE_CONFIG_10 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(10).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(10).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(10).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(10).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(10).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(10).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(10).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(10).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(10).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(10).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(10).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) - end if; - when REG_FELIG_LANE_CONFIG_11 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(11).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(11).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(11).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(11).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(11).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(11).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(11).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(11).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(11).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(11).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(11).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) - end if; - when REG_FELIG_LANE_CONFIG_12 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(12).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(12).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(12).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(12).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(12).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(12).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(12).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(12).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(12).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(12).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(12).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) - end if; - when REG_FELIG_LANE_CONFIG_13 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(13).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(13).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(13).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(13).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(13).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(13).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(13).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(13).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(13).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(13).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(13).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) - end if; - when REG_FELIG_LANE_CONFIG_14 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(14).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(14).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(14).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(14).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(14).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(14).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(14).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(14).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(14).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(14).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(14).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) - end if; - when REG_FELIG_LANE_CONFIG_15 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(15).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(15).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(15).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(15).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(15).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(15).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(15).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(15).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(15).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(15).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(15).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) - end if; - when REG_FELIG_LANE_CONFIG_16 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(16).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(16).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(16).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(16).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(16).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(16).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(16).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(16).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(16).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(16).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(16).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) - end if; - when REG_FELIG_LANE_CONFIG_17 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(17).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(17).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(17).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(17).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(17).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(17).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(17).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(17).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(17).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(17).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(17).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) - end if; - when REG_FELIG_LANE_CONFIG_18 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(18).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(18).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(18).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(18).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(18).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(18).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(18).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(18).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(18).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(18).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(18).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) - end if; - when REG_FELIG_LANE_CONFIG_19 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(19).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(19).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(19).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(19).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(19).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(19).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(19).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(19).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(19).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(19).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(19).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) - end if; - when REG_FELIG_LANE_CONFIG_20 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(20).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(20).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(20).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(20).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(20).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(20).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(20).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(20).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(20).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(20).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(20).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) - end if; - when REG_FELIG_LANE_CONFIG_21 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(21).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(21).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(21).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(21).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(21).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(21).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(21).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(21).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(21).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(21).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(21).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) - end if; - when REG_FELIG_LANE_CONFIG_22 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(22).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(22).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(22).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(22).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(22).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(22).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(22).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(22).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(22).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(22).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(22).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) - end if; - when REG_FELIG_LANE_CONFIG_23 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(23).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(23).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. - register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(23).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(23).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(23).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(23).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(23).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(23).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(23).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(23).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(23).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) - end if; - when REG_FELIG_MON_FREQ_GLOBAL => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_control_s.FELIG_MON_FREQ_GLOBAL.XTAL_100MHZ; -- FELIG local oscillator frequency[Hz]. - register_read_data_25_s(31 downto 0) <= register_map_control_s.FELIG_MON_FREQ_GLOBAL.CLK_41_667MHZ; -- FELIG PCIE MGTREFCLK frequency[Hz]. - end if; - when REG_FELIG_RESET => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_RESET.LB_FIFO; -- One bit per lane. When set to 1, resets all loopback FIFOs. - register_read_data_25_s(47 downto 24) <= register_map_control_s.FELIG_RESET.FRAMEGEN; -- One bit per lane. When set to 1, resets all FELIG link checking logic. - register_read_data_25_s(23 downto 0) <= register_map_control_s.FELIG_RESET.LANE; -- One bit per lane. When set to 1, resets all FELIG lane logic. - end if; - when REG_FELIG_RX_SLIDE_RESET => - if EMU_GENERATE_REGS then - register_read_data_25_s(23 downto 0) <= register_map_control_s.FELIG_RX_SLIDE_RESET; -- One bit per lane. When set to 1, resets the gbt rx slide counter. - end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_00 => - if EMU_GENERATE_REGS then - register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(0).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. - register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(0).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word - end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_01 => - if EMU_GENERATE_REGS then - register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(1).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. - register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(1).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word - end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_02 => - if EMU_GENERATE_REGS then - register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(2).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. - register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(2).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word - end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_03 => - if EMU_GENERATE_REGS then - register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(3).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. - register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(3).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word - end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_04 => - if EMU_GENERATE_REGS then - register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(4).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. - register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(4).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word - end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_05 => - if EMU_GENERATE_REGS then - register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(5).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. - register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(5).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word - end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_06 => - if EMU_GENERATE_REGS then - register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(6).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. - register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(6).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word - end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_07 => - if EMU_GENERATE_REGS then - register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(7).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. - register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(7).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word - end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_08 => - if EMU_GENERATE_REGS then - register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(8).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. - register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(8).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word - end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_09 => - if EMU_GENERATE_REGS then - register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(9).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. - register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(9).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word - end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_10 => - if EMU_GENERATE_REGS then - register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(10).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. - register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(10).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word - end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_11 => - if EMU_GENERATE_REGS then - register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(11).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. - register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(11).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word - end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_12 => - if EMU_GENERATE_REGS then - register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(12).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. - register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(12).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word - end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_13 => - if EMU_GENERATE_REGS then - register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(13).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. - register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(13).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word - end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_14 => - if EMU_GENERATE_REGS then - register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(14).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. - register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(14).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word - end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_15 => - if EMU_GENERATE_REGS then - register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(15).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. - register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(15).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word - end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_16 => - if EMU_GENERATE_REGS then - register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(16).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. - register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(16).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word - end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_17 => - if EMU_GENERATE_REGS then - register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(17).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. - register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(17).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word - end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_18 => - if EMU_GENERATE_REGS then - register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(18).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. - register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(18).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word - end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_19 => - if EMU_GENERATE_REGS then - register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(19).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. - register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(19).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word - end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_20 => - if EMU_GENERATE_REGS then - register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(20).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. - register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(20).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word - end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_21 => - if EMU_GENERATE_REGS then - register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(21).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. - register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(21).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word - end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_22 => - if EMU_GENERATE_REGS then - register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(22).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. - register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(22).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word - end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_23 => - if EMU_GENERATE_REGS then - register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(23).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. - register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(23).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word - end if; - when REG_FMEMU_EVENT_INFO => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_control_s.FMEMU_EVENT_INFO.L1ID; -- 32b field to show L1ID - register_read_data_25_s(31 downto 0) <= register_map_control_s.FMEMU_EVENT_INFO.BCID; -- 32b field to show BCID - end if; - when REG_FMEMU_COUNTERS => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_control_s.FMEMU_COUNTERS.WORD_CNT; -- Number of 32b words in one chunk - register_read_data_25_s(47 downto 32) <= register_map_control_s.FMEMU_COUNTERS.IDLE_CNT; -- Minimum number of idles between chunks - register_read_data_25_s(31 downto 16) <= register_map_control_s.FMEMU_COUNTERS.L1A_CNT; -- Number of chunks to send if not in TTC mode - register_read_data_25_s(15 downto 8) <= register_map_control_s.FMEMU_COUNTERS.BUSY_TH_HIGH; -- Assert BUSY-ON above this threshold - register_read_data_25_s(7 downto 0) <= register_map_control_s.FMEMU_COUNTERS.BUSY_TH_LOW; -- De-assert BUSY-ON below this threshold - end if; - when REG_FMEMU_CONTROL => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 56) <= register_map_control_s.FMEMU_CONTROL.L1A_BITNR; -- Bitfield for L1A in TTC frame - register_read_data_25_s(55 downto 48) <= register_map_control_s.FMEMU_CONTROL.XONXOFF_BITNR; -- Bitfield for Xon/Xoff in TTC frame - register_read_data_25_s(47 downto 47) <= register_map_control_s.FMEMU_CONTROL.EMU_START; -- Start emulator functionality - register_read_data_25_s(46 downto 46) <= register_map_control_s.FMEMU_CONTROL.TTC_MODE; -- Control the emulator by TTC input or by RegMap (1/0) - register_read_data_25_s(45 downto 45) <= register_map_control_s.FMEMU_CONTROL.XONXOFF; -- Debug Xon/Xoff functionality (1/0) - register_read_data_25_s(44 downto 44) <= register_map_control_s.FMEMU_CONTROL.INLC_CRC32; -- 0: No checksum - -- 1: Append the data with a CRC32 - - register_read_data_25_s(43 downto 43) <= register_map_control_s.FMEMU_CONTROL.BCR; -- Reset BCID to 0 - register_read_data_25_s(42 downto 42) <= register_map_control_s.FMEMU_CONTROL.ECR; -- Reset L1ID to 0 - register_read_data_25_s(41 downto 41) <= register_map_control_s.FMEMU_CONTROL.DATA_SRC_SEL; -- Data source select - -- 0: Data input comes from EMURAM - -- 1: Data input comes from PCIe - - register_read_data_25_s(40 downto 32) <= register_map_monitor_s.register_map_generators.FMEMU_CONTROL.INT_STATUS_EMU; -- Read internal status emulator - register_read_data_25_s(31 downto 16) <= register_map_control_s.FMEMU_CONTROL.FFU_FM_EMU_T; -- For Future Use (trigger registers) - register_read_data_25_s(15 downto 0) <= register_map_control_s.FMEMU_CONTROL.FFU_FM_EMU_W; -- For Future Use (write registers) - end if; - when REG_FMEMU_RANDOM_RAM_ADDR => - if EMU_GENERATE_REGS then - register_read_data_25_s(9 downto 0) <= register_map_control_s.FMEMU_RANDOM_RAM_ADDR; -- Controls the address of the ramblock for the random number generator - end if; - when REG_FMEMU_RANDOM_RAM => - if EMU_GENERATE_REGS then - register_read_data_25_s(64 downto 64) <= register_map_control_s.FMEMU_RANDOM_RAM.WE; -- Any write to this register (DATA) triggers a write to the ramblock - register_read_data_25_s(39 downto 16) <= register_map_control_s.FMEMU_RANDOM_RAM.CHANNEL_SELECT; -- Enable write enable only for the selected channel - register_read_data_25_s(15 downto 0) <= register_map_control_s.FMEMU_RANDOM_RAM.DATA; -- DATA field to be written to FMEMU_RANDOM_RAM_ADDR - end if; - when REG_FMEMU_RANDOM_CONTROL => - if EMU_GENERATE_REGS then - register_read_data_25_s(20 downto 20) <= register_map_control_s.FMEMU_RANDOM_CONTROL.SELECT_RANDOM; -- 1 enables the random chunk length, 0 uses a constant chunk length - register_read_data_25_s(19 downto 10) <= register_map_control_s.FMEMU_RANDOM_CONTROL.SEED; -- Seed for the random number generator, should not be 0 - register_read_data_25_s(9 downto 0) <= register_map_control_s.FMEMU_RANDOM_CONTROL.POLYNOMIAL; -- POLYNOMIAL for the random number generator (10b LFSR) Bit9 should always be 1 - end if; - when REG_WISHBONE_CONTROL => register_read_data_25_s(32 downto 32) <= register_map_control_s.WISHBONE_CONTROL.WRITE_NOT_READ; -- wishbone write command wishbone read command - register_read_data_25_s(31 downto 0) <= register_map_control_s.WISHBONE_CONTROL.ADDRESS; -- Slave address for Wishbone bus - when REG_WISHBONE_WRITE => register_read_data_25_s(64 downto 64) <= register_map_control_s.WISHBONE_WRITE.WRITE_ENABLE; -- Any write to this register triggers a write to the Wupper to Wishbone fifo - register_read_data_25_s(32 downto 32) <= register_map_monitor_s.wishbone_monitor.WISHBONE_WRITE.FULL; -- Wishbone - register_read_data_25_s(31 downto 0) <= register_map_control_s.WISHBONE_WRITE.DATA; -- Wishbone - when REG_WISHBONE_READ => register_read_data_25_s(64 downto 64) <= register_map_control_s.WISHBONE_READ.READ_ENABLE; -- Any write to this register triggers a read from the Wishbone to Wupper fifo - register_read_data_25_s(32 downto 32) <= register_map_monitor_s.wishbone_monitor.WISHBONE_READ.EMPTY; -- Indicates that the Wishbone to Wupper fifo is empty - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.wishbone_monitor.WISHBONE_READ.DATA; -- Wishbone read data - when REG_GLOBAL_STRIPS_CONFIG => register_read_data_25_s(64 downto 64) <= register_map_control_s.GLOBAL_STRIPS_CONFIG.TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger for every LCB link connected to this FELIX device - register_read_data_25_s(0 downto 0) <= register_map_control_s.GLOBAL_STRIPS_CONFIG.TTC_GENERATE_GATING_ENABLE; -- Global control for gating signal generation. Enables generating trickle gating signal in response to TTC BCR. TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. (See also BC_START, and BC_STOP fields) - when REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_0 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (0)(0).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (0)(0).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (0)(0).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (0)(0).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (0)(0).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (0)(0).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (0)(0).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (0)(0).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (0)(0).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (0)(0).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_0 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(0)(0).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(0)(0).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(0)(0).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(0)(0).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_MODULE_MASK_F_C_0 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(0)(0).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(0)(0).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(0)(0).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(0)(0).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_B_8_0 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(0)(0).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(0)(0).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(0)(0).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(0)(0).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_7_4_0 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(0)(0).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(0)(0).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(0)(0).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(0)(0).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_3_0_0 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(0)(0).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(0)(0).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(0)(0).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(0)(0).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_1 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (0)(1).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (0)(1).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (0)(1).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (0)(1).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (0)(1).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (0)(1).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (0)(1).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (0)(1).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (0)(1).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (0)(1).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_1 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(0)(1).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(0)(1).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(0)(1).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(0)(1).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_MODULE_MASK_F_C_1 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(0)(1).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(0)(1).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(0)(1).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(0)(1).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_B_8_1 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(0)(1).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(0)(1).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(0)(1).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(0)(1).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_7_4_1 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(0)(1).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(0)(1).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(0)(1).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(0)(1).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_3_0_1 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(0)(1).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(0)(1).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(0)(1).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(0)(1).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_2 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (0)(2).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (0)(2).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (0)(2).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (0)(2).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (0)(2).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (0)(2).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (0)(2).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (0)(2).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (0)(2).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (0)(2).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_2 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(0)(2).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(0)(2).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(0)(2).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(0)(2).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_MODULE_MASK_F_C_2 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(0)(2).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(0)(2).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(0)(2).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(0)(2).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_B_8_2 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(0)(2).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(0)(2).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(0)(2).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(0)(2).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_7_4_2 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(0)(2).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(0)(2).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(0)(2).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(0)(2).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_3_0_2 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(0)(2).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(0)(2).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(0)(2).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(0)(2).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_3 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (0)(3).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (0)(3).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (0)(3).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (0)(3).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (0)(3).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (0)(3).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (0)(3).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (0)(3).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (0)(3).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (0)(3).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_3 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(0)(3).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(0)(3).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(0)(3).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(0)(3).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_MODULE_MASK_F_C_3 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(0)(3).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(0)(3).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(0)(3).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(0)(3).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_B_8_3 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(0)(3).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(0)(3).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(0)(3).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(0)(3).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_7_4_3 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(0)(3).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(0)(3).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(0)(3).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(0)(3).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_3_0_3 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(0)(3).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(0)(3).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(0)(3).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(0)(3).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_R3L1_LINK_00_R3L1_0 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (0)(0).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (0)(0).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (0)(0).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_00_R3L1_1 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (0)(1).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (0)(1).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (0)(1).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_00_R3L1_2 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (0)(2).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (0)(2).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (0)(2).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_00_R3L1_3 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (0)(3).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (0)(3).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (0)(3).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_0 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (1)(0).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (1)(0).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (1)(0).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (1)(0).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (1)(0).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (1)(0).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (1)(0).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (1)(0).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (1)(0).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (1)(0).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_0 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(1)(0).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(1)(0).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(1)(0).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(1)(0).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_MODULE_MASK_F_C_0 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(1)(0).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(1)(0).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(1)(0).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(1)(0).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_B_8_0 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(1)(0).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(1)(0).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(1)(0).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(1)(0).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_7_4_0 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(1)(0).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(1)(0).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(1)(0).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(1)(0).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_3_0_0 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(1)(0).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(1)(0).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(1)(0).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(1)(0).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_1 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (1)(1).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (1)(1).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (1)(1).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (1)(1).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (1)(1).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (1)(1).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (1)(1).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (1)(1).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (1)(1).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (1)(1).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_1 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(1)(1).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(1)(1).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(1)(1).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(1)(1).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_MODULE_MASK_F_C_1 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(1)(1).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(1)(1).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(1)(1).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(1)(1).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_B_8_1 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(1)(1).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(1)(1).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(1)(1).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(1)(1).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_7_4_1 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(1)(1).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(1)(1).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(1)(1).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(1)(1).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_3_0_1 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(1)(1).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(1)(1).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(1)(1).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(1)(1).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_2 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (1)(2).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (1)(2).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (1)(2).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (1)(2).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (1)(2).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (1)(2).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (1)(2).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (1)(2).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (1)(2).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (1)(2).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_2 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(1)(2).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(1)(2).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(1)(2).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(1)(2).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_MODULE_MASK_F_C_2 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(1)(2).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(1)(2).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(1)(2).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(1)(2).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_B_8_2 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(1)(2).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(1)(2).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(1)(2).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(1)(2).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_7_4_2 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(1)(2).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(1)(2).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(1)(2).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(1)(2).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_3_0_2 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(1)(2).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(1)(2).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(1)(2).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(1)(2).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_3 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (1)(3).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (1)(3).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (1)(3).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (1)(3).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (1)(3).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (1)(3).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (1)(3).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (1)(3).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (1)(3).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (1)(3).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_3 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(1)(3).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(1)(3).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(1)(3).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(1)(3).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_MODULE_MASK_F_C_3 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(1)(3).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(1)(3).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(1)(3).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(1)(3).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_B_8_3 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(1)(3).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(1)(3).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(1)(3).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(1)(3).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_7_4_3 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(1)(3).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(1)(3).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(1)(3).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(1)(3).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_3_0_3 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(1)(3).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(1)(3).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(1)(3).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(1)(3).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_R3L1_LINK_01_R3L1_0 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (1)(0).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (1)(0).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (1)(0).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_01_R3L1_1 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (1)(1).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (1)(1).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (1)(1).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_01_R3L1_2 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (1)(2).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (1)(2).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (1)(2).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_01_R3L1_3 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (1)(3).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (1)(3).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (1)(3).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_0 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (2)(0).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (2)(0).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (2)(0).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (2)(0).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (2)(0).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (2)(0).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (2)(0).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (2)(0).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (2)(0).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (2)(0).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_0 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(2)(0).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(2)(0).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(2)(0).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(2)(0).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_MODULE_MASK_F_C_0 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(2)(0).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(2)(0).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(2)(0).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(2)(0).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_B_8_0 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(2)(0).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(2)(0).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(2)(0).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(2)(0).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_7_4_0 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(2)(0).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(2)(0).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(2)(0).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(2)(0).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_3_0_0 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(2)(0).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(2)(0).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(2)(0).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(2)(0).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_1 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (2)(1).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (2)(1).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (2)(1).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (2)(1).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (2)(1).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (2)(1).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (2)(1).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (2)(1).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (2)(1).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (2)(1).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_1 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(2)(1).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(2)(1).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(2)(1).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(2)(1).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_MODULE_MASK_F_C_1 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(2)(1).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(2)(1).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(2)(1).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(2)(1).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_B_8_1 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(2)(1).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(2)(1).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(2)(1).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(2)(1).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_7_4_1 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(2)(1).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(2)(1).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(2)(1).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(2)(1).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_3_0_1 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(2)(1).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(2)(1).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(2)(1).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(2)(1).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_2 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (2)(2).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (2)(2).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (2)(2).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (2)(2).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (2)(2).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (2)(2).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (2)(2).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (2)(2).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (2)(2).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (2)(2).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_2 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(2)(2).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(2)(2).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(2)(2).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(2)(2).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_MODULE_MASK_F_C_2 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(2)(2).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(2)(2).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(2)(2).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(2)(2).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_B_8_2 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(2)(2).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(2)(2).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(2)(2).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(2)(2).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_7_4_2 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(2)(2).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(2)(2).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(2)(2).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(2)(2).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_3_0_2 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(2)(2).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(2)(2).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(2)(2).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(2)(2).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_3 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (2)(3).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (2)(3).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (2)(3).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (2)(3).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (2)(3).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (2)(3).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (2)(3).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (2)(3).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (2)(3).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (2)(3).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_3 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(2)(3).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(2)(3).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(2)(3).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(2)(3).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_MODULE_MASK_F_C_3 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(2)(3).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(2)(3).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(2)(3).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(2)(3).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_B_8_3 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(2)(3).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(2)(3).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(2)(3).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(2)(3).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_7_4_3 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(2)(3).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(2)(3).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(2)(3).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(2)(3).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_3_0_3 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(2)(3).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(2)(3).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(2)(3).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(2)(3).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_R3L1_LINK_02_R3L1_0 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (2)(0).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (2)(0).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (2)(0).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_02_R3L1_1 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (2)(1).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (2)(1).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (2)(1).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_02_R3L1_2 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (2)(2).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (2)(2).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (2)(2).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_02_R3L1_3 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (2)(3).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (2)(3).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (2)(3).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_0 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (3)(0).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (3)(0).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (3)(0).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (3)(0).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (3)(0).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (3)(0).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (3)(0).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (3)(0).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (3)(0).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (3)(0).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_0 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(3)(0).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(3)(0).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(3)(0).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(3)(0).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_MODULE_MASK_F_C_0 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(3)(0).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(3)(0).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(3)(0).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(3)(0).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_B_8_0 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(3)(0).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(3)(0).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(3)(0).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(3)(0).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_7_4_0 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(3)(0).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(3)(0).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(3)(0).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(3)(0).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_3_0_0 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(3)(0).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(3)(0).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(3)(0).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(3)(0).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_1 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (3)(1).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (3)(1).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (3)(1).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (3)(1).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (3)(1).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (3)(1).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (3)(1).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (3)(1).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (3)(1).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (3)(1).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_1 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(3)(1).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(3)(1).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(3)(1).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(3)(1).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_MODULE_MASK_F_C_1 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(3)(1).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(3)(1).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(3)(1).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(3)(1).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_B_8_1 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(3)(1).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(3)(1).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(3)(1).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(3)(1).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_7_4_1 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(3)(1).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(3)(1).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(3)(1).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(3)(1).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_3_0_1 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(3)(1).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(3)(1).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(3)(1).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(3)(1).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_2 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (3)(2).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (3)(2).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (3)(2).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (3)(2).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (3)(2).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (3)(2).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (3)(2).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (3)(2).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (3)(2).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (3)(2).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_2 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(3)(2).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(3)(2).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(3)(2).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(3)(2).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_MODULE_MASK_F_C_2 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(3)(2).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(3)(2).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(3)(2).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(3)(2).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_B_8_2 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(3)(2).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(3)(2).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(3)(2).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(3)(2).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_7_4_2 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(3)(2).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(3)(2).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(3)(2).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(3)(2).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_3_0_2 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(3)(2).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(3)(2).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(3)(2).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(3)(2).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_3 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (3)(3).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (3)(3).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (3)(3).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (3)(3).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (3)(3).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (3)(3).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (3)(3).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (3)(3).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (3)(3).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (3)(3).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_3 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(3)(3).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(3)(3).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(3)(3).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(3)(3).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_MODULE_MASK_F_C_3 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(3)(3).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(3)(3).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(3)(3).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(3)(3).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_B_8_3 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(3)(3).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(3)(3).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(3)(3).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(3)(3).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_7_4_3 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(3)(3).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(3)(3).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(3)(3).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(3)(3).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_3_0_3 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(3)(3).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(3)(3).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(3)(3).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(3)(3).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_R3L1_LINK_03_R3L1_0 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (3)(0).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (3)(0).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (3)(0).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_03_R3L1_1 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (3)(1).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (3)(1).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (3)(1).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_03_R3L1_2 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (3)(2).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (3)(2).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (3)(2).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_03_R3L1_3 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (3)(3).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (3)(3).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (3)(3).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_0 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (4)(0).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (4)(0).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (4)(0).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (4)(0).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (4)(0).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (4)(0).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (4)(0).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (4)(0).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (4)(0).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (4)(0).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_0 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(4)(0).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(4)(0).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(4)(0).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(4)(0).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_0 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(4)(0).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(4)(0).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(4)(0).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(4)(0).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_0 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(4)(0).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(4)(0).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(4)(0).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(4)(0).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_0 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(4)(0).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(4)(0).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(4)(0).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(4)(0).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_0 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(4)(0).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(4)(0).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(4)(0).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(4)(0).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_1 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (4)(1).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (4)(1).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (4)(1).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (4)(1).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (4)(1).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (4)(1).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (4)(1).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (4)(1).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (4)(1).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (4)(1).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_1 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(4)(1).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(4)(1).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(4)(1).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(4)(1).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_1 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(4)(1).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(4)(1).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(4)(1).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(4)(1).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_1 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(4)(1).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(4)(1).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(4)(1).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(4)(1).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_1 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(4)(1).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(4)(1).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(4)(1).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(4)(1).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_1 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(4)(1).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(4)(1).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(4)(1).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(4)(1).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_2 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (4)(2).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (4)(2).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (4)(2).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (4)(2).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (4)(2).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (4)(2).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (4)(2).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (4)(2).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (4)(2).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (4)(2).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_2 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(4)(2).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(4)(2).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(4)(2).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(4)(2).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_2 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(4)(2).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(4)(2).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(4)(2).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(4)(2).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_2 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(4)(2).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(4)(2).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(4)(2).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(4)(2).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_2 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(4)(2).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(4)(2).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(4)(2).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(4)(2).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_2 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(4)(2).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(4)(2).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(4)(2).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(4)(2).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_3 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (4)(3).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (4)(3).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (4)(3).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (4)(3).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (4)(3).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (4)(3).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (4)(3).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (4)(3).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (4)(3).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (4)(3).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_3 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(4)(3).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(4)(3).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(4)(3).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(4)(3).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_3 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(4)(3).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(4)(3).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(4)(3).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(4)(3).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_3 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(4)(3).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(4)(3).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(4)(3).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(4)(3).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_3 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(4)(3).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(4)(3).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(4)(3).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(4)(3).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_3 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(4)(3).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(4)(3).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(4)(3).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(4)(3).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_R3L1_LINK_04_R3L1_0 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (4)(0).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (4)(0).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (4)(0).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_04_R3L1_1 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (4)(1).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (4)(1).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (4)(1).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_04_R3L1_2 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (4)(2).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (4)(2).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (4)(2).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_04_R3L1_3 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (4)(3).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (4)(3).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (4)(3).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_0 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (5)(0).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (5)(0).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (5)(0).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (5)(0).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (5)(0).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (5)(0).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (5)(0).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (5)(0).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (5)(0).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (5)(0).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_0 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(5)(0).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(5)(0).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(5)(0).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(5)(0).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_0 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(5)(0).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(5)(0).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(5)(0).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(5)(0).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_0 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(5)(0).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(5)(0).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(5)(0).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(5)(0).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_0 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(5)(0).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(5)(0).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(5)(0).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(5)(0).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_0 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(5)(0).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(5)(0).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(5)(0).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(5)(0).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_1 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (5)(1).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (5)(1).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (5)(1).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (5)(1).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (5)(1).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (5)(1).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (5)(1).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (5)(1).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (5)(1).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (5)(1).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_1 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(5)(1).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(5)(1).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(5)(1).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(5)(1).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_1 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(5)(1).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(5)(1).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(5)(1).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(5)(1).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_1 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(5)(1).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(5)(1).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(5)(1).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(5)(1).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_1 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(5)(1).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(5)(1).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(5)(1).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(5)(1).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_1 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(5)(1).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(5)(1).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(5)(1).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(5)(1).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_2 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (5)(2).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (5)(2).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (5)(2).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (5)(2).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (5)(2).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (5)(2).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (5)(2).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (5)(2).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (5)(2).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (5)(2).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_2 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(5)(2).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(5)(2).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(5)(2).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(5)(2).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_2 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(5)(2).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(5)(2).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(5)(2).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(5)(2).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_2 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(5)(2).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(5)(2).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(5)(2).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(5)(2).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_2 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(5)(2).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(5)(2).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(5)(2).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(5)(2).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_2 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(5)(2).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(5)(2).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(5)(2).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(5)(2).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_3 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (5)(3).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (5)(3).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (5)(3).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (5)(3).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (5)(3).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (5)(3).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (5)(3).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (5)(3).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (5)(3).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (5)(3).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_3 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(5)(3).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(5)(3).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(5)(3).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(5)(3).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_3 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(5)(3).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(5)(3).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(5)(3).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(5)(3).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_3 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(5)(3).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(5)(3).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(5)(3).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(5)(3).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_3 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(5)(3).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(5)(3).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(5)(3).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(5)(3).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_3 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(5)(3).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(5)(3).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(5)(3).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(5)(3).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_R3L1_LINK_05_R3L1_0 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (5)(0).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (5)(0).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (5)(0).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_05_R3L1_1 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (5)(1).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (5)(1).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (5)(1).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_05_R3L1_2 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (5)(2).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (5)(2).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (5)(2).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_05_R3L1_3 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (5)(3).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (5)(3).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (5)(3).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_0 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (6)(0).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (6)(0).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (6)(0).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (6)(0).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (6)(0).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (6)(0).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (6)(0).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (6)(0).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (6)(0).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (6)(0).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_0 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(6)(0).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(6)(0).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(6)(0).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(6)(0).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_0 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(6)(0).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(6)(0).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(6)(0).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(6)(0).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_0 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(6)(0).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(6)(0).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(6)(0).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(6)(0).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_0 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(6)(0).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(6)(0).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(6)(0).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(6)(0).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_0 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(6)(0).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(6)(0).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(6)(0).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(6)(0).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_1 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (6)(1).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (6)(1).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (6)(1).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (6)(1).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (6)(1).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (6)(1).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (6)(1).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (6)(1).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (6)(1).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (6)(1).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_1 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(6)(1).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(6)(1).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(6)(1).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(6)(1).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_1 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(6)(1).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(6)(1).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(6)(1).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(6)(1).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_1 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(6)(1).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(6)(1).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(6)(1).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(6)(1).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_1 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(6)(1).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(6)(1).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(6)(1).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(6)(1).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_1 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(6)(1).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(6)(1).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(6)(1).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(6)(1).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_2 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (6)(2).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (6)(2).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (6)(2).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (6)(2).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (6)(2).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (6)(2).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (6)(2).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (6)(2).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (6)(2).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (6)(2).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_2 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(6)(2).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(6)(2).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(6)(2).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(6)(2).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_2 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(6)(2).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(6)(2).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(6)(2).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(6)(2).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_2 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(6)(2).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(6)(2).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(6)(2).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(6)(2).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_2 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(6)(2).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(6)(2).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(6)(2).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(6)(2).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_2 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(6)(2).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(6)(2).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(6)(2).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(6)(2).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_3 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (6)(3).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (6)(3).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (6)(3).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (6)(3).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (6)(3).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (6)(3).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (6)(3).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (6)(3).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (6)(3).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (6)(3).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_3 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(6)(3).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(6)(3).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(6)(3).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(6)(3).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_3 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(6)(3).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(6)(3).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(6)(3).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(6)(3).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_3 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(6)(3).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(6)(3).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(6)(3).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(6)(3).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_3 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(6)(3).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(6)(3).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(6)(3).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(6)(3).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_3 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(6)(3).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(6)(3).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(6)(3).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(6)(3).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_R3L1_LINK_06_R3L1_0 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (6)(0).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (6)(0).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (6)(0).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_06_R3L1_1 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (6)(1).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (6)(1).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (6)(1).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_06_R3L1_2 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (6)(2).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (6)(2).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (6)(2).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_06_R3L1_3 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (6)(3).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (6)(3).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (6)(3).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_0 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (7)(0).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (7)(0).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (7)(0).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (7)(0).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (7)(0).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (7)(0).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (7)(0).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (7)(0).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (7)(0).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (7)(0).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_0 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(7)(0).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(7)(0).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(7)(0).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(7)(0).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_0 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(7)(0).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(7)(0).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(7)(0).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(7)(0).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_0 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(7)(0).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(7)(0).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(7)(0).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(7)(0).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_0 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(7)(0).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(7)(0).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(7)(0).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(7)(0).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_0 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(7)(0).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(7)(0).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(7)(0).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(7)(0).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_1 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (7)(1).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (7)(1).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (7)(1).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (7)(1).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (7)(1).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (7)(1).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (7)(1).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (7)(1).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (7)(1).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (7)(1).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_1 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(7)(1).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(7)(1).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(7)(1).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(7)(1).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_1 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(7)(1).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(7)(1).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(7)(1).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(7)(1).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_1 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(7)(1).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(7)(1).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(7)(1).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(7)(1).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_1 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(7)(1).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(7)(1).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(7)(1).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(7)(1).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_1 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(7)(1).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(7)(1).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(7)(1).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(7)(1).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_2 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (7)(2).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (7)(2).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (7)(2).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (7)(2).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (7)(2).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (7)(2).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (7)(2).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (7)(2).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (7)(2).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (7)(2).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_2 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(7)(2).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(7)(2).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(7)(2).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(7)(2).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_2 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(7)(2).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(7)(2).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(7)(2).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(7)(2).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_2 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(7)(2).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(7)(2).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(7)(2).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(7)(2).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_2 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(7)(2).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(7)(2).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(7)(2).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(7)(2).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_2 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(7)(2).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(7)(2).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(7)(2).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(7)(2).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_3 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (7)(3).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (7)(3).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (7)(3).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (7)(3).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (7)(3).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (7)(3).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (7)(3).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (7)(3).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (7)(3).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (7)(3).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_3 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(7)(3).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(7)(3).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(7)(3).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(7)(3).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_3 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(7)(3).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(7)(3).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(7)(3).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(7)(3).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_3 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(7)(3).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(7)(3).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(7)(3).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(7)(3).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_3 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(7)(3).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(7)(3).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(7)(3).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(7)(3).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_3 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(7)(3).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(7)(3).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(7)(3).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(7)(3).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_R3L1_LINK_07_R3L1_0 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (7)(0).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (7)(0).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (7)(0).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_07_R3L1_1 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (7)(1).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (7)(1).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (7)(1).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_07_R3L1_2 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (7)(2).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (7)(2).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (7)(2).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_07_R3L1_3 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (7)(3).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (7)(3).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (7)(3).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_0 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (8)(0).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (8)(0).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (8)(0).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (8)(0).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (8)(0).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (8)(0).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (8)(0).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (8)(0).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (8)(0).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (8)(0).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_0 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(8)(0).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(8)(0).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(8)(0).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(8)(0).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_0 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(8)(0).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(8)(0).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(8)(0).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(8)(0).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_0 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(8)(0).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(8)(0).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(8)(0).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(8)(0).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_0 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(8)(0).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(8)(0).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(8)(0).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(8)(0).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_0 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(8)(0).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(8)(0).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(8)(0).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(8)(0).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_1 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (8)(1).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (8)(1).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (8)(1).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (8)(1).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (8)(1).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (8)(1).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (8)(1).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (8)(1).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (8)(1).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (8)(1).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_1 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(8)(1).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(8)(1).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(8)(1).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(8)(1).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_1 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(8)(1).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(8)(1).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(8)(1).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(8)(1).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_1 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(8)(1).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(8)(1).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(8)(1).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(8)(1).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_1 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(8)(1).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(8)(1).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(8)(1).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(8)(1).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_1 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(8)(1).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(8)(1).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(8)(1).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(8)(1).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_2 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (8)(2).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (8)(2).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (8)(2).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (8)(2).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (8)(2).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (8)(2).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (8)(2).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (8)(2).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (8)(2).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (8)(2).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_2 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(8)(2).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(8)(2).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(8)(2).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(8)(2).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_2 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(8)(2).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(8)(2).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(8)(2).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(8)(2).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_2 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(8)(2).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(8)(2).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(8)(2).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(8)(2).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_2 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(8)(2).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(8)(2).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(8)(2).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(8)(2).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_2 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(8)(2).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(8)(2).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(8)(2).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(8)(2).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_3 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (8)(3).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (8)(3).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (8)(3).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (8)(3).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (8)(3).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (8)(3).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (8)(3).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (8)(3).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (8)(3).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (8)(3).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_3 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(8)(3).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(8)(3).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(8)(3).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(8)(3).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_3 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(8)(3).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(8)(3).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(8)(3).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(8)(3).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_3 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(8)(3).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(8)(3).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(8)(3).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(8)(3).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_3 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(8)(3).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(8)(3).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(8)(3).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(8)(3).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_3 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(8)(3).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(8)(3).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(8)(3).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(8)(3).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_R3L1_LINK_08_R3L1_0 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (8)(0).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (8)(0).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (8)(0).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_08_R3L1_1 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (8)(1).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (8)(1).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (8)(1).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_08_R3L1_2 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (8)(2).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (8)(2).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (8)(2).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_08_R3L1_3 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (8)(3).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (8)(3).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (8)(3).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_0 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (9)(0).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (9)(0).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (9)(0).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (9)(0).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (9)(0).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (9)(0).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (9)(0).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (9)(0).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (9)(0).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (9)(0).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_0 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(9)(0).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(9)(0).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(9)(0).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(9)(0).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_0 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(9)(0).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(9)(0).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(9)(0).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(9)(0).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_0 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(9)(0).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(9)(0).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(9)(0).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(9)(0).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_0 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(9)(0).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(9)(0).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(9)(0).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(9)(0).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_0 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(9)(0).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(9)(0).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(9)(0).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(9)(0).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_1 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (9)(1).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (9)(1).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (9)(1).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (9)(1).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (9)(1).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (9)(1).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (9)(1).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (9)(1).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (9)(1).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (9)(1).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_1 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(9)(1).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(9)(1).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(9)(1).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(9)(1).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_1 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(9)(1).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(9)(1).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(9)(1).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(9)(1).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_1 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(9)(1).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(9)(1).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(9)(1).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(9)(1).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_1 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(9)(1).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(9)(1).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(9)(1).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(9)(1).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_1 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(9)(1).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(9)(1).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(9)(1).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(9)(1).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_2 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (9)(2).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (9)(2).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (9)(2).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (9)(2).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (9)(2).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (9)(2).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (9)(2).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (9)(2).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (9)(2).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (9)(2).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_2 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(9)(2).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(9)(2).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(9)(2).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(9)(2).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_2 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(9)(2).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(9)(2).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(9)(2).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(9)(2).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_2 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(9)(2).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(9)(2).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(9)(2).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(9)(2).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_2 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(9)(2).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(9)(2).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(9)(2).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(9)(2).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_2 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(9)(2).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(9)(2).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(9)(2).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(9)(2).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_3 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (9)(3).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (9)(3).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (9)(3).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (9)(3).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (9)(3).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (9)(3).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (9)(3).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (9)(3).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (9)(3).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (9)(3).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_3 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(9)(3).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(9)(3).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(9)(3).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(9)(3).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_3 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(9)(3).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(9)(3).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(9)(3).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(9)(3).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_3 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(9)(3).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(9)(3).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(9)(3).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(9)(3).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_3 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(9)(3).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(9)(3).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(9)(3).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(9)(3).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_3 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(9)(3).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(9)(3).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(9)(3).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(9)(3).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_R3L1_LINK_09_R3L1_0 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (9)(0).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (9)(0).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (9)(0).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_09_R3L1_1 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (9)(1).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (9)(1).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (9)(1).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_09_R3L1_2 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (9)(2).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (9)(2).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (9)(2).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_09_R3L1_3 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (9)(3).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (9)(3).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (9)(3).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_0 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (10)(0).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (10)(0).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (10)(0).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (10)(0).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (10)(0).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (10)(0).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (10)(0).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (10)(0).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (10)(0).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (10)(0).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_0 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(10)(0).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(10)(0).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(10)(0).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(10)(0).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_0 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(10)(0).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(10)(0).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(10)(0).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(10)(0).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_0 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(10)(0).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(10)(0).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(10)(0).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(10)(0).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_0 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(10)(0).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(10)(0).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(10)(0).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(10)(0).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_0 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(10)(0).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(10)(0).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(10)(0).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(10)(0).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_1 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (10)(1).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (10)(1).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (10)(1).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (10)(1).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (10)(1).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (10)(1).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (10)(1).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (10)(1).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (10)(1).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (10)(1).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_1 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(10)(1).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(10)(1).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(10)(1).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(10)(1).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_1 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(10)(1).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(10)(1).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(10)(1).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(10)(1).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_1 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(10)(1).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(10)(1).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(10)(1).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(10)(1).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_1 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(10)(1).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(10)(1).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(10)(1).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(10)(1).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_1 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(10)(1).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(10)(1).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(10)(1).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(10)(1).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_2 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (10)(2).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (10)(2).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (10)(2).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (10)(2).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (10)(2).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (10)(2).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (10)(2).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (10)(2).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (10)(2).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (10)(2).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_2 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(10)(2).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(10)(2).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(10)(2).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(10)(2).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_2 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(10)(2).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(10)(2).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(10)(2).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(10)(2).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_2 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(10)(2).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(10)(2).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(10)(2).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(10)(2).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_2 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(10)(2).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(10)(2).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(10)(2).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(10)(2).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_2 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(10)(2).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(10)(2).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(10)(2).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(10)(2).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_3 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (10)(3).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (10)(3).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (10)(3).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (10)(3).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (10)(3).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (10)(3).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (10)(3).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (10)(3).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (10)(3).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (10)(3).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_3 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(10)(3).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(10)(3).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(10)(3).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(10)(3).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_3 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(10)(3).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(10)(3).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(10)(3).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(10)(3).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_3 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(10)(3).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(10)(3).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(10)(3).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(10)(3).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_3 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(10)(3).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(10)(3).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(10)(3).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(10)(3).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_3 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(10)(3).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(10)(3).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(10)(3).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(10)(3).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_R3L1_LINK_10_R3L1_0 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (10)(0).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (10)(0).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (10)(0).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_10_R3L1_1 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (10)(1).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (10)(1).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (10)(1).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_10_R3L1_2 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (10)(2).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (10)(2).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (10)(2).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_10_R3L1_3 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (10)(3).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (10)(3).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (10)(3).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_0 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (11)(0).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (11)(0).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (11)(0).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (11)(0).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (11)(0).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (11)(0).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (11)(0).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (11)(0).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (11)(0).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (11)(0).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_0 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(11)(0).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(11)(0).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(11)(0).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(11)(0).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_0 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(11)(0).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(11)(0).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(11)(0).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(11)(0).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_0 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(11)(0).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(11)(0).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(11)(0).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(11)(0).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_0 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(11)(0).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(11)(0).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(11)(0).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(11)(0).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_0 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(11)(0).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(11)(0).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(11)(0).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(11)(0).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_1 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (11)(1).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (11)(1).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (11)(1).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (11)(1).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (11)(1).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (11)(1).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (11)(1).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (11)(1).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (11)(1).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (11)(1).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_1 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(11)(1).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(11)(1).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(11)(1).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(11)(1).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_1 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(11)(1).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(11)(1).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(11)(1).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(11)(1).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_1 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(11)(1).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(11)(1).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(11)(1).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(11)(1).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_1 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(11)(1).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(11)(1).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(11)(1).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(11)(1).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_1 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(11)(1).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(11)(1).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(11)(1).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(11)(1).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_2 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (11)(2).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (11)(2).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (11)(2).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (11)(2).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (11)(2).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (11)(2).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (11)(2).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (11)(2).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (11)(2).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (11)(2).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_2 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(11)(2).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(11)(2).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(11)(2).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(11)(2).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_2 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(11)(2).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(11)(2).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(11)(2).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(11)(2).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_2 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(11)(2).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(11)(2).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(11)(2).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(11)(2).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_2 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(11)(2).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(11)(2).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(11)(2).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(11)(2).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_2 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(11)(2).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(11)(2).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(11)(2).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(11)(2).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_3 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (11)(3).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs - register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (11)(3).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (11)(3).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal - register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (11)(3).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (11)(3).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames - register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (11)(3).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (11)(3).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (11)(3).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals - register_read_data_25_s(1 downto 1) <= register_map_control_s.LCB_CTRL (11)(3).TRICKLE_TRIG_PULSE; -- writing to this register issues a single trickle trigger - register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (11)(3).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_3 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(11)(3).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(11)(3).WRITE_PTR; -- Trickle configuration memory write pointer - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(11)(3).VALID_DATA_START; -- Start address of trickle configuration in trickle memory - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(11)(3).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_3 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(11)(3).HCC_MASK; -- HCC* module mask - - register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(11)(3).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(11)(3).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(11)(3).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_3 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(11)(3).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(11)(3).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(11)(3).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(11)(3).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_3 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(11)(3).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(11)(3).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(11)(3).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(11)(3).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_3 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(11)(3).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(11)(3).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(11)(3).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(11)(3).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - end if; - when REG_CR_ITK_R3L1_LINK_11_R3L1_0 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (11)(0).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (11)(0).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (11)(0).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_11_R3L1_1 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (11)(1).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (11)(1).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (11)(1).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_11_R3L1_2 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (11)(2).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (11)(2).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (11)(2).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_11_R3L1_3 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (11)(3).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal - register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (11)(3).L1_ENABLE; -- enables sending TTC L1 signals to the front-end - register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (11)(3).R3_ENABLE; -- enables sending RoI R3 signals to the front-end - end if; - when REG_MROD_CTRL => - if MROD_GENERATE_REGS = true then - register_read_data_25_s(15 downto 4) <= register_map_control_s.MROD_CTRL.OPTIONS; -- Extra options for MROD - register_read_data_25_s(3 downto 0) <= register_map_control_s.MROD_CTRL.GOLTESTMODE; -- GOL Test Mode (emulate CSM): - -- 0: Run Data Emulator when 1; 0: stop, load emulator fifo - -- 1: Enable Circulate when 1; 0: send fifo data only once - -- 2: Enable Triggered Mode when 1; 0: run continueously (no TTC) - -- 3: Enable pattern generator when 1; 0: off - - end if; - when REG_MROD_EP0_CSMENABLE => - if MROD_GENERATE_REGS = true then - register_read_data_25_s(23 downto 0) <= register_map_control_s.MROD_EP0_CSMENABLE; -- EP0 CSM Data Enable channel 23-0 - end if; - when REG_MROD_EP0_EMPTYSUPPR => - if MROD_GENERATE_REGS = true then - register_read_data_25_s(23 downto 0) <= register_map_control_s.MROD_EP0_EMPTYSUPPR; -- EP0 Set Empty Suppression channel 23-0 - end if; - when REG_MROD_EP0_HPTDCMODE => - if MROD_GENERATE_REGS = true then - register_read_data_25_s(23 downto 0) <= register_map_control_s.MROD_EP0_HPTDCMODE; -- EP0 Set HPTDC Mode channel 23-0 - end if; - when REG_MROD_EP0_CLRFIFOS => - if MROD_GENERATE_REGS = true then - register_read_data_25_s(23 downto 0) <= register_map_control_s.MROD_EP0_CLRFIFOS; -- EP0 Clear FIFOs channel 23-0 - end if; - when REG_MROD_EP0_EMULOADENA => - if MROD_GENERATE_REGS = true then - register_read_data_25_s(23 downto 0) <= register_map_control_s.MROD_EP0_EMULOADENA; -- EP0 Emulator Load Enable channel 23-0 - end if; - when REG_MROD_EP0_TRXLOOPBACK => - if MROD_GENERATE_REGS = true then - register_read_data_25_s(23 downto 0) <= register_map_control_s.MROD_EP0_TRXLOOPBACK; -- EP0 Transceiver Loopback Enable channel 23-0 - end if; - when REG_MROD_EP0_TXCVRRESET => - if MROD_GENERATE_REGS = true then - register_read_data_25_s(23 downto 0) <= register_map_control_s.MROD_EP0_TXCVRRESET; -- EP0 Transceiver Reset all channel 23-0 - end if; - when REG_MROD_EP0_RXRESET => - if MROD_GENERATE_REGS = true then - register_read_data_25_s(23 downto 0) <= register_map_control_s.MROD_EP0_RXRESET; -- EP0 Receiver Reset channel 23-0 - end if; - when REG_MROD_EP0_TXRESET => - if MROD_GENERATE_REGS = true then - register_read_data_25_s(23 downto 0) <= register_map_control_s.MROD_EP0_TXRESET; -- EP0 Transmitter Reset channel 23-0 - end if; - when REG_MROD_EP1_CSMENABLE => - if MROD_GENERATE_REGS = true then - register_read_data_25_s(23 downto 0) <= register_map_control_s.MROD_EP1_CSMENABLE; -- EP1 CSM Data Enable channel 23-0 - end if; - when REG_MROD_EP1_EMPTYSUPPR => - if MROD_GENERATE_REGS = true then - register_read_data_25_s(23 downto 0) <= register_map_control_s.MROD_EP1_EMPTYSUPPR; -- EP1 Set Empty Suppression channel 23-0 - end if; - when REG_MROD_EP1_HPTDCMODE => - if MROD_GENERATE_REGS = true then - register_read_data_25_s(23 downto 0) <= register_map_control_s.MROD_EP1_HPTDCMODE; -- EP1 Set HPTDC Mode channel 23-0 - end if; - when REG_MROD_EP1_CLRFIFOS => - if MROD_GENERATE_REGS = true then - register_read_data_25_s(23 downto 0) <= register_map_control_s.MROD_EP1_CLRFIFOS; -- EP1 Clear FIFOs channel 23-0 - end if; - when REG_MROD_EP1_EMULOADENA => - if MROD_GENERATE_REGS = true then - register_read_data_25_s(23 downto 0) <= register_map_control_s.MROD_EP1_EMULOADENA; -- EP1 Emulator Load Enable channel 23-0 - end if; - when REG_MROD_EP1_TRXLOOPBACK => - if MROD_GENERATE_REGS = true then - register_read_data_25_s(23 downto 0) <= register_map_control_s.MROD_EP1_TRXLOOPBACK; -- EP1 Transceiver Loopback Enable channel 23-0 - end if; - when REG_MROD_EP1_TXCVRRESET => - if MROD_GENERATE_REGS = true then - register_read_data_25_s(23 downto 0) <= register_map_control_s.MROD_EP1_TXCVRRESET; -- EP1 Transceiver Reset all channel 23-0 - end if; - when REG_MROD_EP1_RXRESET => - if MROD_GENERATE_REGS = true then - register_read_data_25_s(23 downto 0) <= register_map_control_s.MROD_EP1_RXRESET; -- EP1 Receiver Reset channel 23-0 - end if; - when REG_MROD_EP1_TXRESET => - if MROD_GENERATE_REGS = true then - register_read_data_25_s(23 downto 0) <= register_map_control_s.MROD_EP1_TXRESET; -- EP1 Transmitter Reset channel 23-0 - end if; - - -- - -- Monitor registers - -- - - --- GenericBoardInformation - when REG_REG_MAP_VERSION => register_read_data_25_s(15 downto 0) <= std_logic_vector(to_unsigned(1280,16)); -- Register Map Version, 5.0 formatted as 0x0500 - when REG_BOARD_ID_TIMESTAMP => register_read_data_25_s(39 downto 0) <= BUILD_DATETIME; -- Board ID Date / Time in BCD format YYMMDDhhmm - when REG_GIT_COMMIT_TIME => register_read_data_25_s(39 downto 0) <= COMMIT_DATETIME; -- Board ID GIT Commit time of current revision, Date / Time in BCD format YYMMDDhhmm - when REG_GIT_TAG => register_read_data_25_s(63 downto 0) <= GIT_TAG(63 downto 0); -- String containing the current GIT TAG - when REG_GIT_COMMIT_NUMBER => register_read_data_25_s(31 downto 0) <= std_logic_vector(to_unsigned(GIT_COMMIT_NUMBER,32)); -- Number of GIT commits after current GIT_TAG - when REG_GIT_HASH => register_read_data_25_s(31 downto 0) <= GIT_HASH(159 downto 128); -- Short GIT hash (32 bit) - when REG_GENERIC_CONSTANTS => register_read_data_25_s(15 downto 8) <= std_logic_vector(to_unsigned(NUMBER_OF_INTERRUPTS,8)); -- Number of Interrupts - register_read_data_25_s(7 downto 0) <= std_logic_vector(to_unsigned(NUMBER_OF_DESCRIPTORS,8)); -- Number of Descriptors - when REG_NUM_OF_CHANNELS => register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_gen_board_info.NUM_OF_CHANNELS; -- Number of GBT or FULL mode Channels - when REG_CARD_TYPE => register_read_data_25_s(63 downto 0) <= std_logic_vector(to_unsigned(CARD_TYPE,64)); -- Card Type: - -- - 709 (0x2c5): FLX709, VC709 - -- - 710 (0x2c6): FLX710, HTG710 - -- - 711 (0x2c7): FLX711, BNL711 - -- - 712 (0x2c8): FLX712, BNL712 - -- - 128 (0x080): FLX128, VCU128 - - when REG_GENERATE_GBT => register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_gen_board_info.GENERATE_GBT; -- 1 when the GBT Wrapper is included in the design - when REG_OPTO_TRX_NUM => register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_gen_board_info.OPTO_TRX_NUM; -- Number of optical transceivers in the design - when REG_GENERATE_TTC_EMU => register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_gen_board_info.GENERATE_TTC_EMU; -- 1 when TTC emulator is generated - when REG_INCLUDE_EGROUP_0 => register_read_data_25_s(8 downto 8) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (0).FROMHOST_02; -- FromHost EPROC02 is included in this EGROUP - register_read_data_25_s(7 downto 7) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (0).FROMHOST_04; -- FromHost EPROC04 is included in this EGROUP - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (0).FROMHOST_08; -- FromHost EPROC8 is included in this EGROUP - register_read_data_25_s(5 downto 5) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (0).FROMHOST_HDLC; -- FromHost HDLC is included in this EGROUP - register_read_data_25_s(4 downto 4) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (0).TOHOST_02; -- ToHost EPROC02 is included in this EGROUP - register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (0).TOHOST_04; -- ToHost EPROC04 is included in this EGROUP - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (0).TOHOST_08; -- ToHost EPROC08 is included in this EGROUP - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (0).TOHOST_16; -- ToHost EPROC16 is included in this EGROUP - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (0).TOHOST_HDLC; -- ToHost HDLC is included in this EGROUP - when REG_INCLUDE_EGROUP_1 => register_read_data_25_s(8 downto 8) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (1).FROMHOST_02; -- FromHost EPROC02 is included in this EGROUP - register_read_data_25_s(7 downto 7) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (1).FROMHOST_04; -- FromHost EPROC04 is included in this EGROUP - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (1).FROMHOST_08; -- FromHost EPROC8 is included in this EGROUP - register_read_data_25_s(5 downto 5) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (1).FROMHOST_HDLC; -- FromHost HDLC is included in this EGROUP - register_read_data_25_s(4 downto 4) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (1).TOHOST_02; -- ToHost EPROC02 is included in this EGROUP - register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (1).TOHOST_04; -- ToHost EPROC04 is included in this EGROUP - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (1).TOHOST_08; -- ToHost EPROC08 is included in this EGROUP - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (1).TOHOST_16; -- ToHost EPROC16 is included in this EGROUP - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (1).TOHOST_HDLC; -- ToHost HDLC is included in this EGROUP - when REG_INCLUDE_EGROUP_2 => register_read_data_25_s(8 downto 8) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (2).FROMHOST_02; -- FromHost EPROC02 is included in this EGROUP - register_read_data_25_s(7 downto 7) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (2).FROMHOST_04; -- FromHost EPROC04 is included in this EGROUP - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (2).FROMHOST_08; -- FromHost EPROC8 is included in this EGROUP - register_read_data_25_s(5 downto 5) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (2).FROMHOST_HDLC; -- FromHost HDLC is included in this EGROUP - register_read_data_25_s(4 downto 4) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (2).TOHOST_02; -- ToHost EPROC02 is included in this EGROUP - register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (2).TOHOST_04; -- ToHost EPROC04 is included in this EGROUP - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (2).TOHOST_08; -- ToHost EPROC08 is included in this EGROUP - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (2).TOHOST_16; -- ToHost EPROC16 is included in this EGROUP - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (2).TOHOST_HDLC; -- ToHost HDLC is included in this EGROUP - when REG_INCLUDE_EGROUP_3 => register_read_data_25_s(8 downto 8) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (3).FROMHOST_02; -- FromHost EPROC02 is included in this EGROUP - register_read_data_25_s(7 downto 7) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (3).FROMHOST_04; -- FromHost EPROC04 is included in this EGROUP - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (3).FROMHOST_08; -- FromHost EPROC8 is included in this EGROUP - register_read_data_25_s(5 downto 5) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (3).FROMHOST_HDLC; -- FromHost HDLC is included in this EGROUP - register_read_data_25_s(4 downto 4) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (3).TOHOST_02; -- ToHost EPROC02 is included in this EGROUP - register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (3).TOHOST_04; -- ToHost EPROC04 is included in this EGROUP - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (3).TOHOST_08; -- ToHost EPROC08 is included in this EGROUP - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (3).TOHOST_16; -- ToHost EPROC16 is included in this EGROUP - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (3).TOHOST_HDLC; -- ToHost HDLC is included in this EGROUP - when REG_INCLUDE_EGROUP_4 => register_read_data_25_s(8 downto 8) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (4).FROMHOST_02; -- FromHost EPROC02 is included in this EGROUP - register_read_data_25_s(7 downto 7) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (4).FROMHOST_04; -- FromHost EPROC04 is included in this EGROUP - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (4).FROMHOST_08; -- FromHost EPROC8 is included in this EGROUP - register_read_data_25_s(5 downto 5) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (4).FROMHOST_HDLC; -- FromHost HDLC is included in this EGROUP - register_read_data_25_s(4 downto 4) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (4).TOHOST_02; -- ToHost EPROC02 is included in this EGROUP - register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (4).TOHOST_04; -- ToHost EPROC04 is included in this EGROUP - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (4).TOHOST_08; -- ToHost EPROC08 is included in this EGROUP - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (4).TOHOST_16; -- ToHost EPROC16 is included in this EGROUP - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (4).TOHOST_HDLC; -- ToHost HDLC is included in this EGROUP - when REG_INCLUDE_EGROUP_5 => register_read_data_25_s(8 downto 8) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (5).FROMHOST_02; -- FromHost EPROC02 is included in this EGROUP - register_read_data_25_s(7 downto 7) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (5).FROMHOST_04; -- FromHost EPROC04 is included in this EGROUP - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (5).FROMHOST_08; -- FromHost EPROC8 is included in this EGROUP - register_read_data_25_s(5 downto 5) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (5).FROMHOST_HDLC; -- FromHost HDLC is included in this EGROUP - register_read_data_25_s(4 downto 4) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (5).TOHOST_02; -- ToHost EPROC02 is included in this EGROUP - register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (5).TOHOST_04; -- ToHost EPROC04 is included in this EGROUP - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (5).TOHOST_08; -- ToHost EPROC08 is included in this EGROUP - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (5).TOHOST_16; -- ToHost EPROC16 is included in this EGROUP - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (5).TOHOST_HDLC; -- ToHost HDLC is included in this EGROUP - when REG_INCLUDE_EGROUP_6 => register_read_data_25_s(8 downto 8) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (6).FROMHOST_02; -- FromHost EPROC02 is included in this EGROUP - register_read_data_25_s(7 downto 7) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (6).FROMHOST_04; -- FromHost EPROC04 is included in this EGROUP - register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (6).FROMHOST_08; -- FromHost EPROC8 is included in this EGROUP - register_read_data_25_s(5 downto 5) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (6).FROMHOST_HDLC; -- FromHost HDLC is included in this EGROUP - register_read_data_25_s(4 downto 4) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (6).TOHOST_02; -- ToHost EPROC02 is included in this EGROUP - register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (6).TOHOST_04; -- ToHost EPROC04 is included in this EGROUP - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (6).TOHOST_08; -- ToHost EPROC08 is included in this EGROUP - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (6).TOHOST_16; -- ToHost EPROC16 is included in this EGROUP - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (6).TOHOST_HDLC; -- ToHost HDLC is included in this EGROUP - when REG_WIDE_MODE => register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_gen_board_info.WIDE_MODE; -- GBT is configured in Wide mode - when REG_FIRMWARE_MODE => register_read_data_25_s(3 downto 0) <= register_map_monitor_s.register_map_gen_board_info.FIRMWARE_MODE; -- 0: GBT mode - -- 1: FULL mode - -- 2: LTDB mode (GBT mode with only IC and TTC links) - -- 3: FEI4 mode - -- 4: ITK Pixel - -- 5: ITK Strip - -- 6: FELIG - -- 7: FULL mode emulator - -- 8: FELIX_MROD mode - -- 9: lpGBT mode - -- - - when REG_GTREFCLK_SOURCE => register_read_data_25_s(1 downto 0) <= register_map_monitor_s.register_map_gen_board_info.GTREFCLK_SOURCE; -- 0: Transceiver reference Clock source from Si5345 - -- 1: Transceiver reference Clock source from Si5324 - -- 2: Transceiver reference Clock from internal BUFG (GREFCLK) - - when REG_CR_GENERICS => register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_gen_board_info.CR_GENERICS.XOFF_INCLUDED; -- Xoff bits (usually full mode) can be generated by the FromHost Central Router - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_gen_board_info.CR_GENERICS.DIRECT_MODE_INCLUDED; -- Indicates that the Direct mode functionality was built in the Central Router - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_gen_board_info.CR_GENERICS.FROM_HOST_INCLUDED; -- Indicates that the From Host path of the Central router was included in the design - when REG_BLOCKSIZE => register_read_data_25_s(15 downto 0) <= register_map_monitor_s.register_map_gen_board_info.BLOCKSIZE; -- Number of bytes in a block - when REG_PCIE_ENDPOINT => register_read_data_25_s(0 downto 0) <= std_logic_vector(to_unsigned(PCIE_ENDPOINT, 1)); -- Indicator of the PCIe endpoint on BNL71x cards with two endpoints. 0 or 1 - when REG_CHUNK_TRAILER_32B => register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_gen_board_info.CHUNK_TRAILER_32B; -- Indicator that the chunk trailer is in the new 32-bit format - when REG_PCIE_ENDPOINTS => register_read_data_25_s(1 downto 0) <= register_map_monitor_s.register_map_gen_board_info.PCIE_ENDPOINTS; -- Number of PCIe endpoints on the card. The BNL71x cards have 2 endpoints - when REG_SUPERCHUNK_FACTOR => register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_gen_board_info.SUPERCHUNK_FACTOR; -- Number of full mode chunks glued together as one chunk - --- CRToHostControlsAndMonitors - when REG_MAX_TIMEOUT => register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_crtohost_monitor.MAX_TIMEOUT; -- Maximum allowed timeout value - --- CRFromHostControlsAndMonitors - --- DecodingControlsAndMonitors - when REG_DECODING_LINK_ALIGNED_00 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (0); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used - when REG_DECODING_LINK_ALIGNED_01 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (1); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used - when REG_DECODING_LINK_ALIGNED_02 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (2); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used - when REG_DECODING_LINK_ALIGNED_03 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (3); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used - when REG_DECODING_LINK_ALIGNED_04 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (4); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used - when REG_DECODING_LINK_ALIGNED_05 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (5); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used - when REG_DECODING_LINK_ALIGNED_06 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (6); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used - when REG_DECODING_LINK_ALIGNED_07 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (7); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used - when REG_DECODING_LINK_ALIGNED_08 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (8); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used - when REG_DECODING_LINK_ALIGNED_09 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (9); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used - when REG_DECODING_LINK_ALIGNED_10 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (10); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used - when REG_DECODING_LINK_ALIGNED_11 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (11); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used - when REG_DECODING_LINK_ALIGNED_12 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (12); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used - when REG_DECODING_LINK_ALIGNED_13 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (13); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used - when REG_DECODING_LINK_ALIGNED_14 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (14); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used - when REG_DECODING_LINK_ALIGNED_15 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (15); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used - when REG_DECODING_LINK_ALIGNED_16 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (16); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used - when REG_DECODING_LINK_ALIGNED_17 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (17); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used - when REG_DECODING_LINK_ALIGNED_18 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (18); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used - when REG_DECODING_LINK_ALIGNED_19 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (19); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used - when REG_DECODING_LINK_ALIGNED_20 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (20); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used - when REG_DECODING_LINK_ALIGNED_21 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (21); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used - when REG_DECODING_LINK_ALIGNED_22 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (22); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used - when REG_DECODING_LINK_ALIGNED_23 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (23); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used - when REG_RD53B_PROCESSOR_00 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (0).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (0).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (0).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (0).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_01 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (1).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (1).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (1).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (1).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_02 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (2).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (2).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (2).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (2).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_03 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (3).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (3).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (3).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (3).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_04 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (4).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (4).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (4).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (4).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_05 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (5).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (5).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (5).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (5).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_06 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (6).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (6).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (6).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (6).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_07 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (7).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (7).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (7).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (7).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_08 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (8).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (8).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (8).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (8).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_09 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (9).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (9).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (9).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (9).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_10 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (10).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (10).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (10).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (10).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_11 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (11).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (11).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (11).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (11).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_12 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (12).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (12).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (12).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (12).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_13 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (13).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (13).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (13).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (13).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_14 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (14).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (14).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (14).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (14).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_15 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (15).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (15).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (15).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (15).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_16 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (16).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (16).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (16).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (16).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_17 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (17).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (17).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (17).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (17).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_18 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (18).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (18).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (18).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (18).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_19 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (19).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (19).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (19).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (19).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_20 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (20).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (20).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (20).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (20).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_21 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (21).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (21).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (21).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (21).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_22 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (22).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (22).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (22).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (22).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_23 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (23).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (23).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (23).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (23).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_24 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (24).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (24).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (24).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (24).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_25 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (25).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (25).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (25).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (25).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_26 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (26).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (26).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (26).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (26).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_27 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (27).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (27).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (27).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (27).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_28 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (28).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (28).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (28).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (28).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_29 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (29).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (29).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (29).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (29).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_30 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (30).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (30).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (30).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (30).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_31 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (31).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (31).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (31).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (31).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_32 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (32).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (32).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (32).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (32).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_33 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (33).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (33).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (33).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (33).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_34 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (34).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (34).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (34).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (34).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_35 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (35).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (35).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (35).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (35).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_36 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (36).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (36).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (36).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (36).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_37 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (37).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (37).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (37).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (37).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_38 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (38).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (38).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (38).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (38).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_39 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (39).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (39).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (39).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (39).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_40 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (40).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (40).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (40).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (40).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_41 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (41).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (41).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (41).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (41).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_42 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (42).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (42).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (42).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (42).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_43 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (43).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (43).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (43).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (43).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_44 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (44).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (44).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (44).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (44).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_45 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (45).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (45).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (45).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (45).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_46 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (46).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (46).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (46).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (46).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_47 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (47).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (47).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (47).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (47).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_48 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (48).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (48).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (48).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (48).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_49 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (49).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (49).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (49).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (49).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_50 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (50).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (50).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (50).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (50).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_51 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (51).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (51).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (51).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (51).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_52 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (52).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (52).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (52).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (52).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_53 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (53).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (53).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (53).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (53).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_54 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (54).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (54).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (54).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (54).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_55 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (55).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (55).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (55).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (55).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_56 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (56).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (56).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (56).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (56).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_57 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (57).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (57).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (57).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (57).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_58 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (58).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (58).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (58).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (58).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_59 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (59).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (59).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (59).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (59).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_60 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (60).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (60).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (60).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (60).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_61 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (61).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (61).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (61).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (61).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_62 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (62).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (62).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (62).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (62).DROP_TOT; -- Decoding block - when REG_RD53B_PROCESSOR_63 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (63).ENABLE_MULTICHIP; -- Decoding block - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (63).ENABLE_BINARYTREE; -- Decoding block - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (63).ENABLE_TOT; -- Decoding block - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (63).DROP_TOT; -- Decoding block - --- EncodingControlsAndMonitors - --- FrontendEmulatorControlsAndMonitors - --- LinkWrapperMonitors - when REG_GBT_VERSION => register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_link_monitor.GBT_VERSION.DATE; -- Date - register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_link_monitor.GBT_VERSION.GBT_VERSION; -- GBT Version - register_read_data_25_s(31 downto 16) <= register_map_monitor_s.register_map_link_monitor.GBT_VERSION.GTH_IP_VERSION; -- GTH IP Version - register_read_data_25_s(15 downto 3) <= register_map_monitor_s.register_map_link_monitor.GBT_VERSION.RESERVED; -- Reserved - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_link_monitor.GBT_VERSION.GTHREFCLK_SEL; -- GTHREFCLK SEL - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_link_monitor.GBT_VERSION.RX_CLK_SEL; -- RX CLK SEL - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_VERSION.PLL_SEL; -- PLL SEL - when REG_GBT_TXRESET_DONE => register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_TXRESET_DONE; -- TX Reset done [47:0] - when REG_GBT_RXRESET_DONE => register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_RXRESET_DONE; -- RX Reset done [47:0] - when REG_GBT_TXFSMRESET_DONE => register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_TXFSMRESET_DONE; -- TX FSM Reset done [47:0] - when REG_GBT_RXFSMRESET_DONE => register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_RXFSMRESET_DONE; -- RX FSM Reset done [47:0] - when REG_GBT_CPLL_FBCLK_LOST => register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_CPLL_FBCLK_LOST; -- CPLL FBCLK LOST [47:0] - when REG_GBT_PLL_LOCK => register_read_data_25_s(59 downto 48) <= register_map_monitor_s.register_map_link_monitor.GBT_PLL_LOCK.QPLL_LOCK; -- QPLL LOCK [11:0] - register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_PLL_LOCK.CPLL_LOCK; -- CPLL LOCK [47:0] - when REG_GBT_RXCDR_LOCK => register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_RXCDR_LOCK; -- RX CDR LOCK [47:0] - when REG_GBT_CLK_SAMPLED => register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_CLK_SAMPLED; -- clk sampled [47:0] - when REG_GBT_RX_IS_HEADER => - if GBT_GENERATE_ALL_REGS then - register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_RX_IS_HEADER; -- RX IS HEADER [47:0] - end if; - when REG_GBT_RX_IS_DATA => - if GBT_GENERATE_ALL_REGS then - register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_RX_IS_DATA; -- RX IS DATA [47:0] - end if; - when REG_GBT_RX_HEADER_FOUND => - if GBT_GENERATE_ALL_REGS then - register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_RX_HEADER_FOUND; -- RX HEADER FOUND [47:0] - end if; - when REG_GBT_ALIGNMENT_DONE => register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_ALIGNMENT_DONE; -- RX ALIGNMENT DONE [47:0] - when REG_GBT_OUT_MUX_STATUS => register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_OUT_MUX_STATUS; -- GBT output mux status [47:0] - when REG_GBT_ERROR => register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_ERROR; -- Error flags [47:0] - when REG_GBT_GBT_TOPBOT_C => - if GBT_GENERATE_ALL_REGS then - register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_GBT_TOPBOT_C; -- TopBot_c [47:0] - end if; - when REG_GBT_FM_RX_DISP_ERROR1 => register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_FM_RX_DISP_ERROR1; -- Rx disparity error [47:0] - when REG_GBT_FM_RX_DISP_ERROR2 => register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_FM_RX_DISP_ERROR2; -- Rx disparity error [96:48] - when REG_GBT_FM_RX_NOTINTABLE1 => register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_FM_RX_NOTINTABLE1; -- Rx not in table [47:0] - when REG_GBT_FM_RX_NOTINTABLE2 => register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_FM_RX_NOTINTABLE2; -- Rx not in table [96:48] - --- TTCBUSYControlsAndMonitors - when REG_TTC_DEC_MON => register_read_data_25_s(15 downto 5) <= register_map_monitor_s.register_map_ttc_monitor.TTC_DEC_MON.TH_FF_COUNT; -- ToHostData Fifo counts - register_read_data_25_s(4 downto 4) <= register_map_monitor_s.register_map_ttc_monitor.TTC_DEC_MON.TH_FF_FULL; -- ToHostData Fifo status 1:full 0:not full - register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_ttc_monitor.TTC_DEC_MON.TH_FF_EMPTY; -- ToHostData Fifo status 1:empty 0:not empty - register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_DEC_MON.TTC_BIT_ERR; -- double bit, single bit and comm error in TTC data - when REG_TTC_BUSY_ACCEPTED00 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (0); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR - when REG_TTC_BUSY_ACCEPTED01 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (1); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR - when REG_TTC_BUSY_ACCEPTED02 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (2); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR - when REG_TTC_BUSY_ACCEPTED03 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (3); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR - when REG_TTC_BUSY_ACCEPTED04 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (4); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR - when REG_TTC_BUSY_ACCEPTED05 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (5); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR - when REG_TTC_BUSY_ACCEPTED06 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (6); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR - when REG_TTC_BUSY_ACCEPTED07 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (7); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR - when REG_TTC_BUSY_ACCEPTED08 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (8); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR - when REG_TTC_BUSY_ACCEPTED09 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (9); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR - when REG_TTC_BUSY_ACCEPTED10 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (10); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR - when REG_TTC_BUSY_ACCEPTED11 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (11); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR - when REG_TTC_BUSY_ACCEPTED12 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (12); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR - when REG_TTC_BUSY_ACCEPTED13 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (13); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR - when REG_TTC_BUSY_ACCEPTED14 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (14); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR - when REG_TTC_BUSY_ACCEPTED15 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (15); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR - when REG_TTC_BUSY_ACCEPTED16 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (16); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR - when REG_TTC_BUSY_ACCEPTED17 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (17); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR - when REG_TTC_BUSY_ACCEPTED18 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (18); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR - when REG_TTC_BUSY_ACCEPTED19 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (19); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR - when REG_TTC_BUSY_ACCEPTED20 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (20); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR - when REG_TTC_BUSY_ACCEPTED21 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (21); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR - when REG_TTC_BUSY_ACCEPTED22 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (22); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR - when REG_TTC_BUSY_ACCEPTED23 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (23); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR - when REG_TTC_L1ID_MONITOR => register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_L1ID_MONITOR; -- Monitor L1ID and XL1ID. - --- XOFF_BUSYControlsAndMonitors - when REG_XOFF_FM_LOW_THRESH_CROSSED => register_read_data_25_s(23 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_FM_LOW_THRESH_CROSSED; -- FIFO filled beyond the low threshold, 1 bit per channel - when REG_XOFF_PEAK_DURATION00 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (0); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset - when REG_XOFF_TOTAL_DURATION00 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (0); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset - when REG_XOFF_COUNT00 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (0); -- Total number of XOFF events per channel that occurred since a reset. - when REG_XOFF_PEAK_DURATION01 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (1); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset - when REG_XOFF_TOTAL_DURATION01 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (1); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset - when REG_XOFF_COUNT01 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (1); -- Total number of XOFF events per channel that occurred since a reset. - when REG_XOFF_PEAK_DURATION02 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (2); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset - when REG_XOFF_TOTAL_DURATION02 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (2); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset - when REG_XOFF_COUNT02 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (2); -- Total number of XOFF events per channel that occurred since a reset. - when REG_XOFF_PEAK_DURATION03 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (3); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset - when REG_XOFF_TOTAL_DURATION03 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (3); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset - when REG_XOFF_COUNT03 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (3); -- Total number of XOFF events per channel that occurred since a reset. - when REG_XOFF_PEAK_DURATION04 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (4); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset - when REG_XOFF_TOTAL_DURATION04 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (4); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset - when REG_XOFF_COUNT04 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (4); -- Total number of XOFF events per channel that occurred since a reset. - when REG_XOFF_PEAK_DURATION05 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (5); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset - when REG_XOFF_TOTAL_DURATION05 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (5); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset - when REG_XOFF_COUNT05 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (5); -- Total number of XOFF events per channel that occurred since a reset. - when REG_XOFF_PEAK_DURATION06 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (6); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset - when REG_XOFF_TOTAL_DURATION06 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (6); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset - when REG_XOFF_COUNT06 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (6); -- Total number of XOFF events per channel that occurred since a reset. - when REG_XOFF_PEAK_DURATION07 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (7); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset - when REG_XOFF_TOTAL_DURATION07 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (7); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset - when REG_XOFF_COUNT07 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (7); -- Total number of XOFF events per channel that occurred since a reset. - when REG_XOFF_PEAK_DURATION08 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (8); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset - when REG_XOFF_TOTAL_DURATION08 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (8); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset - when REG_XOFF_COUNT08 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (8); -- Total number of XOFF events per channel that occurred since a reset. - when REG_XOFF_PEAK_DURATION09 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (9); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset - when REG_XOFF_TOTAL_DURATION09 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (9); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset - when REG_XOFF_COUNT09 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (9); -- Total number of XOFF events per channel that occurred since a reset. - when REG_XOFF_PEAK_DURATION10 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (10); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset - when REG_XOFF_TOTAL_DURATION10 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (10); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset - when REG_XOFF_COUNT10 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (10); -- Total number of XOFF events per channel that occurred since a reset. - when REG_XOFF_PEAK_DURATION11 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (11); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset - when REG_XOFF_TOTAL_DURATION11 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (11); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset - when REG_XOFF_COUNT11 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (11); -- Total number of XOFF events per channel that occurred since a reset. - when REG_XOFF_PEAK_DURATION12 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (12); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset - when REG_XOFF_TOTAL_DURATION12 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (12); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset - when REG_XOFF_COUNT12 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (12); -- Total number of XOFF events per channel that occurred since a reset. - when REG_XOFF_PEAK_DURATION13 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (13); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset - when REG_XOFF_TOTAL_DURATION13 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (13); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset - when REG_XOFF_COUNT13 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (13); -- Total number of XOFF events per channel that occurred since a reset. - when REG_XOFF_PEAK_DURATION14 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (14); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset - when REG_XOFF_TOTAL_DURATION14 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (14); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset - when REG_XOFF_COUNT14 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (14); -- Total number of XOFF events per channel that occurred since a reset. - when REG_XOFF_PEAK_DURATION15 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (15); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset - when REG_XOFF_TOTAL_DURATION15 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (15); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset - when REG_XOFF_COUNT15 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (15); -- Total number of XOFF events per channel that occurred since a reset. - when REG_XOFF_PEAK_DURATION16 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (16); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset - when REG_XOFF_TOTAL_DURATION16 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (16); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset - when REG_XOFF_COUNT16 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (16); -- Total number of XOFF events per channel that occurred since a reset. - when REG_XOFF_PEAK_DURATION17 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (17); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset - when REG_XOFF_TOTAL_DURATION17 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (17); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset - when REG_XOFF_COUNT17 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (17); -- Total number of XOFF events per channel that occurred since a reset. - when REG_XOFF_PEAK_DURATION18 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (18); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset - when REG_XOFF_TOTAL_DURATION18 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (18); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset - when REG_XOFF_COUNT18 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (18); -- Total number of XOFF events per channel that occurred since a reset. - when REG_XOFF_PEAK_DURATION19 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (19); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset - when REG_XOFF_TOTAL_DURATION19 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (19); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset - when REG_XOFF_COUNT19 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (19); -- Total number of XOFF events per channel that occurred since a reset. - when REG_XOFF_PEAK_DURATION20 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (20); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset - when REG_XOFF_TOTAL_DURATION20 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (20); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset - when REG_XOFF_COUNT20 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (20); -- Total number of XOFF events per channel that occurred since a reset. - when REG_XOFF_PEAK_DURATION21 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (21); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset - when REG_XOFF_TOTAL_DURATION21 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (21); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset - when REG_XOFF_COUNT21 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (21); -- Total number of XOFF events per channel that occurred since a reset. - when REG_XOFF_PEAK_DURATION22 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (22); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset - when REG_XOFF_TOTAL_DURATION22 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (22); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset - when REG_XOFF_COUNT22 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (22); -- Total number of XOFF events per channel that occurred since a reset. - when REG_XOFF_PEAK_DURATION23 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (23); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset - when REG_XOFF_TOTAL_DURATION23 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (23); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset - when REG_XOFF_COUNT23 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (23); -- Total number of XOFF events per channel that occurred since a reset. - --- HouseKeepingControlsAndMonitors - when REG_LMK_LOCKED => register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_hk_monitor.LMK_LOCKED; -- LMK Chip on BNL-711 locked - when REG_FPGA_CORE_TEMP => register_read_data_25_s(11 downto 0) <= register_map_monitor_s.register_map_hk_monitor.FPGA_CORE_TEMP; -- XADC temperature monitor for the FPGA CORE - -- for FLX709, FLX710 - -- temp (C)= ((FPGA_CORE_TEMP* 503.975)/4096)-273.15 - -- for FLX711 - -- temp (C)= ((FPGA_CORE_TEMP* 502.9098)/4096)-273.8195 - - when REG_FPGA_CORE_VCCINT => register_read_data_25_s(11 downto 0) <= register_map_monitor_s.register_map_hk_monitor.FPGA_CORE_VCCINT; -- XADC voltage measurement VCCINT = (FPGA_CORE_VCCINT *3.0)/4096 - when REG_FPGA_CORE_VCCAUX => register_read_data_25_s(11 downto 0) <= register_map_monitor_s.register_map_hk_monitor.FPGA_CORE_VCCAUX; -- XADC voltage measurement VCCAUX = (FPGA_CORE_VCCAUX *3.0)/4096 - when REG_FPGA_CORE_VCCBRAM => register_read_data_25_s(11 downto 0) <= register_map_monitor_s.register_map_hk_monitor.FPGA_CORE_VCCBRAM; -- XADC voltage measurement VCCBRAM = (FPGA_CORE_VCCBRAM *3.0)/4096 - when REG_FPGA_DNA => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_hk_monitor.FPGA_DNA; -- Unique identifier of the FPGA - when REG_CONFIG_FLASH_RD => register_read_data_25_s(19 downto 18) <= register_map_monitor_s.register_map_hk_monitor.CONFIG_FLASH_RD.PAR_RD; -- Show which Flash partition is selected. - register_read_data_25_s(17 downto 17) <= register_map_monitor_s.register_map_hk_monitor.CONFIG_FLASH_RD.FLASH_REQ_DONE; -- Request done - register_read_data_25_s(16 downto 16) <= register_map_monitor_s.register_map_hk_monitor.CONFIG_FLASH_RD.FLASH_BUSY; -- Flash operation busy - register_read_data_25_s(15 downto 0) <= register_map_monitor_s.register_map_hk_monitor.CONFIG_FLASH_RD.READ_DATA; -- Value of data read from flash - when REG_SI5324_STATUS => register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_hk_monitor.SI5324_STATUS.LOL; -- Loss of Lock Si5324 - register_read_data_25_s(8 downto 0) <= register_map_monitor_s.register_map_hk_monitor.SI5324_STATUS.LOS; -- Loss of Signal Si5324 - when REG_TACH_CNT => register_read_data_25_s(19 downto 0) <= register_map_monitor_s.register_map_hk_monitor.TACH_CNT; -- Readout of the Fan tachometer speed of the BNL712 board - --- Generators - when REG_FELIG_MON_TTC_0_00 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (0).L1ID; -- Live TTC data monitor. - register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (0).XL1ID; -- Live TTC data monitor. - register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (0).BCID; -- Live TTC data monitor. - register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (0).RESERVED0; -- Live TTC data monitor. - register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (0).LEN; -- Live TTC data monitor. - register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (0).FMT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_0_01 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (1).L1ID; -- Live TTC data monitor. - register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (1).XL1ID; -- Live TTC data monitor. - register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (1).BCID; -- Live TTC data monitor. - register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (1).RESERVED0; -- Live TTC data monitor. - register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (1).LEN; -- Live TTC data monitor. - register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (1).FMT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_0_02 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (2).L1ID; -- Live TTC data monitor. - register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (2).XL1ID; -- Live TTC data monitor. - register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (2).BCID; -- Live TTC data monitor. - register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (2).RESERVED0; -- Live TTC data monitor. - register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (2).LEN; -- Live TTC data monitor. - register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (2).FMT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_0_03 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (3).L1ID; -- Live TTC data monitor. - register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (3).XL1ID; -- Live TTC data monitor. - register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (3).BCID; -- Live TTC data monitor. - register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (3).RESERVED0; -- Live TTC data monitor. - register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (3).LEN; -- Live TTC data monitor. - register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (3).FMT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_0_04 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (4).L1ID; -- Live TTC data monitor. - register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (4).XL1ID; -- Live TTC data monitor. - register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (4).BCID; -- Live TTC data monitor. - register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (4).RESERVED0; -- Live TTC data monitor. - register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (4).LEN; -- Live TTC data monitor. - register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (4).FMT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_0_05 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (5).L1ID; -- Live TTC data monitor. - register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (5).XL1ID; -- Live TTC data monitor. - register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (5).BCID; -- Live TTC data monitor. - register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (5).RESERVED0; -- Live TTC data monitor. - register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (5).LEN; -- Live TTC data monitor. - register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (5).FMT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_0_06 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (6).L1ID; -- Live TTC data monitor. - register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (6).XL1ID; -- Live TTC data monitor. - register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (6).BCID; -- Live TTC data monitor. - register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (6).RESERVED0; -- Live TTC data monitor. - register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (6).LEN; -- Live TTC data monitor. - register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (6).FMT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_0_07 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (7).L1ID; -- Live TTC data monitor. - register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (7).XL1ID; -- Live TTC data monitor. - register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (7).BCID; -- Live TTC data monitor. - register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (7).RESERVED0; -- Live TTC data monitor. - register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (7).LEN; -- Live TTC data monitor. - register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (7).FMT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_0_08 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (8).L1ID; -- Live TTC data monitor. - register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (8).XL1ID; -- Live TTC data monitor. - register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (8).BCID; -- Live TTC data monitor. - register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (8).RESERVED0; -- Live TTC data monitor. - register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (8).LEN; -- Live TTC data monitor. - register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (8).FMT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_0_09 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (9).L1ID; -- Live TTC data monitor. - register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (9).XL1ID; -- Live TTC data monitor. - register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (9).BCID; -- Live TTC data monitor. - register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (9).RESERVED0; -- Live TTC data monitor. - register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (9).LEN; -- Live TTC data monitor. - register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (9).FMT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_0_10 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (10).L1ID; -- Live TTC data monitor. - register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (10).XL1ID; -- Live TTC data monitor. - register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (10).BCID; -- Live TTC data monitor. - register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (10).RESERVED0; -- Live TTC data monitor. - register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (10).LEN; -- Live TTC data monitor. - register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (10).FMT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_0_11 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (11).L1ID; -- Live TTC data monitor. - register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (11).XL1ID; -- Live TTC data monitor. - register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (11).BCID; -- Live TTC data monitor. - register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (11).RESERVED0; -- Live TTC data monitor. - register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (11).LEN; -- Live TTC data monitor. - register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (11).FMT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_0_12 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (12).L1ID; -- Live TTC data monitor. - register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (12).XL1ID; -- Live TTC data monitor. - register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (12).BCID; -- Live TTC data monitor. - register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (12).RESERVED0; -- Live TTC data monitor. - register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (12).LEN; -- Live TTC data monitor. - register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (12).FMT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_0_13 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (13).L1ID; -- Live TTC data monitor. - register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (13).XL1ID; -- Live TTC data monitor. - register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (13).BCID; -- Live TTC data monitor. - register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (13).RESERVED0; -- Live TTC data monitor. - register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (13).LEN; -- Live TTC data monitor. - register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (13).FMT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_0_14 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (14).L1ID; -- Live TTC data monitor. - register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (14).XL1ID; -- Live TTC data monitor. - register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (14).BCID; -- Live TTC data monitor. - register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (14).RESERVED0; -- Live TTC data monitor. - register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (14).LEN; -- Live TTC data monitor. - register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (14).FMT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_0_15 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (15).L1ID; -- Live TTC data monitor. - register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (15).XL1ID; -- Live TTC data monitor. - register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (15).BCID; -- Live TTC data monitor. - register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (15).RESERVED0; -- Live TTC data monitor. - register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (15).LEN; -- Live TTC data monitor. - register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (15).FMT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_0_16 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (16).L1ID; -- Live TTC data monitor. - register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (16).XL1ID; -- Live TTC data monitor. - register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (16).BCID; -- Live TTC data monitor. - register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (16).RESERVED0; -- Live TTC data monitor. - register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (16).LEN; -- Live TTC data monitor. - register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (16).FMT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_0_17 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (17).L1ID; -- Live TTC data monitor. - register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (17).XL1ID; -- Live TTC data monitor. - register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (17).BCID; -- Live TTC data monitor. - register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (17).RESERVED0; -- Live TTC data monitor. - register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (17).LEN; -- Live TTC data monitor. - register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (17).FMT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_0_18 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (18).L1ID; -- Live TTC data monitor. - register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (18).XL1ID; -- Live TTC data monitor. - register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (18).BCID; -- Live TTC data monitor. - register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (18).RESERVED0; -- Live TTC data monitor. - register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (18).LEN; -- Live TTC data monitor. - register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (18).FMT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_0_19 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (19).L1ID; -- Live TTC data monitor. - register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (19).XL1ID; -- Live TTC data monitor. - register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (19).BCID; -- Live TTC data monitor. - register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (19).RESERVED0; -- Live TTC data monitor. - register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (19).LEN; -- Live TTC data monitor. - register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (19).FMT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_0_20 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (20).L1ID; -- Live TTC data monitor. - register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (20).XL1ID; -- Live TTC data monitor. - register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (20).BCID; -- Live TTC data monitor. - register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (20).RESERVED0; -- Live TTC data monitor. - register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (20).LEN; -- Live TTC data monitor. - register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (20).FMT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_0_21 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (21).L1ID; -- Live TTC data monitor. - register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (21).XL1ID; -- Live TTC data monitor. - register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (21).BCID; -- Live TTC data monitor. - register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (21).RESERVED0; -- Live TTC data monitor. - register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (21).LEN; -- Live TTC data monitor. - register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (21).FMT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_0_22 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (22).L1ID; -- Live TTC data monitor. - register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (22).XL1ID; -- Live TTC data monitor. - register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (22).BCID; -- Live TTC data monitor. - register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (22).RESERVED0; -- Live TTC data monitor. - register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (22).LEN; -- Live TTC data monitor. - register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (22).FMT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_0_23 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (23).L1ID; -- Live TTC data monitor. - register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (23).XL1ID; -- Live TTC data monitor. - register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (23).BCID; -- Live TTC data monitor. - register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (23).RESERVED0; -- Live TTC data monitor. - register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (23).LEN; -- Live TTC data monitor. - register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (23).FMT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_1_00 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (0).RESERVED1; -- Live TTC data monitor. - register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (0).TRIGGER_TYPE; -- Live TTC data monitor. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (0).ORBIT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_1_01 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (1).RESERVED1; -- Live TTC data monitor. - register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (1).TRIGGER_TYPE; -- Live TTC data monitor. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (1).ORBIT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_1_02 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (2).RESERVED1; -- Live TTC data monitor. - register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (2).TRIGGER_TYPE; -- Live TTC data monitor. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (2).ORBIT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_1_03 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (3).RESERVED1; -- Live TTC data monitor. - register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (3).TRIGGER_TYPE; -- Live TTC data monitor. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (3).ORBIT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_1_04 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (4).RESERVED1; -- Live TTC data monitor. - register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (4).TRIGGER_TYPE; -- Live TTC data monitor. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (4).ORBIT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_1_05 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (5).RESERVED1; -- Live TTC data monitor. - register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (5).TRIGGER_TYPE; -- Live TTC data monitor. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (5).ORBIT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_1_06 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (6).RESERVED1; -- Live TTC data monitor. - register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (6).TRIGGER_TYPE; -- Live TTC data monitor. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (6).ORBIT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_1_07 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (7).RESERVED1; -- Live TTC data monitor. - register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (7).TRIGGER_TYPE; -- Live TTC data monitor. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (7).ORBIT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_1_08 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (8).RESERVED1; -- Live TTC data monitor. - register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (8).TRIGGER_TYPE; -- Live TTC data monitor. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (8).ORBIT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_1_09 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (9).RESERVED1; -- Live TTC data monitor. - register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (9).TRIGGER_TYPE; -- Live TTC data monitor. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (9).ORBIT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_1_10 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (10).RESERVED1; -- Live TTC data monitor. - register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (10).TRIGGER_TYPE; -- Live TTC data monitor. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (10).ORBIT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_1_11 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (11).RESERVED1; -- Live TTC data monitor. - register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (11).TRIGGER_TYPE; -- Live TTC data monitor. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (11).ORBIT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_1_12 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (12).RESERVED1; -- Live TTC data monitor. - register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (12).TRIGGER_TYPE; -- Live TTC data monitor. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (12).ORBIT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_1_13 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (13).RESERVED1; -- Live TTC data monitor. - register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (13).TRIGGER_TYPE; -- Live TTC data monitor. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (13).ORBIT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_1_14 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (14).RESERVED1; -- Live TTC data monitor. - register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (14).TRIGGER_TYPE; -- Live TTC data monitor. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (14).ORBIT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_1_15 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (15).RESERVED1; -- Live TTC data monitor. - register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (15).TRIGGER_TYPE; -- Live TTC data monitor. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (15).ORBIT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_1_16 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (16).RESERVED1; -- Live TTC data monitor. - register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (16).TRIGGER_TYPE; -- Live TTC data monitor. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (16).ORBIT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_1_17 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (17).RESERVED1; -- Live TTC data monitor. - register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (17).TRIGGER_TYPE; -- Live TTC data monitor. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (17).ORBIT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_1_18 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (18).RESERVED1; -- Live TTC data monitor. - register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (18).TRIGGER_TYPE; -- Live TTC data monitor. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (18).ORBIT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_1_19 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (19).RESERVED1; -- Live TTC data monitor. - register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (19).TRIGGER_TYPE; -- Live TTC data monitor. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (19).ORBIT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_1_20 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (20).RESERVED1; -- Live TTC data monitor. - register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (20).TRIGGER_TYPE; -- Live TTC data monitor. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (20).ORBIT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_1_21 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (21).RESERVED1; -- Live TTC data monitor. - register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (21).TRIGGER_TYPE; -- Live TTC data monitor. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (21).ORBIT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_1_22 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (22).RESERVED1; -- Live TTC data monitor. - register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (22).TRIGGER_TYPE; -- Live TTC data monitor. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (22).ORBIT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_TTC_1_23 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (23).RESERVED1; -- Live TTC data monitor. - register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (23).TRIGGER_TYPE; -- Live TTC data monitor. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (23).ORBIT; -- Live TTC data monitor. - end if; - when REG_FELIG_MON_COUNTERS_00 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (0).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (0).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. - end if; - when REG_FELIG_MON_COUNTERS_01 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (1).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (1).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. - end if; - when REG_FELIG_MON_COUNTERS_02 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (2).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (2).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. - end if; - when REG_FELIG_MON_COUNTERS_03 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (3).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (3).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. - end if; - when REG_FELIG_MON_COUNTERS_04 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (4).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (4).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. - end if; - when REG_FELIG_MON_COUNTERS_05 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (5).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (5).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. - end if; - when REG_FELIG_MON_COUNTERS_06 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (6).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (6).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. - end if; - when REG_FELIG_MON_COUNTERS_07 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (7).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (7).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. - end if; - when REG_FELIG_MON_COUNTERS_08 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (8).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (8).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. - end if; - when REG_FELIG_MON_COUNTERS_09 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (9).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (9).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. - end if; - when REG_FELIG_MON_COUNTERS_10 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (10).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (10).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. - end if; - when REG_FELIG_MON_COUNTERS_11 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (11).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (11).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. - end if; - when REG_FELIG_MON_COUNTERS_12 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (12).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (12).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. - end if; - when REG_FELIG_MON_COUNTERS_13 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (13).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (13).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. - end if; - when REG_FELIG_MON_COUNTERS_14 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (14).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (14).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. - end if; - when REG_FELIG_MON_COUNTERS_15 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (15).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (15).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. - end if; - when REG_FELIG_MON_COUNTERS_16 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (16).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (16).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. - end if; - when REG_FELIG_MON_COUNTERS_17 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (17).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (17).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. - end if; - when REG_FELIG_MON_COUNTERS_18 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (18).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (18).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. - end if; - when REG_FELIG_MON_COUNTERS_19 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (19).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (19).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. - end if; - when REG_FELIG_MON_COUNTERS_20 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (20).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (20).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. - end if; - when REG_FELIG_MON_COUNTERS_21 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (21).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (21).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. - end if; - when REG_FELIG_MON_COUNTERS_22 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (22).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (22).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. - end if; - when REG_FELIG_MON_COUNTERS_23 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (23).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (23).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. - end if; - when REG_FELIG_MON_FREQ_00 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (0).TX; -- FELIG regenerated TX clock frequency[Hz]. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (0).RX; -- FELIG recovered RX clock frequency[Hz]. - end if; - when REG_FELIG_MON_FREQ_01 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (1).TX; -- FELIG regenerated TX clock frequency[Hz]. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (1).RX; -- FELIG recovered RX clock frequency[Hz]. - end if; - when REG_FELIG_MON_FREQ_02 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (2).TX; -- FELIG regenerated TX clock frequency[Hz]. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (2).RX; -- FELIG recovered RX clock frequency[Hz]. - end if; - when REG_FELIG_MON_FREQ_03 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (3).TX; -- FELIG regenerated TX clock frequency[Hz]. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (3).RX; -- FELIG recovered RX clock frequency[Hz]. - end if; - when REG_FELIG_MON_FREQ_04 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (4).TX; -- FELIG regenerated TX clock frequency[Hz]. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (4).RX; -- FELIG recovered RX clock frequency[Hz]. - end if; - when REG_FELIG_MON_FREQ_05 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (5).TX; -- FELIG regenerated TX clock frequency[Hz]. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (5).RX; -- FELIG recovered RX clock frequency[Hz]. - end if; - when REG_FELIG_MON_FREQ_06 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (6).TX; -- FELIG regenerated TX clock frequency[Hz]. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (6).RX; -- FELIG recovered RX clock frequency[Hz]. - end if; - when REG_FELIG_MON_FREQ_07 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (7).TX; -- FELIG regenerated TX clock frequency[Hz]. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (7).RX; -- FELIG recovered RX clock frequency[Hz]. - end if; - when REG_FELIG_MON_FREQ_08 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (8).TX; -- FELIG regenerated TX clock frequency[Hz]. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (8).RX; -- FELIG recovered RX clock frequency[Hz]. - end if; - when REG_FELIG_MON_FREQ_09 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (9).TX; -- FELIG regenerated TX clock frequency[Hz]. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (9).RX; -- FELIG recovered RX clock frequency[Hz]. - end if; - when REG_FELIG_MON_FREQ_10 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (10).TX; -- FELIG regenerated TX clock frequency[Hz]. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (10).RX; -- FELIG recovered RX clock frequency[Hz]. - end if; - when REG_FELIG_MON_FREQ_11 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (11).TX; -- FELIG regenerated TX clock frequency[Hz]. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (11).RX; -- FELIG recovered RX clock frequency[Hz]. - end if; - when REG_FELIG_MON_FREQ_12 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (12).TX; -- FELIG regenerated TX clock frequency[Hz]. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (12).RX; -- FELIG recovered RX clock frequency[Hz]. - end if; - when REG_FELIG_MON_FREQ_13 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (13).TX; -- FELIG regenerated TX clock frequency[Hz]. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (13).RX; -- FELIG recovered RX clock frequency[Hz]. - end if; - when REG_FELIG_MON_FREQ_14 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (14).TX; -- FELIG regenerated TX clock frequency[Hz]. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (14).RX; -- FELIG recovered RX clock frequency[Hz]. - end if; - when REG_FELIG_MON_FREQ_15 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (15).TX; -- FELIG regenerated TX clock frequency[Hz]. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (15).RX; -- FELIG recovered RX clock frequency[Hz]. - end if; - when REG_FELIG_MON_FREQ_16 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (16).TX; -- FELIG regenerated TX clock frequency[Hz]. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (16).RX; -- FELIG recovered RX clock frequency[Hz]. - end if; - when REG_FELIG_MON_FREQ_17 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (17).TX; -- FELIG regenerated TX clock frequency[Hz]. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (17).RX; -- FELIG recovered RX clock frequency[Hz]. - end if; - when REG_FELIG_MON_FREQ_18 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (18).TX; -- FELIG regenerated TX clock frequency[Hz]. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (18).RX; -- FELIG recovered RX clock frequency[Hz]. - end if; - when REG_FELIG_MON_FREQ_19 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (19).TX; -- FELIG regenerated TX clock frequency[Hz]. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (19).RX; -- FELIG recovered RX clock frequency[Hz]. - end if; - when REG_FELIG_MON_FREQ_20 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (20).TX; -- FELIG regenerated TX clock frequency[Hz]. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (20).RX; -- FELIG recovered RX clock frequency[Hz]. - end if; - when REG_FELIG_MON_FREQ_21 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (21).TX; -- FELIG regenerated TX clock frequency[Hz]. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (21).RX; -- FELIG recovered RX clock frequency[Hz]. - end if; - when REG_FELIG_MON_FREQ_22 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (22).TX; -- FELIG regenerated TX clock frequency[Hz]. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (22).RX; -- FELIG recovered RX clock frequency[Hz]. - end if; - when REG_FELIG_MON_FREQ_23 => - if EMU_GENERATE_REGS then - register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (23).TX; -- FELIG regenerated TX clock frequency[Hz]. - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (23).RX; -- FELIG recovered RX clock frequency[Hz]. - end if; - when REG_FELIG_MON_L1A_ID_00 => - if EMU_GENERATE_REGS then - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (0); -- FELIG's last L1 ID. - end if; - when REG_FELIG_MON_L1A_ID_01 => - if EMU_GENERATE_REGS then - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (1); -- FELIG's last L1 ID. - end if; - when REG_FELIG_MON_L1A_ID_02 => - if EMU_GENERATE_REGS then - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (2); -- FELIG's last L1 ID. - end if; - when REG_FELIG_MON_L1A_ID_03 => - if EMU_GENERATE_REGS then - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (3); -- FELIG's last L1 ID. - end if; - when REG_FELIG_MON_L1A_ID_04 => - if EMU_GENERATE_REGS then - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (4); -- FELIG's last L1 ID. - end if; - when REG_FELIG_MON_L1A_ID_05 => - if EMU_GENERATE_REGS then - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (5); -- FELIG's last L1 ID. - end if; - when REG_FELIG_MON_L1A_ID_06 => - if EMU_GENERATE_REGS then - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (6); -- FELIG's last L1 ID. - end if; - when REG_FELIG_MON_L1A_ID_07 => - if EMU_GENERATE_REGS then - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (7); -- FELIG's last L1 ID. - end if; - when REG_FELIG_MON_L1A_ID_08 => - if EMU_GENERATE_REGS then - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (8); -- FELIG's last L1 ID. - end if; - when REG_FELIG_MON_L1A_ID_09 => - if EMU_GENERATE_REGS then - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (9); -- FELIG's last L1 ID. - end if; - when REG_FELIG_MON_L1A_ID_10 => - if EMU_GENERATE_REGS then - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (10); -- FELIG's last L1 ID. - end if; - when REG_FELIG_MON_L1A_ID_11 => - if EMU_GENERATE_REGS then - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (11); -- FELIG's last L1 ID. - end if; - when REG_FELIG_MON_L1A_ID_12 => - if EMU_GENERATE_REGS then - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (12); -- FELIG's last L1 ID. - end if; - when REG_FELIG_MON_L1A_ID_13 => - if EMU_GENERATE_REGS then - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (13); -- FELIG's last L1 ID. - end if; - when REG_FELIG_MON_L1A_ID_14 => - if EMU_GENERATE_REGS then - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (14); -- FELIG's last L1 ID. - end if; - when REG_FELIG_MON_L1A_ID_15 => - if EMU_GENERATE_REGS then - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (15); -- FELIG's last L1 ID. - end if; - when REG_FELIG_MON_L1A_ID_16 => - if EMU_GENERATE_REGS then - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (16); -- FELIG's last L1 ID. - end if; - when REG_FELIG_MON_L1A_ID_17 => - if EMU_GENERATE_REGS then - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (17); -- FELIG's last L1 ID. - end if; - when REG_FELIG_MON_L1A_ID_18 => - if EMU_GENERATE_REGS then - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (18); -- FELIG's last L1 ID. - end if; - when REG_FELIG_MON_L1A_ID_19 => - if EMU_GENERATE_REGS then - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (19); -- FELIG's last L1 ID. - end if; - when REG_FELIG_MON_L1A_ID_20 => - if EMU_GENERATE_REGS then - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (20); -- FELIG's last L1 ID. - end if; - when REG_FELIG_MON_L1A_ID_21 => - if EMU_GENERATE_REGS then - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (21); -- FELIG's last L1 ID. - end if; - when REG_FELIG_MON_L1A_ID_22 => - if EMU_GENERATE_REGS then - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (22); -- FELIG's last L1 ID. - end if; - when REG_FELIG_MON_L1A_ID_23 => - if EMU_GENERATE_REGS then - register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (23); -- FELIG's last L1 ID. - end if; - when REG_FELIG_MON_PICXO_00 => - if EMU_GENERATE_REGS then - register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (0).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. - register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (0).ERROR; -- Value indicates RX to TX frequency tracking error. - end if; - when REG_FELIG_MON_PICXO_01 => - if EMU_GENERATE_REGS then - register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (1).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. - register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (1).ERROR; -- Value indicates RX to TX frequency tracking error. - end if; - when REG_FELIG_MON_PICXO_02 => - if EMU_GENERATE_REGS then - register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (2).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. - register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (2).ERROR; -- Value indicates RX to TX frequency tracking error. - end if; - when REG_FELIG_MON_PICXO_03 => - if EMU_GENERATE_REGS then - register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (3).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. - register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (3).ERROR; -- Value indicates RX to TX frequency tracking error. - end if; - when REG_FELIG_MON_PICXO_04 => - if EMU_GENERATE_REGS then - register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (4).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. - register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (4).ERROR; -- Value indicates RX to TX frequency tracking error. - end if; - when REG_FELIG_MON_PICXO_05 => - if EMU_GENERATE_REGS then - register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (5).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. - register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (5).ERROR; -- Value indicates RX to TX frequency tracking error. - end if; - when REG_FELIG_MON_PICXO_06 => - if EMU_GENERATE_REGS then - register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (6).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. - register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (6).ERROR; -- Value indicates RX to TX frequency tracking error. - end if; - when REG_FELIG_MON_PICXO_07 => - if EMU_GENERATE_REGS then - register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (7).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. - register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (7).ERROR; -- Value indicates RX to TX frequency tracking error. - end if; - when REG_FELIG_MON_PICXO_08 => - if EMU_GENERATE_REGS then - register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (8).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. - register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (8).ERROR; -- Value indicates RX to TX frequency tracking error. - end if; - when REG_FELIG_MON_PICXO_09 => - if EMU_GENERATE_REGS then - register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (9).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. - register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (9).ERROR; -- Value indicates RX to TX frequency tracking error. - end if; - when REG_FELIG_MON_PICXO_10 => - if EMU_GENERATE_REGS then - register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (10).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. - register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (10).ERROR; -- Value indicates RX to TX frequency tracking error. - end if; - when REG_FELIG_MON_PICXO_11 => - if EMU_GENERATE_REGS then - register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (11).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. - register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (11).ERROR; -- Value indicates RX to TX frequency tracking error. - end if; - when REG_FELIG_MON_PICXO_12 => - if EMU_GENERATE_REGS then - register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (12).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. - register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (12).ERROR; -- Value indicates RX to TX frequency tracking error. - end if; - when REG_FELIG_MON_PICXO_13 => - if EMU_GENERATE_REGS then - register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (13).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. - register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (13).ERROR; -- Value indicates RX to TX frequency tracking error. - end if; - when REG_FELIG_MON_PICXO_14 => - if EMU_GENERATE_REGS then - register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (14).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. - register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (14).ERROR; -- Value indicates RX to TX frequency tracking error. - end if; - when REG_FELIG_MON_PICXO_15 => - if EMU_GENERATE_REGS then - register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (15).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. - register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (15).ERROR; -- Value indicates RX to TX frequency tracking error. - end if; - when REG_FELIG_MON_PICXO_16 => - if EMU_GENERATE_REGS then - register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (16).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. - register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (16).ERROR; -- Value indicates RX to TX frequency tracking error. - end if; - when REG_FELIG_MON_PICXO_17 => - if EMU_GENERATE_REGS then - register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (17).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. - register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (17).ERROR; -- Value indicates RX to TX frequency tracking error. - end if; - when REG_FELIG_MON_PICXO_18 => - if EMU_GENERATE_REGS then - register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (18).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. - register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (18).ERROR; -- Value indicates RX to TX frequency tracking error. - end if; - when REG_FELIG_MON_PICXO_19 => - if EMU_GENERATE_REGS then - register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (19).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. - register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (19).ERROR; -- Value indicates RX to TX frequency tracking error. - end if; - when REG_FELIG_MON_PICXO_20 => - if EMU_GENERATE_REGS then - register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (20).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. - register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (20).ERROR; -- Value indicates RX to TX frequency tracking error. - end if; - when REG_FELIG_MON_PICXO_21 => - if EMU_GENERATE_REGS then - register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (21).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. - register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (21).ERROR; -- Value indicates RX to TX frequency tracking error. - end if; - when REG_FELIG_MON_PICXO_22 => - if EMU_GENERATE_REGS then - register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (22).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. - register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (22).ERROR; -- Value indicates RX to TX frequency tracking error. - end if; - when REG_FELIG_MON_PICXO_23 => - if EMU_GENERATE_REGS then - register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (23).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. - register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (23).ERROR; -- Value indicates RX to TX frequency tracking error. - end if; - when REG_FELIG_MON_ITK_STRIPS_00 => - if EMU_GENERATE_REGS then - register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (0); -- data fifo status 2:write done 1:full 0:empty. - end if; - when REG_FELIG_MON_ITK_STRIPS_01 => - if EMU_GENERATE_REGS then - register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (1); -- data fifo status 2:write done 1:full 0:empty. - end if; - when REG_FELIG_MON_ITK_STRIPS_02 => - if EMU_GENERATE_REGS then - register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (2); -- data fifo status 2:write done 1:full 0:empty. - end if; - when REG_FELIG_MON_ITK_STRIPS_03 => - if EMU_GENERATE_REGS then - register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (3); -- data fifo status 2:write done 1:full 0:empty. - end if; - when REG_FELIG_MON_ITK_STRIPS_04 => - if EMU_GENERATE_REGS then - register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (4); -- data fifo status 2:write done 1:full 0:empty. - end if; - when REG_FELIG_MON_ITK_STRIPS_05 => - if EMU_GENERATE_REGS then - register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (5); -- data fifo status 2:write done 1:full 0:empty. - end if; - when REG_FELIG_MON_ITK_STRIPS_06 => - if EMU_GENERATE_REGS then - register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (6); -- data fifo status 2:write done 1:full 0:empty. - end if; - when REG_FELIG_MON_ITK_STRIPS_07 => - if EMU_GENERATE_REGS then - register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (7); -- data fifo status 2:write done 1:full 0:empty. - end if; - when REG_FELIG_MON_ITK_STRIPS_08 => - if EMU_GENERATE_REGS then - register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (8); -- data fifo status 2:write done 1:full 0:empty. - end if; - when REG_FELIG_MON_ITK_STRIPS_09 => - if EMU_GENERATE_REGS then - register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (9); -- data fifo status 2:write done 1:full 0:empty. - end if; - when REG_FELIG_MON_ITK_STRIPS_10 => - if EMU_GENERATE_REGS then - register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (10); -- data fifo status 2:write done 1:full 0:empty. - end if; - when REG_FELIG_MON_ITK_STRIPS_11 => - if EMU_GENERATE_REGS then - register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (11); -- data fifo status 2:write done 1:full 0:empty. - end if; - when REG_FELIG_MON_ITK_STRIPS_12 => - if EMU_GENERATE_REGS then - register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (12); -- data fifo status 2:write done 1:full 0:empty. - end if; - when REG_FELIG_MON_ITK_STRIPS_13 => - if EMU_GENERATE_REGS then - register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (13); -- data fifo status 2:write done 1:full 0:empty. - end if; - when REG_FELIG_MON_ITK_STRIPS_14 => - if EMU_GENERATE_REGS then - register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (14); -- data fifo status 2:write done 1:full 0:empty. - end if; - when REG_FELIG_MON_ITK_STRIPS_15 => - if EMU_GENERATE_REGS then - register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (15); -- data fifo status 2:write done 1:full 0:empty. - end if; - when REG_FELIG_MON_ITK_STRIPS_16 => - if EMU_GENERATE_REGS then - register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (16); -- data fifo status 2:write done 1:full 0:empty. - end if; - when REG_FELIG_MON_ITK_STRIPS_17 => - if EMU_GENERATE_REGS then - register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (17); -- data fifo status 2:write done 1:full 0:empty. - end if; - when REG_FELIG_MON_ITK_STRIPS_18 => - if EMU_GENERATE_REGS then - register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (18); -- data fifo status 2:write done 1:full 0:empty. - end if; - when REG_FELIG_MON_ITK_STRIPS_19 => - if EMU_GENERATE_REGS then - register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (19); -- data fifo status 2:write done 1:full 0:empty. - end if; - when REG_FELIG_MON_ITK_STRIPS_20 => - if EMU_GENERATE_REGS then - register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (20); -- data fifo status 2:write done 1:full 0:empty. - end if; - when REG_FELIG_MON_ITK_STRIPS_21 => - if EMU_GENERATE_REGS then - register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (21); -- data fifo status 2:write done 1:full 0:empty. - end if; - when REG_FELIG_MON_ITK_STRIPS_22 => - if EMU_GENERATE_REGS then - register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (22); -- data fifo status 2:write done 1:full 0:empty. - end if; - when REG_FELIG_MON_ITK_STRIPS_23 => - if EMU_GENERATE_REGS then - register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (23); -- data fifo status 2:write done 1:full 0:empty. - end if; - --- Wishbone - when REG_WISHBONE_STATUS => register_read_data_25_s(4 downto 4) <= register_map_monitor_s.wishbone_monitor.WISHBONE_STATUS.INT; -- interrupt - register_read_data_25_s(3 downto 3) <= register_map_monitor_s.wishbone_monitor.WISHBONE_STATUS.RETRY; -- Interface is not ready to accept data cycle should be retried - register_read_data_25_s(2 downto 2) <= register_map_monitor_s.wishbone_monitor.WISHBONE_STATUS.STALL; -- When pipelined mode slave can't accept additional transactions in its queue - register_read_data_25_s(1 downto 1) <= register_map_monitor_s.wishbone_monitor.WISHBONE_STATUS.ACKNOWLEDGE; -- Indicates the termination of a normal bus cycle - register_read_data_25_s(0 downto 0) <= register_map_monitor_s.wishbone_monitor.WISHBONE_STATUS.ERROR; -- Address not mapped by the crossbar - --- MRODmonitors - when REG_MROD_EP0_CSMH_EMPTY => - if MROD_GENERATE_REGS = true then - register_read_data_25_s(23 downto 0) <= register_map_monitor_s.regmap_mrod_monitor.MROD_EP0_CSMH_EMPTY; -- CSM Handler FIFO Empty 23-0 - end if; - when REG_MROD_EP0_CSMH_FULL => - if MROD_GENERATE_REGS = true then - register_read_data_25_s(23 downto 0) <= register_map_monitor_s.regmap_mrod_monitor.MROD_EP0_CSMH_FULL; -- CSM Handler FIFO Full 23-0 - end if; - when REG_MROD_EP0_RXLOCKED => - if MROD_GENERATE_REGS = true then - register_read_data_25_s(23 downto 0) <= register_map_monitor_s.regmap_mrod_monitor.MROD_EP0_RXLOCKED; -- EP0 Receiver Locked monitor 23-0 - end if; - when REG_MROD_EP0_TXLOCKED => - if MROD_GENERATE_REGS = true then - register_read_data_25_s(23 downto 0) <= register_map_monitor_s.regmap_mrod_monitor.MROD_EP0_TXLOCKED; -- EP0 Transmitter Locked monitor 23-0 - end if; - when REG_MROD_EP1_CSMH_EMPTY => - if MROD_GENERATE_REGS = true then - register_read_data_25_s(23 downto 0) <= register_map_monitor_s.regmap_mrod_monitor.MROD_EP1_CSMH_EMPTY; -- CSM Handler FIFO Empty 23-0 - end if; - when REG_MROD_EP1_CSMH_FULL => - if MROD_GENERATE_REGS = true then - register_read_data_25_s(23 downto 0) <= register_map_monitor_s.regmap_mrod_monitor.MROD_EP1_CSMH_FULL; -- CSM Handler FIFO Full 23-0 - end if; - when REG_MROD_EP1_RXLOCKED => - if MROD_GENERATE_REGS = true then - register_read_data_25_s(23 downto 0) <= register_map_monitor_s.regmap_mrod_monitor.MROD_EP1_RXLOCKED; -- EP1 Receiver Locked monitor 23-0 - end if; - when REG_MROD_EP1_TXLOCKED => - if MROD_GENERATE_REGS = true then - register_read_data_25_s(23 downto 0) <= register_map_monitor_s.regmap_mrod_monitor.MROD_EP1_TXLOCKED; -- EP1 Transmitter Locked monitor 23-0 - end if; - ----------------------------------- - ---- GENERATED code END #3 ## ---- - ----------------------------------- - when others => register_read_data_25_s <= (others => '0'); - end case; - else --None of BAR0, BAR1 or BAR2 selected - register_read_data_25_s <= (others => '0'); - end if; - end if; - - register_write_done_25_s <= '0'; - if(register_write_enable_25_s = '1') then - --! Apply byte enable and word enable to Register writes - register_write_data_25_v := register_read_data_25_s; - - case (register_word_address_25_s(3 downto 2)) is - when "00" => - case (dword_count_25_s(2 downto 0)) is --write 1 or 2 dwords - when "001" => - for i in 0 to 3 loop - if first_be_25_s(i) = '1' then - register_write_data_25_v(7+i*8 downto i*8) := register_write_data_25_nobe_s(7+i*8 downto i*8); - end if; - end loop; - when "010" => - for i in 0 to 3 loop - if first_be_25_s(i) = '1' then - register_write_data_25_v(7+i*8 downto i*8) := register_write_data_25_nobe_s(7+i*8 downto i*8); - end if; - end loop; - for i in 0 to 3 loop - if last_be_25_s(i) = '1' then - register_write_data_25_v(39+i*8 downto 32+i*8) := register_write_data_25_nobe_s(39+i*8 downto 32+i*8); - end if; - end loop; - when others => NULL; - end case; - when "01" => - for i in 0 to 3 loop - if first_be_25_s(i) = '1' then - register_write_data_25_v(39+i*8 downto 32+i*8) := register_write_data_25_nobe_s(7+i*8 downto i*8); - end if; - end loop; - when "10" => - case (dword_count_25_s(2 downto 0)) is --write 1 or 2 dwords - when "001" => - for i in 0 to 3 loop - if first_be_25_s(i) = '1' then - register_write_data_25_v(71+i*8 downto 64+i*8) := register_write_data_25_nobe_s(7+i*8 downto i*8); - end if; - end loop; - when "010" => - for i in 0 to 3 loop - if first_be_25_s(i) = '1' then - register_write_data_25_v(71+i*8 downto 64+i*8) := register_write_data_25_nobe_s(7+i*8 downto i*8); - end if; - end loop; - for i in 0 to 3 loop - if last_be_25_s(i) = '1' then - register_write_data_25_v(103+i*8 downto 96+i*8) := register_write_data_25_nobe_s(39+i*8 downto 32+i*8); - end if; - end loop; - when others => NULL; - end case; - when "11" => - for i in 0 to 3 loop - if first_be_25_s(i) = '1' then - register_write_data_25_v(103+i*8 downto 96+i*8) := register_write_data_25_nobe_s(7+i*8 downto i*8); - end if; - end loop; - when others => NULL; - end case; - - --! End byte enable / word enable - - - register_write_done_25_s <= '1'; - --Write registers in BAR0 - if(bar_id_25_s = "000") then - register_write_address_v := register_write_address_25_s(19 downto 4)&"0000"; - case(register_write_address_v) is - when REG_DESCRIPTOR_0 => dma_descriptors_25_w_s( 0).end_address <= register_write_data_25_v(127 downto 64); - dma_descriptors_25_w_s( 0).start_address <= register_write_data_25_v(63 downto 0); - when REG_DESCRIPTOR_0a => dma_descriptors_25_w_s( 0).pc_pointer <= register_write_data_25_v(127 downto 64); - dma_descriptors_25_w_s( 0).wrap_around <= register_write_data_25_v(12); - --dma_descriptors_25_w_s( 0).read_not_write <= register_write_data_25_v(11); - dma_descriptors_25_w_s( 0).dword_count <= register_write_data_25_v(10 downto 0); - when REG_DESCRIPTOR_1 => dma_descriptors_25_w_s( 1).end_address <= register_write_data_25_v(127 downto 64); - dma_descriptors_25_w_s( 1).start_address <= register_write_data_25_v(63 downto 0); - when REG_DESCRIPTOR_1a => dma_descriptors_25_w_s( 1).pc_pointer <= register_write_data_25_v(127 downto 64); - dma_descriptors_25_w_s( 1).wrap_around <= register_write_data_25_v(12); - --dma_descriptors_25_w_s( 1).read_not_write <= register_write_data_25_v(11); - dma_descriptors_25_w_s( 1).dword_count <= register_write_data_25_v(10 downto 0); - when REG_DESCRIPTOR_2 => dma_descriptors_25_w_s( 2).end_address <= register_write_data_25_v(127 downto 64); - dma_descriptors_25_w_s( 2).start_address <= register_write_data_25_v(63 downto 0); - when REG_DESCRIPTOR_2a => dma_descriptors_25_w_s( 2).pc_pointer <= register_write_data_25_v(127 downto 64); - dma_descriptors_25_w_s( 2).wrap_around <= register_write_data_25_v(12); - --dma_descriptors_25_w_s( 2).read_not_write <= register_write_data_25_v(11); - dma_descriptors_25_w_s( 2).dword_count <= register_write_data_25_v(10 downto 0); - when REG_DESCRIPTOR_3 => dma_descriptors_25_w_s( 3).end_address <= register_write_data_25_v(127 downto 64); - dma_descriptors_25_w_s( 3).start_address <= register_write_data_25_v(63 downto 0); - when REG_DESCRIPTOR_3a => dma_descriptors_25_w_s( 3).pc_pointer <= register_write_data_25_v(127 downto 64); - dma_descriptors_25_w_s( 3).wrap_around <= register_write_data_25_v(12); - --dma_descriptors_25_w_s( 3).read_not_write <= register_write_data_25_v(11); - dma_descriptors_25_w_s( 3).dword_count <= register_write_data_25_v(10 downto 0); - when REG_DESCRIPTOR_4 => dma_descriptors_25_w_s( 4).end_address <= register_write_data_25_v(127 downto 64); - dma_descriptors_25_w_s( 4).start_address <= register_write_data_25_v(63 downto 0); - when REG_DESCRIPTOR_4a => dma_descriptors_25_w_s( 4).pc_pointer <= register_write_data_25_v(127 downto 64); - dma_descriptors_25_w_s( 4).wrap_around <= register_write_data_25_v(12); - --dma_descriptors_25_w_s( 4).read_not_write <= register_write_data_25_v(11); - dma_descriptors_25_w_s( 4).dword_count <= register_write_data_25_v(10 downto 0); - when REG_DESCRIPTOR_5 => dma_descriptors_25_w_s( 5).end_address <= register_write_data_25_v(127 downto 64); - dma_descriptors_25_w_s( 5).start_address <= register_write_data_25_v(63 downto 0); - when REG_DESCRIPTOR_5a => dma_descriptors_25_w_s( 5).pc_pointer <= register_write_data_25_v(127 downto 64); - dma_descriptors_25_w_s( 5).wrap_around <= register_write_data_25_v(12); - --dma_descriptors_25_w_s( 5).read_not_write <= register_write_data_25_v(11); - dma_descriptors_25_w_s( 5).dword_count <= register_write_data_25_v(10 downto 0); - when REG_DESCRIPTOR_6 => dma_descriptors_25_w_s( 6).end_address <= register_write_data_25_v(127 downto 64); - dma_descriptors_25_w_s( 6).start_address <= register_write_data_25_v(63 downto 0); - when REG_DESCRIPTOR_6a => dma_descriptors_25_w_s( 6).pc_pointer <= register_write_data_25_v(127 downto 64); - dma_descriptors_25_w_s( 6).wrap_around <= register_write_data_25_v(12); - --dma_descriptors_25_w_s( 6).read_not_write <= register_write_data_25_v(11); - dma_descriptors_25_w_s( 6).dword_count <= register_write_data_25_v(10 downto 0); - when REG_DESCRIPTOR_7 => dma_descriptors_25_w_s( 7).end_address <= register_write_data_25_v(127 downto 64); - dma_descriptors_25_w_s( 7).start_address <= register_write_data_25_v(63 downto 0); - when REG_DESCRIPTOR_7a => dma_descriptors_25_w_s( 7).pc_pointer <= register_write_data_25_v(127 downto 64); - dma_descriptors_25_w_s( 7).wrap_around <= register_write_data_25_v(12); - --dma_descriptors_25_w_s( 7).read_not_write <= register_write_data_25_v(11); - dma_descriptors_25_w_s( 7).dword_count <= register_write_data_25_v(10 downto 0); - when REG_DESCRIPTOR_ENABLE => for i in 0 to (NUMBER_OF_DESCRIPTORS-1) loop - dma_descriptors_25_w_s(i).enable <= register_write_data_25_v(i); - end loop; - dma_descriptors_enable_written_25_s <= '1'; - when REG_FIFO_FLUSH => flush_fifo_25_s <= '1'; - when REG_DMA_RESET => dma_soft_reset_25_s <= '1'; - when REG_SOFT_RESET => reset_global_soft_25_s <= '1'; - when REG_REGISTER_RESET => reset_register_map_s <= '1'; - when REG_FROMHOST_FULL_THRESH => fromhost_pfull_threshold_assert_s <= register_write_data_25_v(24 downto 16); - fromhost_pfull_threshold_negate_s <= register_write_data_25_v( 8 downto 0); - when REG_TOHOST_FULL_THRESH => tohost_pfull_threshold_assert_s <= register_write_data_25_v(27 downto 16); - tohost_pfull_threshold_negate_s <= register_write_data_25_v(11 downto 0); - when REG_BUSY_THRESH_ASSERT => busy_threshold_assert <= register_write_data_25_v(63 downto 0); - when REG_BUSY_THRESH_NEGATE => busy_threshold_negate <= register_write_data_25_v(63 downto 0); - when REG_PC_PTR_GAP => pc_ptr_gap_25_s <= register_write_data_25_v(63 downto 0); - when others => --do nothing - - end case; - --Write registers in BAR1 - elsif(bar_id_25_s = "001") then - register_write_address_v := register_write_address_25_s(19 downto 4)&"0000"; - case(register_write_address_v) is - when REG_INT_VEC_00 => int_vector_25_s(0).int_vec_add <= register_write_data_25_v(63 downto 0); - int_vector_25_s(0).int_vec_data <= register_write_data_25_v(95 downto 64); - int_vector_25_s(0).int_vec_ctrl <= register_write_data_25_v(127 downto 96); - when REG_INT_VEC_01 => int_vector_25_s(1).int_vec_add <= register_write_data_25_v(63 downto 0); - int_vector_25_s(1).int_vec_data <= register_write_data_25_v(95 downto 64); - int_vector_25_s(1).int_vec_ctrl <= register_write_data_25_v(127 downto 96); - when REG_INT_VEC_02 => int_vector_25_s(2).int_vec_add <= register_write_data_25_v(63 downto 0); - int_vector_25_s(2).int_vec_data <= register_write_data_25_v(95 downto 64); - int_vector_25_s(2).int_vec_ctrl <= register_write_data_25_v(127 downto 96); - when REG_INT_VEC_03 => int_vector_25_s(3).int_vec_add <= register_write_data_25_v(63 downto 0); - int_vector_25_s(3).int_vec_data <= register_write_data_25_v(95 downto 64); - int_vector_25_s(3).int_vec_ctrl <= register_write_data_25_v(127 downto 96); - when REG_INT_VEC_04 => int_vector_25_s(4).int_vec_add <= register_write_data_25_v(63 downto 0); - int_vector_25_s(4).int_vec_data <= register_write_data_25_v(95 downto 64); - int_vector_25_s(4).int_vec_ctrl <= register_write_data_25_v(127 downto 96); - when REG_INT_VEC_05 => int_vector_25_s(5).int_vec_add <= register_write_data_25_v(63 downto 0); - int_vector_25_s(5).int_vec_data <= register_write_data_25_v(95 downto 64); - int_vector_25_s(5).int_vec_ctrl <= register_write_data_25_v(127 downto 96); - when REG_INT_VEC_06 => int_vector_25_s(6).int_vec_add <= register_write_data_25_v(63 downto 0); - int_vector_25_s(6).int_vec_data <= register_write_data_25_v(95 downto 64); - int_vector_25_s(6).int_vec_ctrl <= register_write_data_25_v(127 downto 96); - when REG_INT_VEC_07 => int_vector_25_s(7).int_vec_add <= register_write_data_25_v(63 downto 0); - int_vector_25_s(7).int_vec_data <= register_write_data_25_v(95 downto 64); - int_vector_25_s(7).int_vec_ctrl <= register_write_data_25_v(127 downto 96); - when REG_INT_VEC_08 => int_vector_25_s(8).int_vec_add <= register_write_data_25_v(63 downto 0); - int_vector_25_s(8).int_vec_data <= register_write_data_25_v(95 downto 64); - int_vector_25_s(8).int_vec_ctrl <= register_write_data_25_v(127 downto 96); - when REG_INT_VEC_09 => int_vector_25_s(9).int_vec_add <= register_write_data_25_v(63 downto 0); - int_vector_25_s(9).int_vec_data <= register_write_data_25_v(95 downto 64); - int_vector_25_s(9).int_vec_ctrl <= register_write_data_25_v(127 downto 96); - when REG_INT_VEC_10 => int_vector_25_s(10).int_vec_add <= register_write_data_25_v(63 downto 0); - int_vector_25_s(10).int_vec_data <= register_write_data_25_v(95 downto 64); - int_vector_25_s(10).int_vec_ctrl <= register_write_data_25_v(127 downto 96); - when REG_INT_VEC_11 => int_vector_25_s(11).int_vec_add <= register_write_data_25_v(63 downto 0); - int_vector_25_s(11).int_vec_data <= register_write_data_25_v(95 downto 64); - int_vector_25_s(11).int_vec_ctrl <= register_write_data_25_v(127 downto 96); - when REG_INT_VEC_12 => int_vector_25_s(12).int_vec_add <= register_write_data_25_v(63 downto 0); - int_vector_25_s(12).int_vec_data <= register_write_data_25_v(95 downto 64); - int_vector_25_s(12).int_vec_ctrl <= register_write_data_25_v(127 downto 96); - when REG_INT_VEC_13 => int_vector_25_s(13).int_vec_add <= register_write_data_25_v(63 downto 0); - int_vector_25_s(13).int_vec_data <= register_write_data_25_v(95 downto 64); - int_vector_25_s(13).int_vec_ctrl <= register_write_data_25_v(127 downto 96); - when REG_INT_VEC_14 => int_vector_25_s(14).int_vec_add <= register_write_data_25_v(63 downto 0); - int_vector_25_s(14).int_vec_data <= register_write_data_25_v(95 downto 64); - int_vector_25_s(14).int_vec_ctrl <= register_write_data_25_v(127 downto 96); - when REG_INT_VEC_15 => int_vector_25_s(15).int_vec_add <= register_write_data_25_v(63 downto 0); - int_vector_25_s(15).int_vec_data <= register_write_data_25_v(95 downto 64); - int_vector_25_s(15).int_vec_ctrl <= register_write_data_25_v(127 downto 96); - when REG_INT_TAB_EN => int_table_en_s <= register_write_data_25_v(NUMBER_OF_INTERRUPTS-1 downto 0); - when others => - end case; - --Write registers in BAR2 - elsif(bar_id_25_s = "010") then - register_write_address_v := register_write_address_25_s(19 downto 4)&"0000"; - case(register_write_address_v) is - --! - --! generated registers write - ------------------------------------- - ---- ## GENERATED code BEGIN #4 ---- - ------------------------------------- - when REG_STATUS_LEDS => register_map_control_s.STATUS_LEDS <= register_write_data_25_v(7 downto 0); -- Board GPIO Leds - when REG_TIMEOUT_CTRL => register_map_control_s.TIMEOUT_CTRL.ENABLE <= register_write_data_25_v(32 downto 32); -- 1 enables the timout trailer generation for ToHost mode - register_map_control_s.TIMEOUT_CTRL.TIMEOUT <= register_write_data_25_v(31 downto 0); -- Number of 40 MHz clock cycles after which a timeout occurs. - when REG_CRTOHOST_FIFO_STATUS => register_map_control_s.CRTOHOST_FIFO_STATUS.CLEAR <= "1"; -- Any write to this register clears the latched FULL flags - when REG_CRFROMHOST_FIFO_STATUS => register_map_control_s.CRFROMHOST_FIFO_STATUS.CLEAR <= "1"; -- Any write to this register clears the latched FULL flags - when REG_BROADCAST_ENABLE_00 => - if GBT_NUM > 0 then - register_map_control_s.BROADCAST_ENABLE (0) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_01 => - if GBT_NUM > 1 then - register_map_control_s.BROADCAST_ENABLE (1) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_02 => - if GBT_NUM > 2 then - register_map_control_s.BROADCAST_ENABLE (2) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_03 => - if GBT_NUM > 3 then - register_map_control_s.BROADCAST_ENABLE (3) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_04 => - if GBT_NUM > 4 then - register_map_control_s.BROADCAST_ENABLE (4) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_05 => - if GBT_NUM > 5 then - register_map_control_s.BROADCAST_ENABLE (5) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_06 => - if GBT_NUM > 6 then - register_map_control_s.BROADCAST_ENABLE (6) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_07 => - if GBT_NUM > 7 then - register_map_control_s.BROADCAST_ENABLE (7) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_08 => - if GBT_NUM > 8 then - register_map_control_s.BROADCAST_ENABLE (8) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_09 => - if GBT_NUM > 9 then - register_map_control_s.BROADCAST_ENABLE (9) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_10 => - if GBT_NUM > 10 then - register_map_control_s.BROADCAST_ENABLE (10) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_11 => - if GBT_NUM > 11 then - register_map_control_s.BROADCAST_ENABLE (11) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_12 => - if GBT_NUM > 12 then - register_map_control_s.BROADCAST_ENABLE (12) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_13 => - if GBT_NUM > 13 then - register_map_control_s.BROADCAST_ENABLE (13) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_14 => - if GBT_NUM > 14 then - register_map_control_s.BROADCAST_ENABLE (14) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_15 => - if GBT_NUM > 15 then - register_map_control_s.BROADCAST_ENABLE (15) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_16 => - if GBT_NUM > 16 then - register_map_control_s.BROADCAST_ENABLE (16) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_17 => - if GBT_NUM > 17 then - register_map_control_s.BROADCAST_ENABLE (17) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_18 => - if GBT_NUM > 18 then - register_map_control_s.BROADCAST_ENABLE (18) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_19 => - if GBT_NUM > 19 then - register_map_control_s.BROADCAST_ENABLE (19) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_20 => - if GBT_NUM > 20 then - register_map_control_s.BROADCAST_ENABLE (20) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_21 => - if GBT_NUM > 21 then - register_map_control_s.BROADCAST_ENABLE (21) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_22 => - if GBT_NUM > 22 then - register_map_control_s.BROADCAST_ENABLE (22) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. - end if; - when REG_BROADCAST_ENABLE_23 => - if GBT_NUM > 23 then - register_map_control_s.BROADCAST_ENABLE (23) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. - end if; - when REG_LINK_00_HAS_STREAM_ID => - if GBT_NUM > 0 then - register_map_control_s.HAS_STREAM_ID (0).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (0).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (0).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (0).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (0).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (0).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (0).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_01_HAS_STREAM_ID => - if GBT_NUM > 1 then - register_map_control_s.HAS_STREAM_ID (1).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (1).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (1).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (1).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (1).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (1).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (1).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_02_HAS_STREAM_ID => - if GBT_NUM > 2 then - register_map_control_s.HAS_STREAM_ID (2).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (2).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (2).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (2).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (2).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (2).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (2).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_03_HAS_STREAM_ID => - if GBT_NUM > 3 then - register_map_control_s.HAS_STREAM_ID (3).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (3).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (3).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (3).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (3).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (3).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (3).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_04_HAS_STREAM_ID => - if GBT_NUM > 4 then - register_map_control_s.HAS_STREAM_ID (4).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (4).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (4).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (4).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (4).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (4).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (4).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_05_HAS_STREAM_ID => - if GBT_NUM > 5 then - register_map_control_s.HAS_STREAM_ID (5).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (5).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (5).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (5).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (5).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (5).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (5).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_06_HAS_STREAM_ID => - if GBT_NUM > 6 then - register_map_control_s.HAS_STREAM_ID (6).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (6).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (6).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (6).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (6).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (6).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (6).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_07_HAS_STREAM_ID => - if GBT_NUM > 7 then - register_map_control_s.HAS_STREAM_ID (7).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (7).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (7).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (7).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (7).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (7).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (7).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_08_HAS_STREAM_ID => - if GBT_NUM > 8 then - register_map_control_s.HAS_STREAM_ID (8).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (8).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (8).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (8).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (8).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (8).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (8).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_09_HAS_STREAM_ID => - if GBT_NUM > 9 then - register_map_control_s.HAS_STREAM_ID (9).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (9).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (9).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (9).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (9).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (9).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (9).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_10_HAS_STREAM_ID => - if GBT_NUM > 10 then - register_map_control_s.HAS_STREAM_ID (10).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (10).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (10).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (10).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (10).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (10).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (10).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_11_HAS_STREAM_ID => - if GBT_NUM > 11 then - register_map_control_s.HAS_STREAM_ID (11).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (11).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (11).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (11).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (11).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (11).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (11).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_12_HAS_STREAM_ID => - if GBT_NUM > 12 then - register_map_control_s.HAS_STREAM_ID (12).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (12).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (12).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (12).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (12).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (12).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (12).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_13_HAS_STREAM_ID => - if GBT_NUM > 13 then - register_map_control_s.HAS_STREAM_ID (13).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (13).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (13).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (13).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (13).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (13).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (13).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_14_HAS_STREAM_ID => - if GBT_NUM > 14 then - register_map_control_s.HAS_STREAM_ID (14).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (14).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (14).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (14).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (14).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (14).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (14).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_15_HAS_STREAM_ID => - if GBT_NUM > 15 then - register_map_control_s.HAS_STREAM_ID (15).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (15).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (15).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (15).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (15).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (15).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (15).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_16_HAS_STREAM_ID => - if GBT_NUM > 16 then - register_map_control_s.HAS_STREAM_ID (16).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (16).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (16).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (16).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (16).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (16).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (16).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_17_HAS_STREAM_ID => - if GBT_NUM > 17 then - register_map_control_s.HAS_STREAM_ID (17).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (17).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (17).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (17).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (17).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (17).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (17).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_18_HAS_STREAM_ID => - if GBT_NUM > 18 then - register_map_control_s.HAS_STREAM_ID (18).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (18).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (18).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (18).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (18).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (18).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (18).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_19_HAS_STREAM_ID => - if GBT_NUM > 19 then - register_map_control_s.HAS_STREAM_ID (19).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (19).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (19).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (19).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (19).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (19).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (19).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_20_HAS_STREAM_ID => - if GBT_NUM > 20 then - register_map_control_s.HAS_STREAM_ID (20).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (20).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (20).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (20).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (20).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (20).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (20).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_21_HAS_STREAM_ID => - if GBT_NUM > 21 then - register_map_control_s.HAS_STREAM_ID (21).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (21).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (21).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (21).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (21).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (21).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (21).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_22_HAS_STREAM_ID => - if GBT_NUM > 22 then - register_map_control_s.HAS_STREAM_ID (22).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (22).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (22).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (22).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (22).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (22).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (22).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_LINK_23_HAS_STREAM_ID => - if GBT_NUM > 23 then - register_map_control_s.HAS_STREAM_ID (23).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (23).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (23).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (23).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (23).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (23).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID - register_map_control_s.HAS_STREAM_ID (23).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. - end if; - when REG_DECODING_LINK00_EGROUP0_CTRL => - if GBT_NUM > 0 then - register_map_control_s.DECODING_EGROUP_CTRL (0)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (0)(0).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (0)(0).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (0)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK00_EGROUP1_CTRL => - if GBT_NUM > 0 then - register_map_control_s.DECODING_EGROUP_CTRL (0)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (0)(1).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (0)(1).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (0)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK00_EGROUP2_CTRL => - if GBT_NUM > 0 then - register_map_control_s.DECODING_EGROUP_CTRL (0)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (0)(2).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (0)(2).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (0)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK00_EGROUP3_CTRL => - if GBT_NUM > 0 then - register_map_control_s.DECODING_EGROUP_CTRL (0)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (0)(3).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (0)(3).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (0)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK00_EGROUP4_CTRL => - if GBT_NUM > 0 then - register_map_control_s.DECODING_EGROUP_CTRL (0)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (0)(4).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (0)(4).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (0)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK00_EGROUP5_CTRL => - if GBT_NUM > 0 then - register_map_control_s.DECODING_EGROUP_CTRL (0)(5).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (0)(5).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (0)(5).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (0)(5).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK00_EGROUP6_CTRL => - if GBT_NUM > 0 then - register_map_control_s.DECODING_EGROUP_CTRL (0)(6).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (0)(6).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (0)(6).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (0)(6).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK01_EGROUP0_CTRL => - if GBT_NUM > 1 then - register_map_control_s.DECODING_EGROUP_CTRL (1)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (1)(0).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (1)(0).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (1)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK01_EGROUP1_CTRL => - if GBT_NUM > 1 then - register_map_control_s.DECODING_EGROUP_CTRL (1)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (1)(1).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (1)(1).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (1)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK01_EGROUP2_CTRL => - if GBT_NUM > 1 then - register_map_control_s.DECODING_EGROUP_CTRL (1)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (1)(2).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (1)(2).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (1)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK01_EGROUP3_CTRL => - if GBT_NUM > 1 then - register_map_control_s.DECODING_EGROUP_CTRL (1)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (1)(3).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (1)(3).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (1)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK01_EGROUP4_CTRL => - if GBT_NUM > 1 then - register_map_control_s.DECODING_EGROUP_CTRL (1)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (1)(4).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (1)(4).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (1)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK01_EGROUP5_CTRL => - if GBT_NUM > 1 then - register_map_control_s.DECODING_EGROUP_CTRL (1)(5).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (1)(5).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (1)(5).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (1)(5).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK01_EGROUP6_CTRL => - if GBT_NUM > 1 then - register_map_control_s.DECODING_EGROUP_CTRL (1)(6).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (1)(6).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (1)(6).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (1)(6).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK02_EGROUP0_CTRL => - if GBT_NUM > 2 then - register_map_control_s.DECODING_EGROUP_CTRL (2)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (2)(0).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (2)(0).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (2)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK02_EGROUP1_CTRL => - if GBT_NUM > 2 then - register_map_control_s.DECODING_EGROUP_CTRL (2)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (2)(1).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (2)(1).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (2)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK02_EGROUP2_CTRL => - if GBT_NUM > 2 then - register_map_control_s.DECODING_EGROUP_CTRL (2)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (2)(2).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (2)(2).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (2)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK02_EGROUP3_CTRL => - if GBT_NUM > 2 then - register_map_control_s.DECODING_EGROUP_CTRL (2)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (2)(3).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (2)(3).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (2)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK02_EGROUP4_CTRL => - if GBT_NUM > 2 then - register_map_control_s.DECODING_EGROUP_CTRL (2)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (2)(4).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (2)(4).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (2)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK02_EGROUP5_CTRL => - if GBT_NUM > 2 then - register_map_control_s.DECODING_EGROUP_CTRL (2)(5).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (2)(5).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (2)(5).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (2)(5).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK02_EGROUP6_CTRL => - if GBT_NUM > 2 then - register_map_control_s.DECODING_EGROUP_CTRL (2)(6).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (2)(6).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (2)(6).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (2)(6).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK03_EGROUP0_CTRL => - if GBT_NUM > 3 then - register_map_control_s.DECODING_EGROUP_CTRL (3)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (3)(0).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (3)(0).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (3)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK03_EGROUP1_CTRL => - if GBT_NUM > 3 then - register_map_control_s.DECODING_EGROUP_CTRL (3)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (3)(1).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (3)(1).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (3)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK03_EGROUP2_CTRL => - if GBT_NUM > 3 then - register_map_control_s.DECODING_EGROUP_CTRL (3)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (3)(2).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (3)(2).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (3)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK03_EGROUP3_CTRL => - if GBT_NUM > 3 then - register_map_control_s.DECODING_EGROUP_CTRL (3)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (3)(3).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (3)(3).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (3)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK03_EGROUP4_CTRL => - if GBT_NUM > 3 then - register_map_control_s.DECODING_EGROUP_CTRL (3)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (3)(4).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (3)(4).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (3)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK03_EGROUP5_CTRL => - if GBT_NUM > 3 then - register_map_control_s.DECODING_EGROUP_CTRL (3)(5).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (3)(5).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (3)(5).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (3)(5).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK03_EGROUP6_CTRL => - if GBT_NUM > 3 then - register_map_control_s.DECODING_EGROUP_CTRL (3)(6).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (3)(6).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (3)(6).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (3)(6).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK04_EGROUP0_CTRL => - if GBT_NUM > 4 then - register_map_control_s.DECODING_EGROUP_CTRL (4)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (4)(0).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (4)(0).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (4)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK04_EGROUP1_CTRL => - if GBT_NUM > 4 then - register_map_control_s.DECODING_EGROUP_CTRL (4)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (4)(1).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (4)(1).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (4)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK04_EGROUP2_CTRL => - if GBT_NUM > 4 then - register_map_control_s.DECODING_EGROUP_CTRL (4)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (4)(2).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (4)(2).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (4)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK04_EGROUP3_CTRL => - if GBT_NUM > 4 then - register_map_control_s.DECODING_EGROUP_CTRL (4)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (4)(3).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (4)(3).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (4)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK04_EGROUP4_CTRL => - if GBT_NUM > 4 then - register_map_control_s.DECODING_EGROUP_CTRL (4)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (4)(4).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (4)(4).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (4)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK04_EGROUP5_CTRL => - if GBT_NUM > 4 then - register_map_control_s.DECODING_EGROUP_CTRL (4)(5).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (4)(5).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (4)(5).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (4)(5).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK04_EGROUP6_CTRL => - if GBT_NUM > 4 then - register_map_control_s.DECODING_EGROUP_CTRL (4)(6).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (4)(6).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (4)(6).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (4)(6).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK05_EGROUP0_CTRL => - if GBT_NUM > 5 then - register_map_control_s.DECODING_EGROUP_CTRL (5)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (5)(0).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (5)(0).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (5)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK05_EGROUP1_CTRL => - if GBT_NUM > 5 then - register_map_control_s.DECODING_EGROUP_CTRL (5)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (5)(1).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (5)(1).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (5)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK05_EGROUP2_CTRL => - if GBT_NUM > 5 then - register_map_control_s.DECODING_EGROUP_CTRL (5)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (5)(2).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (5)(2).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (5)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK05_EGROUP3_CTRL => - if GBT_NUM > 5 then - register_map_control_s.DECODING_EGROUP_CTRL (5)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (5)(3).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (5)(3).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (5)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK05_EGROUP4_CTRL => - if GBT_NUM > 5 then - register_map_control_s.DECODING_EGROUP_CTRL (5)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (5)(4).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (5)(4).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (5)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK05_EGROUP5_CTRL => - if GBT_NUM > 5 then - register_map_control_s.DECODING_EGROUP_CTRL (5)(5).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (5)(5).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (5)(5).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (5)(5).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK05_EGROUP6_CTRL => - if GBT_NUM > 5 then - register_map_control_s.DECODING_EGROUP_CTRL (5)(6).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (5)(6).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (5)(6).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (5)(6).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK06_EGROUP0_CTRL => - if GBT_NUM > 6 then - register_map_control_s.DECODING_EGROUP_CTRL (6)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (6)(0).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (6)(0).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (6)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK06_EGROUP1_CTRL => - if GBT_NUM > 6 then - register_map_control_s.DECODING_EGROUP_CTRL (6)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (6)(1).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (6)(1).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (6)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK06_EGROUP2_CTRL => - if GBT_NUM > 6 then - register_map_control_s.DECODING_EGROUP_CTRL (6)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (6)(2).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (6)(2).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (6)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK06_EGROUP3_CTRL => - if GBT_NUM > 6 then - register_map_control_s.DECODING_EGROUP_CTRL (6)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (6)(3).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (6)(3).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (6)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK06_EGROUP4_CTRL => - if GBT_NUM > 6 then - register_map_control_s.DECODING_EGROUP_CTRL (6)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (6)(4).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (6)(4).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (6)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK06_EGROUP5_CTRL => - if GBT_NUM > 6 then - register_map_control_s.DECODING_EGROUP_CTRL (6)(5).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (6)(5).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (6)(5).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (6)(5).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK06_EGROUP6_CTRL => - if GBT_NUM > 6 then - register_map_control_s.DECODING_EGROUP_CTRL (6)(6).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (6)(6).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (6)(6).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (6)(6).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK07_EGROUP0_CTRL => - if GBT_NUM > 7 then - register_map_control_s.DECODING_EGROUP_CTRL (7)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (7)(0).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (7)(0).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (7)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK07_EGROUP1_CTRL => - if GBT_NUM > 7 then - register_map_control_s.DECODING_EGROUP_CTRL (7)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (7)(1).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (7)(1).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (7)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK07_EGROUP2_CTRL => - if GBT_NUM > 7 then - register_map_control_s.DECODING_EGROUP_CTRL (7)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (7)(2).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (7)(2).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (7)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK07_EGROUP3_CTRL => - if GBT_NUM > 7 then - register_map_control_s.DECODING_EGROUP_CTRL (7)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (7)(3).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (7)(3).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (7)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK07_EGROUP4_CTRL => - if GBT_NUM > 7 then - register_map_control_s.DECODING_EGROUP_CTRL (7)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (7)(4).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (7)(4).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (7)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK07_EGROUP5_CTRL => - if GBT_NUM > 7 then - register_map_control_s.DECODING_EGROUP_CTRL (7)(5).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (7)(5).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (7)(5).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (7)(5).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK07_EGROUP6_CTRL => - if GBT_NUM > 7 then - register_map_control_s.DECODING_EGROUP_CTRL (7)(6).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (7)(6).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (7)(6).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (7)(6).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK08_EGROUP0_CTRL => - if GBT_NUM > 8 then - register_map_control_s.DECODING_EGROUP_CTRL (8)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (8)(0).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (8)(0).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (8)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK08_EGROUP1_CTRL => - if GBT_NUM > 8 then - register_map_control_s.DECODING_EGROUP_CTRL (8)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (8)(1).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (8)(1).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (8)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK08_EGROUP2_CTRL => - if GBT_NUM > 8 then - register_map_control_s.DECODING_EGROUP_CTRL (8)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (8)(2).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (8)(2).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (8)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK08_EGROUP3_CTRL => - if GBT_NUM > 8 then - register_map_control_s.DECODING_EGROUP_CTRL (8)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (8)(3).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (8)(3).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (8)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK08_EGROUP4_CTRL => - if GBT_NUM > 8 then - register_map_control_s.DECODING_EGROUP_CTRL (8)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (8)(4).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (8)(4).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (8)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK08_EGROUP5_CTRL => - if GBT_NUM > 8 then - register_map_control_s.DECODING_EGROUP_CTRL (8)(5).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (8)(5).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (8)(5).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (8)(5).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK08_EGROUP6_CTRL => - if GBT_NUM > 8 then - register_map_control_s.DECODING_EGROUP_CTRL (8)(6).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (8)(6).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (8)(6).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (8)(6).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK09_EGROUP0_CTRL => - if GBT_NUM > 9 then - register_map_control_s.DECODING_EGROUP_CTRL (9)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (9)(0).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (9)(0).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (9)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK09_EGROUP1_CTRL => - if GBT_NUM > 9 then - register_map_control_s.DECODING_EGROUP_CTRL (9)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (9)(1).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (9)(1).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (9)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK09_EGROUP2_CTRL => - if GBT_NUM > 9 then - register_map_control_s.DECODING_EGROUP_CTRL (9)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (9)(2).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (9)(2).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (9)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK09_EGROUP3_CTRL => - if GBT_NUM > 9 then - register_map_control_s.DECODING_EGROUP_CTRL (9)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (9)(3).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (9)(3).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (9)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK09_EGROUP4_CTRL => - if GBT_NUM > 9 then - register_map_control_s.DECODING_EGROUP_CTRL (9)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (9)(4).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (9)(4).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (9)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK09_EGROUP5_CTRL => - if GBT_NUM > 9 then - register_map_control_s.DECODING_EGROUP_CTRL (9)(5).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (9)(5).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (9)(5).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (9)(5).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK09_EGROUP6_CTRL => - if GBT_NUM > 9 then - register_map_control_s.DECODING_EGROUP_CTRL (9)(6).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (9)(6).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (9)(6).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (9)(6).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK10_EGROUP0_CTRL => - if GBT_NUM > 10 then - register_map_control_s.DECODING_EGROUP_CTRL (10)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (10)(0).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (10)(0).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (10)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK10_EGROUP1_CTRL => - if GBT_NUM > 10 then - register_map_control_s.DECODING_EGROUP_CTRL (10)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (10)(1).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (10)(1).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (10)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK10_EGROUP2_CTRL => - if GBT_NUM > 10 then - register_map_control_s.DECODING_EGROUP_CTRL (10)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (10)(2).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (10)(2).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (10)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK10_EGROUP3_CTRL => - if GBT_NUM > 10 then - register_map_control_s.DECODING_EGROUP_CTRL (10)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (10)(3).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (10)(3).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (10)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK10_EGROUP4_CTRL => - if GBT_NUM > 10 then - register_map_control_s.DECODING_EGROUP_CTRL (10)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (10)(4).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (10)(4).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (10)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK10_EGROUP5_CTRL => - if GBT_NUM > 10 then - register_map_control_s.DECODING_EGROUP_CTRL (10)(5).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (10)(5).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (10)(5).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (10)(5).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK10_EGROUP6_CTRL => - if GBT_NUM > 10 then - register_map_control_s.DECODING_EGROUP_CTRL (10)(6).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (10)(6).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (10)(6).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (10)(6).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK11_EGROUP0_CTRL => - if GBT_NUM > 11 then - register_map_control_s.DECODING_EGROUP_CTRL (11)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (11)(0).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (11)(0).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (11)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK11_EGROUP1_CTRL => - if GBT_NUM > 11 then - register_map_control_s.DECODING_EGROUP_CTRL (11)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (11)(1).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (11)(1).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (11)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK11_EGROUP2_CTRL => - if GBT_NUM > 11 then - register_map_control_s.DECODING_EGROUP_CTRL (11)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (11)(2).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (11)(2).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (11)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK11_EGROUP3_CTRL => - if GBT_NUM > 11 then - register_map_control_s.DECODING_EGROUP_CTRL (11)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (11)(3).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (11)(3).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (11)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK11_EGROUP4_CTRL => - if GBT_NUM > 11 then - register_map_control_s.DECODING_EGROUP_CTRL (11)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (11)(4).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (11)(4).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (11)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK11_EGROUP5_CTRL => - if GBT_NUM > 11 then - register_map_control_s.DECODING_EGROUP_CTRL (11)(5).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (11)(5).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (11)(5).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (11)(5).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_DECODING_LINK11_EGROUP6_CTRL => - if GBT_NUM > 11 then - register_map_control_s.DECODING_EGROUP_CTRL (11)(6).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.DECODING_EGROUP_CTRL (11)(6).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path - -- 0: direct mode - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: TTC - -- 4: ITk Strips 8b10b - -- 5: ITk Pixel - -- 6: Endeavour - -- 7-15: reserved - - register_map_control_s.DECODING_EGROUP_CTRL (11)(6).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 - register_map_control_s.DECODING_EGROUP_CTRL (11)(6).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC - end if; - when REG_MINI_EGROUP_TOHOST_00 => - if GBT_NUM > 0 then - register_map_control_s.MINI_EGROUP_TOHOST (0).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (0).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_TOHOST (0).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (0).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_TOHOST (0).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (0).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_TOHOST (0).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_01 => - if GBT_NUM > 1 then - register_map_control_s.MINI_EGROUP_TOHOST (1).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (1).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_TOHOST (1).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (1).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_TOHOST (1).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (1).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_TOHOST (1).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_02 => - if GBT_NUM > 2 then - register_map_control_s.MINI_EGROUP_TOHOST (2).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (2).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_TOHOST (2).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (2).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_TOHOST (2).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (2).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_TOHOST (2).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_03 => - if GBT_NUM > 3 then - register_map_control_s.MINI_EGROUP_TOHOST (3).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (3).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_TOHOST (3).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (3).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_TOHOST (3).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (3).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_TOHOST (3).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_04 => - if GBT_NUM > 4 then - register_map_control_s.MINI_EGROUP_TOHOST (4).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (4).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_TOHOST (4).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (4).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_TOHOST (4).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (4).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_TOHOST (4).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_05 => - if GBT_NUM > 5 then - register_map_control_s.MINI_EGROUP_TOHOST (5).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (5).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_TOHOST (5).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (5).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_TOHOST (5).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (5).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_TOHOST (5).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_06 => - if GBT_NUM > 6 then - register_map_control_s.MINI_EGROUP_TOHOST (6).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (6).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_TOHOST (6).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (6).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_TOHOST (6).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (6).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_TOHOST (6).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_07 => - if GBT_NUM > 7 then - register_map_control_s.MINI_EGROUP_TOHOST (7).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (7).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_TOHOST (7).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (7).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_TOHOST (7).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (7).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_TOHOST (7).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_08 => - if GBT_NUM > 8 then - register_map_control_s.MINI_EGROUP_TOHOST (8).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (8).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_TOHOST (8).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (8).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_TOHOST (8).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (8).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_TOHOST (8).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_09 => - if GBT_NUM > 9 then - register_map_control_s.MINI_EGROUP_TOHOST (9).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (9).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_TOHOST (9).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (9).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_TOHOST (9).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (9).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_TOHOST (9).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_10 => - if GBT_NUM > 10 then - register_map_control_s.MINI_EGROUP_TOHOST (10).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (10).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_TOHOST (10).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (10).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_TOHOST (10).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (10).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_TOHOST (10).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_11 => - if GBT_NUM > 11 then - register_map_control_s.MINI_EGROUP_TOHOST (11).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (11).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_TOHOST (11).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (11).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_TOHOST (11).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (11).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_TOHOST (11).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_12 => - if GBT_NUM > 12 then - register_map_control_s.MINI_EGROUP_TOHOST (12).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (12).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_TOHOST (12).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (12).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_TOHOST (12).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (12).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_TOHOST (12).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_13 => - if GBT_NUM > 13 then - register_map_control_s.MINI_EGROUP_TOHOST (13).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (13).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_TOHOST (13).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (13).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_TOHOST (13).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (13).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_TOHOST (13).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_14 => - if GBT_NUM > 14 then - register_map_control_s.MINI_EGROUP_TOHOST (14).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (14).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_TOHOST (14).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (14).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_TOHOST (14).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (14).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_TOHOST (14).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_15 => - if GBT_NUM > 15 then - register_map_control_s.MINI_EGROUP_TOHOST (15).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (15).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_TOHOST (15).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (15).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_TOHOST (15).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (15).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_TOHOST (15).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_16 => - if GBT_NUM > 16 then - register_map_control_s.MINI_EGROUP_TOHOST (16).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (16).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_TOHOST (16).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (16).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_TOHOST (16).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (16).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_TOHOST (16).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_17 => - if GBT_NUM > 17 then - register_map_control_s.MINI_EGROUP_TOHOST (17).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (17).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_TOHOST (17).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (17).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_TOHOST (17).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (17).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_TOHOST (17).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_18 => - if GBT_NUM > 18 then - register_map_control_s.MINI_EGROUP_TOHOST (18).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (18).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_TOHOST (18).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (18).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_TOHOST (18).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (18).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_TOHOST (18).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_19 => - if GBT_NUM > 19 then - register_map_control_s.MINI_EGROUP_TOHOST (19).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (19).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_TOHOST (19).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (19).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_TOHOST (19).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (19).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_TOHOST (19).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_20 => - if GBT_NUM > 20 then - register_map_control_s.MINI_EGROUP_TOHOST (20).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (20).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_TOHOST (20).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (20).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_TOHOST (20).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (20).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_TOHOST (20).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_21 => - if GBT_NUM > 21 then - register_map_control_s.MINI_EGROUP_TOHOST (21).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (21).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_TOHOST (21).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (21).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_TOHOST (21).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (21).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_TOHOST (21).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_22 => - if GBT_NUM > 22 then - register_map_control_s.MINI_EGROUP_TOHOST (22).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (22).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_TOHOST (22).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (22).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_TOHOST (22).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (22).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_TOHOST (22).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel - end if; - when REG_MINI_EGROUP_TOHOST_23 => - if GBT_NUM > 23 then - register_map_control_s.MINI_EGROUP_TOHOST (23).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (23).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_TOHOST (23).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (23).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_TOHOST (23).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_TOHOST (23).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_TOHOST (23).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel - end if; - when REG_TTC_TOHOST_ENABLE => register_map_control_s.TTC_TOHOST_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the ToHost Mini Egroup in TTC mode - when REG_DECODING_REVERSE_10B => register_map_control_s.DECODING_REVERSE_10B <= register_write_data_25_v(0 downto 0); -- Reverse 10-bit word of elink data for 8b10b E-links - -- 1: Receive 10-bit word in ToHost E-Paths, MSB first - -- 0: Receive 10-bit word in ToHost E-Paths, LSB first - - when REG_ENCODING_REVERSE_10B => register_map_control_s.ENCODING_REVERSE_10B <= register_write_data_25_v(0 downto 0); -- Reverse 10-bit word of elink data for 8b10b E-links. 1 MSB first, 0 LSB first - when REG_ENCODING_LINK00_EGROUP0_CTRL => - if GBT_NUM > 0 then - register_map_control_s.ENCODING_EGROUP_CTRL (0)(0).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (0)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (0)(0).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (0)(0).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (0)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK00_EGROUP1_CTRL => - if GBT_NUM > 0 then - register_map_control_s.ENCODING_EGROUP_CTRL (0)(1).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (0)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (0)(1).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (0)(1).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (0)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK00_EGROUP2_CTRL => - if GBT_NUM > 0 then - register_map_control_s.ENCODING_EGROUP_CTRL (0)(2).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (0)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (0)(2).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (0)(2).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (0)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK00_EGROUP3_CTRL => - if GBT_NUM > 0 then - register_map_control_s.ENCODING_EGROUP_CTRL (0)(3).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (0)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (0)(3).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (0)(3).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (0)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK00_EGROUP4_CTRL => - if GBT_NUM > 0 then - register_map_control_s.ENCODING_EGROUP_CTRL (0)(4).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (0)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (0)(4).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (0)(4).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (0)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK01_EGROUP0_CTRL => - if GBT_NUM > 1 then - register_map_control_s.ENCODING_EGROUP_CTRL (1)(0).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (1)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (1)(0).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (1)(0).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (1)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK01_EGROUP1_CTRL => - if GBT_NUM > 1 then - register_map_control_s.ENCODING_EGROUP_CTRL (1)(1).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (1)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (1)(1).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (1)(1).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (1)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK01_EGROUP2_CTRL => - if GBT_NUM > 1 then - register_map_control_s.ENCODING_EGROUP_CTRL (1)(2).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (1)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (1)(2).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (1)(2).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (1)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK01_EGROUP3_CTRL => - if GBT_NUM > 1 then - register_map_control_s.ENCODING_EGROUP_CTRL (1)(3).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (1)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (1)(3).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (1)(3).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (1)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK01_EGROUP4_CTRL => - if GBT_NUM > 1 then - register_map_control_s.ENCODING_EGROUP_CTRL (1)(4).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (1)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (1)(4).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (1)(4).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (1)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK02_EGROUP0_CTRL => - if GBT_NUM > 2 then - register_map_control_s.ENCODING_EGROUP_CTRL (2)(0).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (2)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (2)(0).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (2)(0).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (2)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK02_EGROUP1_CTRL => - if GBT_NUM > 2 then - register_map_control_s.ENCODING_EGROUP_CTRL (2)(1).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (2)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (2)(1).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (2)(1).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (2)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK02_EGROUP2_CTRL => - if GBT_NUM > 2 then - register_map_control_s.ENCODING_EGROUP_CTRL (2)(2).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (2)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (2)(2).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (2)(2).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (2)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK02_EGROUP3_CTRL => - if GBT_NUM > 2 then - register_map_control_s.ENCODING_EGROUP_CTRL (2)(3).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (2)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (2)(3).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (2)(3).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (2)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK02_EGROUP4_CTRL => - if GBT_NUM > 2 then - register_map_control_s.ENCODING_EGROUP_CTRL (2)(4).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (2)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (2)(4).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (2)(4).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (2)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK03_EGROUP0_CTRL => - if GBT_NUM > 3 then - register_map_control_s.ENCODING_EGROUP_CTRL (3)(0).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (3)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (3)(0).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (3)(0).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (3)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK03_EGROUP1_CTRL => - if GBT_NUM > 3 then - register_map_control_s.ENCODING_EGROUP_CTRL (3)(1).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (3)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (3)(1).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (3)(1).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (3)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK03_EGROUP2_CTRL => - if GBT_NUM > 3 then - register_map_control_s.ENCODING_EGROUP_CTRL (3)(2).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (3)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (3)(2).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (3)(2).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (3)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK03_EGROUP3_CTRL => - if GBT_NUM > 3 then - register_map_control_s.ENCODING_EGROUP_CTRL (3)(3).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (3)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (3)(3).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (3)(3).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (3)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK03_EGROUP4_CTRL => - if GBT_NUM > 3 then - register_map_control_s.ENCODING_EGROUP_CTRL (3)(4).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (3)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (3)(4).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (3)(4).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (3)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK04_EGROUP0_CTRL => - if GBT_NUM > 4 then - register_map_control_s.ENCODING_EGROUP_CTRL (4)(0).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (4)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (4)(0).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (4)(0).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (4)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK04_EGROUP1_CTRL => - if GBT_NUM > 4 then - register_map_control_s.ENCODING_EGROUP_CTRL (4)(1).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (4)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (4)(1).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (4)(1).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (4)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK04_EGROUP2_CTRL => - if GBT_NUM > 4 then - register_map_control_s.ENCODING_EGROUP_CTRL (4)(2).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (4)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (4)(2).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (4)(2).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (4)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK04_EGROUP3_CTRL => - if GBT_NUM > 4 then - register_map_control_s.ENCODING_EGROUP_CTRL (4)(3).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (4)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (4)(3).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (4)(3).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (4)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK04_EGROUP4_CTRL => - if GBT_NUM > 4 then - register_map_control_s.ENCODING_EGROUP_CTRL (4)(4).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (4)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (4)(4).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (4)(4).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (4)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK05_EGROUP0_CTRL => - if GBT_NUM > 5 then - register_map_control_s.ENCODING_EGROUP_CTRL (5)(0).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (5)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (5)(0).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (5)(0).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (5)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK05_EGROUP1_CTRL => - if GBT_NUM > 5 then - register_map_control_s.ENCODING_EGROUP_CTRL (5)(1).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (5)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (5)(1).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (5)(1).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (5)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK05_EGROUP2_CTRL => - if GBT_NUM > 5 then - register_map_control_s.ENCODING_EGROUP_CTRL (5)(2).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (5)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (5)(2).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (5)(2).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (5)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK05_EGROUP3_CTRL => - if GBT_NUM > 5 then - register_map_control_s.ENCODING_EGROUP_CTRL (5)(3).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (5)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (5)(3).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (5)(3).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (5)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK05_EGROUP4_CTRL => - if GBT_NUM > 5 then - register_map_control_s.ENCODING_EGROUP_CTRL (5)(4).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (5)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (5)(4).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (5)(4).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (5)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK06_EGROUP0_CTRL => - if GBT_NUM > 6 then - register_map_control_s.ENCODING_EGROUP_CTRL (6)(0).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (6)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (6)(0).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (6)(0).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (6)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK06_EGROUP1_CTRL => - if GBT_NUM > 6 then - register_map_control_s.ENCODING_EGROUP_CTRL (6)(1).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (6)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (6)(1).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (6)(1).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (6)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK06_EGROUP2_CTRL => - if GBT_NUM > 6 then - register_map_control_s.ENCODING_EGROUP_CTRL (6)(2).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (6)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (6)(2).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (6)(2).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (6)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK06_EGROUP3_CTRL => - if GBT_NUM > 6 then - register_map_control_s.ENCODING_EGROUP_CTRL (6)(3).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (6)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (6)(3).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (6)(3).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (6)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK06_EGROUP4_CTRL => - if GBT_NUM > 6 then - register_map_control_s.ENCODING_EGROUP_CTRL (6)(4).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (6)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (6)(4).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (6)(4).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (6)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK07_EGROUP0_CTRL => - if GBT_NUM > 7 then - register_map_control_s.ENCODING_EGROUP_CTRL (7)(0).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (7)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (7)(0).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (7)(0).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (7)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK07_EGROUP1_CTRL => - if GBT_NUM > 7 then - register_map_control_s.ENCODING_EGROUP_CTRL (7)(1).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (7)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (7)(1).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (7)(1).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (7)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK07_EGROUP2_CTRL => - if GBT_NUM > 7 then - register_map_control_s.ENCODING_EGROUP_CTRL (7)(2).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (7)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (7)(2).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (7)(2).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (7)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK07_EGROUP3_CTRL => - if GBT_NUM > 7 then - register_map_control_s.ENCODING_EGROUP_CTRL (7)(3).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (7)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (7)(3).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (7)(3).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (7)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK07_EGROUP4_CTRL => - if GBT_NUM > 7 then - register_map_control_s.ENCODING_EGROUP_CTRL (7)(4).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (7)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (7)(4).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (7)(4).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (7)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK08_EGROUP0_CTRL => - if GBT_NUM > 8 then - register_map_control_s.ENCODING_EGROUP_CTRL (8)(0).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (8)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (8)(0).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (8)(0).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (8)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK08_EGROUP1_CTRL => - if GBT_NUM > 8 then - register_map_control_s.ENCODING_EGROUP_CTRL (8)(1).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (8)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (8)(1).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (8)(1).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (8)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK08_EGROUP2_CTRL => - if GBT_NUM > 8 then - register_map_control_s.ENCODING_EGROUP_CTRL (8)(2).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (8)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (8)(2).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (8)(2).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (8)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK08_EGROUP3_CTRL => - if GBT_NUM > 8 then - register_map_control_s.ENCODING_EGROUP_CTRL (8)(3).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (8)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (8)(3).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (8)(3).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (8)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK08_EGROUP4_CTRL => - if GBT_NUM > 8 then - register_map_control_s.ENCODING_EGROUP_CTRL (8)(4).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (8)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (8)(4).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (8)(4).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (8)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK09_EGROUP0_CTRL => - if GBT_NUM > 9 then - register_map_control_s.ENCODING_EGROUP_CTRL (9)(0).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (9)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (9)(0).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (9)(0).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (9)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK09_EGROUP1_CTRL => - if GBT_NUM > 9 then - register_map_control_s.ENCODING_EGROUP_CTRL (9)(1).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (9)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (9)(1).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (9)(1).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (9)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK09_EGROUP2_CTRL => - if GBT_NUM > 9 then - register_map_control_s.ENCODING_EGROUP_CTRL (9)(2).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (9)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (9)(2).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (9)(2).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (9)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK09_EGROUP3_CTRL => - if GBT_NUM > 9 then - register_map_control_s.ENCODING_EGROUP_CTRL (9)(3).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (9)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (9)(3).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (9)(3).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (9)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK09_EGROUP4_CTRL => - if GBT_NUM > 9 then - register_map_control_s.ENCODING_EGROUP_CTRL (9)(4).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (9)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (9)(4).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (9)(4).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (9)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK10_EGROUP0_CTRL => - if GBT_NUM > 10 then - register_map_control_s.ENCODING_EGROUP_CTRL (10)(0).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (10)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (10)(0).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (10)(0).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (10)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK10_EGROUP1_CTRL => - if GBT_NUM > 10 then - register_map_control_s.ENCODING_EGROUP_CTRL (10)(1).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (10)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (10)(1).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (10)(1).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (10)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK10_EGROUP2_CTRL => - if GBT_NUM > 10 then - register_map_control_s.ENCODING_EGROUP_CTRL (10)(2).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (10)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (10)(2).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (10)(2).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (10)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK10_EGROUP3_CTRL => - if GBT_NUM > 10 then - register_map_control_s.ENCODING_EGROUP_CTRL (10)(3).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (10)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (10)(3).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (10)(3).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (10)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK10_EGROUP4_CTRL => - if GBT_NUM > 10 then - register_map_control_s.ENCODING_EGROUP_CTRL (10)(4).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (10)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (10)(4).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (10)(4).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (10)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK11_EGROUP0_CTRL => - if GBT_NUM > 11 then - register_map_control_s.ENCODING_EGROUP_CTRL (11)(0).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (11)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (11)(0).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (11)(0).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (11)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK11_EGROUP1_CTRL => - if GBT_NUM > 11 then - register_map_control_s.ENCODING_EGROUP_CTRL (11)(1).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (11)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (11)(1).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (11)(1).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (11)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK11_EGROUP2_CTRL => - if GBT_NUM > 11 then - register_map_control_s.ENCODING_EGROUP_CTRL (11)(2).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (11)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (11)(2).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (11)(2).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (11)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK11_EGROUP3_CTRL => - if GBT_NUM > 11 then - register_map_control_s.ENCODING_EGROUP_CTRL (11)(3).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (11)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (11)(3).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (11)(3).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (11)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_ENCODING_LINK11_EGROUP4_CTRL => - if GBT_NUM > 11 then - register_map_control_s.ENCODING_EGROUP_CTRL (11)(4).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link - register_map_control_s.ENCODING_EGROUP_CTRL (11)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath - register_map_control_s.ENCODING_EGROUP_CTRL (11)(4).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup - -- 0: 2 bit 80 Mb/s - -- 1: 4 bit 160 Mb/s - -- 2: 8 bit 320 Mb/s - - register_map_control_s.ENCODING_EGROUP_CTRL (11)(4).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path - -- 0: No encoding - -- 1: 8b10b mode - -- 2: HDLC mode - -- 3: ITk Strip LCB - -- 4: ITk Pixel - -- 5: Endeavour - -- 6: reserved - -- 7: reserved - -- greater than 7: TTC mode, see firmware Phase 2 specification doc - - register_map_control_s.ENCODING_EGROUP_CTRL (11)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH - end if; - when REG_MINI_EGROUP_FROMHOST_00 => - if GBT_NUM > 0 then - register_map_control_s.MINI_EGROUP_FROMHOST (0).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (0).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_FROMHOST (0).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (0).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_FROMHOST (0).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (0).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_FROMHOST (0).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_01 => - if GBT_NUM > 1 then - register_map_control_s.MINI_EGROUP_FROMHOST (1).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (1).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_FROMHOST (1).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (1).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_FROMHOST (1).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (1).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_FROMHOST (1).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_02 => - if GBT_NUM > 2 then - register_map_control_s.MINI_EGROUP_FROMHOST (2).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (2).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_FROMHOST (2).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (2).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_FROMHOST (2).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (2).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_FROMHOST (2).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_03 => - if GBT_NUM > 3 then - register_map_control_s.MINI_EGROUP_FROMHOST (3).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (3).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_FROMHOST (3).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (3).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_FROMHOST (3).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (3).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_FROMHOST (3).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_04 => - if GBT_NUM > 4 then - register_map_control_s.MINI_EGROUP_FROMHOST (4).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (4).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_FROMHOST (4).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (4).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_FROMHOST (4).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (4).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_FROMHOST (4).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_05 => - if GBT_NUM > 5 then - register_map_control_s.MINI_EGROUP_FROMHOST (5).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (5).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_FROMHOST (5).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (5).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_FROMHOST (5).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (5).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_FROMHOST (5).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_06 => - if GBT_NUM > 6 then - register_map_control_s.MINI_EGROUP_FROMHOST (6).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (6).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_FROMHOST (6).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (6).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_FROMHOST (6).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (6).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_FROMHOST (6).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_07 => - if GBT_NUM > 7 then - register_map_control_s.MINI_EGROUP_FROMHOST (7).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (7).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_FROMHOST (7).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (7).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_FROMHOST (7).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (7).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_FROMHOST (7).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_08 => - if GBT_NUM > 8 then - register_map_control_s.MINI_EGROUP_FROMHOST (8).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (8).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_FROMHOST (8).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (8).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_FROMHOST (8).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (8).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_FROMHOST (8).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_09 => - if GBT_NUM > 9 then - register_map_control_s.MINI_EGROUP_FROMHOST (9).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (9).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_FROMHOST (9).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (9).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_FROMHOST (9).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (9).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_FROMHOST (9).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_10 => - if GBT_NUM > 10 then - register_map_control_s.MINI_EGROUP_FROMHOST (10).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (10).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_FROMHOST (10).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (10).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_FROMHOST (10).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (10).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_FROMHOST (10).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_11 => - if GBT_NUM > 11 then - register_map_control_s.MINI_EGROUP_FROMHOST (11).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (11).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_FROMHOST (11).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (11).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_FROMHOST (11).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (11).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_FROMHOST (11).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_12 => - if GBT_NUM > 12 then - register_map_control_s.MINI_EGROUP_FROMHOST (12).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (12).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_FROMHOST (12).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (12).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_FROMHOST (12).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (12).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_FROMHOST (12).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_13 => - if GBT_NUM > 13 then - register_map_control_s.MINI_EGROUP_FROMHOST (13).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (13).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_FROMHOST (13).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (13).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_FROMHOST (13).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (13).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_FROMHOST (13).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_14 => - if GBT_NUM > 14 then - register_map_control_s.MINI_EGROUP_FROMHOST (14).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (14).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_FROMHOST (14).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (14).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_FROMHOST (14).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (14).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_FROMHOST (14).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_15 => - if GBT_NUM > 15 then - register_map_control_s.MINI_EGROUP_FROMHOST (15).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (15).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_FROMHOST (15).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (15).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_FROMHOST (15).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (15).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_FROMHOST (15).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_16 => - if GBT_NUM > 16 then - register_map_control_s.MINI_EGROUP_FROMHOST (16).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (16).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_FROMHOST (16).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (16).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_FROMHOST (16).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (16).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_FROMHOST (16).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_17 => - if GBT_NUM > 17 then - register_map_control_s.MINI_EGROUP_FROMHOST (17).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (17).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_FROMHOST (17).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (17).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_FROMHOST (17).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (17).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_FROMHOST (17).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_18 => - if GBT_NUM > 18 then - register_map_control_s.MINI_EGROUP_FROMHOST (18).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (18).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_FROMHOST (18).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (18).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_FROMHOST (18).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (18).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_FROMHOST (18).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_19 => - if GBT_NUM > 19 then - register_map_control_s.MINI_EGROUP_FROMHOST (19).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (19).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_FROMHOST (19).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (19).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_FROMHOST (19).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (19).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_FROMHOST (19).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_20 => - if GBT_NUM > 20 then - register_map_control_s.MINI_EGROUP_FROMHOST (20).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (20).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_FROMHOST (20).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (20).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_FROMHOST (20).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (20).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_FROMHOST (20).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_21 => - if GBT_NUM > 21 then - register_map_control_s.MINI_EGROUP_FROMHOST (21).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (21).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_FROMHOST (21).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (21).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_FROMHOST (21).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (21).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_FROMHOST (21).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_22 => - if GBT_NUM > 22 then - register_map_control_s.MINI_EGROUP_FROMHOST (22).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (22).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_FROMHOST (22).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (22).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_FROMHOST (22).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (22).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_FROMHOST (22).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup - end if; - when REG_MINI_EGROUP_FROMHOST_23 => - if GBT_NUM > 23 then - register_map_control_s.MINI_EGROUP_FROMHOST (23).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (23).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel - register_map_control_s.MINI_EGROUP_FROMHOST (23).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (23).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel - register_map_control_s.MINI_EGROUP_FROMHOST (23).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped - register_map_control_s.MINI_EGROUP_FROMHOST (23).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel - register_map_control_s.MINI_EGROUP_FROMHOST (23).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup - end if; - when REG_FE_EMU_ENA => register_map_control_s.FE_EMU_ENA.EMU_TOFRONTEND <= register_write_data_25_v(1 downto 1); -- Enable GBT dummy emulator ToFrontEnd - register_map_control_s.FE_EMU_ENA.EMU_TOHOST <= register_write_data_25_v(0 downto 0); -- Enable GBT dummy emulator ToHost - when REG_FE_EMU_CONFIG => register_map_control_s.FE_EMU_CONFIG.WE <= register_write_data_25_v(54 downto 47); -- write enable array, every bit is one emulator RAM block - register_map_control_s.FE_EMU_CONFIG.WRADDR <= register_write_data_25_v(46 downto 33); -- write address bus - register_map_control_s.FE_EMU_CONFIG.WRDATA <= register_write_data_25_v(32 downto 0); -- write data bus - when REG_FE_EMU_READ => register_map_control_s.FE_EMU_READ.SEL <= register_write_data_25_v(35 downto 33); -- Select ramblock to read back - when REG_GBT_CHANNEL_DISABLE => register_map_control_s.GBT_CHANNEL_DISABLE <= register_write_data_25_v(47 downto 0); -- Disable selected lpGBT, GBT or FULL mode channel - when REG_GBT_GENERAL_CTRL => register_map_control_s.GBT_GENERAL_CTRL <= register_write_data_25_v(63 downto 0); -- Alignment chk reset (not self clearing) - when REG_GBT_MODE_CTRL => register_map_control_s.GBT_MODE_CTRL.RX_ALIGN_TB_SW <= register_write_data_25_v(2 downto 2); -- RX_ALIGN_TB_SW - register_map_control_s.GBT_MODE_CTRL.RX_ALIGN_SW <= register_write_data_25_v(1 downto 1); -- RX_ALIGN_SW - register_map_control_s.GBT_MODE_CTRL.DESMUX_USE_SW <= register_write_data_25_v(0 downto 0); -- DESMUX_USE_SW + else + dma_descriptors_25_w_s(i).evencycle_pc <= '0'; + end if; + last_pc_pointer_v(i) := dma_descriptors_25_w_s(i).pc_pointer; + end loop; + + dma_descriptors_enable_written_25_s <= '0'; + register_map_control_s <= register_map_control_s; --store read (PCIe Write) register map + register_read_done_25_s <= '0'; + register_read_data_25_s <= register_read_data_25_s; + + + --! + --! generated self clearing "write only" register clear assignment + -- Bar 0 + flush_fifo_25_s <= '0'; + dma_soft_reset_25_s <= '0'; + reset_global_soft_25_s <= '0'; + + if register_map_control_s.DMA_BUSY_STATUS.CLEAR_LATCH="1" then + tohost_busy_latched_25_s <= '0'; + fromhost_busy_latched_25_s <= '0'; + end if; + if tohost_busy_25_s = '1' then + tohost_busy_latched_25_s <= '1'; + end if; + if fromhost_busy_25_s = '1' then + fromhost_busy_latched_25_s <= '1'; + end if; + + ------------------------------------ + ---- ## GENERATED CODE BEGIN #2 ---- + ------------------------------------ + register_map_control_s.CRTOHOST_FIFO_STATUS.CLEAR <= REG_CRTOHOST_FIFO_STATUS_CLEAR_C; -- Any write to this register clears the latched FULL flags + register_map_control_s.CRFROMHOST_FIFO_STATUS.CLEAR <= REG_CRFROMHOST_FIFO_STATUS_CLEAR_C; -- Any write to this register clears the latched FULL flags + register_map_control_s.TTC_BUSY_CLEAR <= REG_TTC_BUSY_CLEAR_C; -- clears the latching busy bits in TTC_BUSY_ACCEPTED + register_map_control_s.TTC_EMU_RESET <= REG_TTC_EMU_RESET_C; -- Any write to this register resets the TTC Emulator to the default state. + register_map_control_s.TTC_ECR_MONITOR.CLEAR <= REG_TTC_ECR_MONITOR_CLEAR_C; -- Counts the number of ECRs received from the TTC system, any write to this register clears the counter + register_map_control_s.TTC_TTYPE_MONITOR.CLEAR <= REG_TTC_TTYPE_MONITOR_CLEAR_C; -- Counts the number of TType received from the TTC system, any write to this register clears the counter + register_map_control_s.TTC_BCR_PERIODICITY_MONITOR.CLEAR <= REG_TTC_BCR_PERIODICITY_MONITOR_CLEAR_C; -- Counts the number of times the BCR period does not match 3564, any write to this register clears the counter + register_map_control_s.XOFF_FM_HIGH_THRESH.CLEAR_LATCH <= REG_XOFF_FM_HIGH_THRESH_CLEAR_LATCH_C; -- Writing this register will clear all CROSS_LATCHED bits + register_map_control_s.DMA_BUSY_STATUS.CLEAR_LATCH <= REG_DMA_BUSY_STATUS_CLEAR_LATCH_C; -- Any write to this register clears TOHOST_BUSY_LATCHED + register_map_control_s.FM_BUSY_CHANNEL_STATUS.CLEAR_LATCH <= REG_FM_BUSY_CHANNEL_STATUS_CLEAR_LATCH_C; -- Any write to this register will clear the BUSY_LATCHED bits + register_map_control_s.BUSY_MAIN_OUTPUT_FIFO_STATUS.CLEAR_LATCHED <= REG_BUSY_MAIN_OUTPUT_FIFO_STATUS_CLEAR_LATCHED_C; -- Any write to this register will clear the + register_map_control_s.I2C_WR.I2C_WREN <= REG_I2C_WR_I2C_WREN_C; -- Any write to this register triggers an I2C read or write sequence + register_map_control_s.I2C_RD.I2C_RDEN <= REG_I2C_RD_I2C_RDEN_C; -- Any write to this register pops the last I2C data from the FIFO + register_map_control_s.INT_TEST.TRIGGER <= REG_INT_TEST_TRIGGER_C; -- Fire a test MSIx interrupt set in IRQ + if EMU_GENERATE_REGS then + register_map_control_s.FMEMU_RANDOM_RAM.WE <= REG_FMEMU_RANDOM_RAM_WE_C; -- Any write to this register (DATA) triggers a write to the ramblock + end if; + register_map_control_s.WISHBONE_WRITE.WRITE_ENABLE <= REG_WISHBONE_WRITE_WRITE_ENABLE_C; -- Any write to this register triggers a write to the Wupper to Wishbone fifo + register_map_control_s.WISHBONE_READ.READ_ENABLE <= REG_WISHBONE_READ_READ_ENABLE_C; -- Any write to this register triggers a read from the Wishbone to Wupper fifo + register_map_control_s.GLOBAL_TRICKLE_TRIGGER <= REG_GLOBAL_TRICKLE_TRIGGER_C; -- writing to this register issues a single trickle trigger for every LCB link connected to this FELIX device + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.TRICKLE_TRIGGER(0)(0) <= REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_TRIGGER_0_C; -- writing to this register issues a single trickle trigger + end if; + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_TRICKLE_CONFIG(0)(0).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_0_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address + + end if; + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.TRICKLE_TRIGGER(0)(1) <= REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_TRIGGER_1_C; -- writing to this register issues a single trickle trigger + end if; + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_TRICKLE_CONFIG(0)(1).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_1_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address + + end if; + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.TRICKLE_TRIGGER(0)(2) <= REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_TRIGGER_2_C; -- writing to this register issues a single trickle trigger + end if; + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_TRICKLE_CONFIG(0)(2).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_2_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address + + end if; + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.TRICKLE_TRIGGER(0)(3) <= REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_TRIGGER_3_C; -- writing to this register issues a single trickle trigger + end if; + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_TRICKLE_CONFIG(0)(3).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_3_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address + + end if; + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.TRICKLE_TRIGGER(1)(0) <= REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_TRIGGER_0_C; -- writing to this register issues a single trickle trigger + end if; + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_TRICKLE_CONFIG(1)(0).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_0_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address + + end if; + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.TRICKLE_TRIGGER(1)(1) <= REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_TRIGGER_1_C; -- writing to this register issues a single trickle trigger + end if; + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_TRICKLE_CONFIG(1)(1).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_1_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address + + end if; + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.TRICKLE_TRIGGER(1)(2) <= REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_TRIGGER_2_C; -- writing to this register issues a single trickle trigger + end if; + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_TRICKLE_CONFIG(1)(2).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_2_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address + + end if; + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.TRICKLE_TRIGGER(1)(3) <= REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_TRIGGER_3_C; -- writing to this register issues a single trickle trigger + end if; + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_TRICKLE_CONFIG(1)(3).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_3_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address + + end if; + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.TRICKLE_TRIGGER(2)(0) <= REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_TRIGGER_0_C; -- writing to this register issues a single trickle trigger + end if; + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_TRICKLE_CONFIG(2)(0).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_0_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address + + end if; + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.TRICKLE_TRIGGER(2)(1) <= REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_TRIGGER_1_C; -- writing to this register issues a single trickle trigger + end if; + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_TRICKLE_CONFIG(2)(1).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_1_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address + + end if; + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.TRICKLE_TRIGGER(2)(2) <= REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_TRIGGER_2_C; -- writing to this register issues a single trickle trigger + end if; + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_TRICKLE_CONFIG(2)(2).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_2_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address + + end if; + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.TRICKLE_TRIGGER(2)(3) <= REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_TRIGGER_3_C; -- writing to this register issues a single trickle trigger + end if; + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_TRICKLE_CONFIG(2)(3).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_3_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address + + end if; + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.TRICKLE_TRIGGER(3)(0) <= REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_TRIGGER_0_C; -- writing to this register issues a single trickle trigger + end if; + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_TRICKLE_CONFIG(3)(0).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_0_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address + + end if; + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.TRICKLE_TRIGGER(3)(1) <= REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_TRIGGER_1_C; -- writing to this register issues a single trickle trigger + end if; + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_TRICKLE_CONFIG(3)(1).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_1_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address + + end if; + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.TRICKLE_TRIGGER(3)(2) <= REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_TRIGGER_2_C; -- writing to this register issues a single trickle trigger + end if; + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_TRICKLE_CONFIG(3)(2).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_2_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address + + end if; + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.TRICKLE_TRIGGER(3)(3) <= REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_TRIGGER_3_C; -- writing to this register issues a single trickle trigger + end if; + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_TRICKLE_CONFIG(3)(3).MOVE_WRITE_PTR <= REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_3_MOVE_WRITE_PTR_C; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address + + end if; + register_map_control_s.STRIPS_R3_TRIGGER <= REG_STRIPS_R3_TRIGGER_C; -- (for tests only) simulate R3 trigger (issues 4-5 sequential triggers) + register_map_control_s.STRIPS_L1_TRIGGER <= REG_STRIPS_L1_TRIGGER_C; -- (for tests only) simulate L1 trigger (issues 4-5 sequential triggers) + register_map_control_s.STRIPS_R3L1_TRIGGER <= REG_STRIPS_R3L1_TRIGGER_C; -- (for tests only) simulate simultaneous R3 and L1 trigger (issues 4-5 sequential triggers) + ----------------------------------- + ---- GENERATED code END #2 ## ---- + ----------------------------------- + + if(register_read_enable_25_s = '1') then + register_read_done_25_s <= '1'; + register_read_data_25_s <= (others => '0'); --default value + --Read registers in BAR0 + if(bar_id_25_s = "000") then + register_read_address_v := register_read_address_25_s(19 downto 4)&"0000"; + case(register_read_address_v) is + when REG_DESCRIPTOR_0 => register_read_data_25_s <= dma_descriptors_25_r_s( 0).end_address& + dma_descriptors_25_r_s( 0).start_address; + when REG_DESCRIPTOR_0a => register_read_data_25_s <= dma_descriptors_25_r_s( 0).pc_pointer& + x"000000000000"&"000"& + dma_descriptors_25_r_s( 0).wrap_around& + dma_descriptors_25_r_s( 0).read_not_write& + dma_descriptors_25_r_s( 0).dword_count; + when REG_DESCRIPTOR_1 => register_read_data_25_s <= dma_descriptors_25_r_s( 1).end_address& + dma_descriptors_25_r_s( 1).start_address; + when REG_DESCRIPTOR_1a => register_read_data_25_s <= dma_descriptors_25_r_s( 1).pc_pointer& + x"000000000000"&"000"& + dma_descriptors_25_r_s( 1).wrap_around& + dma_descriptors_25_r_s( 1).read_not_write& + dma_descriptors_25_r_s( 1).dword_count; + when REG_DESCRIPTOR_2 => register_read_data_25_s <= dma_descriptors_25_r_s( 2).end_address& + dma_descriptors_25_r_s( 2).start_address; + when REG_DESCRIPTOR_2a => register_read_data_25_s <= dma_descriptors_25_r_s( 2).pc_pointer& + x"000000000000"&"000"& + dma_descriptors_25_r_s( 2).wrap_around& + dma_descriptors_25_r_s( 2).read_not_write& + dma_descriptors_25_r_s( 2).dword_count; + when REG_DESCRIPTOR_3 => register_read_data_25_s <= dma_descriptors_25_r_s( 3).end_address& + dma_descriptors_25_r_s( 3).start_address; + when REG_DESCRIPTOR_3a => register_read_data_25_s <= dma_descriptors_25_r_s( 3).pc_pointer& + x"000000000000"&"000"& + dma_descriptors_25_r_s( 3).wrap_around& + dma_descriptors_25_r_s( 3).read_not_write& + dma_descriptors_25_r_s( 3).dword_count; + when REG_DESCRIPTOR_4 => register_read_data_25_s <= dma_descriptors_25_r_s( 4).end_address& + dma_descriptors_25_r_s( 4).start_address; + when REG_DESCRIPTOR_4a => register_read_data_25_s <= dma_descriptors_25_r_s( 4).pc_pointer& + x"000000000000"&"000"& + dma_descriptors_25_r_s( 4).wrap_around& + dma_descriptors_25_r_s( 4).read_not_write& + dma_descriptors_25_r_s( 4).dword_count; + when REG_DESCRIPTOR_5 => register_read_data_25_s <= dma_descriptors_25_r_s( 5).end_address& + dma_descriptors_25_r_s( 5).start_address; + when REG_DESCRIPTOR_5a => register_read_data_25_s <= dma_descriptors_25_r_s( 5).pc_pointer& + x"000000000000"&"000"& + dma_descriptors_25_r_s( 5).wrap_around& + dma_descriptors_25_r_s( 5).read_not_write& + dma_descriptors_25_r_s( 5).dword_count; + when REG_DESCRIPTOR_6 => register_read_data_25_s <= dma_descriptors_25_r_s( 6).end_address& + dma_descriptors_25_r_s( 6).start_address; + when REG_DESCRIPTOR_6a => register_read_data_25_s <= dma_descriptors_25_r_s( 6).pc_pointer& + x"000000000000"&"000"& + dma_descriptors_25_r_s( 6).wrap_around& + dma_descriptors_25_r_s( 6).read_not_write& + dma_descriptors_25_r_s( 6).dword_count; + when REG_DESCRIPTOR_7 => register_read_data_25_s <= dma_descriptors_25_r_s( 7).end_address& + dma_descriptors_25_r_s( 7).start_address; + when REG_DESCRIPTOR_7a => register_read_data_25_s <= dma_descriptors_25_r_s( 7).pc_pointer& + x"000000000000"&"000"& + dma_descriptors_25_r_s( 7).wrap_around& + dma_descriptors_25_r_s( 7).read_not_write& + dma_descriptors_25_r_s( 7).dword_count; + when REG_STATUS_0 => register_read_data_25_s <= x"000000000000000"&"0"& + dma_descriptors_25_r_s(0 ).evencycle_pc& + dma_status_25_s(0 ).evencycle_dma& + (not dma_descriptors_25_r_s(0 ).enable)& + dma_status_25_s(0 ).current_address; + when REG_STATUS_1 => register_read_data_25_s <= x"000000000000000"&"0"& + dma_descriptors_25_r_s(1 ).evencycle_pc& + dma_status_25_s(1 ).evencycle_dma& + (not dma_descriptors_25_r_s(1 ).enable)& + dma_status_25_s(1 ).current_address; + when REG_STATUS_2 => register_read_data_25_s <= x"000000000000000"&"0"& + dma_descriptors_25_r_s(2 ).evencycle_pc& + dma_status_25_s(2 ).evencycle_dma& + (not dma_descriptors_25_r_s(2 ).enable)& + dma_status_25_s(2 ).current_address; + when REG_STATUS_3 => register_read_data_25_s <= x"000000000000000"&"0"& + dma_descriptors_25_r_s(3 ).evencycle_pc& + dma_status_25_s(2 ).evencycle_dma& + (not dma_descriptors_25_r_s(3 ).enable)& + dma_status_25_s(3 ).current_address; + when REG_STATUS_4 => register_read_data_25_s <= x"000000000000000"&"0"& + dma_descriptors_25_r_s(4 ).evencycle_pc& + dma_status_25_s(4 ).evencycle_dma& + (not dma_descriptors_25_r_s(4 ).enable)& + dma_status_25_s(4 ).current_address; + when REG_STATUS_5 => register_read_data_25_s <= x"000000000000000"&"0"& + dma_descriptors_25_r_s(5 ).evencycle_pc& + dma_status_25_s(5 ).evencycle_dma& + (not dma_descriptors_25_r_s(5 ).enable)& + dma_status_25_s(5 ).current_address; + when REG_STATUS_6 => register_read_data_25_s <= x"000000000000000"&"0"& + dma_descriptors_25_r_s(6 ).evencycle_pc& + dma_status_25_s(6 ).evencycle_dma& + (not dma_descriptors_25_r_s(6 ).enable)& + dma_status_25_s(6 ).current_address; + when REG_STATUS_7 => register_read_data_25_s <= x"000000000000000"&"0"& + dma_descriptors_25_r_s(7 ).evencycle_pc& + dma_status_25_s(7 ).evencycle_dma& + (not dma_descriptors_25_r_s(7 ).enable)& + dma_status_25_s(7 ).current_address; + when REG_DESCRIPTOR_ENABLE => for i in 0 to (NUMBER_OF_DESCRIPTORS-1) loop + register_read_data_25_s(i) <= dma_descriptors_25_r_s(i).enable; + end loop; + register_read_data_25_s(127 downto (NUMBER_OF_DESCRIPTORS)) <= (others =>'0'); + when REG_FIFO_FLUSH => register_read_data_25_s <= (others => '0'); + when REG_DMA_RESET => register_read_data_25_s <= (others => '0'); + when REG_SOFT_RESET => register_read_data_25_s <= (others => '0'); + when REG_REGISTER_RESET => register_read_data_25_s <= (others => '0'); + when REG_FROMHOST_FULL_THRESH => register_read_data_25_s <= x"00000000_00000000" & + x"0000_0000_0"&"000"&fromhost_pfull_threshold_assert_s& + x"0"&"000"&fromhost_pfull_threshold_negate_s; + when REG_TOHOST_FULL_THRESH => register_read_data_25_s <= x"00000000_00000000" & + x"0000_0000_0"&tohost_pfull_threshold_assert_s& + x"0"&tohost_pfull_threshold_negate_s; + when REG_BUSY_THRESH_ASSERT => register_read_data_25_s <= x"0000_0000_0000_0000"&busy_threshold_assert; + when REG_BUSY_THRESH_NEGATE => register_read_data_25_s <= x"0000_0000_0000_0000"&busy_threshold_negate; + when REG_BUSY_STATUS => register_read_data_25_s <= x"0000_0000_0000_0000_0000_0000_0000_000"&"00"& + fromhost_busy_25_s& + tohost_busy_25_s; + when REG_PC_PTR_GAP => register_read_data_25_s <= x"0000_0000_0000_0000"&pc_ptr_gap_25_s; + when others => register_read_data_25_s <= (others => '0'); + + + end case; + --Read registers in BAR1 + elsif(bar_id_25_s = "001") then + register_read_address_v := register_read_address_25_s(19 downto 4)&"0000"; + case(register_read_address_v) is + when REG_INT_VEC_00 => register_read_data_25_s(63 downto 0) <= int_vector_25_s(0).int_vec_add; + register_read_data_25_s(95 downto 64) <= int_vector_25_s(0).int_vec_data; + register_read_data_25_s(127 downto 96) <= int_vector_25_s(0).int_vec_ctrl; + when REG_INT_VEC_01 => register_read_data_25_s(63 downto 0) <= int_vector_25_s(1).int_vec_add; + register_read_data_25_s(95 downto 64) <= int_vector_25_s(1).int_vec_data; + register_read_data_25_s(127 downto 96) <= int_vector_25_s(1).int_vec_ctrl; + when REG_INT_VEC_02 => register_read_data_25_s(63 downto 0) <= int_vector_25_s(2).int_vec_add; + register_read_data_25_s(95 downto 64) <= int_vector_25_s(2).int_vec_data; + register_read_data_25_s(127 downto 96) <= int_vector_25_s(2).int_vec_ctrl; + when REG_INT_VEC_03 => register_read_data_25_s(63 downto 0) <= int_vector_25_s(3).int_vec_add; + register_read_data_25_s(95 downto 64) <= int_vector_25_s(3).int_vec_data; + register_read_data_25_s(127 downto 96) <= int_vector_25_s(3).int_vec_ctrl; + when REG_INT_VEC_04 => register_read_data_25_s(63 downto 0) <= int_vector_25_s(4).int_vec_add; + register_read_data_25_s(95 downto 64) <= int_vector_25_s(4).int_vec_data; + register_read_data_25_s(127 downto 96) <= int_vector_25_s(4).int_vec_ctrl; + when REG_INT_VEC_05 => register_read_data_25_s(63 downto 0) <= int_vector_25_s(5).int_vec_add; + register_read_data_25_s(95 downto 64) <= int_vector_25_s(5).int_vec_data; + register_read_data_25_s(127 downto 96) <= int_vector_25_s(5).int_vec_ctrl; + when REG_INT_VEC_06 => register_read_data_25_s(63 downto 0) <= int_vector_25_s(6).int_vec_add; + register_read_data_25_s(95 downto 64) <= int_vector_25_s(6).int_vec_data; + register_read_data_25_s(127 downto 96) <= int_vector_25_s(6).int_vec_ctrl; + when REG_INT_VEC_07 => register_read_data_25_s(63 downto 0) <= int_vector_25_s(7).int_vec_add; + register_read_data_25_s(95 downto 64) <= int_vector_25_s(7).int_vec_data; + register_read_data_25_s(127 downto 96) <= int_vector_25_s(7).int_vec_ctrl; + when REG_INT_VEC_08 => register_read_data_25_s(63 downto 0) <= int_vector_25_s(8).int_vec_add; + register_read_data_25_s(95 downto 64) <= int_vector_25_s(8).int_vec_data; + register_read_data_25_s(127 downto 96) <= int_vector_25_s(8).int_vec_ctrl; + when REG_INT_VEC_09 => register_read_data_25_s(63 downto 0) <= int_vector_25_s(9).int_vec_add; + register_read_data_25_s(95 downto 64) <= int_vector_25_s(9).int_vec_data; + register_read_data_25_s(127 downto 96) <= int_vector_25_s(9).int_vec_ctrl; + when REG_INT_VEC_10 => register_read_data_25_s(63 downto 0) <= int_vector_25_s(10).int_vec_add; + register_read_data_25_s(95 downto 64) <= int_vector_25_s(10).int_vec_data; + register_read_data_25_s(127 downto 96) <= int_vector_25_s(10).int_vec_ctrl; + when REG_INT_VEC_11 => register_read_data_25_s(63 downto 0) <= int_vector_25_s(11).int_vec_add; + register_read_data_25_s(95 downto 64) <= int_vector_25_s(11).int_vec_data; + register_read_data_25_s(127 downto 96) <= int_vector_25_s(11).int_vec_ctrl; + when REG_INT_VEC_12 => register_read_data_25_s(63 downto 0) <= int_vector_25_s(12).int_vec_add; + register_read_data_25_s(95 downto 64) <= int_vector_25_s(12).int_vec_data; + register_read_data_25_s(127 downto 96) <= int_vector_25_s(12).int_vec_ctrl; + when REG_INT_VEC_13 => register_read_data_25_s(63 downto 0) <= int_vector_25_s(13).int_vec_add; + register_read_data_25_s(95 downto 64) <= int_vector_25_s(13).int_vec_data; + register_read_data_25_s(127 downto 96) <= int_vector_25_s(13).int_vec_ctrl; + when REG_INT_VEC_14 => register_read_data_25_s(63 downto 0) <= int_vector_25_s(14).int_vec_add; + register_read_data_25_s(95 downto 64) <= int_vector_25_s(14).int_vec_data; + register_read_data_25_s(127 downto 96) <= int_vector_25_s(14).int_vec_ctrl; + when REG_INT_VEC_15 => register_read_data_25_s(63 downto 0) <= int_vector_25_s(15).int_vec_add; + register_read_data_25_s(95 downto 64) <= int_vector_25_s(15).int_vec_data; + register_read_data_25_s(127 downto 96) <= int_vector_25_s(15).int_vec_ctrl; + when REG_INT_TAB_EN => register_read_data_25_s(NUMBER_OF_INTERRUPTS-1 downto 0) <= int_table_en_s; + when others => register_read_data_25_s <= (others => '0'); + end case; + --Read registers in BAR2 + elsif(bar_id_25_s = "010") then + register_read_address_v := register_read_address_25_s(19 downto 4)&"0000"; + case(register_read_address_v) is + --! + --! generated registers read + ------------------------------------ + ---- ## GENERATED code BEGIN #3 ---- + ------------------------------------ + -- + -- Control Registers + -- + when REG_STATUS_LEDS => register_read_data_25_s(7 downto 0) <= register_map_control_s.STATUS_LEDS; -- Board GPIO Leds + when REG_TIMEOUT_CTRL => register_read_data_25_s(32 downto 32) <= register_map_control_s.TIMEOUT_CTRL.ENABLE; -- 1 enables the timout trailer generation for ToHost mode + register_read_data_25_s(31 downto 0) <= register_map_control_s.TIMEOUT_CTRL.TIMEOUT; -- Number of 40 MHz clock cycles after which a timeout occurs. + when REG_CRTOHOST_FIFO_STATUS => register_read_data_25_s(64 downto 64) <= register_map_control_s.CRTOHOST_FIFO_STATUS.CLEAR; -- Any write to this register clears the latched FULL flags + register_read_data_25_s(47 downto 24) <= register_map_monitor_s.register_map_crtohost_monitor.CRTOHOST_FIFO_STATUS.FULL; -- Every bit represents the full flag of a channel FIFO + register_read_data_25_s(23 downto 0) <= register_map_monitor_s.register_map_crtohost_monitor.CRTOHOST_FIFO_STATUS.FULL_LATCHED; -- like FULL but a latched state, clear by writing to this register + when REG_CRFROMHOST_FIFO_STATUS => register_read_data_25_s(64 downto 64) <= register_map_control_s.CRFROMHOST_FIFO_STATUS.CLEAR; -- Any write to this register clears the latched FULL flags + register_read_data_25_s(47 downto 24) <= register_map_monitor_s.register_map_crfromhost_monitor.CRFROMHOST_FIFO_STATUS.FULL; -- Every bit represents the full flag of a channel FIFO + register_read_data_25_s(23 downto 0) <= register_map_monitor_s.register_map_crfromhost_monitor.CRFROMHOST_FIFO_STATUS.FULL_LATCHED; -- like FULL but a latched state, clear by writing to this register + when REG_BROADCAST_ENABLE_00 => + if GBT_NUM > 0 then + register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(0); -- Enable path to be included in a broadcast message. + end if; + when REG_BROADCAST_ENABLE_01 => + if GBT_NUM > 1 then + register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(1); -- Enable path to be included in a broadcast message. + end if; + when REG_BROADCAST_ENABLE_02 => + if GBT_NUM > 2 then + register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(2); -- Enable path to be included in a broadcast message. + end if; + when REG_BROADCAST_ENABLE_03 => + if GBT_NUM > 3 then + register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(3); -- Enable path to be included in a broadcast message. + end if; + when REG_BROADCAST_ENABLE_04 => + if GBT_NUM > 4 then + register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(4); -- Enable path to be included in a broadcast message. + end if; + when REG_BROADCAST_ENABLE_05 => + if GBT_NUM > 5 then + register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(5); -- Enable path to be included in a broadcast message. + end if; + when REG_BROADCAST_ENABLE_06 => + if GBT_NUM > 6 then + register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(6); -- Enable path to be included in a broadcast message. + end if; + when REG_BROADCAST_ENABLE_07 => + if GBT_NUM > 7 then + register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(7); -- Enable path to be included in a broadcast message. + end if; + when REG_BROADCAST_ENABLE_08 => + if GBT_NUM > 8 then + register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(8); -- Enable path to be included in a broadcast message. + end if; + when REG_BROADCAST_ENABLE_09 => + if GBT_NUM > 9 then + register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(9); -- Enable path to be included in a broadcast message. + end if; + when REG_BROADCAST_ENABLE_10 => + if GBT_NUM > 10 then + register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(10); -- Enable path to be included in a broadcast message. + end if; + when REG_BROADCAST_ENABLE_11 => + if GBT_NUM > 11 then + register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(11); -- Enable path to be included in a broadcast message. + end if; + when REG_BROADCAST_ENABLE_12 => + if GBT_NUM > 12 then + register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(12); -- Enable path to be included in a broadcast message. + end if; + when REG_BROADCAST_ENABLE_13 => + if GBT_NUM > 13 then + register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(13); -- Enable path to be included in a broadcast message. + end if; + when REG_BROADCAST_ENABLE_14 => + if GBT_NUM > 14 then + register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(14); -- Enable path to be included in a broadcast message. + end if; + when REG_BROADCAST_ENABLE_15 => + if GBT_NUM > 15 then + register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(15); -- Enable path to be included in a broadcast message. + end if; + when REG_BROADCAST_ENABLE_16 => + if GBT_NUM > 16 then + register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(16); -- Enable path to be included in a broadcast message. + end if; + when REG_BROADCAST_ENABLE_17 => + if GBT_NUM > 17 then + register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(17); -- Enable path to be included in a broadcast message. + end if; + when REG_BROADCAST_ENABLE_18 => + if GBT_NUM > 18 then + register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(18); -- Enable path to be included in a broadcast message. + end if; + when REG_BROADCAST_ENABLE_19 => + if GBT_NUM > 19 then + register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(19); -- Enable path to be included in a broadcast message. + end if; + when REG_BROADCAST_ENABLE_20 => + if GBT_NUM > 20 then + register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(20); -- Enable path to be included in a broadcast message. + end if; + when REG_BROADCAST_ENABLE_21 => + if GBT_NUM > 21 then + register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(21); -- Enable path to be included in a broadcast message. + end if; + when REG_BROADCAST_ENABLE_22 => + if GBT_NUM > 22 then + register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(22); -- Enable path to be included in a broadcast message. + end if; + when REG_BROADCAST_ENABLE_23 => + if GBT_NUM > 23 then + register_read_data_25_s(41 downto 0) <= register_map_control_s.BROADCAST_ENABLE(23); -- Enable path to be included in a broadcast message. + end if; + when REG_LINK_00_HAS_STREAM_ID => + if GBT_NUM > 0 then + register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(0).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(0).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(0).EGROUP4; -- EPATH is associated with a STREAM ID + register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(0).EGROUP3; -- EPATH is associated with a STREAM ID + register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(0).EGROUP2; -- EPATH is associated with a STREAM ID + register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(0).EGROUP1; -- EPATH is associated with a STREAM ID + register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(0).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. + end if; + when REG_LINK_01_HAS_STREAM_ID => + if GBT_NUM > 1 then + register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(1).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(1).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(1).EGROUP4; -- EPATH is associated with a STREAM ID + register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(1).EGROUP3; -- EPATH is associated with a STREAM ID + register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(1).EGROUP2; -- EPATH is associated with a STREAM ID + register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(1).EGROUP1; -- EPATH is associated with a STREAM ID + register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(1).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. + end if; + when REG_LINK_02_HAS_STREAM_ID => + if GBT_NUM > 2 then + register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(2).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(2).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(2).EGROUP4; -- EPATH is associated with a STREAM ID + register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(2).EGROUP3; -- EPATH is associated with a STREAM ID + register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(2).EGROUP2; -- EPATH is associated with a STREAM ID + register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(2).EGROUP1; -- EPATH is associated with a STREAM ID + register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(2).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. + end if; + when REG_LINK_03_HAS_STREAM_ID => + if GBT_NUM > 3 then + register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(3).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(3).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(3).EGROUP4; -- EPATH is associated with a STREAM ID + register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(3).EGROUP3; -- EPATH is associated with a STREAM ID + register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(3).EGROUP2; -- EPATH is associated with a STREAM ID + register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(3).EGROUP1; -- EPATH is associated with a STREAM ID + register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(3).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. + end if; + when REG_LINK_04_HAS_STREAM_ID => + if GBT_NUM > 4 then + register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(4).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(4).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(4).EGROUP4; -- EPATH is associated with a STREAM ID + register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(4).EGROUP3; -- EPATH is associated with a STREAM ID + register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(4).EGROUP2; -- EPATH is associated with a STREAM ID + register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(4).EGROUP1; -- EPATH is associated with a STREAM ID + register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(4).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. + end if; + when REG_LINK_05_HAS_STREAM_ID => + if GBT_NUM > 5 then + register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(5).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(5).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(5).EGROUP4; -- EPATH is associated with a STREAM ID + register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(5).EGROUP3; -- EPATH is associated with a STREAM ID + register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(5).EGROUP2; -- EPATH is associated with a STREAM ID + register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(5).EGROUP1; -- EPATH is associated with a STREAM ID + register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(5).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. + end if; + when REG_LINK_06_HAS_STREAM_ID => + if GBT_NUM > 6 then + register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(6).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(6).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(6).EGROUP4; -- EPATH is associated with a STREAM ID + register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(6).EGROUP3; -- EPATH is associated with a STREAM ID + register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(6).EGROUP2; -- EPATH is associated with a STREAM ID + register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(6).EGROUP1; -- EPATH is associated with a STREAM ID + register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(6).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. + end if; + when REG_LINK_07_HAS_STREAM_ID => + if GBT_NUM > 7 then + register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(7).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(7).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(7).EGROUP4; -- EPATH is associated with a STREAM ID + register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(7).EGROUP3; -- EPATH is associated with a STREAM ID + register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(7).EGROUP2; -- EPATH is associated with a STREAM ID + register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(7).EGROUP1; -- EPATH is associated with a STREAM ID + register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(7).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. + end if; + when REG_LINK_08_HAS_STREAM_ID => + if GBT_NUM > 8 then + register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(8).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(8).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(8).EGROUP4; -- EPATH is associated with a STREAM ID + register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(8).EGROUP3; -- EPATH is associated with a STREAM ID + register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(8).EGROUP2; -- EPATH is associated with a STREAM ID + register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(8).EGROUP1; -- EPATH is associated with a STREAM ID + register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(8).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. + end if; + when REG_LINK_09_HAS_STREAM_ID => + if GBT_NUM > 9 then + register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(9).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(9).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(9).EGROUP4; -- EPATH is associated with a STREAM ID + register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(9).EGROUP3; -- EPATH is associated with a STREAM ID + register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(9).EGROUP2; -- EPATH is associated with a STREAM ID + register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(9).EGROUP1; -- EPATH is associated with a STREAM ID + register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(9).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. + end if; + when REG_LINK_10_HAS_STREAM_ID => + if GBT_NUM > 10 then + register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(10).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(10).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(10).EGROUP4; -- EPATH is associated with a STREAM ID + register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(10).EGROUP3; -- EPATH is associated with a STREAM ID + register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(10).EGROUP2; -- EPATH is associated with a STREAM ID + register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(10).EGROUP1; -- EPATH is associated with a STREAM ID + register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(10).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. + end if; + when REG_LINK_11_HAS_STREAM_ID => + if GBT_NUM > 11 then + register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(11).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(11).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(11).EGROUP4; -- EPATH is associated with a STREAM ID + register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(11).EGROUP3; -- EPATH is associated with a STREAM ID + register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(11).EGROUP2; -- EPATH is associated with a STREAM ID + register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(11).EGROUP1; -- EPATH is associated with a STREAM ID + register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(11).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. + end if; + when REG_LINK_12_HAS_STREAM_ID => + if GBT_NUM > 12 then + register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(12).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(12).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(12).EGROUP4; -- EPATH is associated with a STREAM ID + register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(12).EGROUP3; -- EPATH is associated with a STREAM ID + register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(12).EGROUP2; -- EPATH is associated with a STREAM ID + register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(12).EGROUP1; -- EPATH is associated with a STREAM ID + register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(12).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. + end if; + when REG_LINK_13_HAS_STREAM_ID => + if GBT_NUM > 13 then + register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(13).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(13).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(13).EGROUP4; -- EPATH is associated with a STREAM ID + register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(13).EGROUP3; -- EPATH is associated with a STREAM ID + register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(13).EGROUP2; -- EPATH is associated with a STREAM ID + register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(13).EGROUP1; -- EPATH is associated with a STREAM ID + register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(13).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. + end if; + when REG_LINK_14_HAS_STREAM_ID => + if GBT_NUM > 14 then + register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(14).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(14).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(14).EGROUP4; -- EPATH is associated with a STREAM ID + register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(14).EGROUP3; -- EPATH is associated with a STREAM ID + register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(14).EGROUP2; -- EPATH is associated with a STREAM ID + register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(14).EGROUP1; -- EPATH is associated with a STREAM ID + register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(14).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. + end if; + when REG_LINK_15_HAS_STREAM_ID => + if GBT_NUM > 15 then + register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(15).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(15).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(15).EGROUP4; -- EPATH is associated with a STREAM ID + register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(15).EGROUP3; -- EPATH is associated with a STREAM ID + register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(15).EGROUP2; -- EPATH is associated with a STREAM ID + register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(15).EGROUP1; -- EPATH is associated with a STREAM ID + register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(15).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. + end if; + when REG_LINK_16_HAS_STREAM_ID => + if GBT_NUM > 16 then + register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(16).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(16).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(16).EGROUP4; -- EPATH is associated with a STREAM ID + register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(16).EGROUP3; -- EPATH is associated with a STREAM ID + register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(16).EGROUP2; -- EPATH is associated with a STREAM ID + register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(16).EGROUP1; -- EPATH is associated with a STREAM ID + register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(16).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. + end if; + when REG_LINK_17_HAS_STREAM_ID => + if GBT_NUM > 17 then + register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(17).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(17).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(17).EGROUP4; -- EPATH is associated with a STREAM ID + register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(17).EGROUP3; -- EPATH is associated with a STREAM ID + register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(17).EGROUP2; -- EPATH is associated with a STREAM ID + register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(17).EGROUP1; -- EPATH is associated with a STREAM ID + register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(17).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. + end if; + when REG_LINK_18_HAS_STREAM_ID => + if GBT_NUM > 18 then + register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(18).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(18).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(18).EGROUP4; -- EPATH is associated with a STREAM ID + register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(18).EGROUP3; -- EPATH is associated with a STREAM ID + register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(18).EGROUP2; -- EPATH is associated with a STREAM ID + register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(18).EGROUP1; -- EPATH is associated with a STREAM ID + register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(18).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. + end if; + when REG_LINK_19_HAS_STREAM_ID => + if GBT_NUM > 19 then + register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(19).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(19).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(19).EGROUP4; -- EPATH is associated with a STREAM ID + register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(19).EGROUP3; -- EPATH is associated with a STREAM ID + register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(19).EGROUP2; -- EPATH is associated with a STREAM ID + register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(19).EGROUP1; -- EPATH is associated with a STREAM ID + register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(19).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. + end if; + when REG_LINK_20_HAS_STREAM_ID => + if GBT_NUM > 20 then + register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(20).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(20).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(20).EGROUP4; -- EPATH is associated with a STREAM ID + register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(20).EGROUP3; -- EPATH is associated with a STREAM ID + register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(20).EGROUP2; -- EPATH is associated with a STREAM ID + register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(20).EGROUP1; -- EPATH is associated with a STREAM ID + register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(20).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. + end if; + when REG_LINK_21_HAS_STREAM_ID => + if GBT_NUM > 21 then + register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(21).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(21).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(21).EGROUP4; -- EPATH is associated with a STREAM ID + register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(21).EGROUP3; -- EPATH is associated with a STREAM ID + register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(21).EGROUP2; -- EPATH is associated with a STREAM ID + register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(21).EGROUP1; -- EPATH is associated with a STREAM ID + register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(21).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. + end if; + when REG_LINK_22_HAS_STREAM_ID => + if GBT_NUM > 22 then + register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(22).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(22).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(22).EGROUP4; -- EPATH is associated with a STREAM ID + register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(22).EGROUP3; -- EPATH is associated with a STREAM ID + register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(22).EGROUP2; -- EPATH is associated with a STREAM ID + register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(22).EGROUP1; -- EPATH is associated with a STREAM ID + register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(22).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. + end if; + when REG_LINK_23_HAS_STREAM_ID => + if GBT_NUM > 23 then + register_read_data_25_s(55 downto 48) <= register_map_control_s.HAS_STREAM_ID(23).EGROUP6; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(47 downto 40) <= register_map_control_s.HAS_STREAM_ID(23).EGROUP5; -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_read_data_25_s(39 downto 32) <= register_map_control_s.HAS_STREAM_ID(23).EGROUP4; -- EPATH is associated with a STREAM ID + register_read_data_25_s(31 downto 24) <= register_map_control_s.HAS_STREAM_ID(23).EGROUP3; -- EPATH is associated with a STREAM ID + register_read_data_25_s(23 downto 16) <= register_map_control_s.HAS_STREAM_ID(23).EGROUP2; -- EPATH is associated with a STREAM ID + register_read_data_25_s(15 downto 8) <= register_map_control_s.HAS_STREAM_ID(23).EGROUP1; -- EPATH is associated with a STREAM ID + register_read_data_25_s(7 downto 0) <= register_map_control_s.HAS_STREAM_ID(23).EGROUP0; -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. + end if; + when REG_DECODING_LINK00_EGROUP0_CTRL => + if GBT_NUM > 0 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (0)(0).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(0).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(0).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK00_EGROUP1_CTRL => + if GBT_NUM > 0 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (0)(1).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(1).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(1).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK00_EGROUP2_CTRL => + if GBT_NUM > 0 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (0)(2).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(2).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(2).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK00_EGROUP3_CTRL => + if GBT_NUM > 0 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (0)(3).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(3).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(3).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK00_EGROUP4_CTRL => + if GBT_NUM > 0 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (0)(4).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(4).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(4).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK00_EGROUP5_CTRL => + if GBT_NUM > 0 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (0)(5).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(5).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(5).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(5).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(5).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK00_EGROUP6_CTRL => + if GBT_NUM > 0 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (0)(6).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(6).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(6).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(6).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(0)(6).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK01_EGROUP0_CTRL => + if GBT_NUM > 1 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (1)(0).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(0).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(0).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK01_EGROUP1_CTRL => + if GBT_NUM > 1 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (1)(1).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(1).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(1).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK01_EGROUP2_CTRL => + if GBT_NUM > 1 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (1)(2).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(2).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(2).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK01_EGROUP3_CTRL => + if GBT_NUM > 1 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (1)(3).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(3).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(3).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK01_EGROUP4_CTRL => + if GBT_NUM > 1 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (1)(4).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(4).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(4).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK01_EGROUP5_CTRL => + if GBT_NUM > 1 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (1)(5).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(5).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(5).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(5).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(5).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK01_EGROUP6_CTRL => + if GBT_NUM > 1 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (1)(6).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(6).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(6).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(6).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(1)(6).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK02_EGROUP0_CTRL => + if GBT_NUM > 2 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (2)(0).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(0).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(0).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK02_EGROUP1_CTRL => + if GBT_NUM > 2 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (2)(1).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(1).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(1).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK02_EGROUP2_CTRL => + if GBT_NUM > 2 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (2)(2).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(2).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(2).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK02_EGROUP3_CTRL => + if GBT_NUM > 2 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (2)(3).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(3).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(3).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK02_EGROUP4_CTRL => + if GBT_NUM > 2 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (2)(4).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(4).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(4).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK02_EGROUP5_CTRL => + if GBT_NUM > 2 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (2)(5).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(5).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(5).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(5).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(5).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK02_EGROUP6_CTRL => + if GBT_NUM > 2 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (2)(6).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(6).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(6).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(6).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(2)(6).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK03_EGROUP0_CTRL => + if GBT_NUM > 3 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (3)(0).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(0).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(0).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK03_EGROUP1_CTRL => + if GBT_NUM > 3 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (3)(1).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(1).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(1).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK03_EGROUP2_CTRL => + if GBT_NUM > 3 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (3)(2).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(2).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(2).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK03_EGROUP3_CTRL => + if GBT_NUM > 3 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (3)(3).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(3).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(3).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK03_EGROUP4_CTRL => + if GBT_NUM > 3 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (3)(4).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(4).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(4).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK03_EGROUP5_CTRL => + if GBT_NUM > 3 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (3)(5).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(5).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(5).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(5).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(5).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK03_EGROUP6_CTRL => + if GBT_NUM > 3 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (3)(6).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(6).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(6).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(6).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(3)(6).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK04_EGROUP0_CTRL => + if GBT_NUM > 4 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (4)(0).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(0).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(0).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK04_EGROUP1_CTRL => + if GBT_NUM > 4 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (4)(1).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(1).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(1).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK04_EGROUP2_CTRL => + if GBT_NUM > 4 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (4)(2).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(2).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(2).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK04_EGROUP3_CTRL => + if GBT_NUM > 4 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (4)(3).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(3).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(3).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK04_EGROUP4_CTRL => + if GBT_NUM > 4 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (4)(4).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(4).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(4).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK04_EGROUP5_CTRL => + if GBT_NUM > 4 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (4)(5).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(5).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(5).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(5).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(5).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK04_EGROUP6_CTRL => + if GBT_NUM > 4 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (4)(6).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(6).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(6).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(6).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(4)(6).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK05_EGROUP0_CTRL => + if GBT_NUM > 5 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (5)(0).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(0).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(0).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK05_EGROUP1_CTRL => + if GBT_NUM > 5 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (5)(1).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(1).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(1).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK05_EGROUP2_CTRL => + if GBT_NUM > 5 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (5)(2).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(2).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(2).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK05_EGROUP3_CTRL => + if GBT_NUM > 5 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (5)(3).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(3).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(3).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK05_EGROUP4_CTRL => + if GBT_NUM > 5 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (5)(4).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(4).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(4).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK05_EGROUP5_CTRL => + if GBT_NUM > 5 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (5)(5).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(5).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(5).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(5).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(5).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK05_EGROUP6_CTRL => + if GBT_NUM > 5 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (5)(6).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(6).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(6).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(6).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(5)(6).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK06_EGROUP0_CTRL => + if GBT_NUM > 6 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (6)(0).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(0).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(0).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK06_EGROUP1_CTRL => + if GBT_NUM > 6 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (6)(1).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(1).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(1).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK06_EGROUP2_CTRL => + if GBT_NUM > 6 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (6)(2).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(2).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(2).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK06_EGROUP3_CTRL => + if GBT_NUM > 6 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (6)(3).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(3).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(3).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK06_EGROUP4_CTRL => + if GBT_NUM > 6 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (6)(4).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(4).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(4).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK06_EGROUP5_CTRL => + if GBT_NUM > 6 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (6)(5).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(5).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(5).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(5).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(5).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK06_EGROUP6_CTRL => + if GBT_NUM > 6 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (6)(6).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(6).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(6).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(6).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(6)(6).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK07_EGROUP0_CTRL => + if GBT_NUM > 7 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (7)(0).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(0).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(0).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK07_EGROUP1_CTRL => + if GBT_NUM > 7 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (7)(1).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(1).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(1).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK07_EGROUP2_CTRL => + if GBT_NUM > 7 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (7)(2).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(2).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(2).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK07_EGROUP3_CTRL => + if GBT_NUM > 7 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (7)(3).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(3).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(3).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK07_EGROUP4_CTRL => + if GBT_NUM > 7 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (7)(4).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(4).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(4).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK07_EGROUP5_CTRL => + if GBT_NUM > 7 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (7)(5).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(5).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(5).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(5).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(5).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK07_EGROUP6_CTRL => + if GBT_NUM > 7 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (7)(6).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(6).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(6).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(6).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(7)(6).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK08_EGROUP0_CTRL => + if GBT_NUM > 8 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (8)(0).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(0).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(0).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK08_EGROUP1_CTRL => + if GBT_NUM > 8 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (8)(1).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(1).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(1).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK08_EGROUP2_CTRL => + if GBT_NUM > 8 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (8)(2).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(2).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(2).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK08_EGROUP3_CTRL => + if GBT_NUM > 8 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (8)(3).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(3).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(3).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK08_EGROUP4_CTRL => + if GBT_NUM > 8 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (8)(4).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(4).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(4).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK08_EGROUP5_CTRL => + if GBT_NUM > 8 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (8)(5).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(5).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(5).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(5).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(5).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK08_EGROUP6_CTRL => + if GBT_NUM > 8 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (8)(6).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(6).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(6).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(6).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(8)(6).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK09_EGROUP0_CTRL => + if GBT_NUM > 9 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (9)(0).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(0).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(0).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK09_EGROUP1_CTRL => + if GBT_NUM > 9 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (9)(1).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(1).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(1).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK09_EGROUP2_CTRL => + if GBT_NUM > 9 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (9)(2).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(2).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(2).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK09_EGROUP3_CTRL => + if GBT_NUM > 9 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (9)(3).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(3).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(3).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK09_EGROUP4_CTRL => + if GBT_NUM > 9 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (9)(4).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(4).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(4).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK09_EGROUP5_CTRL => + if GBT_NUM > 9 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (9)(5).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(5).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(5).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(5).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(5).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK09_EGROUP6_CTRL => + if GBT_NUM > 9 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (9)(6).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(6).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(6).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(6).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(9)(6).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK10_EGROUP0_CTRL => + if GBT_NUM > 10 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (10)(0).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(0).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(0).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK10_EGROUP1_CTRL => + if GBT_NUM > 10 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (10)(1).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(1).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(1).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK10_EGROUP2_CTRL => + if GBT_NUM > 10 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (10)(2).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(2).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(2).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK10_EGROUP3_CTRL => + if GBT_NUM > 10 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (10)(3).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(3).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(3).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK10_EGROUP4_CTRL => + if GBT_NUM > 10 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (10)(4).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(4).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(4).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK10_EGROUP5_CTRL => + if GBT_NUM > 10 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (10)(5).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(5).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(5).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(5).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(5).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK10_EGROUP6_CTRL => + if GBT_NUM > 10 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (10)(6).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(6).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(6).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(6).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(10)(6).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK11_EGROUP0_CTRL => + if GBT_NUM > 11 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (11)(0).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(0).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(0).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK11_EGROUP1_CTRL => + if GBT_NUM > 11 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (11)(1).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(1).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(1).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK11_EGROUP2_CTRL => + if GBT_NUM > 11 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (11)(2).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(2).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(2).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK11_EGROUP3_CTRL => + if GBT_NUM > 11 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (11)(3).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(3).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(3).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK11_EGROUP4_CTRL => + if GBT_NUM > 11 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (11)(4).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(4).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(4).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK11_EGROUP5_CTRL => + if GBT_NUM > 11 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (11)(5).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(5).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(5).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(5).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(5).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_DECODING_LINK11_EGROUP6_CTRL => + if GBT_NUM > 11 then + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_EGROUP_CTRL (11)(6).EPATH_ALMOST_FULL; -- FIFO full indication + register_read_data_25_s(50 downto 43) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(6).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 11) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(6).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_read_data_25_s(10 downto 8) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(6).EPATH_WIDTH; -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_read_data_25_s(7 downto 0) <= register_map_control_s.DECODING_EGROUP_CTRL(11)(6).EPATH_ENA; -- Enable bits per EPROC + end if; + when REG_MINI_EGROUP_TOHOST_00 => + if GBT_NUM > 0 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (0).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(0).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(0).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (0).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(0).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(0).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (0).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(0).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(0).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(0).EC_ENABLE; -- Enables the EC channel + end if; + when REG_MINI_EGROUP_TOHOST_01 => + if GBT_NUM > 1 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (1).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(1).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(1).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (1).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(1).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(1).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (1).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(1).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(1).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(1).EC_ENABLE; -- Enables the EC channel + end if; + when REG_MINI_EGROUP_TOHOST_02 => + if GBT_NUM > 2 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (2).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(2).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(2).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (2).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(2).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(2).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (2).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(2).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(2).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(2).EC_ENABLE; -- Enables the EC channel + end if; + when REG_MINI_EGROUP_TOHOST_03 => + if GBT_NUM > 3 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (3).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(3).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(3).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (3).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(3).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(3).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (3).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(3).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(3).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(3).EC_ENABLE; -- Enables the EC channel + end if; + when REG_MINI_EGROUP_TOHOST_04 => + if GBT_NUM > 4 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (4).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(4).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(4).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (4).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(4).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(4).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (4).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(4).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(4).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(4).EC_ENABLE; -- Enables the EC channel + end if; + when REG_MINI_EGROUP_TOHOST_05 => + if GBT_NUM > 5 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (5).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(5).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(5).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (5).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(5).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(5).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (5).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(5).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(5).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(5).EC_ENABLE; -- Enables the EC channel + end if; + when REG_MINI_EGROUP_TOHOST_06 => + if GBT_NUM > 6 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (6).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(6).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(6).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (6).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(6).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(6).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (6).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(6).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(6).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(6).EC_ENABLE; -- Enables the EC channel + end if; + when REG_MINI_EGROUP_TOHOST_07 => + if GBT_NUM > 7 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (7).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(7).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(7).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (7).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(7).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(7).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (7).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(7).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(7).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(7).EC_ENABLE; -- Enables the EC channel + end if; + when REG_MINI_EGROUP_TOHOST_08 => + if GBT_NUM > 8 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (8).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(8).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(8).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (8).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(8).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(8).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (8).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(8).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(8).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(8).EC_ENABLE; -- Enables the EC channel + end if; + when REG_MINI_EGROUP_TOHOST_09 => + if GBT_NUM > 9 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (9).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(9).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(9).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (9).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(9).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(9).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (9).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(9).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(9).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(9).EC_ENABLE; -- Enables the EC channel + end if; + when REG_MINI_EGROUP_TOHOST_10 => + if GBT_NUM > 10 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (10).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(10).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(10).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (10).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(10).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(10).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (10).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(10).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(10).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(10).EC_ENABLE; -- Enables the EC channel + end if; + when REG_MINI_EGROUP_TOHOST_11 => + if GBT_NUM > 11 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (11).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(11).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(11).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (11).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(11).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(11).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (11).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(11).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(11).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(11).EC_ENABLE; -- Enables the EC channel + end if; + when REG_MINI_EGROUP_TOHOST_12 => + if GBT_NUM > 12 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (12).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(12).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(12).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (12).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(12).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(12).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (12).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(12).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(12).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(12).EC_ENABLE; -- Enables the EC channel + end if; + when REG_MINI_EGROUP_TOHOST_13 => + if GBT_NUM > 13 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (13).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(13).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(13).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (13).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(13).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(13).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (13).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(13).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(13).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(13).EC_ENABLE; -- Enables the EC channel + end if; + when REG_MINI_EGROUP_TOHOST_14 => + if GBT_NUM > 14 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (14).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(14).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(14).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (14).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(14).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(14).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (14).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(14).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(14).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(14).EC_ENABLE; -- Enables the EC channel + end if; + when REG_MINI_EGROUP_TOHOST_15 => + if GBT_NUM > 15 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (15).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(15).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(15).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (15).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(15).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(15).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (15).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(15).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(15).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(15).EC_ENABLE; -- Enables the EC channel + end if; + when REG_MINI_EGROUP_TOHOST_16 => + if GBT_NUM > 16 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (16).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(16).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(16).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (16).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(16).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(16).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (16).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(16).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(16).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(16).EC_ENABLE; -- Enables the EC channel + end if; + when REG_MINI_EGROUP_TOHOST_17 => + if GBT_NUM > 17 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (17).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(17).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(17).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (17).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(17).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(17).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (17).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(17).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(17).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(17).EC_ENABLE; -- Enables the EC channel + end if; + when REG_MINI_EGROUP_TOHOST_18 => + if GBT_NUM > 18 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (18).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(18).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(18).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (18).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(18).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(18).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (18).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(18).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(18).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(18).EC_ENABLE; -- Enables the EC channel + end if; + when REG_MINI_EGROUP_TOHOST_19 => + if GBT_NUM > 19 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (19).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(19).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(19).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (19).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(19).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(19).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (19).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(19).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(19).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(19).EC_ENABLE; -- Enables the EC channel + end if; + when REG_MINI_EGROUP_TOHOST_20 => + if GBT_NUM > 20 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (20).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(20).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(20).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (20).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(20).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(20).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (20).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(20).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(20).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(20).EC_ENABLE; -- Enables the EC channel + end if; + when REG_MINI_EGROUP_TOHOST_21 => + if GBT_NUM > 21 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (21).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(21).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(21).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (21).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(21).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(21).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (21).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(21).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(21).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(21).EC_ENABLE; -- Enables the EC channel + end if; + when REG_MINI_EGROUP_TOHOST_22 => + if GBT_NUM > 22 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (22).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(22).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(22).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (22).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(22).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(22).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (22).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(22).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(22).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(22).EC_ENABLE; -- Enables the EC channel + end if; + when REG_MINI_EGROUP_TOHOST_23 => + if GBT_NUM > 23 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (23).AUX_ALMOST_FULL; -- Indicator that the AUX path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_TOHOST(23).AUX_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_TOHOST(23).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (23).IC_ALMOST_FULL; -- Indicator that the IC path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_TOHOST(23).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_TOHOST(23).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_decoding_monitor.MINI_EGROUP_TOHOST (23).EC_ALMOST_FULL; -- Indicator that the EC path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_TOHOST(23).EC_BIT_SWAPPING; -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_TOHOST(23).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_TOHOST(23).EC_ENABLE; -- Enables the EC channel + end if; + when REG_TTC_TOHOST_ENABLE => register_read_data_25_s(0 downto 0) <= register_map_control_s.TTC_TOHOST_ENABLE; -- Enables the ToHost Mini Egroup in TTC mode + when REG_DECODING_REVERSE_10B => register_read_data_25_s(0 downto 0) <= register_map_control_s.DECODING_REVERSE_10B; -- Reverse 10-bit word of elink data for 8b10b E-links + -- 1: Receive 10-bit word in ToHost E-Paths, MSB first + -- 0: Receive 10-bit word in ToHost E-Paths, LSB first + + when REG_ENCODING_REVERSE_10B => register_read_data_25_s(0 downto 0) <= register_map_control_s.ENCODING_REVERSE_10B; -- Reverse 10-bit word of elink data for 8b10b E-links. 1 MSB first, 0 LSB first + when REG_ENCODING_LINK00_EGROUP0_CTRL => + if GBT_NUM > 0 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(0).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (0)(0).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(0).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(0).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK00_EGROUP1_CTRL => + if GBT_NUM > 0 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(1).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (0)(1).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(1).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(1).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK00_EGROUP2_CTRL => + if GBT_NUM > 0 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(2).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (0)(2).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(2).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(2).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK00_EGROUP3_CTRL => + if GBT_NUM > 0 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(3).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (0)(3).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(3).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(3).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK00_EGROUP4_CTRL => + if GBT_NUM > 0 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(4).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (0)(4).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(4).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(0)(4).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK01_EGROUP0_CTRL => + if GBT_NUM > 1 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(0).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (1)(0).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(0).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(0).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK01_EGROUP1_CTRL => + if GBT_NUM > 1 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(1).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (1)(1).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(1).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(1).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK01_EGROUP2_CTRL => + if GBT_NUM > 1 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(2).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (1)(2).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(2).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(2).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK01_EGROUP3_CTRL => + if GBT_NUM > 1 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(3).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (1)(3).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(3).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(3).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK01_EGROUP4_CTRL => + if GBT_NUM > 1 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(4).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (1)(4).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(4).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(1)(4).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK02_EGROUP0_CTRL => + if GBT_NUM > 2 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(0).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (2)(0).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(0).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(0).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK02_EGROUP1_CTRL => + if GBT_NUM > 2 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(1).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (2)(1).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(1).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(1).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK02_EGROUP2_CTRL => + if GBT_NUM > 2 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(2).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (2)(2).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(2).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(2).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK02_EGROUP3_CTRL => + if GBT_NUM > 2 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(3).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (2)(3).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(3).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(3).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK02_EGROUP4_CTRL => + if GBT_NUM > 2 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(4).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (2)(4).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(4).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(2)(4).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK03_EGROUP0_CTRL => + if GBT_NUM > 3 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(0).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (3)(0).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(0).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(0).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK03_EGROUP1_CTRL => + if GBT_NUM > 3 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(1).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (3)(1).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(1).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(1).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK03_EGROUP2_CTRL => + if GBT_NUM > 3 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(2).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (3)(2).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(2).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(2).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK03_EGROUP3_CTRL => + if GBT_NUM > 3 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(3).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (3)(3).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(3).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(3).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK03_EGROUP4_CTRL => + if GBT_NUM > 3 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(4).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (3)(4).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(4).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(3)(4).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK04_EGROUP0_CTRL => + if GBT_NUM > 4 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(0).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (4)(0).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(0).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(0).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK04_EGROUP1_CTRL => + if GBT_NUM > 4 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(1).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (4)(1).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(1).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(1).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK04_EGROUP2_CTRL => + if GBT_NUM > 4 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(2).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (4)(2).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(2).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(2).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK04_EGROUP3_CTRL => + if GBT_NUM > 4 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(3).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (4)(3).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(3).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(3).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK04_EGROUP4_CTRL => + if GBT_NUM > 4 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(4).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (4)(4).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(4).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(4)(4).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK05_EGROUP0_CTRL => + if GBT_NUM > 5 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(0).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (5)(0).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(0).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(0).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK05_EGROUP1_CTRL => + if GBT_NUM > 5 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(1).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (5)(1).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(1).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(1).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK05_EGROUP2_CTRL => + if GBT_NUM > 5 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(2).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (5)(2).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(2).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(2).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK05_EGROUP3_CTRL => + if GBT_NUM > 5 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(3).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (5)(3).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(3).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(3).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK05_EGROUP4_CTRL => + if GBT_NUM > 5 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(4).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (5)(4).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(4).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(5)(4).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK06_EGROUP0_CTRL => + if GBT_NUM > 6 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(0).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (6)(0).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(0).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(0).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK06_EGROUP1_CTRL => + if GBT_NUM > 6 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(1).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (6)(1).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(1).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(1).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK06_EGROUP2_CTRL => + if GBT_NUM > 6 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(2).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (6)(2).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(2).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(2).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK06_EGROUP3_CTRL => + if GBT_NUM > 6 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(3).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (6)(3).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(3).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(3).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK06_EGROUP4_CTRL => + if GBT_NUM > 6 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(4).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (6)(4).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(4).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(6)(4).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK07_EGROUP0_CTRL => + if GBT_NUM > 7 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(0).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (7)(0).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(0).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(0).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK07_EGROUP1_CTRL => + if GBT_NUM > 7 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(1).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (7)(1).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(1).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(1).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK07_EGROUP2_CTRL => + if GBT_NUM > 7 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(2).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (7)(2).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(2).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(2).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK07_EGROUP3_CTRL => + if GBT_NUM > 7 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(3).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (7)(3).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(3).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(3).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK07_EGROUP4_CTRL => + if GBT_NUM > 7 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(4).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (7)(4).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(4).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(7)(4).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK08_EGROUP0_CTRL => + if GBT_NUM > 8 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(0).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (8)(0).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(0).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(0).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK08_EGROUP1_CTRL => + if GBT_NUM > 8 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(1).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (8)(1).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(1).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(1).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK08_EGROUP2_CTRL => + if GBT_NUM > 8 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(2).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (8)(2).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(2).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(2).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK08_EGROUP3_CTRL => + if GBT_NUM > 8 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(3).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (8)(3).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(3).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(3).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK08_EGROUP4_CTRL => + if GBT_NUM > 8 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(4).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (8)(4).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(4).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(8)(4).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK09_EGROUP0_CTRL => + if GBT_NUM > 9 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(0).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (9)(0).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(0).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(0).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK09_EGROUP1_CTRL => + if GBT_NUM > 9 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(1).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (9)(1).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(1).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(1).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK09_EGROUP2_CTRL => + if GBT_NUM > 9 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(2).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (9)(2).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(2).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(2).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK09_EGROUP3_CTRL => + if GBT_NUM > 9 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(3).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (9)(3).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(3).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(3).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK09_EGROUP4_CTRL => + if GBT_NUM > 9 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(4).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (9)(4).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(4).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(9)(4).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK10_EGROUP0_CTRL => + if GBT_NUM > 10 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(0).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (10)(0).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(0).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(0).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK10_EGROUP1_CTRL => + if GBT_NUM > 10 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(1).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (10)(1).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(1).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(1).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK10_EGROUP2_CTRL => + if GBT_NUM > 10 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(2).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (10)(2).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(2).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(2).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK10_EGROUP3_CTRL => + if GBT_NUM > 10 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(3).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (10)(3).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(3).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(3).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK10_EGROUP4_CTRL => + if GBT_NUM > 10 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(4).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (10)(4).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(4).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(10)(4).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK11_EGROUP0_CTRL => + if GBT_NUM > 11 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(0).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (11)(0).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(0).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(0).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(0).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(0).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK11_EGROUP1_CTRL => + if GBT_NUM > 11 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(1).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (11)(1).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(1).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(1).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(1).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(1).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK11_EGROUP2_CTRL => + if GBT_NUM > 11 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(2).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (11)(2).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(2).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(2).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(2).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(2).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK11_EGROUP3_CTRL => + if GBT_NUM > 11 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(3).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (11)(3).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(3).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(3).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(3).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(3).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK11_EGROUP4_CTRL => + if GBT_NUM > 11 then + register_read_data_25_s(62 downto 59) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(4).TTC_OPTION; -- Selects TTC bits sent to the E-link + register_read_data_25_s(58 downto 51) <= register_map_monitor_s.register_map_encoding_monitor.ENCODING_EGROUP_CTRL (11)(4).EPATH_ALMOST_FULL; -- Indiator that the EPATH FIFO is almost full + register_read_data_25_s(50 downto 43) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(4).REVERSE_ELINKS; -- enables bit reversing for the elink in the given epath + register_read_data_25_s(42 downto 40) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(4).EPATH_WIDTH; -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s + + register_read_data_25_s(39 downto 8) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(4).PATH_ENCODING; -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_read_data_25_s(7 downto 0) <= register_map_control_s.ENCODING_EGROUP_CTRL(11)(4).EPATH_ENA; -- Enable bits per E-PATH + end if; + when REG_MINI_EGROUP_FROMHOST_00 => + if GBT_NUM > 0 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (0).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(0).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(0).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (0).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(0).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(0).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (0).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(0).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(0).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(0).EC_ENABLE; -- Configures the FromHost Mini egroup + end if; + when REG_MINI_EGROUP_FROMHOST_01 => + if GBT_NUM > 1 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (1).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(1).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(1).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (1).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(1).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(1).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (1).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(1).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(1).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(1).EC_ENABLE; -- Configures the FromHost Mini egroup + end if; + when REG_MINI_EGROUP_FROMHOST_02 => + if GBT_NUM > 2 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (2).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(2).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(2).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (2).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(2).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(2).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (2).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(2).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(2).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(2).EC_ENABLE; -- Configures the FromHost Mini egroup + end if; + when REG_MINI_EGROUP_FROMHOST_03 => + if GBT_NUM > 3 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (3).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(3).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(3).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (3).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(3).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(3).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (3).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(3).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(3).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(3).EC_ENABLE; -- Configures the FromHost Mini egroup + end if; + when REG_MINI_EGROUP_FROMHOST_04 => + if GBT_NUM > 4 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (4).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(4).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(4).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (4).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(4).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(4).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (4).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(4).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(4).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(4).EC_ENABLE; -- Configures the FromHost Mini egroup + end if; + when REG_MINI_EGROUP_FROMHOST_05 => + if GBT_NUM > 5 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (5).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(5).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(5).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (5).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(5).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(5).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (5).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(5).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(5).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(5).EC_ENABLE; -- Configures the FromHost Mini egroup + end if; + when REG_MINI_EGROUP_FROMHOST_06 => + if GBT_NUM > 6 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (6).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(6).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(6).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (6).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(6).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(6).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (6).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(6).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(6).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(6).EC_ENABLE; -- Configures the FromHost Mini egroup + end if; + when REG_MINI_EGROUP_FROMHOST_07 => + if GBT_NUM > 7 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (7).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(7).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(7).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (7).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(7).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(7).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (7).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(7).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(7).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(7).EC_ENABLE; -- Configures the FromHost Mini egroup + end if; + when REG_MINI_EGROUP_FROMHOST_08 => + if GBT_NUM > 8 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (8).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(8).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(8).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (8).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(8).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(8).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (8).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(8).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(8).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(8).EC_ENABLE; -- Configures the FromHost Mini egroup + end if; + when REG_MINI_EGROUP_FROMHOST_09 => + if GBT_NUM > 9 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (9).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(9).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(9).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (9).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(9).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(9).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (9).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(9).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(9).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(9).EC_ENABLE; -- Configures the FromHost Mini egroup + end if; + when REG_MINI_EGROUP_FROMHOST_10 => + if GBT_NUM > 10 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (10).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(10).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(10).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (10).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(10).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(10).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (10).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(10).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(10).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(10).EC_ENABLE; -- Configures the FromHost Mini egroup + end if; + when REG_MINI_EGROUP_FROMHOST_11 => + if GBT_NUM > 11 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (11).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(11).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(11).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (11).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(11).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(11).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (11).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(11).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(11).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(11).EC_ENABLE; -- Configures the FromHost Mini egroup + end if; + when REG_MINI_EGROUP_FROMHOST_12 => + if GBT_NUM > 12 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (12).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(12).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(12).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (12).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(12).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(12).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (12).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(12).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(12).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(12).EC_ENABLE; -- Configures the FromHost Mini egroup + end if; + when REG_MINI_EGROUP_FROMHOST_13 => + if GBT_NUM > 13 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (13).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(13).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(13).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (13).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(13).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(13).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (13).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(13).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(13).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(13).EC_ENABLE; -- Configures the FromHost Mini egroup + end if; + when REG_MINI_EGROUP_FROMHOST_14 => + if GBT_NUM > 14 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (14).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(14).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(14).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (14).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(14).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(14).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (14).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(14).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(14).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(14).EC_ENABLE; -- Configures the FromHost Mini egroup + end if; + when REG_MINI_EGROUP_FROMHOST_15 => + if GBT_NUM > 15 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (15).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(15).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(15).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (15).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(15).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(15).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (15).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(15).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(15).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(15).EC_ENABLE; -- Configures the FromHost Mini egroup + end if; + when REG_MINI_EGROUP_FROMHOST_16 => + if GBT_NUM > 16 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (16).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(16).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(16).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (16).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(16).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(16).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (16).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(16).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(16).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(16).EC_ENABLE; -- Configures the FromHost Mini egroup + end if; + when REG_MINI_EGROUP_FROMHOST_17 => + if GBT_NUM > 17 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (17).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(17).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(17).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (17).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(17).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(17).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (17).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(17).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(17).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(17).EC_ENABLE; -- Configures the FromHost Mini egroup + end if; + when REG_MINI_EGROUP_FROMHOST_18 => + if GBT_NUM > 18 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (18).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(18).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(18).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (18).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(18).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(18).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (18).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(18).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(18).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(18).EC_ENABLE; -- Configures the FromHost Mini egroup + end if; + when REG_MINI_EGROUP_FROMHOST_19 => + if GBT_NUM > 19 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (19).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(19).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(19).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (19).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(19).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(19).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (19).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(19).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(19).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(19).EC_ENABLE; -- Configures the FromHost Mini egroup + end if; + when REG_MINI_EGROUP_FROMHOST_20 => + if GBT_NUM > 20 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (20).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(20).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(20).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (20).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(20).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(20).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (20).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(20).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(20).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(20).EC_ENABLE; -- Configures the FromHost Mini egroup + end if; + when REG_MINI_EGROUP_FROMHOST_21 => + if GBT_NUM > 21 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (21).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(21).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(21).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (21).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(21).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(21).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (21).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(21).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(21).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(21).EC_ENABLE; -- Configures the FromHost Mini egroup + end if; + when REG_MINI_EGROUP_FROMHOST_22 => + if GBT_NUM > 22 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (22).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(22).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(22).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (22).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(22).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(22).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (22).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(22).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(22).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(22).EC_ENABLE; -- Configures the FromHost Mini egroup + end if; + when REG_MINI_EGROUP_FROMHOST_23 => + if GBT_NUM > 23 then + register_read_data_25_s(12 downto 12) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (23).AUX_ALMOST_FULL; -- Indicator that the AUX Path FIFO is almost full + register_read_data_25_s(11 downto 11) <= register_map_control_s.MINI_EGROUP_FROMHOST(23).AUX_BIT_SWAPPING; -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(10 downto 10) <= register_map_control_s.MINI_EGROUP_FROMHOST(23).AUX_ENABLE; -- Enables the AUX channel + register_read_data_25_s(9 downto 9) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (23).IC_ALMOST_FULL; -- Indicator that the IC Path FIFO is almost full + register_read_data_25_s(8 downto 8) <= register_map_control_s.MINI_EGROUP_FROMHOST(23).IC_BIT_SWAPPING; -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_read_data_25_s(7 downto 7) <= register_map_control_s.MINI_EGROUP_FROMHOST(23).IC_ENABLE; -- Enables the IC channel + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_encoding_monitor.MINI_EGROUP_FROMHOST (23).EC_ALMOST_FULL; -- Indicator that the EC Path FIFO is almost full + register_read_data_25_s(5 downto 5) <= register_map_control_s.MINI_EGROUP_FROMHOST(23).EC_BIT_SWAPPING; -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_read_data_25_s(4 downto 1) <= register_map_control_s.MINI_EGROUP_FROMHOST(23).EC_ENCODING; -- Configures encoding of the EC channel + register_read_data_25_s(0 downto 0) <= register_map_control_s.MINI_EGROUP_FROMHOST(23).EC_ENABLE; -- Configures the FromHost Mini egroup + end if; + when REG_FE_EMU_ENA => register_read_data_25_s(1 downto 1) <= register_map_control_s.FE_EMU_ENA.EMU_TOFRONTEND; -- Enable GBT dummy emulator ToFrontEnd + register_read_data_25_s(0 downto 0) <= register_map_control_s.FE_EMU_ENA.EMU_TOHOST; -- Enable GBT dummy emulator ToHost + when REG_FE_EMU_CONFIG => register_read_data_25_s(54 downto 47) <= register_map_control_s.FE_EMU_CONFIG.WE; -- write enable array, every bit is one emulator RAM block + register_read_data_25_s(46 downto 33) <= register_map_control_s.FE_EMU_CONFIG.WRADDR; -- write address bus + register_read_data_25_s(32 downto 0) <= register_map_control_s.FE_EMU_CONFIG.WRDATA; -- write data bus + when REG_FE_EMU_READ => register_read_data_25_s(35 downto 33) <= register_map_control_s.FE_EMU_READ.SEL; -- Select ramblock to read back + register_read_data_25_s(32 downto 0) <= register_map_monitor_s.register_map_gbtemu_monitor.FE_EMU_READ.DATA; -- Read back ramblock at FE_EMU_CONFIG.WRADDR + when REG_GBT_CHANNEL_DISABLE => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_CHANNEL_DISABLE; -- Disable selected lpGBT, GBT or FULL mode channel + when REG_GBT_GENERAL_CTRL => register_read_data_25_s(63 downto 0) <= register_map_control_s.GBT_GENERAL_CTRL; -- Alignment chk reset (not self clearing) + when REG_GBT_MODE_CTRL => register_read_data_25_s(2 downto 2) <= register_map_control_s.GBT_MODE_CTRL.RX_ALIGN_TB_SW; -- RX_ALIGN_TB_SW + register_read_data_25_s(1 downto 1) <= register_map_control_s.GBT_MODE_CTRL.RX_ALIGN_SW; -- RX_ALIGN_SW + register_read_data_25_s(0 downto 0) <= register_map_control_s.GBT_MODE_CTRL.DESMUX_USE_SW; -- DESMUX_USE_SW when REG_GBT_RXSLIDE_SELECT => - if GBT_GENERATE_ALL_REGS then - register_map_control_s.GBT_RXSLIDE_SELECT <= register_write_data_25_v(47 downto 0); -- RxSlide select [47:0] - end if; + if GBT_GENERATE_ALL_REGS then + register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_RXSLIDE_SELECT; -- RxSlide select [47:0] + end if; when REG_GBT_RXSLIDE_MANUAL => - if GBT_GENERATE_ALL_REGS then - register_map_control_s.GBT_RXSLIDE_MANUAL <= register_write_data_25_v(47 downto 0); -- RxSlide select [47:0] - end if; + if GBT_GENERATE_ALL_REGS then + register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_RXSLIDE_MANUAL; -- RxSlide select [47:0] + end if; when REG_GBT_TXUSRRDY => - if GBT_GENERATE_ALL_REGS then - register_map_control_s.GBT_TXUSRRDY <= register_write_data_25_v(47 downto 0); -- TxUsrRdy [47:0] - end if; + if GBT_GENERATE_ALL_REGS then + register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_TXUSRRDY; -- TxUsrRdy [47:0] + end if; when REG_GBT_RXUSRRDY => - if GBT_GENERATE_ALL_REGS then - register_map_control_s.GBT_RXUSRRDY <= register_write_data_25_v(47 downto 0); -- RxUsrRdy [47:0] - end if; - when REG_GBT_SOFT_RESET => register_map_control_s.GBT_SOFT_RESET <= register_write_data_25_v(47 downto 0); -- SOFT_RESET [47:0] - when REG_GBT_GTTX_RESET => register_map_control_s.GBT_GTTX_RESET <= register_write_data_25_v(47 downto 0); -- GTTX_RESET [47:0] - when REG_GBT_GTRX_RESET => register_map_control_s.GBT_GTRX_RESET <= register_write_data_25_v(47 downto 0); -- GTRX_RESET [47:0] - when REG_GBT_PLL_RESET => register_map_control_s.GBT_PLL_RESET.QPLL_RESET <= register_write_data_25_v(59 downto 48); -- QPLL_RESET [11:0] - register_map_control_s.GBT_PLL_RESET.CPLL_RESET <= register_write_data_25_v(47 downto 0); -- CPLL_RESET [47:0] + if GBT_GENERATE_ALL_REGS then + register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_RXUSRRDY; -- RxUsrRdy [47:0] + end if; + when REG_GBT_SOFT_RESET => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_SOFT_RESET; -- SOFT_RESET [47:0] + when REG_GBT_GTTX_RESET => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_GTTX_RESET; -- GTTX_RESET [47:0] + when REG_GBT_GTRX_RESET => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_GTRX_RESET; -- GTRX_RESET [47:0] + when REG_GBT_PLL_RESET => register_read_data_25_s(59 downto 48) <= register_map_control_s.GBT_PLL_RESET.QPLL_RESET; -- QPLL_RESET [11:0] + register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_PLL_RESET.CPLL_RESET; -- CPLL_RESET [47:0] when REG_GBT_SOFT_TX_RESET => - if GBT_GENERATE_ALL_REGS then - register_map_control_s.GBT_SOFT_TX_RESET.RESET_ALL <= register_write_data_25_v(59 downto 48); -- SOFT_TX_RESET_ALL [11:0] - register_map_control_s.GBT_SOFT_TX_RESET.RESET_GT <= register_write_data_25_v(47 downto 0); -- SOFT_TX_RESET_GT [47:0] - end if; + if GBT_GENERATE_ALL_REGS then + register_read_data_25_s(59 downto 48) <= register_map_control_s.GBT_SOFT_TX_RESET.RESET_ALL; -- SOFT_TX_RESET_ALL [11:0] + register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_SOFT_TX_RESET.RESET_GT; -- SOFT_TX_RESET_GT [47:0] + end if; when REG_GBT_SOFT_RX_RESET => - if GBT_GENERATE_ALL_REGS then - register_map_control_s.GBT_SOFT_RX_RESET.RESET_ALL <= register_write_data_25_v(59 downto 48); -- SOFT_TX_RESET_ALL [11:0] - register_map_control_s.GBT_SOFT_RX_RESET.RESET_GT <= register_write_data_25_v(47 downto 0); -- SOFT_TX_RESET_GT [47:0] - end if; + if GBT_GENERATE_ALL_REGS then + register_read_data_25_s(59 downto 48) <= register_map_control_s.GBT_SOFT_RX_RESET.RESET_ALL; -- SOFT_TX_RESET_ALL [11:0] + register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_SOFT_RX_RESET.RESET_GT; -- SOFT_TX_RESET_GT [47:0] + end if; when REG_GBT_ODD_EVEN => - if GBT_GENERATE_ALL_REGS then - register_map_control_s.GBT_ODD_EVEN <= register_write_data_25_v(47 downto 0); -- OddEven [47:0] - end if; - when REG_GBT_TOPBOT => - if GBT_GENERATE_ALL_REGS then - register_map_control_s.GBT_TOPBOT <= register_write_data_25_v(47 downto 0); -- TopBot [47:0] - end if; - when REG_GBT_TX_TC_DLY_VALUE1 => register_map_control_s.GBT_TX_TC_DLY_VALUE1 <= register_write_data_25_v(47 downto 0); -- TX_TC_DLY_VALUE [47:0] - when REG_GBT_TX_TC_DLY_VALUE2 => register_map_control_s.GBT_TX_TC_DLY_VALUE2 <= register_write_data_25_v(47 downto 0); -- TX_TC_DLY_VALUE [95:48] - when REG_GBT_TX_TC_DLY_VALUE3 => register_map_control_s.GBT_TX_TC_DLY_VALUE3 <= register_write_data_25_v(47 downto 0); -- TX_TC_DLY_VALUE [143:96] - when REG_GBT_TX_TC_DLY_VALUE4 => register_map_control_s.GBT_TX_TC_DLY_VALUE4 <= register_write_data_25_v(47 downto 0); -- TX_TC_DLY_VALUE [191:144] - when REG_GBT_DATA_TXFORMAT1 => register_map_control_s.GBT_DATA_TXFORMAT1 <= register_write_data_25_v(47 downto 0); -- DATA_TXFORMAT [47:0] - when REG_GBT_DATA_TXFORMAT2 => register_map_control_s.GBT_DATA_TXFORMAT2 <= register_write_data_25_v(47 downto 0); -- DATA_TXFORMAT [95:48] - when REG_GBT_DATA_RXFORMAT1 => register_map_control_s.GBT_DATA_RXFORMAT1 <= register_write_data_25_v(47 downto 0); -- DATA_RXFORMAT [47:0] - when REG_GBT_DATA_RXFORMAT2 => register_map_control_s.GBT_DATA_RXFORMAT2 <= register_write_data_25_v(47 downto 0); -- DATA_RXFORMAT [95:0] - when REG_GBT_TX_RESET => register_map_control_s.GBT_TX_RESET <= register_write_data_25_v(47 downto 0); -- TX Logic reset [47:0] - when REG_GBT_RX_RESET => register_map_control_s.GBT_RX_RESET <= register_write_data_25_v(47 downto 0); -- RX Logic reset [47:0] - when REG_GBT_TX_TC_METHOD => register_map_control_s.GBT_TX_TC_METHOD <= register_write_data_25_v(47 downto 0); -- TX time domain crossing method [47:0] - when REG_GBT_OUTMUX_SEL => register_map_control_s.GBT_OUTMUX_SEL <= register_write_data_25_v(47 downto 0); -- Descrambler output MUX selection [47:0] - when REG_GBT_TC_EDGE => register_map_control_s.GBT_TC_EDGE <= register_write_data_25_v(47 downto 0); -- Sampling edge selection for TX domain crossing [47:0] - when REG_GBT_TXPOLARITY => register_map_control_s.GBT_TXPOLARITY <= register_write_data_25_v(47 downto 0); -- 0: default polarity - -- 1: reversed polarity for transmitter of GTH channels - - when REG_GBT_RXPOLARITY => register_map_control_s.GBT_RXPOLARITY <= register_write_data_25_v(47 downto 0); -- 0: default polarity - -- 1: reversed polarity for the receiver of the GTH channels - - when REG_GTH_LOOPBACK_CONTROL => register_map_control_s.GTH_LOOPBACK_CONTROL <= register_write_data_25_v(2 downto 0); -- Controls loopback for loopback: read UG476 for the details. NOTE: the TXBUFFER is disabled, near end PCS loopback is not supported. - -- 000: Normal operation - -- 001: Near-End PCS Loopback - -- 010: Near-End PMA Loopback - -- 011: Reserved - -- 100: Far-End PMA Loopback - -- 101: Reserved - -- 110: Far-End PCS Loopback - - when REG_GBT_TOHOST_FANOUT => register_map_control_s.GBT_TOHOST_FANOUT.LOCK <= register_write_data_25_v(48 downto 48); -- Locks this particular register. If set prevents software from touching it. - register_map_control_s.GBT_TOHOST_FANOUT.SEL <= register_write_data_25_v(47 downto 0); -- ToHost FanOut/Selector. Every bitfield is a channel: - -- 1 : GBT_EMU, select GBT Emulator for a specific CentralRouter channel - -- 0 : GBT_WRAP, select real GBT link for a specific CentralRouter channel - - when REG_GBT_TOFRONTEND_FANOUT => register_map_control_s.GBT_TOFRONTEND_FANOUT.LOCK <= register_write_data_25_v(48 downto 48); -- Locks this particular register. If set prevents software from touching it. - register_map_control_s.GBT_TOFRONTEND_FANOUT.SEL <= register_write_data_25_v(47 downto 0); -- ToFrontEnd FanOut/Selector. Every bitfield is a channel: - -- 1 : GBT_EMU, select GBT Emulator for a specific GBT link - -- 0 : TTC_DEC, select CentralRouter data (including TTC) for a specific GBT link - -- - - when REG_TTC_DEC_CTRL => register_map_control_s.TTC_DEC_CTRL.BCID_ONBCR <= register_write_data_25_v(26 downto 15); -- BCID is set to this value when BCR arrives - register_map_control_s.TTC_DEC_CTRL.ECR_BCR_SWAP <= register_write_data_25_v(13 downto 13); -- ECR and BCR signals are swapped at the output of the TTC decoder (needed only for LAr TTC) - register_map_control_s.TTC_DEC_CTRL.BUSY_OUTPUT_INHIBIT <= register_write_data_25_v(12 downto 12); -- forces the Busy LEMO output to BUSY-OFF - register_map_control_s.TTC_DEC_CTRL.TOHOST_RST <= register_write_data_25_v(11 downto 11); -- reset toHost in ttc decoder - register_map_control_s.TTC_DEC_CTRL.TT_BCH_EN <= register_write_data_25_v(10 downto 10); -- trigger type enable / disable for TTC-ToHost - register_map_control_s.TTC_DEC_CTRL.XL1ID_SW <= register_write_data_25_v(9 downto 2); -- set XL1ID value, the value to be set by XL1ID_RST signal - register_map_control_s.TTC_DEC_CTRL.XL1ID_RST <= register_write_data_25_v(1 downto 1); -- giving a trigger signal to reset XL1ID value - register_map_control_s.TTC_DEC_CTRL.MASTER_BUSY <= register_write_data_25_v(0 downto 0); -- L1A trigger throttling - when REG_TTC_EMU => register_map_control_s.TTC_EMU.SEL <= register_write_data_25_v(1 downto 1); -- Select TTC data source 1 TTC Emu | 0 TTC Decoder - register_map_control_s.TTC_EMU.ENA <= register_write_data_25_v(0 downto 0); -- Clear to load into the TTC emulator’s memory the required sequence, Set to run the TTC emulator sequence - when REG_TTC_DELAY_00 => register_map_control_s.TTC_DELAY (0) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_01 => register_map_control_s.TTC_DELAY (1) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_02 => register_map_control_s.TTC_DELAY (2) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_03 => register_map_control_s.TTC_DELAY (3) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_04 => register_map_control_s.TTC_DELAY (4) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_05 => register_map_control_s.TTC_DELAY (5) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_06 => register_map_control_s.TTC_DELAY (6) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_07 => register_map_control_s.TTC_DELAY (7) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_08 => register_map_control_s.TTC_DELAY (8) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_09 => register_map_control_s.TTC_DELAY (9) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_10 => register_map_control_s.TTC_DELAY (10) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_11 => register_map_control_s.TTC_DELAY (11) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_12 => register_map_control_s.TTC_DELAY (12) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_13 => register_map_control_s.TTC_DELAY (13) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_14 => register_map_control_s.TTC_DELAY (14) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_15 => register_map_control_s.TTC_DELAY (15) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_16 => register_map_control_s.TTC_DELAY (16) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_17 => register_map_control_s.TTC_DELAY (17) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_18 => register_map_control_s.TTC_DELAY (18) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_19 => register_map_control_s.TTC_DELAY (19) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_20 => register_map_control_s.TTC_DELAY (20) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_21 => register_map_control_s.TTC_DELAY (21) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_22 => register_map_control_s.TTC_DELAY (22) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_23 => register_map_control_s.TTC_DELAY (23) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_24 => register_map_control_s.TTC_DELAY (24) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_25 => register_map_control_s.TTC_DELAY (25) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_26 => register_map_control_s.TTC_DELAY (26) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_27 => register_map_control_s.TTC_DELAY (27) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_28 => register_map_control_s.TTC_DELAY (28) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_29 => register_map_control_s.TTC_DELAY (29) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_30 => register_map_control_s.TTC_DELAY (30) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_31 => register_map_control_s.TTC_DELAY (31) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_32 => register_map_control_s.TTC_DELAY (32) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_33 => register_map_control_s.TTC_DELAY (33) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_34 => register_map_control_s.TTC_DELAY (34) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_35 => register_map_control_s.TTC_DELAY (35) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_36 => register_map_control_s.TTC_DELAY (36) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_37 => register_map_control_s.TTC_DELAY (37) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_38 => register_map_control_s.TTC_DELAY (38) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_39 => register_map_control_s.TTC_DELAY (39) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_40 => register_map_control_s.TTC_DELAY (40) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_41 => register_map_control_s.TTC_DELAY (41) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_42 => register_map_control_s.TTC_DELAY (42) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_43 => register_map_control_s.TTC_DELAY (43) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_44 => register_map_control_s.TTC_DELAY (44) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_45 => register_map_control_s.TTC_DELAY (45) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_46 => register_map_control_s.TTC_DELAY (46) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_DELAY_47 => register_map_control_s.TTC_DELAY (47) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values - when REG_TTC_BUSY_TIMING_CTRL => register_map_control_s.TTC_BUSY_TIMING_CTRL.PRESCALE <= register_write_data_25_v(51 downto 32); -- Prescales the 40MHz clock to create an internal slow clock - register_map_control_s.TTC_BUSY_TIMING_CTRL.BUSY_WIDTH <= register_write_data_25_v(31 downto 16); -- Minimum number of 40MHz clocks that the busy is asserted - register_map_control_s.TTC_BUSY_TIMING_CTRL.LIMIT_TIME <= register_write_data_25_v(15 downto 0); -- Number of prescaled clocks a given busy must be asserted before it is recognized - when REG_TTC_BUSY_CLEAR => register_map_control_s.TTC_BUSY_CLEAR <= "1"; -- clears the latching busy bits in TTC_BUSY_ACCEPTED - when REG_TTC_EMU_CONTROL => register_map_control_s.TTC_EMU_CONTROL.BROADCAST <= register_write_data_25_v(32 downto 27); -- Broadcast data - register_map_control_s.TTC_EMU_CONTROL.ECR <= register_write_data_25_v(26 downto 26); -- Event counter reset - register_map_control_s.TTC_EMU_CONTROL.BCR <= register_write_data_25_v(25 downto 25); -- Bunch counter reset - register_map_control_s.TTC_EMU_CONTROL.L1A <= register_write_data_25_v(24 downto 24); -- Level 1 Accept - when REG_TTC_EMU_L1A_PERIOD => register_map_control_s.TTC_EMU_L1A_PERIOD <= register_write_data_25_v(31 downto 0); -- L1A period in BC. 0 means manual L1A with TTC_EMU_CONTROL.L1A - when REG_TTC_EMU_ECR_PERIOD => register_map_control_s.TTC_EMU_ECR_PERIOD <= register_write_data_25_v(31 downto 0); -- ECR period in BC. 0 means manual ECR with TTC_EMU_CONTROL.ECR - when REG_TTC_EMU_BCR_PERIOD => register_map_control_s.TTC_EMU_BCR_PERIOD <= register_write_data_25_v(31 downto 0); -- BCR period in BC. 0 means manual BCR with TTC_EMU_CONTROL.BCR - when REG_TTC_EMU_LONG_CHANNEL_DATA => register_map_control_s.TTC_EMU_LONG_CHANNEL_DATA <= register_write_data_25_v(31 downto 0); -- Long channel data for the TTC emulator - when REG_TTC_EMU_RESET => register_map_control_s.TTC_EMU_RESET <= "1"; -- Any write to this register resets the TTC Emulator to the default state. - when REG_TTC_ECR_MONITOR => register_map_control_s.TTC_ECR_MONITOR.CLEAR <= "1"; -- Counts the number of ECRs received from the TTC system, any write to this register clears the counter - when REG_TTC_TTYPE_MONITOR => register_map_control_s.TTC_TTYPE_MONITOR.CLEAR <= "1"; -- Counts the number of TType received from the TTC system, any write to this register clears the counter - when REG_TTC_BCR_PERIODICITY_MONITOR => register_map_control_s.TTC_BCR_PERIODICITY_MONITOR.CLEAR <= "1"; -- Counts the number of times the BCR period does not match 3564, any write to this register clears the counter - when REG_XOFF_FM_CH_FIFO_THRESH_LOW => register_map_control_s.XOFF_FM_CH_FIFO_THRESH_LOW <= register_write_data_25_v(3 downto 0); -- Controls the low threshold of the channel fifo in FULL mode on which - -- an Xon will be asserted, bitfields control 4 MSB - - when REG_XOFF_FM_CH_FIFO_THRESH_HIGH => register_map_control_s.XOFF_FM_CH_FIFO_THRESH_HIGH <= register_write_data_25_v(3 downto 0); -- Controls the high threshold of the channel fifo in FULL mode on which - -- an Xoff will be asserted, bitfields control 4 MSB - name: XOFF_FM_LOW_THRESH_CROSSED - - when REG_XOFF_FM_HIGH_THRESH => register_map_control_s.XOFF_FM_HIGH_THRESH.CLEAR_LATCH <= "1"; -- Writing this register will clear all CROSS_LATCHED bits - when REG_XOFF_FM_SOFT_XOFF => register_map_control_s.XOFF_FM_SOFT_XOFF <= register_write_data_25_v(23 downto 0); -- Set any bit in this register to assert XOFF for the given channel, clearing bits will assert XON - when REG_XOFF_ENABLE => register_map_control_s.XOFF_ENABLE <= register_write_data_25_v(23 downto 0); -- Enable XOFF assertion (To Frontend) in case the FULL mode CH FIFO gets beyond thresholds. One bit per channel - when REG_DMA_BUSY_STATUS => register_map_control_s.DMA_BUSY_STATUS.CLEAR_LATCH <= "1"; -- Any write to this register clears TOHOST_BUSY_LATCHED - register_map_control_s.DMA_BUSY_STATUS.ENABLE <= register_write_data_25_v(4 downto 4); -- Enable the DMA buffer on the server as a source of busy - when REG_FM_BUSY_CHANNEL_STATUS => register_map_control_s.FM_BUSY_CHANNEL_STATUS.CLEAR_LATCH <= "1"; -- Any write to this register will clear the BUSY_LATCHED bits - when REG_BUSY_MAIN_OUTPUT_FIFO_THRESH => register_map_control_s.BUSY_MAIN_OUTPUT_FIFO_THRESH.BUSY_ENABLE <= register_write_data_25_v(24 downto 24); -- Enable busy generation if thresholds are crossed - register_map_control_s.BUSY_MAIN_OUTPUT_FIFO_THRESH.LOW <= register_write_data_25_v(23 downto 12); -- Low, Negate threshold of busy generation from main output fifo - register_map_control_s.BUSY_MAIN_OUTPUT_FIFO_THRESH.HIGH <= register_write_data_25_v(11 downto 0); -- High, Assert threshold of busy generation from main output fifo - when REG_BUSY_MAIN_OUTPUT_FIFO_STATUS => register_map_control_s.BUSY_MAIN_OUTPUT_FIFO_STATUS.CLEAR_LATCHED <= "1"; -- Any write to this register will clear the - when REG_ELINK_BUSY_ENABLE00 => register_map_control_s.ELINK_BUSY_ENABLE (0) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE01 => register_map_control_s.ELINK_BUSY_ENABLE (1) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE02 => register_map_control_s.ELINK_BUSY_ENABLE (2) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE03 => register_map_control_s.ELINK_BUSY_ENABLE (3) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE04 => register_map_control_s.ELINK_BUSY_ENABLE (4) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE05 => register_map_control_s.ELINK_BUSY_ENABLE (5) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE06 => register_map_control_s.ELINK_BUSY_ENABLE (6) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE07 => register_map_control_s.ELINK_BUSY_ENABLE (7) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE08 => register_map_control_s.ELINK_BUSY_ENABLE (8) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE09 => register_map_control_s.ELINK_BUSY_ENABLE (9) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE10 => register_map_control_s.ELINK_BUSY_ENABLE (10) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE11 => register_map_control_s.ELINK_BUSY_ENABLE (11) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE12 => register_map_control_s.ELINK_BUSY_ENABLE (12) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE13 => register_map_control_s.ELINK_BUSY_ENABLE (13) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE14 => register_map_control_s.ELINK_BUSY_ENABLE (14) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE15 => register_map_control_s.ELINK_BUSY_ENABLE (15) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE16 => register_map_control_s.ELINK_BUSY_ENABLE (16) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE17 => register_map_control_s.ELINK_BUSY_ENABLE (17) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE18 => register_map_control_s.ELINK_BUSY_ENABLE (18) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE19 => register_map_control_s.ELINK_BUSY_ENABLE (19) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE20 => register_map_control_s.ELINK_BUSY_ENABLE (20) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE21 => register_map_control_s.ELINK_BUSY_ENABLE (21) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE22 => register_map_control_s.ELINK_BUSY_ENABLE (22) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_ELINK_BUSY_ENABLE23 => register_map_control_s.ELINK_BUSY_ENABLE (23) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output - when REG_HK_CTRL_I2C => register_map_control_s.HK_CTRL_I2C.CONFIG_TRIG <= register_write_data_25_v(1 downto 1); -- i2c_config_trig - register_map_control_s.HK_CTRL_I2C.CLKFREQ_SEL <= register_write_data_25_v(0 downto 0); -- i2c_clkfreq_sel - when REG_HK_CTRL_FMC => register_map_control_s.HK_CTRL_FMC.SI5345_INSEL <= register_write_data_25_v(6 downto 5); -- Selects the input clock source - -- 0 : FPGA (FMC LA01) - -- 1 : FMC OSC (40.079 MHz) - -- 2 : FPGA (FMC LA18) - - register_map_control_s.HK_CTRL_FMC.SI5345_A <= register_write_data_25_v(4 downto 3); -- Si5345 I2C address select 2 LSB (0x0:default, dev id 0x68) - register_map_control_s.HK_CTRL_FMC.SI5345_OE <= register_write_data_25_v(2 downto 2); -- Si5345 active low output enable (0:enable) - register_map_control_s.HK_CTRL_FMC.SI5345_RSTN <= register_write_data_25_v(1 downto 1); -- Si5345 active low output enable (0:reset) - register_map_control_s.HK_CTRL_FMC.SI5345_SEL <= register_write_data_25_v(0 downto 0); -- Si5345 programming mode - -- 1 : I2C mode (default) - -- 0 : SPI mode - - when REG_HK_MON_FMC => register_map_control_s.HK_MON_FMC.SI5345_LOL <= register_write_data_25_v(1 downto 1); -- Si5345 Loss Of Lock pin - register_map_control_s.HK_MON_FMC.SI5345_INTR <= register_write_data_25_v(0 downto 0); -- Si5345 Interrupt flagging chip change of status - when REG_MMCM_MAIN => register_map_control_s.MMCM_MAIN.LCLK_SEL <= register_write_data_25_v(3 downto 3); -- 1: LCLK - -- 0: TTC - - when REG_I2C_WR => register_map_control_s.I2C_WR.I2C_WREN <= not register_map_monitor_s.register_map_hk_monitor.I2C_WR.I2C_FULL; -- Any write to this register triggers an I2C read or write sequence - register_map_control_s.I2C_WR.WRITE_2BYTES <= register_write_data_25_v(24 downto 24); -- Write two bytes - register_map_control_s.I2C_WR.DATA_BYTE2 <= register_write_data_25_v(23 downto 16); -- Data byte 2 - register_map_control_s.I2C_WR.DATA_BYTE1 <= register_write_data_25_v(15 downto 8); -- Data byte 1 - register_map_control_s.I2C_WR.SLAVE_ADDRESS <= register_write_data_25_v(7 downto 1); -- Slave address - register_map_control_s.I2C_WR.READ_NOT_WRITE <= register_write_data_25_v(0 downto 0); -- READ/<o>WRITE</o> - when REG_I2C_RD => register_map_control_s.I2C_RD.I2C_RDEN <= not register_map_monitor_s.register_map_hk_monitor.I2C_RD.I2C_EMPTY; -- Any write to this register pops the last I2C data from the FIFO - when REG_INT_TEST => register_map_control_s.INT_TEST.TRIGGER <= "1"; -- Fire a test MSIx interrupt set in IRQ - register_map_control_s.INT_TEST.IRQ <= register_write_data_25_v(3 downto 0); -- Set this field to a value equal to the MSIX interrupt to be fired. The write triggers the interrupt immediately. - when REG_CONFIG_FLASH_WR => register_map_control_s.CONFIG_FLASH_WR.FAST_WRITE <= register_write_data_25_v(57 downto 57); -- Write command only. Only used for fast programming. - register_map_control_s.CONFIG_FLASH_WR.FAST_READ <= register_write_data_25_v(56 downto 56); -- Status reading without command writing. Only used for fast programming. - register_map_control_s.CONFIG_FLASH_WR.PAR_CTRL <= register_write_data_25_v(55 downto 55); -- Choose use FW or uC to select the Flash partition. 1 FW | 0 uC. - register_map_control_s.CONFIG_FLASH_WR.PAR_WR <= register_write_data_25_v(54 downto 53); -- Choose Flash partition. Valid when PAR_CTRL is 1. - register_map_control_s.CONFIG_FLASH_WR.FLASH_SEL <= register_write_data_25_v(52 downto 52); -- 1 takes control over flash, 0 gives JTAG control over flash - register_map_control_s.CONFIG_FLASH_WR.DO_INIT <= register_write_data_25_v(51 downto 51); -- Untested feature, don't use it yet. - register_map_control_s.CONFIG_FLASH_WR.DO_READSTATUS <= register_write_data_25_v(50 downto 50); -- Reads status from flash - register_map_control_s.CONFIG_FLASH_WR.DO_CLEARSTATUS <= register_write_data_25_v(49 downto 49); -- Clears status reading from flash, back to normal flash operation - register_map_control_s.CONFIG_FLASH_WR.DO_ERASEBLOCK <= register_write_data_25_v(48 downto 48); -- Erased the current block of the flash, this register has to be cleared by software - register_map_control_s.CONFIG_FLASH_WR.DO_UNLOCK_BLOCK <= register_write_data_25_v(47 downto 47); -- Unlock writes to the current block, this register has to be cleared by software - register_map_control_s.CONFIG_FLASH_WR.DO_READ <= register_write_data_25_v(46 downto 46); -- Reads the 16 bits from current address, this register has to be cleared by software - register_map_control_s.CONFIG_FLASH_WR.DO_WRITE <= register_write_data_25_v(45 downto 45); -- Writes the 16 bits to current address, this register has to be cleared by software - register_map_control_s.CONFIG_FLASH_WR.DO_READDEVICEID <= register_write_data_25_v(44 downto 44); -- DIN should return 0x0089, this register has to be cleared by software - register_map_control_s.CONFIG_FLASH_WR.DO_RESET <= register_write_data_25_v(43 downto 43); -- Can be used in the future, currently disconnected in firmware - register_map_control_s.CONFIG_FLASH_WR.ADDRESS <= register_write_data_25_v(42 downto 16); -- Address for read and write operations (25 bits, upper 2 bits are controlled by uC) - register_map_control_s.CONFIG_FLASH_WR.WRITE_DATA <= register_write_data_25_v(15 downto 0); -- Value of data to write towards flash - when REG_RXUSRCLK_FREQ => register_map_control_s.RXUSRCLK_FREQ.CHANNEL <= register_write_data_25_v(37 downto 32); -- Select the Transceiver channel to measure the clock from. + if GBT_GENERATE_ALL_REGS then + register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_ODD_EVEN; -- OddEven [47:0] + end if; + when REG_GBT_TOPBOT => + if GBT_GENERATE_ALL_REGS then + register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_TOPBOT; -- TopBot [47:0] + end if; + when REG_GBT_TX_TC_DLY_VALUE1 => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_TX_TC_DLY_VALUE1; -- TX_TC_DLY_VALUE [47:0] + when REG_GBT_TX_TC_DLY_VALUE2 => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_TX_TC_DLY_VALUE2; -- TX_TC_DLY_VALUE [95:48] + when REG_GBT_TX_TC_DLY_VALUE3 => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_TX_TC_DLY_VALUE3; -- TX_TC_DLY_VALUE [143:96] + when REG_GBT_TX_TC_DLY_VALUE4 => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_TX_TC_DLY_VALUE4; -- TX_TC_DLY_VALUE [191:144] + when REG_GBT_DATA_TXFORMAT1 => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_DATA_TXFORMAT1; -- DATA_TXFORMAT [47:0] + when REG_GBT_DATA_TXFORMAT2 => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_DATA_TXFORMAT2; -- DATA_TXFORMAT [95:48] + when REG_GBT_DATA_RXFORMAT1 => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_DATA_RXFORMAT1; -- DATA_RXFORMAT [47:0] + when REG_GBT_DATA_RXFORMAT2 => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_DATA_RXFORMAT2; -- DATA_RXFORMAT [95:0] + when REG_GBT_TX_RESET => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_TX_RESET; -- TX Logic reset [47:0] + when REG_GBT_RX_RESET => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_RX_RESET; -- RX Logic reset [47:0] + when REG_GBT_TX_TC_METHOD => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_TX_TC_METHOD; -- TX time domain crossing method [47:0] + when REG_GBT_OUTMUX_SEL => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_OUTMUX_SEL; -- Descrambler output MUX selection [47:0] + when REG_GBT_TC_EDGE => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_TC_EDGE; -- Sampling edge selection for TX domain crossing [47:0] + when REG_GBT_TXPOLARITY => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_TXPOLARITY; -- 0: default polarity + -- 1: reversed polarity for transmitter of GTH channels + + when REG_GBT_RXPOLARITY => register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_RXPOLARITY; -- 0: default polarity + -- 1: reversed polarity for the receiver of the GTH channels + + when REG_GTH_LOOPBACK_CONTROL => register_read_data_25_s(2 downto 0) <= register_map_control_s.GTH_LOOPBACK_CONTROL; -- Controls loopback for loopback: read UG476 for the details. NOTE: the TXBUFFER is disabled, near end PCS loopback is not supported. + -- 000: Normal operation + -- 001: Near-End PCS Loopback + -- 010: Near-End PMA Loopback + -- 011: Reserved + -- 100: Far-End PMA Loopback + -- 101: Reserved + -- 110: Far-End PCS Loopback + + when REG_GBT_TOHOST_FANOUT => register_read_data_25_s(48 downto 48) <= register_map_control_s.GBT_TOHOST_FANOUT.LOCK; -- Locks this particular register. If set prevents software from touching it. + register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_TOHOST_FANOUT.SEL; -- ToHost FanOut/Selector. Every bitfield is a channel: + -- 1 : GBT_EMU, select GBT Emulator for a specific CentralRouter channel + -- 0 : GBT_WRAP, select real GBT link for a specific CentralRouter channel + + when REG_GBT_TOFRONTEND_FANOUT => register_read_data_25_s(48 downto 48) <= register_map_control_s.GBT_TOFRONTEND_FANOUT.LOCK; -- Locks this particular register. If set prevents software from touching it. + register_read_data_25_s(47 downto 0) <= register_map_control_s.GBT_TOFRONTEND_FANOUT.SEL; -- ToFrontEnd FanOut/Selector. Every bitfield is a channel: + -- 1 : GBT_EMU, select GBT Emulator for a specific GBT link + -- 0 : TTC_DEC, select CentralRouter data (including TTC) for a specific GBT link + -- + + when REG_TTC_DEC_CTRL => register_read_data_25_s(30 downto 27) <= register_map_control_s.TTC_DEC_CTRL.L1A_DELAY; -- Number of BC to delay the L1A distribution to the frontends + register_read_data_25_s(26 downto 15) <= register_map_control_s.TTC_DEC_CTRL.BCID_ONBCR; -- BCID is set to this value when BCR arrives + register_read_data_25_s(14 downto 14) <= register_map_monitor_s.register_map_ttc_monitor.TTC_DEC_CTRL.BUSY_OUTPUT_STATUS; -- Actual status of the BUSY LEMO output signal + register_read_data_25_s(13 downto 13) <= register_map_control_s.TTC_DEC_CTRL.ECR_BCR_SWAP; -- ECR and BCR signals are swapped at the output of the TTC decoder (needed only for LAr TTC) + register_read_data_25_s(12 downto 12) <= register_map_control_s.TTC_DEC_CTRL.BUSY_OUTPUT_INHIBIT; -- forces the Busy LEMO output to BUSY-OFF + register_read_data_25_s(11 downto 11) <= register_map_control_s.TTC_DEC_CTRL.TOHOST_RST; -- reset toHost in ttc decoder + register_read_data_25_s(10 downto 10) <= register_map_control_s.TTC_DEC_CTRL.TT_BCH_EN; -- trigger type enable / disable for TTC-ToHost + register_read_data_25_s(9 downto 2) <= register_map_control_s.TTC_DEC_CTRL.XL1ID_SW; -- set XL1ID value, the value to be set by XL1ID_RST signal + register_read_data_25_s(1 downto 1) <= register_map_control_s.TTC_DEC_CTRL.XL1ID_RST; -- giving a trigger signal to reset XL1ID value + register_read_data_25_s(0 downto 0) <= register_map_control_s.TTC_DEC_CTRL.MASTER_BUSY; -- L1A trigger throttling + when REG_TTC_EMU => register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_ttc_monitor.TTC_EMU.FULL; -- TTC Emulator memory full indication + register_read_data_25_s(1 downto 1) <= register_map_control_s.TTC_EMU.SEL; -- Select TTC data source 1 TTC Emu | 0 TTC Decoder + register_read_data_25_s(0 downto 0) <= register_map_control_s.TTC_EMU.ENA; -- Clear to load into the TTC emulator’s memory the required sequence, Set to run the TTC emulator sequence + when REG_TTC_DELAY_00 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_01 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (1); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_02 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (2); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_03 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (3); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_04 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (4); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_05 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (5); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_06 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (6); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_07 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (7); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_08 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (8); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_09 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (9); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_10 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (10); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_11 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (11); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_12 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (12); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_13 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (13); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_14 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (14); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_15 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (15); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_16 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (16); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_17 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (17); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_18 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (18); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_19 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (19); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_20 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (20); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_21 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (21); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_22 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (22); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_23 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (23); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_24 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (24); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_25 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (25); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_26 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (26); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_27 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (27); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_28 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (28); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_29 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (29); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_30 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (30); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_31 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (31); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_32 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (32); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_33 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (33); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_34 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (34); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_35 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (35); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_36 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (36); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_37 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (37); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_38 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (38); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_39 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (39); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_40 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (40); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_41 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (41); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_42 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (42); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_43 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (43); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_44 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (44); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_45 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (45); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_46 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (46); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_47 => register_read_data_25_s(3 downto 0) <= register_map_control_s.TTC_DELAY (47); -- Controls the TTC Fanout delay values + when REG_TTC_BUSY_TIMING_CTRL => register_read_data_25_s(51 downto 32) <= register_map_control_s.TTC_BUSY_TIMING_CTRL.PRESCALE; -- Prescales the 40MHz clock to create an internal slow clock + register_read_data_25_s(31 downto 16) <= register_map_control_s.TTC_BUSY_TIMING_CTRL.BUSY_WIDTH; -- Minimum number of 40MHz clocks that the busy is asserted + register_read_data_25_s(15 downto 0) <= register_map_control_s.TTC_BUSY_TIMING_CTRL.LIMIT_TIME; -- Number of prescaled clocks a given busy must be asserted before it is recognized + when REG_TTC_BUSY_CLEAR => register_read_data_25_s(64 downto 64) <= register_map_control_s.TTC_BUSY_CLEAR; -- clears the latching busy bits in TTC_BUSY_ACCEPTED + when REG_TTC_EMU_CONTROL => register_read_data_25_s(32 downto 27) <= register_map_control_s.TTC_EMU_CONTROL.BROADCAST; -- Broadcast data + register_read_data_25_s(26 downto 26) <= register_map_control_s.TTC_EMU_CONTROL.ECR; -- Event counter reset + register_read_data_25_s(25 downto 25) <= register_map_control_s.TTC_EMU_CONTROL.BCR; -- Bunch counter reset + register_read_data_25_s(24 downto 24) <= register_map_control_s.TTC_EMU_CONTROL.L1A; -- Level 1 Accept + when REG_TTC_EMU_L1A_PERIOD => register_read_data_25_s(31 downto 0) <= register_map_control_s.TTC_EMU_L1A_PERIOD; -- L1A period in BC. 0 means manual L1A with TTC_EMU_CONTROL.L1A + when REG_TTC_EMU_ECR_PERIOD => register_read_data_25_s(31 downto 0) <= register_map_control_s.TTC_EMU_ECR_PERIOD; -- ECR period in BC. 0 means manual ECR with TTC_EMU_CONTROL.ECR + when REG_TTC_EMU_BCR_PERIOD => register_read_data_25_s(31 downto 0) <= register_map_control_s.TTC_EMU_BCR_PERIOD; -- BCR period in BC. 0 means manual BCR with TTC_EMU_CONTROL.BCR + when REG_TTC_EMU_LONG_CHANNEL_DATA => register_read_data_25_s(31 downto 0) <= register_map_control_s.TTC_EMU_LONG_CHANNEL_DATA; -- Long channel data for the TTC emulator + when REG_TTC_EMU_RESET => register_read_data_25_s(64 downto 64) <= register_map_control_s.TTC_EMU_RESET; -- Any write to this register resets the TTC Emulator to the default state. + when REG_TTC_ECR_MONITOR => register_read_data_25_s(64 downto 64) <= register_map_control_s.TTC_ECR_MONITOR.CLEAR; -- Counts the number of ECRs received from the TTC system, any write to this register clears the counter + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_ECR_MONITOR.VALUE; -- Counts the number of ECRs received from the TTC system, any write to this register clears the counter + when REG_TTC_TTYPE_MONITOR => register_read_data_25_s(64 downto 64) <= register_map_control_s.TTC_TTYPE_MONITOR.CLEAR; -- Counts the number of TType received from the TTC system, any write to this register clears the counter + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_TTYPE_MONITOR.VALUE; -- Counts the number of TType received from the TTC system, any write to this register clears the counter + when REG_TTC_BCR_PERIODICITY_MONITOR => register_read_data_25_s(64 downto 64) <= register_map_control_s.TTC_BCR_PERIODICITY_MONITOR.CLEAR; -- Counts the number of times the BCR period does not match 3564, any write to this register clears the counter + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BCR_PERIODICITY_MONITOR.VALUE; -- Counts the number of times the BCR period does not match 3564, any write to this register clears the counter + when REG_XOFF_FM_CH_FIFO_THRESH_LOW => register_read_data_25_s(3 downto 0) <= register_map_control_s.XOFF_FM_CH_FIFO_THRESH_LOW; -- Controls the low threshold of the channel fifo in FULL mode on which + -- an Xon will be asserted, bitfields control 4 MSB + + when REG_XOFF_FM_CH_FIFO_THRESH_HIGH => register_read_data_25_s(3 downto 0) <= register_map_control_s.XOFF_FM_CH_FIFO_THRESH_HIGH; -- Controls the high threshold of the channel fifo in FULL mode on which + -- an Xoff will be asserted, bitfields control 4 MSB - name: XOFF_FM_LOW_THRESH_CROSSED + + when REG_XOFF_FM_HIGH_THRESH => register_read_data_25_s(64 downto 64) <= register_map_control_s.XOFF_FM_HIGH_THRESH.CLEAR_LATCH; -- Writing this register will clear all CROSS_LATCHED bits + register_read_data_25_s(47 downto 24) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_FM_HIGH_THRESH.CROSS_LATCHED; -- FIFO filled beyond the high threshold, 1 latch bit per channel + register_read_data_25_s(23 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_FM_HIGH_THRESH.CROSSED; -- FIFO filled beyond the high threshold, 1 bit per channel + when REG_XOFF_FM_SOFT_XOFF => register_read_data_25_s(23 downto 0) <= register_map_control_s.XOFF_FM_SOFT_XOFF; -- Set any bit in this register to assert XOFF for the given channel, clearing bits will assert XON + when REG_XOFF_ENABLE => register_read_data_25_s(23 downto 0) <= register_map_control_s.XOFF_ENABLE; -- Enable XOFF assertion (To Frontend) in case the FULL mode CH FIFO gets beyond thresholds. One bit per channel + when REG_DMA_BUSY_STATUS => register_read_data_25_s(64 downto 64) <= register_map_control_s.DMA_BUSY_STATUS.CLEAR_LATCH; -- Any write to this register clears TOHOST_BUSY_LATCHED + register_read_data_25_s(4 downto 4) <= register_map_control_s.DMA_BUSY_STATUS.ENABLE; -- Enable the DMA buffer on the server as a source of busy + register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_xoff_monitor.DMA_BUSY_STATUS.TOHOST_BUSY_LATCHED; -- A tohost descriptor has passed BUSY_THRESHOLD_ASSERT in the past, busy flag was set + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_xoff_monitor.DMA_BUSY_STATUS.FROMHOST_BUSY_LATCHED; -- A fromhost descriptor has passed BUSY_THRESHOLD_ASSERT in the past, busy flag was set + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_xoff_monitor.DMA_BUSY_STATUS.FROMHOST_BUSY; -- A fromhost descriptor passed BUSY_THRESHOLD_ASSERT, busy flag set + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.DMA_BUSY_STATUS.TOHOST_BUSY; -- A tohost descriptor passed BUSY_THRESHOLD_ASSERT, busy flag set + when REG_FM_BUSY_CHANNEL_STATUS => register_read_data_25_s(64 downto 64) <= register_map_control_s.FM_BUSY_CHANNEL_STATUS.CLEAR_LATCH; -- Any write to this register will clear the BUSY_LATCHED bits + register_read_data_25_s(47 downto 24) <= register_map_monitor_s.register_map_xoff_monitor.FM_BUSY_CHANNEL_STATUS.BUSY_LATCHED; -- one Indicates that the given FULL mode channel has received BUSY-ON + register_read_data_25_s(23 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.FM_BUSY_CHANNEL_STATUS.BUSY; -- one Indicates that the given FULL mode channel is currently in BUSY state + when REG_BUSY_MAIN_OUTPUT_FIFO_THRESH => register_read_data_25_s(24 downto 24) <= register_map_control_s.BUSY_MAIN_OUTPUT_FIFO_THRESH.BUSY_ENABLE; -- Enable busy generation if thresholds are crossed + register_read_data_25_s(23 downto 12) <= register_map_control_s.BUSY_MAIN_OUTPUT_FIFO_THRESH.LOW; -- Low, Negate threshold of busy generation from main output fifo + register_read_data_25_s(11 downto 0) <= register_map_control_s.BUSY_MAIN_OUTPUT_FIFO_THRESH.HIGH; -- High, Assert threshold of busy generation from main output fifo + when REG_BUSY_MAIN_OUTPUT_FIFO_STATUS => register_read_data_25_s(64 downto 64) <= register_map_control_s.BUSY_MAIN_OUTPUT_FIFO_STATUS.CLEAR_LATCHED; -- Any write to this register will clear the + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_xoff_monitor.BUSY_MAIN_OUTPUT_FIFO_STATUS.HIGH_THRESH_CROSSED_LATCHED; -- Main output fifo has been full beyond HIGH THRESHOLD, write to clear + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_xoff_monitor.BUSY_MAIN_OUTPUT_FIFO_STATUS.HIGH_THRESH_CROSSED; -- Main output fifo is full beyond HIGH THRESHOLD + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.BUSY_MAIN_OUTPUT_FIFO_STATUS.LOW_THRESH_CROSSED; -- Main output fifo is full beyond LOW THRESHOLD + when REG_ELINK_BUSY_ENABLE00 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE01 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (1); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE02 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (2); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE03 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (3); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE04 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (4); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE05 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (5); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE06 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (6); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE07 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (7); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE08 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (8); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE09 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (9); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE10 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (10); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE11 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (11); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE12 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (12); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE13 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (13); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE14 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (14); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE15 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (15); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE16 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (16); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE17 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (17); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE18 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (18); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE19 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (19); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE20 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (20); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE21 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (21); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE22 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (22); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE23 => register_read_data_25_s(56 downto 0) <= register_map_control_s.ELINK_BUSY_ENABLE (23); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_HK_CTRL_I2C => register_read_data_25_s(1 downto 1) <= register_map_control_s.HK_CTRL_I2C.CONFIG_TRIG; -- i2c_config_trig + register_read_data_25_s(0 downto 0) <= register_map_control_s.HK_CTRL_I2C.CLKFREQ_SEL; -- i2c_clkfreq_sel + when REG_HK_CTRL_FMC => register_read_data_25_s(7 downto 7) <= register_map_monitor_s.register_map_hk_monitor.HK_CTRL_FMC.SI5345_LOL; -- Loss of lock pin, only connected on FLX711 + register_read_data_25_s(6 downto 5) <= register_map_control_s.HK_CTRL_FMC.SI5345_INSEL; -- Selects the input clock source + -- 0 : FPGA (FMC LA01) + -- 1 : FMC OSC (40.079 MHz) + -- 2 : FPGA (FMC LA18) + + register_read_data_25_s(4 downto 3) <= register_map_control_s.HK_CTRL_FMC.SI5345_A; -- Si5345 I2C address select 2 LSB (0x0:default, dev id 0x68) + register_read_data_25_s(2 downto 2) <= register_map_control_s.HK_CTRL_FMC.SI5345_OE; -- Si5345 active low output enable (0:enable) + register_read_data_25_s(1 downto 1) <= register_map_control_s.HK_CTRL_FMC.SI5345_RSTN; -- Si5345 active low output enable (0:reset) + register_read_data_25_s(0 downto 0) <= register_map_control_s.HK_CTRL_FMC.SI5345_SEL; -- Si5345 programming mode + -- 1 : I2C mode (default) + -- 0 : SPI mode + + when REG_HK_MON_FMC => register_read_data_25_s(1 downto 1) <= register_map_control_s.HK_MON_FMC.SI5345_LOL; -- Si5345 Loss Of Lock pin + register_read_data_25_s(0 downto 0) <= register_map_control_s.HK_MON_FMC.SI5345_INTR; -- Si5345 Interrupt flagging chip change of status + when REG_MMCM_MAIN => register_read_data_25_s(3 downto 3) <= register_map_control_s.MMCM_MAIN.LCLK_SEL; -- 1: LCLK + -- 0: TTC + + register_read_data_25_s(2 downto 1) <= register_map_monitor_s.register_map_hk_monitor.MMCM_MAIN.MAIN_INPUT; -- Main MMCM Oscillator Input + -- 2: LCLK fixed + -- 1: TTC fixed + -- 0: selectable + + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_hk_monitor.MMCM_MAIN.PLL_LOCK; -- Main MMCM PLL Lock Status + when REG_I2C_WR => register_read_data_25_s(64 downto 64) <= register_map_control_s.I2C_WR.I2C_WREN; -- Any write to this register triggers an I2C read or write sequence + register_read_data_25_s(25 downto 25) <= register_map_monitor_s.register_map_hk_monitor.I2C_WR.I2C_FULL; -- I2C FIFO full + register_read_data_25_s(24 downto 24) <= register_map_control_s.I2C_WR.WRITE_2BYTES; -- Write two bytes + register_read_data_25_s(23 downto 16) <= register_map_control_s.I2C_WR.DATA_BYTE2; -- Data byte 2 + register_read_data_25_s(15 downto 8) <= register_map_control_s.I2C_WR.DATA_BYTE1; -- Data byte 1 + register_read_data_25_s(7 downto 1) <= register_map_control_s.I2C_WR.SLAVE_ADDRESS; -- Slave address + register_read_data_25_s(0 downto 0) <= register_map_control_s.I2C_WR.READ_NOT_WRITE; -- READ/<o>WRITE</o> + when REG_I2C_RD => register_read_data_25_s(64 downto 64) <= register_map_control_s.I2C_RD.I2C_RDEN; -- Any write to this register pops the last I2C data from the FIFO + register_read_data_25_s(8 downto 8) <= register_map_monitor_s.register_map_hk_monitor.I2C_RD.I2C_EMPTY; -- I2C FIFO Empty + register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_hk_monitor.I2C_RD.I2C_DOUT; -- I2C READ Data + when REG_INT_TEST => register_read_data_25_s(64 downto 64) <= register_map_control_s.INT_TEST.TRIGGER; -- Fire a test MSIx interrupt set in IRQ + register_read_data_25_s(3 downto 0) <= register_map_control_s.INT_TEST.IRQ; -- Set this field to a value equal to the MSIX interrupt to be fired. The write triggers the interrupt immediately. + when REG_CONFIG_FLASH_WR => register_read_data_25_s(57 downto 57) <= register_map_control_s.CONFIG_FLASH_WR.FAST_WRITE; -- Write command only. Only used for fast programming. + register_read_data_25_s(56 downto 56) <= register_map_control_s.CONFIG_FLASH_WR.FAST_READ; -- Status reading without command writing. Only used for fast programming. + register_read_data_25_s(55 downto 55) <= register_map_control_s.CONFIG_FLASH_WR.PAR_CTRL; -- Choose use FW or uC to select the Flash partition. 1 FW | 0 uC. + register_read_data_25_s(54 downto 53) <= register_map_control_s.CONFIG_FLASH_WR.PAR_WR; -- Choose Flash partition. Valid when PAR_CTRL is 1. + register_read_data_25_s(52 downto 52) <= register_map_control_s.CONFIG_FLASH_WR.FLASH_SEL; -- 1 takes control over flash, 0 gives JTAG control over flash + register_read_data_25_s(51 downto 51) <= register_map_control_s.CONFIG_FLASH_WR.DO_INIT; -- Untested feature, don't use it yet. + register_read_data_25_s(50 downto 50) <= register_map_control_s.CONFIG_FLASH_WR.DO_READSTATUS; -- Reads status from flash + register_read_data_25_s(49 downto 49) <= register_map_control_s.CONFIG_FLASH_WR.DO_CLEARSTATUS; -- Clears status reading from flash, back to normal flash operation + register_read_data_25_s(48 downto 48) <= register_map_control_s.CONFIG_FLASH_WR.DO_ERASEBLOCK; -- Erased the current block of the flash, this register has to be cleared by software + register_read_data_25_s(47 downto 47) <= register_map_control_s.CONFIG_FLASH_WR.DO_UNLOCK_BLOCK; -- Unlock writes to the current block, this register has to be cleared by software + register_read_data_25_s(46 downto 46) <= register_map_control_s.CONFIG_FLASH_WR.DO_READ; -- Reads the 16 bits from current address, this register has to be cleared by software + register_read_data_25_s(45 downto 45) <= register_map_control_s.CONFIG_FLASH_WR.DO_WRITE; -- Writes the 16 bits to current address, this register has to be cleared by software + register_read_data_25_s(44 downto 44) <= register_map_control_s.CONFIG_FLASH_WR.DO_READDEVICEID; -- DIN should return 0x0089, this register has to be cleared by software + register_read_data_25_s(43 downto 43) <= register_map_control_s.CONFIG_FLASH_WR.DO_RESET; -- Can be used in the future, currently disconnected in firmware + register_read_data_25_s(42 downto 16) <= register_map_control_s.CONFIG_FLASH_WR.ADDRESS; -- Address for read and write operations (25 bits, upper 2 bits are controlled by uC) + register_read_data_25_s(15 downto 0) <= register_map_control_s.CONFIG_FLASH_WR.WRITE_DATA; -- Value of data to write towards flash + when REG_RXUSRCLK_FREQ => register_read_data_25_s(38 downto 38) <= register_map_monitor_s.register_map_hk_monitor.RXUSRCLK_FREQ.VALID; -- Indicates that the frequency measurement is valid + register_read_data_25_s(37 downto 32) <= register_map_control_s.RXUSRCLK_FREQ.CHANNEL; -- Select the Transceiver channel to measure the clock from. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_hk_monitor.RXUSRCLK_FREQ.VAL; -- Frequency in Hz of the selected channel when REG_FELIG_DATA_GEN_CONFIG_00 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_DATA_GEN_CONFIG (0).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. - register_map_control_s.FELIG_DATA_GEN_CONFIG (0).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. - register_map_control_s.FELIG_DATA_GEN_CONFIG (0).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_map_control_s.FELIG_DATA_GEN_CONFIG (0).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_map_control_s.FELIG_DATA_GEN_CONFIG (0).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. - register_map_control_s.FELIG_DATA_GEN_CONFIG (0).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA - end if; + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(0).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. + register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(0).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. + register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(0).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(0).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(0).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. + register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(0).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + end if; when REG_FELIG_DATA_GEN_CONFIG_01 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_DATA_GEN_CONFIG (1).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. - register_map_control_s.FELIG_DATA_GEN_CONFIG (1).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. - register_map_control_s.FELIG_DATA_GEN_CONFIG (1).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_map_control_s.FELIG_DATA_GEN_CONFIG (1).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_map_control_s.FELIG_DATA_GEN_CONFIG (1).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. - register_map_control_s.FELIG_DATA_GEN_CONFIG (1).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA - end if; + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(1).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. + register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(1).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. + register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(1).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(1).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(1).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. + register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(1).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + end if; when REG_FELIG_DATA_GEN_CONFIG_02 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_DATA_GEN_CONFIG (2).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. - register_map_control_s.FELIG_DATA_GEN_CONFIG (2).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. - register_map_control_s.FELIG_DATA_GEN_CONFIG (2).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_map_control_s.FELIG_DATA_GEN_CONFIG (2).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_map_control_s.FELIG_DATA_GEN_CONFIG (2).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. - register_map_control_s.FELIG_DATA_GEN_CONFIG (2).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA - end if; + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(2).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. + register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(2).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. + register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(2).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(2).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(2).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. + register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(2).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + end if; when REG_FELIG_DATA_GEN_CONFIG_03 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_DATA_GEN_CONFIG (3).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. - register_map_control_s.FELIG_DATA_GEN_CONFIG (3).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. - register_map_control_s.FELIG_DATA_GEN_CONFIG (3).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_map_control_s.FELIG_DATA_GEN_CONFIG (3).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_map_control_s.FELIG_DATA_GEN_CONFIG (3).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. - register_map_control_s.FELIG_DATA_GEN_CONFIG (3).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA - end if; + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(3).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. + register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(3).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. + register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(3).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(3).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(3).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. + register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(3).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + end if; when REG_FELIG_DATA_GEN_CONFIG_04 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_DATA_GEN_CONFIG (4).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. - register_map_control_s.FELIG_DATA_GEN_CONFIG (4).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. - register_map_control_s.FELIG_DATA_GEN_CONFIG (4).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_map_control_s.FELIG_DATA_GEN_CONFIG (4).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_map_control_s.FELIG_DATA_GEN_CONFIG (4).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. - register_map_control_s.FELIG_DATA_GEN_CONFIG (4).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA - end if; + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(4).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. + register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(4).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. + register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(4).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(4).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(4).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. + register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(4).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + end if; when REG_FELIG_DATA_GEN_CONFIG_05 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_DATA_GEN_CONFIG (5).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. - register_map_control_s.FELIG_DATA_GEN_CONFIG (5).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. - register_map_control_s.FELIG_DATA_GEN_CONFIG (5).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_map_control_s.FELIG_DATA_GEN_CONFIG (5).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_map_control_s.FELIG_DATA_GEN_CONFIG (5).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. - register_map_control_s.FELIG_DATA_GEN_CONFIG (5).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA - end if; + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(5).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. + register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(5).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. + register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(5).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(5).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(5).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. + register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(5).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + end if; when REG_FELIG_DATA_GEN_CONFIG_06 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_DATA_GEN_CONFIG (6).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. - register_map_control_s.FELIG_DATA_GEN_CONFIG (6).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. - register_map_control_s.FELIG_DATA_GEN_CONFIG (6).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_map_control_s.FELIG_DATA_GEN_CONFIG (6).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_map_control_s.FELIG_DATA_GEN_CONFIG (6).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. - register_map_control_s.FELIG_DATA_GEN_CONFIG (6).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA - end if; + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(6).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. + register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(6).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. + register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(6).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(6).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(6).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. + register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(6).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + end if; when REG_FELIG_DATA_GEN_CONFIG_07 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_DATA_GEN_CONFIG (7).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. - register_map_control_s.FELIG_DATA_GEN_CONFIG (7).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. - register_map_control_s.FELIG_DATA_GEN_CONFIG (7).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_map_control_s.FELIG_DATA_GEN_CONFIG (7).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_map_control_s.FELIG_DATA_GEN_CONFIG (7).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. - register_map_control_s.FELIG_DATA_GEN_CONFIG (7).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA - end if; + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(7).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. + register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(7).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. + register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(7).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(7).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(7).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. + register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(7).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + end if; when REG_FELIG_DATA_GEN_CONFIG_08 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_DATA_GEN_CONFIG (8).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. - register_map_control_s.FELIG_DATA_GEN_CONFIG (8).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. - register_map_control_s.FELIG_DATA_GEN_CONFIG (8).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_map_control_s.FELIG_DATA_GEN_CONFIG (8).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_map_control_s.FELIG_DATA_GEN_CONFIG (8).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. - register_map_control_s.FELIG_DATA_GEN_CONFIG (8).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA - end if; + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(8).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. + register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(8).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. + register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(8).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(8).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(8).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. + register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(8).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + end if; when REG_FELIG_DATA_GEN_CONFIG_09 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_DATA_GEN_CONFIG (9).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. - register_map_control_s.FELIG_DATA_GEN_CONFIG (9).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. - register_map_control_s.FELIG_DATA_GEN_CONFIG (9).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_map_control_s.FELIG_DATA_GEN_CONFIG (9).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_map_control_s.FELIG_DATA_GEN_CONFIG (9).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. - register_map_control_s.FELIG_DATA_GEN_CONFIG (9).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA - end if; + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(9).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. + register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(9).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. + register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(9).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(9).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(9).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. + register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(9).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + end if; when REG_FELIG_DATA_GEN_CONFIG_10 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_DATA_GEN_CONFIG (10).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. - register_map_control_s.FELIG_DATA_GEN_CONFIG (10).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. - register_map_control_s.FELIG_DATA_GEN_CONFIG (10).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_map_control_s.FELIG_DATA_GEN_CONFIG (10).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_map_control_s.FELIG_DATA_GEN_CONFIG (10).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. - register_map_control_s.FELIG_DATA_GEN_CONFIG (10).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA - end if; + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(10).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. + register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(10).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. + register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(10).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(10).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(10).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. + register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(10).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + end if; when REG_FELIG_DATA_GEN_CONFIG_11 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_DATA_GEN_CONFIG (11).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. - register_map_control_s.FELIG_DATA_GEN_CONFIG (11).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. - register_map_control_s.FELIG_DATA_GEN_CONFIG (11).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_map_control_s.FELIG_DATA_GEN_CONFIG (11).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_map_control_s.FELIG_DATA_GEN_CONFIG (11).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. - register_map_control_s.FELIG_DATA_GEN_CONFIG (11).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA - end if; + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(11).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. + register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(11).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. + register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(11).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(11).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(11).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. + register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(11).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + end if; when REG_FELIG_DATA_GEN_CONFIG_12 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_DATA_GEN_CONFIG (12).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. - register_map_control_s.FELIG_DATA_GEN_CONFIG (12).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. - register_map_control_s.FELIG_DATA_GEN_CONFIG (12).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_map_control_s.FELIG_DATA_GEN_CONFIG (12).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_map_control_s.FELIG_DATA_GEN_CONFIG (12).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. - register_map_control_s.FELIG_DATA_GEN_CONFIG (12).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(12).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. + register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(12).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. + register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(12).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(12).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(12).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. + register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(12).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + end if; + when REG_FELIG_DATA_GEN_CONFIG_13 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(13).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. + register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(13).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. + register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(13).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(13).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(13).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. + register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(13).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + end if; + when REG_FELIG_DATA_GEN_CONFIG_14 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(14).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. + register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(14).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. + register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(14).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(14).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(14).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. + register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(14).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + end if; + when REG_FELIG_DATA_GEN_CONFIG_15 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(15).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. + register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(15).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. + register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(15).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(15).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(15).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. + register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(15).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + end if; + when REG_FELIG_DATA_GEN_CONFIG_16 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(16).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. + register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(16).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. + register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(16).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(16).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(16).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. + register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(16).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + end if; + when REG_FELIG_DATA_GEN_CONFIG_17 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(17).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. + register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(17).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. + register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(17).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(17).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(17).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. + register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(17).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + end if; + when REG_FELIG_DATA_GEN_CONFIG_18 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(18).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. + register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(18).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. + register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(18).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(18).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(18).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. + register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(18).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + end if; + when REG_FELIG_DATA_GEN_CONFIG_19 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(19).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. + register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(19).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. + register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(19).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(19).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(19).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. + register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(19).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + end if; + when REG_FELIG_DATA_GEN_CONFIG_20 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(20).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. + register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(20).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. + register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(20).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(20).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(20).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. + register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(20).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + end if; + when REG_FELIG_DATA_GEN_CONFIG_21 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(21).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. + register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(21).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. + register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(21).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(21).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(21).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. + register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(21).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + end if; + when REG_FELIG_DATA_GEN_CONFIG_22 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(22).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. + register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(22).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. + register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(22).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(22).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(22).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. + register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(22).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + end if; + when REG_FELIG_DATA_GEN_CONFIG_23 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(23).USERDATA; -- Sets static payload word. When PATTERN_SEL=1. + register_read_data_25_s(47 downto 32) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(23).CHUNK_LENGTH; -- FELIG data generator chunk-length in bytes. + register_read_data_25_s(19 downto 15) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(23).RESET; -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_read_data_25_s(14 downto 10) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(23).SW_BUSY; -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_read_data_25_s(9 downto 5) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(23).DATA_FORMAT; -- FELIG data generator format. 0:8b10b, 1:direct. + register_read_data_25_s(4 downto 0) <= register_map_control_s.FELIG_DATA_GEN_CONFIG(23).PATTERN_SEL; -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + end if; + when REG_FELIG_ELINK_CONFIG_00 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(0).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(0).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(0).OUTPUT_WIDTH; -- FELIG elink data output width. + end if; + when REG_FELIG_ELINK_CONFIG_01 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(1).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(1).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(1).OUTPUT_WIDTH; -- FELIG elink data output width. + end if; + when REG_FELIG_ELINK_CONFIG_02 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(2).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(2).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(2).OUTPUT_WIDTH; -- FELIG elink data output width. + end if; + when REG_FELIG_ELINK_CONFIG_03 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(3).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(3).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(3).OUTPUT_WIDTH; -- FELIG elink data output width. + end if; + when REG_FELIG_ELINK_CONFIG_04 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(4).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(4).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(4).OUTPUT_WIDTH; -- FELIG elink data output width. + end if; + when REG_FELIG_ELINK_CONFIG_05 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(5).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(5).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(5).OUTPUT_WIDTH; -- FELIG elink data output width. + end if; + when REG_FELIG_ELINK_CONFIG_06 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(6).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(6).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(6).OUTPUT_WIDTH; -- FELIG elink data output width. + end if; + when REG_FELIG_ELINK_CONFIG_07 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(7).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(7).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(7).OUTPUT_WIDTH; -- FELIG elink data output width. + end if; + when REG_FELIG_ELINK_CONFIG_08 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(8).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(8).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(8).OUTPUT_WIDTH; -- FELIG elink data output width. + end if; + when REG_FELIG_ELINK_CONFIG_09 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(9).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(9).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(9).OUTPUT_WIDTH; -- FELIG elink data output width. + end if; + when REG_FELIG_ELINK_CONFIG_10 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(10).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(10).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(10).OUTPUT_WIDTH; -- FELIG elink data output width. + end if; + when REG_FELIG_ELINK_CONFIG_11 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(11).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(11).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(11).OUTPUT_WIDTH; -- FELIG elink data output width. + end if; + when REG_FELIG_ELINK_CONFIG_12 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(12).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(12).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(12).OUTPUT_WIDTH; -- FELIG elink data output width. + end if; + when REG_FELIG_ELINK_CONFIG_13 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(13).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(13).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(13).OUTPUT_WIDTH; -- FELIG elink data output width. + end if; + when REG_FELIG_ELINK_CONFIG_14 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(14).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(14).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(14).OUTPUT_WIDTH; -- FELIG elink data output width. + end if; + when REG_FELIG_ELINK_CONFIG_15 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(15).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(15).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(15).OUTPUT_WIDTH; -- FELIG elink data output width. + end if; + when REG_FELIG_ELINK_CONFIG_16 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(16).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(16).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(16).OUTPUT_WIDTH; -- FELIG elink data output width. + end if; + when REG_FELIG_ELINK_CONFIG_17 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(17).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(17).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(17).OUTPUT_WIDTH; -- FELIG elink data output width. + end if; + when REG_FELIG_ELINK_CONFIG_18 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(18).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(18).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(18).OUTPUT_WIDTH; -- FELIG elink data output width. + end if; + when REG_FELIG_ELINK_CONFIG_19 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(19).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(19).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(19).OUTPUT_WIDTH; -- FELIG elink data output width. + end if; + when REG_FELIG_ELINK_CONFIG_20 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(20).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(20).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(20).OUTPUT_WIDTH; -- FELIG elink data output width. + end if; + when REG_FELIG_ELINK_CONFIG_21 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(21).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(21).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(21).OUTPUT_WIDTH; -- FELIG elink data output width. + end if; + when REG_FELIG_ELINK_CONFIG_22 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(22).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(22).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(22).OUTPUT_WIDTH; -- FELIG elink data output width. + end if; + when REG_FELIG_ELINK_CONFIG_23 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 35) <= register_map_control_s.FELIG_ELINK_CONFIG(23).ENDIAN_MOD; -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_ELINK_CONFIG(23).INPUT_WIDTH; -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_read_data_25_s(9 downto 0) <= register_map_control_s.FELIG_ELINK_CONFIG(23).OUTPUT_WIDTH; -- FELIG elink data output width. + end if; + when REG_FELIG_ELINK_ENABLE_00 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + end if; + when REG_FELIG_ELINK_ENABLE_01 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(1); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + end if; + when REG_FELIG_ELINK_ENABLE_02 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(2); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + end if; + when REG_FELIG_ELINK_ENABLE_03 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(3); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + end if; + when REG_FELIG_ELINK_ENABLE_04 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(4); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + end if; + when REG_FELIG_ELINK_ENABLE_05 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(5); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + end if; + when REG_FELIG_ELINK_ENABLE_06 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(6); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + end if; + when REG_FELIG_ELINK_ENABLE_07 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(7); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + end if; + when REG_FELIG_ELINK_ENABLE_08 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(8); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + end if; + when REG_FELIG_ELINK_ENABLE_09 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(9); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + end if; + when REG_FELIG_ELINK_ENABLE_10 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(10); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + end if; + when REG_FELIG_ELINK_ENABLE_11 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(11); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + end if; + when REG_FELIG_ELINK_ENABLE_12 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(12); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + end if; + when REG_FELIG_ELINK_ENABLE_13 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(13); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + end if; + when REG_FELIG_ELINK_ENABLE_14 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(14); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + end if; + when REG_FELIG_ELINK_ENABLE_15 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(15); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + end if; + when REG_FELIG_ELINK_ENABLE_16 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(16); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + end if; + when REG_FELIG_ELINK_ENABLE_17 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(17); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + end if; + when REG_FELIG_ELINK_ENABLE_18 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(18); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + end if; + when REG_FELIG_ELINK_ENABLE_19 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(19); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + end if; + when REG_FELIG_ELINK_ENABLE_20 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(20); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + end if; + when REG_FELIG_ELINK_ENABLE_21 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(21); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + end if; + when REG_FELIG_ELINK_ENABLE_22 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(22); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + end if; + when REG_FELIG_ELINK_ENABLE_23 => + if EMU_GENERATE_REGS then + register_read_data_25_s(39 downto 0) <= register_map_control_s.FELIG_ELINK_ENABLE(23); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + end if; + when REG_FELIG_GLOBAL_CONTROL => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 36) <= register_map_control_s.FELIG_GLOBAL_CONTROL.FAKE_L1A_RATE; -- Sets the internal fake L1 trigger rate. [25ns/LSB] + register_read_data_25_s(35 downto 14) <= register_map_control_s.FELIG_GLOBAL_CONTROL.PICXO_OFFSET_PPM; -- When OFFSET_EN is 1, this directly sets the output frequency, within the given adjustment range. + register_read_data_25_s(12 downto 12) <= register_map_control_s.FELIG_GLOBAL_CONTROL.TRACK_DATA; -- FELIG GT core control. Must be set to enable normal operation. + register_read_data_25_s(11 downto 11) <= register_map_control_s.FELIG_GLOBAL_CONTROL.RXUSERRDY; -- FELIG GT core control. Must be set to enable normal operation. + register_read_data_25_s(10 downto 10) <= register_map_control_s.FELIG_GLOBAL_CONTROL.TXUSERRDY; -- FELIG GT core control. Must be set to enable normal operation. + register_read_data_25_s(9 downto 9) <= register_map_control_s.FELIG_GLOBAL_CONTROL.AUTO_RESET; -- FELIG GT core control. If set the GT core automatically resets on data error. + register_read_data_25_s(8 downto 8) <= register_map_control_s.FELIG_GLOBAL_CONTROL.PICXO_RESET; -- FELIG GT core control. Manual PICXO reset. + register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_GLOBAL_CONTROL.GTTX_RESET; -- FELIG GT core control. Manual GT TX reset + register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_GLOBAL_CONTROL.CPLL_RESET; -- FELIG GT core control. Manual CPLL reset. + register_read_data_25_s(5 downto 0) <= register_map_control_s.FELIG_GLOBAL_CONTROL.X3_X4_OUTPUT_SELECT; -- X3/X4 SMA output source select. + end if; + when REG_FELIG_LANE_CONFIG_00 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(0).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(0).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(0).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(0).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(0).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(0).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(0).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(0).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(0).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(0).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(0).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + end if; + when REG_FELIG_LANE_CONFIG_01 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(1).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(1).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(1).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(1).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(1).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(1).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(1).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(1).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(1).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(1).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(1).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + end if; + when REG_FELIG_LANE_CONFIG_02 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(2).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(2).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(2).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(2).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(2).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(2).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(2).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(2).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(2).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(2).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(2).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + end if; + when REG_FELIG_LANE_CONFIG_03 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(3).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(3).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(3).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(3).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(3).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(3).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(3).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(3).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(3).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(3).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(3).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + end if; + when REG_FELIG_LANE_CONFIG_04 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(4).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(4).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(4).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(4).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(4).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(4).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(4).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(4).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(4).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(4).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(4).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + end if; + when REG_FELIG_LANE_CONFIG_05 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(5).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(5).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(5).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(5).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(5).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(5).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(5).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(5).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(5).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(5).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(5).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + end if; + when REG_FELIG_LANE_CONFIG_06 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(6).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(6).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(6).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(6).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(6).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(6).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(6).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(6).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(6).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(6).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(6).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + end if; + when REG_FELIG_LANE_CONFIG_07 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(7).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(7).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(7).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(7).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(7).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(7).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(7).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(7).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(7).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(7).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(7).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + end if; + when REG_FELIG_LANE_CONFIG_08 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(8).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(8).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(8).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(8).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(8).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(8).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(8).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(8).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(8).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(8).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(8).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + end if; + when REG_FELIG_LANE_CONFIG_09 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(9).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(9).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(9).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(9).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(9).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(9).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(9).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(9).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(9).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(9).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(9).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + end if; + when REG_FELIG_LANE_CONFIG_10 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(10).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(10).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(10).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(10).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(10).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(10).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(10).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(10).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(10).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(10).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(10).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + end if; + when REG_FELIG_LANE_CONFIG_11 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(11).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(11).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(11).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(11).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(11).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(11).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(11).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(11).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(11).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(11).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(11).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + end if; + when REG_FELIG_LANE_CONFIG_12 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(12).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(12).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(12).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(12).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(12).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(12).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(12).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(12).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(12).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(12).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(12).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + end if; + when REG_FELIG_LANE_CONFIG_13 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(13).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(13).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(13).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(13).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(13).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(13).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(13).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(13).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(13).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(13).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(13).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + end if; + when REG_FELIG_LANE_CONFIG_14 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(14).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(14).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(14).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(14).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(14).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(14).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(14).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(14).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(14).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(14).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(14).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + end if; + when REG_FELIG_LANE_CONFIG_15 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(15).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(15).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(15).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(15).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(15).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(15).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(15).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(15).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(15).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(15).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(15).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + end if; + when REG_FELIG_LANE_CONFIG_16 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(16).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(16).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(16).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(16).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(16).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(16).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(16).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(16).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(16).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(16).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(16).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + end if; + when REG_FELIG_LANE_CONFIG_17 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(17).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(17).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(17).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(17).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(17).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(17).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(17).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(17).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(17).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(17).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(17).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + end if; + when REG_FELIG_LANE_CONFIG_18 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(18).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(18).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(18).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(18).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(18).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(18).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(18).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(18).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(18).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(18).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(18).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + end if; + when REG_FELIG_LANE_CONFIG_19 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(19).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(19).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(19).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(19).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(19).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(19).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(19).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(19).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(19).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(19).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(19).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + end if; + when REG_FELIG_LANE_CONFIG_20 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(20).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(20).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(20).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(20).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(20).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(20).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(20).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(20).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(20).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(20).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(20).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + end if; + when REG_FELIG_LANE_CONFIG_21 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(21).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(21).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(21).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(21).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(21).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(21).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(21).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(21).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(21).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(21).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(21).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + end if; + when REG_FELIG_LANE_CONFIG_22 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(22).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(22).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(22).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(22).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(22).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(22).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(22).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(22).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(22).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(22).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(22).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + end if; + when REG_FELIG_LANE_CONFIG_23 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 42) <= register_map_control_s.FELIG_LANE_CONFIG(23).B_CH_BIT_SEL; -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_read_data_25_s(41 downto 35) <= register_map_control_s.FELIG_LANE_CONFIG(23).A_CH_BIT_SEL; -- Selects the bit from the received FELIX data from which to extract the L1A. + register_read_data_25_s(34 downto 30) <= register_map_control_s.FELIG_LANE_CONFIG(23).LB_FIFO_DELAY; -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_read_data_25_s(7 downto 7) <= register_map_control_s.FELIG_LANE_CONFIG(23).ELINK_SYNC; -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_read_data_25_s(6 downto 6) <= register_map_control_s.FELIG_LANE_CONFIG(23).PICXO_OFFEST_EN; -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_read_data_25_s(5 downto 5) <= register_map_control_s.FELIG_LANE_CONFIG(23).PI_HOLD; -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_read_data_25_s(4 downto 4) <= register_map_control_s.FELIG_LANE_CONFIG(23).GBT_LB_ENABLE; -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(3 downto 3) <= register_map_control_s.FELIG_LANE_CONFIG(23).GBH_LB_ENABLE; -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_read_data_25_s(2 downto 2) <= register_map_control_s.FELIG_LANE_CONFIG(23).L1A_SOURCE; -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_read_data_25_s(1 downto 1) <= register_map_control_s.FELIG_LANE_CONFIG(23).GBT_EMU_SOURCE; -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_read_data_25_s(0 downto 0) <= register_map_control_s.FELIG_LANE_CONFIG(23).FG_SOURCE; -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + end if; + when REG_FELIG_MON_FREQ_GLOBAL => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_control_s.FELIG_MON_FREQ_GLOBAL.XTAL_100MHZ; -- FELIG local oscillator frequency[Hz]. + register_read_data_25_s(31 downto 0) <= register_map_control_s.FELIG_MON_FREQ_GLOBAL.CLK_41_667MHZ; -- FELIG PCIE MGTREFCLK frequency[Hz]. + end if; + when REG_FELIG_RESET => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_control_s.FELIG_RESET.LB_FIFO; -- One bit per lane. When set to 1, resets all loopback FIFOs. + register_read_data_25_s(47 downto 24) <= register_map_control_s.FELIG_RESET.FRAMEGEN; -- One bit per lane. When set to 1, resets all FELIG link checking logic. + register_read_data_25_s(23 downto 0) <= register_map_control_s.FELIG_RESET.LANE; -- One bit per lane. When set to 1, resets all FELIG lane logic. + end if; + when REG_FELIG_RX_SLIDE_RESET => + if EMU_GENERATE_REGS then + register_read_data_25_s(23 downto 0) <= register_map_control_s.FELIG_RX_SLIDE_RESET; -- One bit per lane. When set to 1, resets the gbt rx slide counter. + end if; + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_00 => + if EMU_GENERATE_REGS then + register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(0).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. + register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(0).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word + end if; + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_01 => + if EMU_GENERATE_REGS then + register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(1).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. + register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(1).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word + end if; + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_02 => + if EMU_GENERATE_REGS then + register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(2).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. + register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(2).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word + end if; + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_03 => + if EMU_GENERATE_REGS then + register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(3).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. + register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(3).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word + end if; + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_04 => + if EMU_GENERATE_REGS then + register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(4).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. + register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(4).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word + end if; + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_05 => + if EMU_GENERATE_REGS then + register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(5).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. + register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(5).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word + end if; + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_06 => + if EMU_GENERATE_REGS then + register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(6).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. + register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(6).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word + end if; + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_07 => + if EMU_GENERATE_REGS then + register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(7).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. + register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(7).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word + end if; + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_08 => + if EMU_GENERATE_REGS then + register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(8).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. + register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(8).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word + end if; + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_09 => + if EMU_GENERATE_REGS then + register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(9).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. + register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(9).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word + end if; + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_10 => + if EMU_GENERATE_REGS then + register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(10).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. + register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(10).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word + end if; + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_11 => + if EMU_GENERATE_REGS then + register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(11).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. + register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(11).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word + end if; + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_12 => + if EMU_GENERATE_REGS then + register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(12).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. + register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(12).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word + end if; + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_13 => + if EMU_GENERATE_REGS then + register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(13).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. + register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(13).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word + end if; + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_14 => + if EMU_GENERATE_REGS then + register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(14).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. + register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(14).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word + end if; + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_15 => + if EMU_GENERATE_REGS then + register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(15).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. + register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(15).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word + end if; + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_16 => + if EMU_GENERATE_REGS then + register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(16).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. + register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(16).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word + end if; + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_17 => + if EMU_GENERATE_REGS then + register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(17).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. + register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(17).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word + end if; + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_18 => + if EMU_GENERATE_REGS then + register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(18).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. + register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(18).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word + end if; + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_19 => + if EMU_GENERATE_REGS then + register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(19).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. + register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(19).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word + end if; + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_20 => + if EMU_GENERATE_REGS then + register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(20).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. + register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(20).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word + end if; + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_21 => + if EMU_GENERATE_REGS then + register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(21).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. + register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(21).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word + end if; + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_22 => + if EMU_GENERATE_REGS then + register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(22).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. + register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(22).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word + end if; + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_23 => + if EMU_GENERATE_REGS then + register_read_data_25_s(19 downto 17) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(23).ITKS_FIFO_CTL; -- data fifo control 2:rst 1:rd 0:wr. + register_read_data_25_s(16 downto 0) <= register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(23).ITKS_FIFO_DATA; -- itks emu data 16:last word 15-0:data word + end if; + when REG_FMEMU_EVENT_INFO => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_control_s.FMEMU_EVENT_INFO.L1ID; -- 32b field to show L1ID + register_read_data_25_s(31 downto 0) <= register_map_control_s.FMEMU_EVENT_INFO.BCID; -- 32b field to show BCID + end if; + when REG_FMEMU_COUNTERS => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_control_s.FMEMU_COUNTERS.WORD_CNT; -- Number of 32b words in one chunk + register_read_data_25_s(47 downto 32) <= register_map_control_s.FMEMU_COUNTERS.IDLE_CNT; -- Minimum number of idles between chunks + register_read_data_25_s(31 downto 16) <= register_map_control_s.FMEMU_COUNTERS.L1A_CNT; -- Number of chunks to send if not in TTC mode + register_read_data_25_s(15 downto 8) <= register_map_control_s.FMEMU_COUNTERS.BUSY_TH_HIGH; -- Assert BUSY-ON above this threshold + register_read_data_25_s(7 downto 0) <= register_map_control_s.FMEMU_COUNTERS.BUSY_TH_LOW; -- De-assert BUSY-ON below this threshold + end if; + when REG_FMEMU_CONTROL => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 56) <= register_map_control_s.FMEMU_CONTROL.L1A_BITNR; -- Bitfield for L1A in TTC frame + register_read_data_25_s(55 downto 48) <= register_map_control_s.FMEMU_CONTROL.XONXOFF_BITNR; -- Bitfield for Xon/Xoff in TTC frame + register_read_data_25_s(47 downto 47) <= register_map_control_s.FMEMU_CONTROL.EMU_START; -- Start emulator functionality + register_read_data_25_s(46 downto 46) <= register_map_control_s.FMEMU_CONTROL.TTC_MODE; -- Control the emulator by TTC input or by RegMap (1/0) + register_read_data_25_s(45 downto 45) <= register_map_control_s.FMEMU_CONTROL.XONXOFF; -- Debug Xon/Xoff functionality (1/0) + register_read_data_25_s(44 downto 44) <= register_map_control_s.FMEMU_CONTROL.INLC_CRC32; -- 0: No checksum + -- 1: Append the data with a CRC32 + + register_read_data_25_s(43 downto 43) <= register_map_control_s.FMEMU_CONTROL.BCR; -- Reset BCID to 0 + register_read_data_25_s(42 downto 42) <= register_map_control_s.FMEMU_CONTROL.ECR; -- Reset L1ID to 0 + register_read_data_25_s(41 downto 41) <= register_map_control_s.FMEMU_CONTROL.DATA_SRC_SEL; -- Data source select + -- 0: Data input comes from EMURAM + -- 1: Data input comes from PCIe + + register_read_data_25_s(40 downto 32) <= register_map_monitor_s.register_map_generators.FMEMU_CONTROL.INT_STATUS_EMU; -- Read internal status emulator + register_read_data_25_s(31 downto 16) <= register_map_control_s.FMEMU_CONTROL.FFU_FM_EMU_T; -- For Future Use (trigger registers) + register_read_data_25_s(15 downto 0) <= register_map_control_s.FMEMU_CONTROL.FFU_FM_EMU_W; -- For Future Use (write registers) + end if; + when REG_FMEMU_RANDOM_RAM_ADDR => + if EMU_GENERATE_REGS then + register_read_data_25_s(9 downto 0) <= register_map_control_s.FMEMU_RANDOM_RAM_ADDR; -- Controls the address of the ramblock for the random number generator + end if; + when REG_FMEMU_RANDOM_RAM => + if EMU_GENERATE_REGS then + register_read_data_25_s(64 downto 64) <= register_map_control_s.FMEMU_RANDOM_RAM.WE; -- Any write to this register (DATA) triggers a write to the ramblock + register_read_data_25_s(39 downto 16) <= register_map_control_s.FMEMU_RANDOM_RAM.CHANNEL_SELECT; -- Enable write enable only for the selected channel + register_read_data_25_s(15 downto 0) <= register_map_control_s.FMEMU_RANDOM_RAM.DATA; -- DATA field to be written to FMEMU_RANDOM_RAM_ADDR + end if; + when REG_FMEMU_RANDOM_CONTROL => + if EMU_GENERATE_REGS then + register_read_data_25_s(20 downto 20) <= register_map_control_s.FMEMU_RANDOM_CONTROL.SELECT_RANDOM; -- 1 enables the random chunk length, 0 uses a constant chunk length + register_read_data_25_s(19 downto 10) <= register_map_control_s.FMEMU_RANDOM_CONTROL.SEED; -- Seed for the random number generator, should not be 0 + register_read_data_25_s(9 downto 0) <= register_map_control_s.FMEMU_RANDOM_CONTROL.POLYNOMIAL; -- POLYNOMIAL for the random number generator (10b LFSR) Bit9 should always be 1 + end if; + when REG_WISHBONE_CONTROL => register_read_data_25_s(32 downto 32) <= register_map_control_s.WISHBONE_CONTROL.WRITE_NOT_READ; -- wishbone write command wishbone read command + register_read_data_25_s(31 downto 0) <= register_map_control_s.WISHBONE_CONTROL.ADDRESS; -- Slave address for Wishbone bus + when REG_WISHBONE_WRITE => register_read_data_25_s(64 downto 64) <= register_map_control_s.WISHBONE_WRITE.WRITE_ENABLE; -- Any write to this register triggers a write to the Wupper to Wishbone fifo + register_read_data_25_s(32 downto 32) <= register_map_monitor_s.wishbone_monitor.WISHBONE_WRITE.FULL; -- Wishbone + register_read_data_25_s(31 downto 0) <= register_map_control_s.WISHBONE_WRITE.DATA; -- Wishbone + when REG_WISHBONE_READ => register_read_data_25_s(64 downto 64) <= register_map_control_s.WISHBONE_READ.READ_ENABLE; -- Any write to this register triggers a read from the Wishbone to Wupper fifo + register_read_data_25_s(32 downto 32) <= register_map_monitor_s.wishbone_monitor.WISHBONE_READ.EMPTY; -- Indicates that the Wishbone to Wupper fifo is empty + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.wishbone_monitor.WISHBONE_READ.DATA; -- Wishbone read data + when REG_GLOBAL_STRIPS_CONFIG => register_read_data_25_s(15 downto 11) <= register_map_control_s.GLOBAL_STRIPS_CONFIG.TEST_MODULE_MASK; -- (for tests only) contains R3 mask for the simulated trigger data + register_read_data_25_s(10 downto 4) <= register_map_control_s.GLOBAL_STRIPS_CONFIG.TEST_R3L1_TAG; -- (for tests only) contains R3 or L1 tag for the simulated trigger data + register_read_data_25_s(1 downto 1) <= register_map_control_s.GLOBAL_STRIPS_CONFIG.TTC_GENERATE_GATING_ENABLE; -- Global control for gating signal generation. Enables generating trickle gating signal in response to TTC BCR. TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. (See also BC_START, and BC_STOP fields) + when REG_GLOBAL_TRICKLE_TRIGGER => register_read_data_25_s(64 downto 64) <= register_map_control_s.GLOBAL_TRICKLE_TRIGGER; -- writing to this register issues a single trickle trigger for every LCB link connected to this FELIX device + when REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_0 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (0)(0).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs + register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (0)(0).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, + -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. + + register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (0)(0).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal + register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (0)(0).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames + register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (0)(0).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames + register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (0)(0).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: + -- 00: command decoder (use same command encoding format as trickle configuration) + -- 01: trickle memory (see phase2 documentation for command encoding format) + -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) + -- 11: (invalid, don't use) + + register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (0)(0).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end + -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration + -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) + + register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (0)(0).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals + register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (0)(0).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. + -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. + -- (See also BC_START, and BC_STOP fields) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_TRIGGER_0 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_read_data_25_s(64 downto 64) <= register_map_control_s.TRICKLE_TRIGGER(0)(0); -- writing to this register issues a single trickle trigger + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_0 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(0)(0).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(0)(0).WRITE_PTR; -- Trickle configuration memory write pointer + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(0)(0).VALID_DATA_START; -- Start address of trickle configuration in trickle memory + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(0)(0).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_00_MODULE_MASK_F_C_0 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(0)(0).HCC_MASK; -- HCC* module mask + + register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(0)(0).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(0)(0).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(0)(0).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_B_8_0 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(0)(0).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(0)(0).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(0)(0).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(0)(0).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_7_4_0 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(0)(0).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(0)(0).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(0)(0).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(0)(0).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_3_0_0 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(0)(0).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(0)(0).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(0)(0).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(0)(0).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_1 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (0)(1).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs + register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (0)(1).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, + -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. + + register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (0)(1).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal + register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (0)(1).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames + register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (0)(1).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames + register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (0)(1).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: + -- 00: command decoder (use same command encoding format as trickle configuration) + -- 01: trickle memory (see phase2 documentation for command encoding format) + -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) + -- 11: (invalid, don't use) + + register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (0)(1).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end + -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration + -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) + + register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (0)(1).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals + register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (0)(1).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. + -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. + -- (See also BC_START, and BC_STOP fields) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_TRIGGER_1 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_read_data_25_s(64 downto 64) <= register_map_control_s.TRICKLE_TRIGGER(0)(1); -- writing to this register issues a single trickle trigger + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_1 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(0)(1).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(0)(1).WRITE_PTR; -- Trickle configuration memory write pointer + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(0)(1).VALID_DATA_START; -- Start address of trickle configuration in trickle memory + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(0)(1).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_00_MODULE_MASK_F_C_1 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(0)(1).HCC_MASK; -- HCC* module mask + + register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(0)(1).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(0)(1).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(0)(1).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_B_8_1 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(0)(1).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(0)(1).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(0)(1).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(0)(1).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_7_4_1 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(0)(1).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(0)(1).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(0)(1).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(0)(1).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_3_0_1 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(0)(1).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(0)(1).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(0)(1).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(0)(1).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_2 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (0)(2).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs + register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (0)(2).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, + -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. + + register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (0)(2).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal + register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (0)(2).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames + register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (0)(2).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames + register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (0)(2).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: + -- 00: command decoder (use same command encoding format as trickle configuration) + -- 01: trickle memory (see phase2 documentation for command encoding format) + -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) + -- 11: (invalid, don't use) + + register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (0)(2).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end + -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration + -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) + + register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (0)(2).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals + register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (0)(2).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. + -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. + -- (See also BC_START, and BC_STOP fields) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_TRIGGER_2 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_read_data_25_s(64 downto 64) <= register_map_control_s.TRICKLE_TRIGGER(0)(2); -- writing to this register issues a single trickle trigger + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_2 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(0)(2).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(0)(2).WRITE_PTR; -- Trickle configuration memory write pointer + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(0)(2).VALID_DATA_START; -- Start address of trickle configuration in trickle memory + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(0)(2).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_00_MODULE_MASK_F_C_2 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(0)(2).HCC_MASK; -- HCC* module mask + + register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(0)(2).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(0)(2).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(0)(2).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_B_8_2 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(0)(2).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(0)(2).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(0)(2).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(0)(2).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_7_4_2 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(0)(2).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(0)(2).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(0)(2).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(0)(2).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_3_0_2 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(0)(2).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(0)(2).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(0)(2).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(0)(2).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_3 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (0)(3).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs + register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (0)(3).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, + -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. + + register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (0)(3).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal + register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (0)(3).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames + register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (0)(3).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames + register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (0)(3).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: + -- 00: command decoder (use same command encoding format as trickle configuration) + -- 01: trickle memory (see phase2 documentation for command encoding format) + -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) + -- 11: (invalid, don't use) + + register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (0)(3).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end + -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration + -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) + + register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (0)(3).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals + register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (0)(3).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. + -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. + -- (See also BC_START, and BC_STOP fields) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_TRIGGER_3 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_read_data_25_s(64 downto 64) <= register_map_control_s.TRICKLE_TRIGGER(0)(3); -- writing to this register issues a single trickle trigger + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_3 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(0)(3).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(0)(3).WRITE_PTR; -- Trickle configuration memory write pointer + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(0)(3).VALID_DATA_START; -- Start address of trickle configuration in trickle memory + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(0)(3).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_00_MODULE_MASK_F_C_3 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(0)(3).HCC_MASK; -- HCC* module mask + + register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(0)(3).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(0)(3).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(0)(3).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_B_8_3 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(0)(3).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(0)(3).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(0)(3).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(0)(3).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_7_4_3 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(0)(3).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(0)(3).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(0)(3).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(0)(3).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_3_0_3 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(0)(3).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(0)(3).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(0)(3).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(0)(3).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_R3L1_LINK_00_R3L1_0 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (0)(0).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal + register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (0)(0).L1_ENABLE; -- enables sending TTC L1 signals to the front-end + register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (0)(0).R3_ENABLE; -- enables sending RoI R3 signals to the front-end + end if; + when REG_CR_ITK_R3L1_LINK_00_R3L1_1 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (0)(1).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal + register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (0)(1).L1_ENABLE; -- enables sending TTC L1 signals to the front-end + register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (0)(1).R3_ENABLE; -- enables sending RoI R3 signals to the front-end + end if; + when REG_CR_ITK_R3L1_LINK_00_R3L1_2 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (0)(2).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal + register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (0)(2).L1_ENABLE; -- enables sending TTC L1 signals to the front-end + register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (0)(2).R3_ENABLE; -- enables sending RoI R3 signals to the front-end + end if; + when REG_CR_ITK_R3L1_LINK_00_R3L1_3 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (0)(3).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal + register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (0)(3).L1_ENABLE; -- enables sending TTC L1 signals to the front-end + register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (0)(3).R3_ENABLE; -- enables sending RoI R3 signals to the front-end + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_0 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (1)(0).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs + register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (1)(0).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, + -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. + + register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (1)(0).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal + register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (1)(0).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames + register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (1)(0).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames + register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (1)(0).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: + -- 00: command decoder (use same command encoding format as trickle configuration) + -- 01: trickle memory (see phase2 documentation for command encoding format) + -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) + -- 11: (invalid, don't use) + + register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (1)(0).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end + -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration + -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) + + register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (1)(0).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals + register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (1)(0).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. + -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. + -- (See also BC_START, and BC_STOP fields) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_TRIGGER_0 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_read_data_25_s(64 downto 64) <= register_map_control_s.TRICKLE_TRIGGER(1)(0); -- writing to this register issues a single trickle trigger + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_0 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(1)(0).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(1)(0).WRITE_PTR; -- Trickle configuration memory write pointer + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(1)(0).VALID_DATA_START; -- Start address of trickle configuration in trickle memory + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(1)(0).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_01_MODULE_MASK_F_C_0 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(1)(0).HCC_MASK; -- HCC* module mask + + register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(1)(0).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(1)(0).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(1)(0).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_B_8_0 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(1)(0).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(1)(0).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(1)(0).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(1)(0).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_7_4_0 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(1)(0).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(1)(0).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(1)(0).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(1)(0).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_3_0_0 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(1)(0).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(1)(0).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(1)(0).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(1)(0).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_1 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (1)(1).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs + register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (1)(1).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, + -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. + + register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (1)(1).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal + register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (1)(1).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames + register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (1)(1).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames + register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (1)(1).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: + -- 00: command decoder (use same command encoding format as trickle configuration) + -- 01: trickle memory (see phase2 documentation for command encoding format) + -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) + -- 11: (invalid, don't use) + + register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (1)(1).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end + -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration + -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) + + register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (1)(1).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals + register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (1)(1).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. + -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. + -- (See also BC_START, and BC_STOP fields) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_TRIGGER_1 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_read_data_25_s(64 downto 64) <= register_map_control_s.TRICKLE_TRIGGER(1)(1); -- writing to this register issues a single trickle trigger + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_1 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(1)(1).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(1)(1).WRITE_PTR; -- Trickle configuration memory write pointer + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(1)(1).VALID_DATA_START; -- Start address of trickle configuration in trickle memory + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(1)(1).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_01_MODULE_MASK_F_C_1 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(1)(1).HCC_MASK; -- HCC* module mask + + register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(1)(1).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(1)(1).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(1)(1).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_B_8_1 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(1)(1).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(1)(1).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(1)(1).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(1)(1).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_7_4_1 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(1)(1).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(1)(1).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(1)(1).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(1)(1).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_3_0_1 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(1)(1).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(1)(1).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(1)(1).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(1)(1).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_2 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (1)(2).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs + register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (1)(2).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, + -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. + + register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (1)(2).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal + register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (1)(2).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames + register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (1)(2).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames + register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (1)(2).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: + -- 00: command decoder (use same command encoding format as trickle configuration) + -- 01: trickle memory (see phase2 documentation for command encoding format) + -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) + -- 11: (invalid, don't use) + + register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (1)(2).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end + -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration + -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) + + register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (1)(2).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals + register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (1)(2).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. + -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. + -- (See also BC_START, and BC_STOP fields) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_TRIGGER_2 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_read_data_25_s(64 downto 64) <= register_map_control_s.TRICKLE_TRIGGER(1)(2); -- writing to this register issues a single trickle trigger + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_2 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(1)(2).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(1)(2).WRITE_PTR; -- Trickle configuration memory write pointer + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(1)(2).VALID_DATA_START; -- Start address of trickle configuration in trickle memory + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(1)(2).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_01_MODULE_MASK_F_C_2 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(1)(2).HCC_MASK; -- HCC* module mask + + register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(1)(2).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(1)(2).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(1)(2).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_B_8_2 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(1)(2).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(1)(2).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(1)(2).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(1)(2).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_7_4_2 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(1)(2).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(1)(2).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(1)(2).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(1)(2).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_3_0_2 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(1)(2).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(1)(2).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(1)(2).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(1)(2).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_3 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (1)(3).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs + register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (1)(3).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, + -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. + + register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (1)(3).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal + register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (1)(3).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames + register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (1)(3).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames + register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (1)(3).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: + -- 00: command decoder (use same command encoding format as trickle configuration) + -- 01: trickle memory (see phase2 documentation for command encoding format) + -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) + -- 11: (invalid, don't use) + + register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (1)(3).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end + -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration + -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) + + register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (1)(3).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals + register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (1)(3).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. + -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. + -- (See also BC_START, and BC_STOP fields) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_TRIGGER_3 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_read_data_25_s(64 downto 64) <= register_map_control_s.TRICKLE_TRIGGER(1)(3); -- writing to this register issues a single trickle trigger + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_3 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(1)(3).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(1)(3).WRITE_PTR; -- Trickle configuration memory write pointer + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(1)(3).VALID_DATA_START; -- Start address of trickle configuration in trickle memory + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(1)(3).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_01_MODULE_MASK_F_C_3 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(1)(3).HCC_MASK; -- HCC* module mask + + register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(1)(3).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(1)(3).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(1)(3).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_B_8_3 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(1)(3).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(1)(3).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(1)(3).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(1)(3).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_7_4_3 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(1)(3).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(1)(3).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(1)(3).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(1)(3).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_3_0_3 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(1)(3).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(1)(3).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(1)(3).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(1)(3).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_R3L1_LINK_01_R3L1_0 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (1)(0).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal + register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (1)(0).L1_ENABLE; -- enables sending TTC L1 signals to the front-end + register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (1)(0).R3_ENABLE; -- enables sending RoI R3 signals to the front-end + end if; + when REG_CR_ITK_R3L1_LINK_01_R3L1_1 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (1)(1).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal + register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (1)(1).L1_ENABLE; -- enables sending TTC L1 signals to the front-end + register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (1)(1).R3_ENABLE; -- enables sending RoI R3 signals to the front-end + end if; + when REG_CR_ITK_R3L1_LINK_01_R3L1_2 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (1)(2).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal + register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (1)(2).L1_ENABLE; -- enables sending TTC L1 signals to the front-end + register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (1)(2).R3_ENABLE; -- enables sending RoI R3 signals to the front-end + end if; + when REG_CR_ITK_R3L1_LINK_01_R3L1_3 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (1)(3).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal + register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (1)(3).L1_ENABLE; -- enables sending TTC L1 signals to the front-end + register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (1)(3).R3_ENABLE; -- enables sending RoI R3 signals to the front-end + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_0 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (2)(0).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs + register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (2)(0).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, + -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. + + register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (2)(0).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal + register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (2)(0).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames + register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (2)(0).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames + register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (2)(0).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: + -- 00: command decoder (use same command encoding format as trickle configuration) + -- 01: trickle memory (see phase2 documentation for command encoding format) + -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) + -- 11: (invalid, don't use) + + register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (2)(0).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end + -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration + -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) + + register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (2)(0).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals + register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (2)(0).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. + -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. + -- (See also BC_START, and BC_STOP fields) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_TRIGGER_0 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_read_data_25_s(64 downto 64) <= register_map_control_s.TRICKLE_TRIGGER(2)(0); -- writing to this register issues a single trickle trigger + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_0 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(2)(0).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(2)(0).WRITE_PTR; -- Trickle configuration memory write pointer + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(2)(0).VALID_DATA_START; -- Start address of trickle configuration in trickle memory + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(2)(0).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_02_MODULE_MASK_F_C_0 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(2)(0).HCC_MASK; -- HCC* module mask + + register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(2)(0).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(2)(0).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(2)(0).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_B_8_0 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(2)(0).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(2)(0).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(2)(0).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(2)(0).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_7_4_0 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(2)(0).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(2)(0).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(2)(0).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(2)(0).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_3_0_0 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(2)(0).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(2)(0).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(2)(0).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(2)(0).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_1 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (2)(1).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs + register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (2)(1).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, + -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. + + register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (2)(1).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal + register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (2)(1).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames + register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (2)(1).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames + register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (2)(1).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: + -- 00: command decoder (use same command encoding format as trickle configuration) + -- 01: trickle memory (see phase2 documentation for command encoding format) + -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) + -- 11: (invalid, don't use) + + register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (2)(1).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end + -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration + -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) + + register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (2)(1).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals + register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (2)(1).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. + -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. + -- (See also BC_START, and BC_STOP fields) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_TRIGGER_1 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_read_data_25_s(64 downto 64) <= register_map_control_s.TRICKLE_TRIGGER(2)(1); -- writing to this register issues a single trickle trigger + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_1 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(2)(1).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(2)(1).WRITE_PTR; -- Trickle configuration memory write pointer + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(2)(1).VALID_DATA_START; -- Start address of trickle configuration in trickle memory + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(2)(1).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_02_MODULE_MASK_F_C_1 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(2)(1).HCC_MASK; -- HCC* module mask + + register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(2)(1).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(2)(1).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(2)(1).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_B_8_1 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(2)(1).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(2)(1).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(2)(1).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(2)(1).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_7_4_1 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(2)(1).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(2)(1).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(2)(1).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(2)(1).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_3_0_1 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(2)(1).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(2)(1).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(2)(1).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(2)(1).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_2 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (2)(2).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs + register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (2)(2).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, + -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. + + register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (2)(2).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal + register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (2)(2).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames + register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (2)(2).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames + register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (2)(2).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: + -- 00: command decoder (use same command encoding format as trickle configuration) + -- 01: trickle memory (see phase2 documentation for command encoding format) + -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) + -- 11: (invalid, don't use) + + register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (2)(2).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end + -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration + -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) + + register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (2)(2).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals + register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (2)(2).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. + -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. + -- (See also BC_START, and BC_STOP fields) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_TRIGGER_2 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_read_data_25_s(64 downto 64) <= register_map_control_s.TRICKLE_TRIGGER(2)(2); -- writing to this register issues a single trickle trigger + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_2 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(2)(2).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(2)(2).WRITE_PTR; -- Trickle configuration memory write pointer + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(2)(2).VALID_DATA_START; -- Start address of trickle configuration in trickle memory + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(2)(2).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_02_MODULE_MASK_F_C_2 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(2)(2).HCC_MASK; -- HCC* module mask + + register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(2)(2).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(2)(2).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(2)(2).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_B_8_2 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(2)(2).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(2)(2).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(2)(2).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(2)(2).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_7_4_2 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(2)(2).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(2)(2).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(2)(2).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(2)(2).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_3_0_2 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(2)(2).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(2)(2).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(2)(2).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(2)(2).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_3 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (2)(3).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs + register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (2)(3).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, + -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. + + register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (2)(3).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal + register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (2)(3).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames + register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (2)(3).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames + register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (2)(3).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: + -- 00: command decoder (use same command encoding format as trickle configuration) + -- 01: trickle memory (see phase2 documentation for command encoding format) + -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) + -- 11: (invalid, don't use) + + register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (2)(3).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end + -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration + -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) + + register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (2)(3).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals + register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (2)(3).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. + -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. + -- (See also BC_START, and BC_STOP fields) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_TRIGGER_3 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_read_data_25_s(64 downto 64) <= register_map_control_s.TRICKLE_TRIGGER(2)(3); -- writing to this register issues a single trickle trigger + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_3 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(2)(3).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(2)(3).WRITE_PTR; -- Trickle configuration memory write pointer + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(2)(3).VALID_DATA_START; -- Start address of trickle configuration in trickle memory + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(2)(3).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_02_MODULE_MASK_F_C_3 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(2)(3).HCC_MASK; -- HCC* module mask + + register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(2)(3).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(2)(3).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(2)(3).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_B_8_3 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(2)(3).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(2)(3).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(2)(3).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(2)(3).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_7_4_3 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(2)(3).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(2)(3).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(2)(3).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(2)(3).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_3_0_3 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(2)(3).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(2)(3).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(2)(3).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(2)(3).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_R3L1_LINK_02_R3L1_0 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (2)(0).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal + register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (2)(0).L1_ENABLE; -- enables sending TTC L1 signals to the front-end + register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (2)(0).R3_ENABLE; -- enables sending RoI R3 signals to the front-end + end if; + when REG_CR_ITK_R3L1_LINK_02_R3L1_1 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (2)(1).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal + register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (2)(1).L1_ENABLE; -- enables sending TTC L1 signals to the front-end + register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (2)(1).R3_ENABLE; -- enables sending RoI R3 signals to the front-end + end if; + when REG_CR_ITK_R3L1_LINK_02_R3L1_2 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (2)(2).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal + register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (2)(2).L1_ENABLE; -- enables sending TTC L1 signals to the front-end + register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (2)(2).R3_ENABLE; -- enables sending RoI R3 signals to the front-end + end if; + when REG_CR_ITK_R3L1_LINK_02_R3L1_3 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (2)(3).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal + register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (2)(3).L1_ENABLE; -- enables sending TTC L1 signals to the front-end + register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (2)(3).R3_ENABLE; -- enables sending RoI R3 signals to the front-end + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_0 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (3)(0).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs + register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (3)(0).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, + -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. + + register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (3)(0).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal + register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (3)(0).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames + register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (3)(0).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames + register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (3)(0).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: + -- 00: command decoder (use same command encoding format as trickle configuration) + -- 01: trickle memory (see phase2 documentation for command encoding format) + -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) + -- 11: (invalid, don't use) + + register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (3)(0).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end + -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration + -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) + + register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (3)(0).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals + register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (3)(0).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. + -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. + -- (See also BC_START, and BC_STOP fields) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_TRIGGER_0 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_read_data_25_s(64 downto 64) <= register_map_control_s.TRICKLE_TRIGGER(3)(0); -- writing to this register issues a single trickle trigger + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_0 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(3)(0).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(3)(0).WRITE_PTR; -- Trickle configuration memory write pointer + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(3)(0).VALID_DATA_START; -- Start address of trickle configuration in trickle memory + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(3)(0).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_03_MODULE_MASK_F_C_0 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(3)(0).HCC_MASK; -- HCC* module mask + + register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(3)(0).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(3)(0).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(3)(0).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_B_8_0 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(3)(0).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(3)(0).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(3)(0).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(3)(0).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_7_4_0 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(3)(0).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(3)(0).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(3)(0).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(3)(0).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_3_0_0 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(3)(0).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(3)(0).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(3)(0).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(3)(0).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_1 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (3)(1).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs + register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (3)(1).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, + -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. + + register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (3)(1).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal + register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (3)(1).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames + register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (3)(1).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames + register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (3)(1).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: + -- 00: command decoder (use same command encoding format as trickle configuration) + -- 01: trickle memory (see phase2 documentation for command encoding format) + -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) + -- 11: (invalid, don't use) + + register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (3)(1).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end + -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration + -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) + + register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (3)(1).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals + register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (3)(1).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. + -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. + -- (See also BC_START, and BC_STOP fields) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_TRIGGER_1 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_read_data_25_s(64 downto 64) <= register_map_control_s.TRICKLE_TRIGGER(3)(1); -- writing to this register issues a single trickle trigger + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_1 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(3)(1).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(3)(1).WRITE_PTR; -- Trickle configuration memory write pointer + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(3)(1).VALID_DATA_START; -- Start address of trickle configuration in trickle memory + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(3)(1).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_03_MODULE_MASK_F_C_1 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(3)(1).HCC_MASK; -- HCC* module mask + + register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(3)(1).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(3)(1).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(3)(1).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_B_8_1 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(3)(1).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(3)(1).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(3)(1).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(3)(1).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_7_4_1 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(3)(1).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(3)(1).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(3)(1).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(3)(1).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_3_0_1 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(3)(1).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(3)(1).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(3)(1).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(3)(1).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_2 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (3)(2).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs + register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (3)(2).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, + -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. + + register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (3)(2).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal + register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (3)(2).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames + register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (3)(2).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames + register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (3)(2).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: + -- 00: command decoder (use same command encoding format as trickle configuration) + -- 01: trickle memory (see phase2 documentation for command encoding format) + -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) + -- 11: (invalid, don't use) + + register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (3)(2).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end + -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration + -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) + + register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (3)(2).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals + register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (3)(2).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. + -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. + -- (See also BC_START, and BC_STOP fields) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_TRIGGER_2 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_read_data_25_s(64 downto 64) <= register_map_control_s.TRICKLE_TRIGGER(3)(2); -- writing to this register issues a single trickle trigger + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_2 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(3)(2).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(3)(2).WRITE_PTR; -- Trickle configuration memory write pointer + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(3)(2).VALID_DATA_START; -- Start address of trickle configuration in trickle memory + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(3)(2).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_03_MODULE_MASK_F_C_2 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(3)(2).HCC_MASK; -- HCC* module mask + + register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(3)(2).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(3)(2).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(3)(2).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_B_8_2 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(3)(2).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(3)(2).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(3)(2).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(3)(2).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_7_4_2 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(3)(2).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(3)(2).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(3)(2).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(3)(2).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_3_0_2 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(3)(2).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(3)(2).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(3)(2).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(3)(2).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_3 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_read_data_25_s(49 downto 38) <= register_map_control_s.LCB_CTRL (3)(3).L0A_BCR_DELAY; -- TTC BCR signal will be delayed by this many BCs + register_read_data_25_s(37 downto 34) <= register_map_control_s.LCB_CTRL (3)(3).L0A_FRAME_DELAY; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, + -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. + + register_read_data_25_s(33 downto 32) <= register_map_control_s.LCB_CTRL (3)(3).FRAME_PHASE; -- phase of LCB frame with respect to TTC BCR signal + register_read_data_25_s(31 downto 20) <= register_map_control_s.LCB_CTRL (3)(3).TRICKLE_BC_START; -- Determines the start of the allowed BC interval for low-priority LCB frames + register_read_data_25_s(19 downto 8) <= register_map_control_s.LCB_CTRL (3)(3).TRICKLE_BC_STOP; -- Determines the end of the allowed BC interval for low-priority LCB frames + register_read_data_25_s(5 downto 4) <= register_map_control_s.LCB_CTRL (3)(3).LCB_DESTINATION_MUX; -- Determines where the elink data is sent to: + -- 00: command decoder (use same command encoding format as trickle configuration) + -- 01: trickle memory (see phase2 documentation for command encoding format) + -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) + -- 11: (invalid, don't use) + + register_read_data_25_s(3 downto 3) <= register_map_control_s.LCB_CTRL (3)(3).TRICKLE_TRIG_RUN; -- if enabled, trickle configuration is sent out continuously to the front-end + -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration + -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) + + register_read_data_25_s(2 downto 2) <= register_map_control_s.LCB_CTRL (3)(3).TTC_L0A_ENABLE; -- enable generating L0A frames in response to TTC system signals + register_read_data_25_s(0 downto 0) <= register_map_control_s.LCB_CTRL (3)(3).TTC_GENERATE_GATING_ENABLE; -- enables generating trickle gating signal in response to TTC BCR. + -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. + -- (See also BC_START, and BC_STOP fields) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_TRIGGER_3 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_read_data_25_s(64 downto 64) <= register_map_control_s.TRICKLE_TRIGGER(3)(3); -- writing to this register issues a single trickle trigger + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_3 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_read_data_25_s(64 downto 64) <= register_map_control_s.LCB_TRICKLE_CONFIG(3)(3).MOVE_WRITE_PTR; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_TRICKLE_CONFIG(3)(3).WRITE_PTR; -- Trickle configuration memory write pointer + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_TRICKLE_CONFIG(3)(3).VALID_DATA_START; -- Start address of trickle configuration in trickle memory + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_TRICKLE_CONFIG(3)(3).VALID_DATA_END; -- Stop address of trickle configuration in trickle memory (last valid byte) + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_03_MODULE_MASK_F_C_3 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.HCC_ABC_MASK_E_C(3)(3).HCC_MASK; -- HCC* module mask + + register_read_data_25_s(47 downto 32) <= register_map_control_s.HCC_ABC_MASK_E_C(3)(3).ABC_MASK_HCC_E; -- Masks register commands with destination hcc_id = 0xE + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.HCC_ABC_MASK_E_C(3)(3).ABC_MASK_HCC_D; -- Masks register commands with destination hcc_id = 0xD + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.HCC_ABC_MASK_E_C(3)(3).ABC_MASK_HCC_C; -- Masks register commands with destination hcc_id = 0xC + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_B_8_3 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_B_8(3)(3).ABC_MASK_HCC_B; -- Masks register commands with destination hcc_id = 0xB + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_B_8(3)(3).ABC_MASK_HCC_A; -- Masks register commands with destination hcc_id = 0xA + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_B_8(3)(3).ABC_MASK_HCC_9; -- Masks register commands with destination hcc_id = 0x9 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_B_8(3)(3).ABC_MASK_HCC_8; -- Masks register commands with destination hcc_id = 0x8 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_7_4_3 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_7_4(3)(3).ABC_MASK_HCC_7; -- Masks register commands with destination hcc_id = 0x7 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_7_4(3)(3).ABC_MASK_HCC_6; -- Masks register commands with destination hcc_id = 0x6 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_7_4(3)(3).ABC_MASK_HCC_5; -- Masks register commands with destination hcc_id = 0x5 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_7_4(3)(3).ABC_MASK_HCC_4; -- Masks register commands with destination hcc_id = 0x4 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_3_0_3 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_read_data_25_s(63 downto 48) <= register_map_control_s.LCB_ABC_MASK_3_0(3)(3).ABC_MASK_HCC_3; -- Masks register commands with destination hcc_id = 0x3 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(47 downto 32) <= register_map_control_s.LCB_ABC_MASK_3_0(3)(3).ABC_MASK_HCC_2; -- Masks register commands with destination hcc_id = 0x2 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(31 downto 16) <= register_map_control_s.LCB_ABC_MASK_3_0(3)(3).ABC_MASK_HCC_1; -- Masks register commands with destination hcc_id = 0x1 + -- mask(i) <=> (abc_id = i) + + register_read_data_25_s(15 downto 0) <= register_map_control_s.LCB_ABC_MASK_3_0(3)(3).ABC_MASK_HCC_0; -- Masks register commands with destination hcc_id = 0x0 + -- mask(i) <=> (abc_id = i) + + end if; + when REG_CR_ITK_R3L1_LINK_03_R3L1_0 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (3)(0).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal + register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (3)(0).L1_ENABLE; -- enables sending TTC L1 signals to the front-end + register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (3)(0).R3_ENABLE; -- enables sending RoI R3 signals to the front-end + end if; + when REG_CR_ITK_R3L1_LINK_03_R3L1_1 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (3)(1).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal + register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (3)(1).L1_ENABLE; -- enables sending TTC L1 signals to the front-end + register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (3)(1).R3_ENABLE; -- enables sending RoI R3 signals to the front-end + end if; + when REG_CR_ITK_R3L1_LINK_03_R3L1_2 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (3)(2).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal + register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (3)(2).L1_ENABLE; -- enables sending TTC L1 signals to the front-end + register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (3)(2).R3_ENABLE; -- enables sending RoI R3 signals to the front-end + end if; + when REG_CR_ITK_R3L1_LINK_03_R3L1_3 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_read_data_25_s(3 downto 2) <= register_map_control_s.R3L1_CTRL (3)(3).FRAME_PHASE; -- phase of R3L1 frame with respect to TTC BCR signal + register_read_data_25_s(1 downto 1) <= register_map_control_s.R3L1_CTRL (3)(3).L1_ENABLE; -- enables sending TTC L1 signals to the front-end + register_read_data_25_s(0 downto 0) <= register_map_control_s.R3L1_CTRL (3)(3).R3_ENABLE; -- enables sending RoI R3 signals to the front-end + end if; + when REG_STRIPS_R3_TRIGGER => register_read_data_25_s(64 downto 64) <= register_map_control_s.STRIPS_R3_TRIGGER; -- (for tests only) simulate R3 trigger (issues 4-5 sequential triggers) + when REG_STRIPS_L1_TRIGGER => register_read_data_25_s(64 downto 64) <= register_map_control_s.STRIPS_L1_TRIGGER; -- (for tests only) simulate L1 trigger (issues 4-5 sequential triggers) + when REG_STRIPS_R3L1_TRIGGER => register_read_data_25_s(64 downto 64) <= register_map_control_s.STRIPS_R3L1_TRIGGER; -- (for tests only) simulate simultaneous R3 and L1 trigger (issues 4-5 sequential triggers) + when REG_MROD_CTRL => + if MROD_GENERATE_REGS = true then + register_read_data_25_s(15 downto 4) <= register_map_control_s.MROD_CTRL.OPTIONS; -- Extra options for MROD + register_read_data_25_s(3 downto 0) <= register_map_control_s.MROD_CTRL.GOLTESTMODE; -- GOL Test Mode (emulate CSM): + -- 0: Run Data Emulator when 1; 0: stop, load emulator fifo + -- 1: Enable Circulate when 1; 0: send fifo data only once + -- 2: Enable Triggered Mode when 1; 0: run continueously (no TTC) + -- 3: Enable pattern generator when 1; 0: off + + end if; + when REG_MROD_EP0_CSMENABLE => + if MROD_GENERATE_REGS = true then + register_read_data_25_s(23 downto 0) <= register_map_control_s.MROD_EP0_CSMENABLE; -- EP0 CSM Data Enable channel 23-0 + end if; + when REG_MROD_EP0_EMPTYSUPPR => + if MROD_GENERATE_REGS = true then + register_read_data_25_s(23 downto 0) <= register_map_control_s.MROD_EP0_EMPTYSUPPR; -- EP0 Set Empty Suppression channel 23-0 + end if; + when REG_MROD_EP0_HPTDCMODE => + if MROD_GENERATE_REGS = true then + register_read_data_25_s(23 downto 0) <= register_map_control_s.MROD_EP0_HPTDCMODE; -- EP0 Set HPTDC Mode channel 23-0 + end if; + when REG_MROD_EP0_CLRFIFOS => + if MROD_GENERATE_REGS = true then + register_read_data_25_s(23 downto 0) <= register_map_control_s.MROD_EP0_CLRFIFOS; -- EP0 Clear FIFOs channel 23-0 + end if; + when REG_MROD_EP0_EMULOADENA => + if MROD_GENERATE_REGS = true then + register_read_data_25_s(23 downto 0) <= register_map_control_s.MROD_EP0_EMULOADENA; -- EP0 Emulator Load Enable channel 23-0 + end if; + when REG_MROD_EP0_TRXLOOPBACK => + if MROD_GENERATE_REGS = true then + register_read_data_25_s(23 downto 0) <= register_map_control_s.MROD_EP0_TRXLOOPBACK; -- EP0 Transceiver Loopback Enable channel 23-0 + end if; + when REG_MROD_EP0_TXCVRRESET => + if MROD_GENERATE_REGS = true then + register_read_data_25_s(23 downto 0) <= register_map_control_s.MROD_EP0_TXCVRRESET; -- EP0 Transceiver Reset all channel 23-0 + end if; + when REG_MROD_EP0_RXRESET => + if MROD_GENERATE_REGS = true then + register_read_data_25_s(23 downto 0) <= register_map_control_s.MROD_EP0_RXRESET; -- EP0 Receiver Reset channel 23-0 + end if; + when REG_MROD_EP0_TXRESET => + if MROD_GENERATE_REGS = true then + register_read_data_25_s(23 downto 0) <= register_map_control_s.MROD_EP0_TXRESET; -- EP0 Transmitter Reset channel 23-0 + end if; + when REG_MROD_EP1_CSMENABLE => + if MROD_GENERATE_REGS = true then + register_read_data_25_s(23 downto 0) <= register_map_control_s.MROD_EP1_CSMENABLE; -- EP1 CSM Data Enable channel 23-0 + end if; + when REG_MROD_EP1_EMPTYSUPPR => + if MROD_GENERATE_REGS = true then + register_read_data_25_s(23 downto 0) <= register_map_control_s.MROD_EP1_EMPTYSUPPR; -- EP1 Set Empty Suppression channel 23-0 + end if; + when REG_MROD_EP1_HPTDCMODE => + if MROD_GENERATE_REGS = true then + register_read_data_25_s(23 downto 0) <= register_map_control_s.MROD_EP1_HPTDCMODE; -- EP1 Set HPTDC Mode channel 23-0 + end if; + when REG_MROD_EP1_CLRFIFOS => + if MROD_GENERATE_REGS = true then + register_read_data_25_s(23 downto 0) <= register_map_control_s.MROD_EP1_CLRFIFOS; -- EP1 Clear FIFOs channel 23-0 + end if; + when REG_MROD_EP1_EMULOADENA => + if MROD_GENERATE_REGS = true then + register_read_data_25_s(23 downto 0) <= register_map_control_s.MROD_EP1_EMULOADENA; -- EP1 Emulator Load Enable channel 23-0 + end if; + when REG_MROD_EP1_TRXLOOPBACK => + if MROD_GENERATE_REGS = true then + register_read_data_25_s(23 downto 0) <= register_map_control_s.MROD_EP1_TRXLOOPBACK; -- EP1 Transceiver Loopback Enable channel 23-0 + end if; + when REG_MROD_EP1_TXCVRRESET => + if MROD_GENERATE_REGS = true then + register_read_data_25_s(23 downto 0) <= register_map_control_s.MROD_EP1_TXCVRRESET; -- EP1 Transceiver Reset all channel 23-0 + end if; + when REG_MROD_EP1_RXRESET => + if MROD_GENERATE_REGS = true then + register_read_data_25_s(23 downto 0) <= register_map_control_s.MROD_EP1_RXRESET; -- EP1 Receiver Reset channel 23-0 + end if; + when REG_MROD_EP1_TXRESET => + if MROD_GENERATE_REGS = true then + register_read_data_25_s(23 downto 0) <= register_map_control_s.MROD_EP1_TXRESET; -- EP1 Transmitter Reset channel 23-0 + end if; + + -- + -- Monitor registers + -- + + +-- GenericBoardInformation + when REG_REG_MAP_VERSION => register_read_data_25_s(15 downto 0) <= std_logic_vector(to_unsigned(1280,16)); -- Register Map Version, 5.0 formatted as 0x0500 + when REG_BOARD_ID_TIMESTAMP => register_read_data_25_s(39 downto 0) <= BUILD_DATETIME; -- Board ID Date / Time in BCD format YYMMDDhhmm + when REG_GIT_COMMIT_TIME => register_read_data_25_s(39 downto 0) <= COMMIT_DATETIME; -- Board ID GIT Commit time of current revision, Date / Time in BCD format YYMMDDhhmm + when REG_GIT_TAG => register_read_data_25_s(63 downto 0) <= GIT_TAG(63 downto 0); -- String containing the current GIT TAG + when REG_GIT_COMMIT_NUMBER => register_read_data_25_s(31 downto 0) <= std_logic_vector(to_unsigned(GIT_COMMIT_NUMBER,32)); -- Number of GIT commits after current GIT_TAG + when REG_GIT_HASH => register_read_data_25_s(31 downto 0) <= GIT_HASH(159 downto 128); -- Short GIT hash (32 bit) + when REG_GENERIC_CONSTANTS => register_read_data_25_s(15 downto 8) <= std_logic_vector(to_unsigned(NUMBER_OF_INTERRUPTS,8)); -- Number of Interrupts + register_read_data_25_s(7 downto 0) <= std_logic_vector(to_unsigned(NUMBER_OF_DESCRIPTORS,8)); -- Number of Descriptors + when REG_NUM_OF_CHANNELS => register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_gen_board_info.NUM_OF_CHANNELS; -- Number of GBT or FULL mode Channels + when REG_CARD_TYPE => register_read_data_25_s(63 downto 0) <= std_logic_vector(to_unsigned(CARD_TYPE,64)); -- Card Type: + -- - 709 (0x2c5): FLX709, VC709 + -- - 710 (0x2c6): FLX710, HTG710 + -- - 711 (0x2c7): FLX711, BNL711 + -- - 712 (0x2c8): FLX712, BNL712 + -- - 128 (0x080): FLX128, VCU128 + + when REG_GENERATE_GBT => register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_gen_board_info.GENERATE_GBT; -- 1 when the GBT Wrapper is included in the design + when REG_OPTO_TRX_NUM => register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_gen_board_info.OPTO_TRX_NUM; -- Number of optical transceivers in the design + when REG_GENERATE_TTC_EMU => register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_gen_board_info.GENERATE_TTC_EMU; -- 1 when TTC emulator is generated + when REG_INCLUDE_EGROUP_0 => register_read_data_25_s(8 downto 8) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (0).FROMHOST_02; -- FromHost EPROC02 is included in this EGROUP + register_read_data_25_s(7 downto 7) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (0).FROMHOST_04; -- FromHost EPROC04 is included in this EGROUP + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (0).FROMHOST_08; -- FromHost EPROC8 is included in this EGROUP + register_read_data_25_s(5 downto 5) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (0).FROMHOST_HDLC; -- FromHost HDLC is included in this EGROUP + register_read_data_25_s(4 downto 4) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (0).TOHOST_02; -- ToHost EPROC02 is included in this EGROUP + register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (0).TOHOST_04; -- ToHost EPROC04 is included in this EGROUP + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (0).TOHOST_08; -- ToHost EPROC08 is included in this EGROUP + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (0).TOHOST_16; -- ToHost EPROC16 is included in this EGROUP + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (0).TOHOST_HDLC; -- ToHost HDLC is included in this EGROUP + when REG_INCLUDE_EGROUP_1 => register_read_data_25_s(8 downto 8) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (1).FROMHOST_02; -- FromHost EPROC02 is included in this EGROUP + register_read_data_25_s(7 downto 7) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (1).FROMHOST_04; -- FromHost EPROC04 is included in this EGROUP + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (1).FROMHOST_08; -- FromHost EPROC8 is included in this EGROUP + register_read_data_25_s(5 downto 5) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (1).FROMHOST_HDLC; -- FromHost HDLC is included in this EGROUP + register_read_data_25_s(4 downto 4) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (1).TOHOST_02; -- ToHost EPROC02 is included in this EGROUP + register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (1).TOHOST_04; -- ToHost EPROC04 is included in this EGROUP + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (1).TOHOST_08; -- ToHost EPROC08 is included in this EGROUP + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (1).TOHOST_16; -- ToHost EPROC16 is included in this EGROUP + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (1).TOHOST_HDLC; -- ToHost HDLC is included in this EGROUP + when REG_INCLUDE_EGROUP_2 => register_read_data_25_s(8 downto 8) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (2).FROMHOST_02; -- FromHost EPROC02 is included in this EGROUP + register_read_data_25_s(7 downto 7) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (2).FROMHOST_04; -- FromHost EPROC04 is included in this EGROUP + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (2).FROMHOST_08; -- FromHost EPROC8 is included in this EGROUP + register_read_data_25_s(5 downto 5) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (2).FROMHOST_HDLC; -- FromHost HDLC is included in this EGROUP + register_read_data_25_s(4 downto 4) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (2).TOHOST_02; -- ToHost EPROC02 is included in this EGROUP + register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (2).TOHOST_04; -- ToHost EPROC04 is included in this EGROUP + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (2).TOHOST_08; -- ToHost EPROC08 is included in this EGROUP + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (2).TOHOST_16; -- ToHost EPROC16 is included in this EGROUP + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (2).TOHOST_HDLC; -- ToHost HDLC is included in this EGROUP + when REG_INCLUDE_EGROUP_3 => register_read_data_25_s(8 downto 8) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (3).FROMHOST_02; -- FromHost EPROC02 is included in this EGROUP + register_read_data_25_s(7 downto 7) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (3).FROMHOST_04; -- FromHost EPROC04 is included in this EGROUP + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (3).FROMHOST_08; -- FromHost EPROC8 is included in this EGROUP + register_read_data_25_s(5 downto 5) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (3).FROMHOST_HDLC; -- FromHost HDLC is included in this EGROUP + register_read_data_25_s(4 downto 4) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (3).TOHOST_02; -- ToHost EPROC02 is included in this EGROUP + register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (3).TOHOST_04; -- ToHost EPROC04 is included in this EGROUP + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (3).TOHOST_08; -- ToHost EPROC08 is included in this EGROUP + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (3).TOHOST_16; -- ToHost EPROC16 is included in this EGROUP + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (3).TOHOST_HDLC; -- ToHost HDLC is included in this EGROUP + when REG_INCLUDE_EGROUP_4 => register_read_data_25_s(8 downto 8) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (4).FROMHOST_02; -- FromHost EPROC02 is included in this EGROUP + register_read_data_25_s(7 downto 7) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (4).FROMHOST_04; -- FromHost EPROC04 is included in this EGROUP + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (4).FROMHOST_08; -- FromHost EPROC8 is included in this EGROUP + register_read_data_25_s(5 downto 5) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (4).FROMHOST_HDLC; -- FromHost HDLC is included in this EGROUP + register_read_data_25_s(4 downto 4) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (4).TOHOST_02; -- ToHost EPROC02 is included in this EGROUP + register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (4).TOHOST_04; -- ToHost EPROC04 is included in this EGROUP + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (4).TOHOST_08; -- ToHost EPROC08 is included in this EGROUP + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (4).TOHOST_16; -- ToHost EPROC16 is included in this EGROUP + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (4).TOHOST_HDLC; -- ToHost HDLC is included in this EGROUP + when REG_INCLUDE_EGROUP_5 => register_read_data_25_s(8 downto 8) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (5).FROMHOST_02; -- FromHost EPROC02 is included in this EGROUP + register_read_data_25_s(7 downto 7) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (5).FROMHOST_04; -- FromHost EPROC04 is included in this EGROUP + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (5).FROMHOST_08; -- FromHost EPROC8 is included in this EGROUP + register_read_data_25_s(5 downto 5) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (5).FROMHOST_HDLC; -- FromHost HDLC is included in this EGROUP + register_read_data_25_s(4 downto 4) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (5).TOHOST_02; -- ToHost EPROC02 is included in this EGROUP + register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (5).TOHOST_04; -- ToHost EPROC04 is included in this EGROUP + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (5).TOHOST_08; -- ToHost EPROC08 is included in this EGROUP + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (5).TOHOST_16; -- ToHost EPROC16 is included in this EGROUP + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (5).TOHOST_HDLC; -- ToHost HDLC is included in this EGROUP + when REG_INCLUDE_EGROUP_6 => register_read_data_25_s(8 downto 8) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (6).FROMHOST_02; -- FromHost EPROC02 is included in this EGROUP + register_read_data_25_s(7 downto 7) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (6).FROMHOST_04; -- FromHost EPROC04 is included in this EGROUP + register_read_data_25_s(6 downto 6) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (6).FROMHOST_08; -- FromHost EPROC8 is included in this EGROUP + register_read_data_25_s(5 downto 5) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (6).FROMHOST_HDLC; -- FromHost HDLC is included in this EGROUP + register_read_data_25_s(4 downto 4) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (6).TOHOST_02; -- ToHost EPROC02 is included in this EGROUP + register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (6).TOHOST_04; -- ToHost EPROC04 is included in this EGROUP + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (6).TOHOST_08; -- ToHost EPROC08 is included in this EGROUP + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (6).TOHOST_16; -- ToHost EPROC16 is included in this EGROUP + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_gen_board_info.INCLUDE_EGROUP (6).TOHOST_HDLC; -- ToHost HDLC is included in this EGROUP + when REG_WIDE_MODE => register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_gen_board_info.WIDE_MODE; -- GBT is configured in Wide mode + when REG_FIRMWARE_MODE => register_read_data_25_s(3 downto 0) <= register_map_monitor_s.register_map_gen_board_info.FIRMWARE_MODE; -- 0: GBT mode + -- 1: FULL mode + -- 2: LTDB mode (GBT mode with only IC and TTC links) + -- 3: FEI4 mode + -- 4: ITK Pixel + -- 5: ITK Strip + -- 6: FELIG + -- 7: FULL mode emulator + -- 8: FELIX_MROD mode + -- 9: lpGBT mode + -- + + when REG_GTREFCLK_SOURCE => register_read_data_25_s(1 downto 0) <= register_map_monitor_s.register_map_gen_board_info.GTREFCLK_SOURCE; -- 0: Transceiver reference Clock source from Si5345 + -- 1: Transceiver reference Clock source from Si5324 + -- 2: Transceiver reference Clock from internal BUFG (GREFCLK) + + when REG_CR_GENERICS => register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_gen_board_info.CR_GENERICS.XOFF_INCLUDED; -- Xoff bits (usually full mode) can be generated by the FromHost Central Router + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_gen_board_info.CR_GENERICS.DIRECT_MODE_INCLUDED; -- Indicates that the Direct mode functionality was built in the Central Router + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_gen_board_info.CR_GENERICS.FROM_HOST_INCLUDED; -- Indicates that the From Host path of the Central router was included in the design + when REG_BLOCKSIZE => register_read_data_25_s(15 downto 0) <= register_map_monitor_s.register_map_gen_board_info.BLOCKSIZE; -- Number of bytes in a block + when REG_PCIE_ENDPOINT => register_read_data_25_s(0 downto 0) <= std_logic_vector(to_unsigned(PCIE_ENDPOINT, 1)); -- Indicator of the PCIe endpoint on BNL71x cards with two endpoints. 0 or 1 + when REG_CHUNK_TRAILER_32B => register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_gen_board_info.CHUNK_TRAILER_32B; -- Indicator that the chunk trailer is in the new 32-bit format + when REG_PCIE_ENDPOINTS => register_read_data_25_s(1 downto 0) <= register_map_monitor_s.register_map_gen_board_info.PCIE_ENDPOINTS; -- Number of PCIe endpoints on the card. The BNL71x cards have 2 endpoints + when REG_SUPERCHUNK_FACTOR => register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_gen_board_info.SUPERCHUNK_FACTOR; -- Number of full mode chunks glued together as one chunk + +-- CRToHostControlsAndMonitors + when REG_MAX_TIMEOUT => register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_crtohost_monitor.MAX_TIMEOUT; -- Maximum allowed timeout value + +-- CRFromHostControlsAndMonitors + +-- DecodingControlsAndMonitors + when REG_DECODING_LINK_ALIGNED_00 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (0); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used + when REG_DECODING_LINK_ALIGNED_01 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (1); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used + when REG_DECODING_LINK_ALIGNED_02 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (2); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used + when REG_DECODING_LINK_ALIGNED_03 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (3); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used + when REG_DECODING_LINK_ALIGNED_04 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (4); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used + when REG_DECODING_LINK_ALIGNED_05 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (5); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used + when REG_DECODING_LINK_ALIGNED_06 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (6); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used + when REG_DECODING_LINK_ALIGNED_07 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (7); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used + when REG_DECODING_LINK_ALIGNED_08 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (8); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used + when REG_DECODING_LINK_ALIGNED_09 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (9); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used + when REG_DECODING_LINK_ALIGNED_10 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (10); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used + when REG_DECODING_LINK_ALIGNED_11 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (11); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used + when REG_DECODING_LINK_ALIGNED_12 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (12); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used + when REG_DECODING_LINK_ALIGNED_13 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (13); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used + when REG_DECODING_LINK_ALIGNED_14 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (14); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used + when REG_DECODING_LINK_ALIGNED_15 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (15); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used + when REG_DECODING_LINK_ALIGNED_16 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (16); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used + when REG_DECODING_LINK_ALIGNED_17 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (17); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used + when REG_DECODING_LINK_ALIGNED_18 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (18); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used + when REG_DECODING_LINK_ALIGNED_19 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (19); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used + when REG_DECODING_LINK_ALIGNED_20 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (20); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used + when REG_DECODING_LINK_ALIGNED_21 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (21); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used + when REG_DECODING_LINK_ALIGNED_22 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (22); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used + when REG_DECODING_LINK_ALIGNED_23 => register_read_data_25_s(57 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.DECODING_LINK_ALIGNED (23); -- Every bit corresponds to an E-link on one (lp)GBT or FULL-mode frame. For FULL mode only bit 0 is used + when REG_RD53B_PROCESSOR_00 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (0).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (0).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (0).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (0).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_01 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (1).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (1).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (1).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (1).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_02 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (2).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (2).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (2).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (2).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_03 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (3).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (3).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (3).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (3).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_04 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (4).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (4).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (4).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (4).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_05 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (5).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (5).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (5).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (5).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_06 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (6).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (6).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (6).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (6).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_07 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (7).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (7).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (7).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (7).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_08 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (8).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (8).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (8).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (8).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_09 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (9).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (9).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (9).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (9).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_10 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (10).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (10).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (10).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (10).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_11 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (11).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (11).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (11).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (11).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_12 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (12).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (12).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (12).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (12).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_13 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (13).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (13).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (13).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (13).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_14 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (14).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (14).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (14).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (14).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_15 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (15).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (15).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (15).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (15).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_16 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (16).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (16).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (16).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (16).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_17 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (17).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (17).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (17).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (17).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_18 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (18).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (18).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (18).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (18).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_19 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (19).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (19).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (19).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (19).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_20 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (20).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (20).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (20).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (20).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_21 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (21).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (21).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (21).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (21).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_22 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (22).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (22).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (22).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (22).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_23 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (23).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (23).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (23).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (23).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_24 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (24).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (24).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (24).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (24).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_25 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (25).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (25).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (25).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (25).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_26 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (26).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (26).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (26).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (26).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_27 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (27).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (27).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (27).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (27).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_28 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (28).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (28).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (28).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (28).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_29 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (29).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (29).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (29).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (29).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_30 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (30).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (30).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (30).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (30).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_31 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (31).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (31).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (31).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (31).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_32 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (32).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (32).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (32).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (32).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_33 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (33).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (33).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (33).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (33).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_34 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (34).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (34).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (34).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (34).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_35 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (35).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (35).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (35).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (35).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_36 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (36).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (36).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (36).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (36).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_37 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (37).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (37).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (37).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (37).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_38 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (38).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (38).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (38).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (38).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_39 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (39).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (39).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (39).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (39).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_40 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (40).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (40).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (40).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (40).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_41 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (41).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (41).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (41).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (41).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_42 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (42).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (42).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (42).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (42).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_43 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (43).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (43).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (43).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (43).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_44 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (44).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (44).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (44).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (44).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_45 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (45).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (45).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (45).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (45).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_46 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (46).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (46).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (46).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (46).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_47 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (47).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (47).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (47).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (47).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_48 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (48).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (48).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (48).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (48).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_49 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (49).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (49).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (49).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (49).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_50 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (50).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (50).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (50).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (50).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_51 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (51).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (51).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (51).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (51).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_52 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (52).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (52).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (52).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (52).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_53 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (53).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (53).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (53).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (53).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_54 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (54).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (54).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (54).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (54).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_55 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (55).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (55).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (55).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (55).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_56 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (56).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (56).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (56).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (56).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_57 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (57).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (57).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (57).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (57).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_58 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (58).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (58).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (58).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (58).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_59 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (59).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (59).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (59).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (59).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_60 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (60).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (60).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (60).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (60).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_61 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (61).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (61).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (61).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (61).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_62 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (62).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (62).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (62).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (62).DROP_TOT; -- Decoding block + when REG_RD53B_PROCESSOR_63 => register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (63).ENABLE_MULTICHIP; -- Decoding block + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (63).ENABLE_BINARYTREE; -- Decoding block + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (63).ENABLE_TOT; -- Decoding block + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_decoding_monitor.RD53B_PROCESSOR (63).DROP_TOT; -- Decoding block + +-- EncodingControlsAndMonitors + +-- FrontendEmulatorControlsAndMonitors + +-- LinkWrapperMonitors + when REG_GBT_VERSION => register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_link_monitor.GBT_VERSION.DATE; -- Date + register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_link_monitor.GBT_VERSION.GBT_VERSION; -- GBT Version + register_read_data_25_s(31 downto 16) <= register_map_monitor_s.register_map_link_monitor.GBT_VERSION.GTH_IP_VERSION; -- GTH IP Version + register_read_data_25_s(15 downto 3) <= register_map_monitor_s.register_map_link_monitor.GBT_VERSION.RESERVED; -- Reserved + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.register_map_link_monitor.GBT_VERSION.GTHREFCLK_SEL; -- GTHREFCLK SEL + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.register_map_link_monitor.GBT_VERSION.RX_CLK_SEL; -- RX CLK SEL + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_VERSION.PLL_SEL; -- PLL SEL + when REG_GBT_TXRESET_DONE => register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_TXRESET_DONE; -- TX Reset done [47:0] + when REG_GBT_RXRESET_DONE => register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_RXRESET_DONE; -- RX Reset done [47:0] + when REG_GBT_TXFSMRESET_DONE => register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_TXFSMRESET_DONE; -- TX FSM Reset done [47:0] + when REG_GBT_RXFSMRESET_DONE => register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_RXFSMRESET_DONE; -- RX FSM Reset done [47:0] + when REG_GBT_CPLL_FBCLK_LOST => register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_CPLL_FBCLK_LOST; -- CPLL FBCLK LOST [47:0] + when REG_GBT_PLL_LOCK => register_read_data_25_s(59 downto 48) <= register_map_monitor_s.register_map_link_monitor.GBT_PLL_LOCK.QPLL_LOCK; -- QPLL LOCK [11:0] + register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_PLL_LOCK.CPLL_LOCK; -- CPLL LOCK [47:0] + when REG_GBT_RXCDR_LOCK => register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_RXCDR_LOCK; -- RX CDR LOCK [47:0] + when REG_GBT_CLK_SAMPLED => register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_CLK_SAMPLED; -- clk sampled [47:0] + when REG_GBT_RX_IS_HEADER => + if GBT_GENERATE_ALL_REGS then + register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_RX_IS_HEADER; -- RX IS HEADER [47:0] + end if; + when REG_GBT_RX_IS_DATA => + if GBT_GENERATE_ALL_REGS then + register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_RX_IS_DATA; -- RX IS DATA [47:0] + end if; + when REG_GBT_RX_HEADER_FOUND => + if GBT_GENERATE_ALL_REGS then + register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_RX_HEADER_FOUND; -- RX HEADER FOUND [47:0] + end if; + when REG_GBT_ALIGNMENT_DONE => register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_ALIGNMENT_DONE; -- RX ALIGNMENT DONE [47:0] + when REG_GBT_OUT_MUX_STATUS => register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_OUT_MUX_STATUS; -- GBT output mux status [47:0] + when REG_GBT_ERROR => register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_ERROR; -- Error flags [47:0] + when REG_GBT_GBT_TOPBOT_C => + if GBT_GENERATE_ALL_REGS then + register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_GBT_TOPBOT_C; -- TopBot_c [47:0] + end if; + when REG_GBT_FM_RX_DISP_ERROR1 => register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_FM_RX_DISP_ERROR1; -- Rx disparity error [47:0] + when REG_GBT_FM_RX_DISP_ERROR2 => register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_FM_RX_DISP_ERROR2; -- Rx disparity error [96:48] + when REG_GBT_FM_RX_NOTINTABLE1 => register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_FM_RX_NOTINTABLE1; -- Rx not in table [47:0] + when REG_GBT_FM_RX_NOTINTABLE2 => register_read_data_25_s(47 downto 0) <= register_map_monitor_s.register_map_link_monitor.GBT_FM_RX_NOTINTABLE2; -- Rx not in table [96:48] + +-- TTCBUSYControlsAndMonitors + when REG_TTC_DEC_MON => register_read_data_25_s(15 downto 5) <= register_map_monitor_s.register_map_ttc_monitor.TTC_DEC_MON.TH_FF_COUNT; -- ToHostData Fifo counts + register_read_data_25_s(4 downto 4) <= register_map_monitor_s.register_map_ttc_monitor.TTC_DEC_MON.TH_FF_FULL; -- ToHostData Fifo status 1:full 0:not full + register_read_data_25_s(3 downto 3) <= register_map_monitor_s.register_map_ttc_monitor.TTC_DEC_MON.TH_FF_EMPTY; -- ToHostData Fifo status 1:empty 0:not empty + register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_DEC_MON.TTC_BIT_ERR; -- double bit, single bit and comm error in TTC data + when REG_TTC_BUSY_ACCEPTED00 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (0); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR + when REG_TTC_BUSY_ACCEPTED01 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (1); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR + when REG_TTC_BUSY_ACCEPTED02 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (2); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR + when REG_TTC_BUSY_ACCEPTED03 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (3); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR + when REG_TTC_BUSY_ACCEPTED04 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (4); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR + when REG_TTC_BUSY_ACCEPTED05 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (5); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR + when REG_TTC_BUSY_ACCEPTED06 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (6); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR + when REG_TTC_BUSY_ACCEPTED07 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (7); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR + when REG_TTC_BUSY_ACCEPTED08 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (8); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR + when REG_TTC_BUSY_ACCEPTED09 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (9); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR + when REG_TTC_BUSY_ACCEPTED10 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (10); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR + when REG_TTC_BUSY_ACCEPTED11 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (11); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR + when REG_TTC_BUSY_ACCEPTED12 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (12); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR + when REG_TTC_BUSY_ACCEPTED13 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (13); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR + when REG_TTC_BUSY_ACCEPTED14 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (14); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR + when REG_TTC_BUSY_ACCEPTED15 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (15); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR + when REG_TTC_BUSY_ACCEPTED16 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (16); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR + when REG_TTC_BUSY_ACCEPTED17 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (17); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR + when REG_TTC_BUSY_ACCEPTED18 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (18); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR + when REG_TTC_BUSY_ACCEPTED19 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (19); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR + when REG_TTC_BUSY_ACCEPTED20 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (20); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR + when REG_TTC_BUSY_ACCEPTED21 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (21); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR + when REG_TTC_BUSY_ACCEPTED22 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (22); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR + when REG_TTC_BUSY_ACCEPTED23 => register_read_data_25_s(56 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_BUSY_ACCEPTED (23); -- busy has been asserted by the given ELINK. Reset by writing to TTC_BUSY_CLEAR + when REG_TTC_L1ID_MONITOR => register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_ttc_monitor.TTC_L1ID_MONITOR; -- Monitor L1ID and XL1ID. + +-- XOFF_BUSYControlsAndMonitors + when REG_XOFF_FM_LOW_THRESH_CROSSED => register_read_data_25_s(23 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_FM_LOW_THRESH_CROSSED; -- FIFO filled beyond the low threshold, 1 bit per channel + when REG_XOFF_PEAK_DURATION00 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (0); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset + when REG_XOFF_TOTAL_DURATION00 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (0); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset + when REG_XOFF_COUNT00 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (0); -- Total number of XOFF events per channel that occurred since a reset. + when REG_XOFF_PEAK_DURATION01 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (1); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset + when REG_XOFF_TOTAL_DURATION01 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (1); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset + when REG_XOFF_COUNT01 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (1); -- Total number of XOFF events per channel that occurred since a reset. + when REG_XOFF_PEAK_DURATION02 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (2); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset + when REG_XOFF_TOTAL_DURATION02 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (2); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset + when REG_XOFF_COUNT02 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (2); -- Total number of XOFF events per channel that occurred since a reset. + when REG_XOFF_PEAK_DURATION03 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (3); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset + when REG_XOFF_TOTAL_DURATION03 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (3); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset + when REG_XOFF_COUNT03 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (3); -- Total number of XOFF events per channel that occurred since a reset. + when REG_XOFF_PEAK_DURATION04 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (4); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset + when REG_XOFF_TOTAL_DURATION04 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (4); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset + when REG_XOFF_COUNT04 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (4); -- Total number of XOFF events per channel that occurred since a reset. + when REG_XOFF_PEAK_DURATION05 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (5); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset + when REG_XOFF_TOTAL_DURATION05 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (5); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset + when REG_XOFF_COUNT05 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (5); -- Total number of XOFF events per channel that occurred since a reset. + when REG_XOFF_PEAK_DURATION06 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (6); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset + when REG_XOFF_TOTAL_DURATION06 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (6); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset + when REG_XOFF_COUNT06 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (6); -- Total number of XOFF events per channel that occurred since a reset. + when REG_XOFF_PEAK_DURATION07 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (7); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset + when REG_XOFF_TOTAL_DURATION07 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (7); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset + when REG_XOFF_COUNT07 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (7); -- Total number of XOFF events per channel that occurred since a reset. + when REG_XOFF_PEAK_DURATION08 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (8); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset + when REG_XOFF_TOTAL_DURATION08 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (8); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset + when REG_XOFF_COUNT08 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (8); -- Total number of XOFF events per channel that occurred since a reset. + when REG_XOFF_PEAK_DURATION09 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (9); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset + when REG_XOFF_TOTAL_DURATION09 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (9); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset + when REG_XOFF_COUNT09 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (9); -- Total number of XOFF events per channel that occurred since a reset. + when REG_XOFF_PEAK_DURATION10 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (10); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset + when REG_XOFF_TOTAL_DURATION10 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (10); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset + when REG_XOFF_COUNT10 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (10); -- Total number of XOFF events per channel that occurred since a reset. + when REG_XOFF_PEAK_DURATION11 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (11); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset + when REG_XOFF_TOTAL_DURATION11 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (11); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset + when REG_XOFF_COUNT11 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (11); -- Total number of XOFF events per channel that occurred since a reset. + when REG_XOFF_PEAK_DURATION12 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (12); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset + when REG_XOFF_TOTAL_DURATION12 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (12); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset + when REG_XOFF_COUNT12 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (12); -- Total number of XOFF events per channel that occurred since a reset. + when REG_XOFF_PEAK_DURATION13 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (13); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset + when REG_XOFF_TOTAL_DURATION13 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (13); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset + when REG_XOFF_COUNT13 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (13); -- Total number of XOFF events per channel that occurred since a reset. + when REG_XOFF_PEAK_DURATION14 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (14); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset + when REG_XOFF_TOTAL_DURATION14 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (14); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset + when REG_XOFF_COUNT14 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (14); -- Total number of XOFF events per channel that occurred since a reset. + when REG_XOFF_PEAK_DURATION15 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (15); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset + when REG_XOFF_TOTAL_DURATION15 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (15); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset + when REG_XOFF_COUNT15 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (15); -- Total number of XOFF events per channel that occurred since a reset. + when REG_XOFF_PEAK_DURATION16 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (16); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset + when REG_XOFF_TOTAL_DURATION16 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (16); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset + when REG_XOFF_COUNT16 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (16); -- Total number of XOFF events per channel that occurred since a reset. + when REG_XOFF_PEAK_DURATION17 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (17); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset + when REG_XOFF_TOTAL_DURATION17 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (17); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset + when REG_XOFF_COUNT17 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (17); -- Total number of XOFF events per channel that occurred since a reset. + when REG_XOFF_PEAK_DURATION18 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (18); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset + when REG_XOFF_TOTAL_DURATION18 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (18); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset + when REG_XOFF_COUNT18 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (18); -- Total number of XOFF events per channel that occurred since a reset. + when REG_XOFF_PEAK_DURATION19 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (19); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset + when REG_XOFF_TOTAL_DURATION19 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (19); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset + when REG_XOFF_COUNT19 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (19); -- Total number of XOFF events per channel that occurred since a reset. + when REG_XOFF_PEAK_DURATION20 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (20); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset + when REG_XOFF_TOTAL_DURATION20 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (20); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset + when REG_XOFF_COUNT20 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (20); -- Total number of XOFF events per channel that occurred since a reset. + when REG_XOFF_PEAK_DURATION21 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (21); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset + when REG_XOFF_TOTAL_DURATION21 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (21); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset + when REG_XOFF_COUNT21 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (21); -- Total number of XOFF events per channel that occurred since a reset. + when REG_XOFF_PEAK_DURATION22 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (22); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset + when REG_XOFF_TOTAL_DURATION22 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (22); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset + when REG_XOFF_COUNT22 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (22); -- Total number of XOFF events per channel that occurred since a reset. + when REG_XOFF_PEAK_DURATION23 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_PEAK_DURATION (23); -- Maximum occurred duration of XOFF on the given channel in 25ns bins since reset + when REG_XOFF_TOTAL_DURATION23 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_TOTAL_DURATION (23); -- Total occurred duration of XOFF on the given channel in 25ns bins, divide by number of Xoffs to calculate the average since reset + when REG_XOFF_COUNT23 => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_xoff_monitor.XOFF_COUNT (23); -- Total number of XOFF events per channel that occurred since a reset. + +-- HouseKeepingControlsAndMonitors + when REG_LMK_LOCKED => register_read_data_25_s(0 downto 0) <= register_map_monitor_s.register_map_hk_monitor.LMK_LOCKED; -- LMK Chip on BNL-711 locked + when REG_FPGA_CORE_TEMP => register_read_data_25_s(11 downto 0) <= register_map_monitor_s.register_map_hk_monitor.FPGA_CORE_TEMP; -- XADC temperature monitor for the FPGA CORE + -- for FLX709, FLX710 + -- temp (C)= ((FPGA_CORE_TEMP* 503.975)/4096)-273.15 + -- for FLX711 + -- temp (C)= ((FPGA_CORE_TEMP* 502.9098)/4096)-273.8195 + + when REG_FPGA_CORE_VCCINT => register_read_data_25_s(11 downto 0) <= register_map_monitor_s.register_map_hk_monitor.FPGA_CORE_VCCINT; -- XADC voltage measurement VCCINT = (FPGA_CORE_VCCINT *3.0)/4096 + when REG_FPGA_CORE_VCCAUX => register_read_data_25_s(11 downto 0) <= register_map_monitor_s.register_map_hk_monitor.FPGA_CORE_VCCAUX; -- XADC voltage measurement VCCAUX = (FPGA_CORE_VCCAUX *3.0)/4096 + when REG_FPGA_CORE_VCCBRAM => register_read_data_25_s(11 downto 0) <= register_map_monitor_s.register_map_hk_monitor.FPGA_CORE_VCCBRAM; -- XADC voltage measurement VCCBRAM = (FPGA_CORE_VCCBRAM *3.0)/4096 + when REG_FPGA_DNA => register_read_data_25_s(63 downto 0) <= register_map_monitor_s.register_map_hk_monitor.FPGA_DNA; -- Unique identifier of the FPGA + when REG_CONFIG_FLASH_RD => register_read_data_25_s(19 downto 18) <= register_map_monitor_s.register_map_hk_monitor.CONFIG_FLASH_RD.PAR_RD; -- Show which Flash partition is selected. + register_read_data_25_s(17 downto 17) <= register_map_monitor_s.register_map_hk_monitor.CONFIG_FLASH_RD.FLASH_REQ_DONE; -- Request done + register_read_data_25_s(16 downto 16) <= register_map_monitor_s.register_map_hk_monitor.CONFIG_FLASH_RD.FLASH_BUSY; -- Flash operation busy + register_read_data_25_s(15 downto 0) <= register_map_monitor_s.register_map_hk_monitor.CONFIG_FLASH_RD.READ_DATA; -- Value of data read from flash + when REG_SI5324_STATUS => register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_hk_monitor.SI5324_STATUS.LOL; -- Loss of Lock Si5324 + register_read_data_25_s(8 downto 0) <= register_map_monitor_s.register_map_hk_monitor.SI5324_STATUS.LOS; -- Loss of Signal Si5324 + when REG_TACH_CNT => register_read_data_25_s(19 downto 0) <= register_map_monitor_s.register_map_hk_monitor.TACH_CNT; -- Readout of the Fan tachometer speed of the BNL712 board + +-- Generators + when REG_FELIG_MON_TTC_0_00 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (0).L1ID; -- Live TTC data monitor. + register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (0).XL1ID; -- Live TTC data monitor. + register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (0).BCID; -- Live TTC data monitor. + register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (0).RESERVED0; -- Live TTC data monitor. + register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (0).LEN; -- Live TTC data monitor. + register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (0).FMT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_0_01 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (1).L1ID; -- Live TTC data monitor. + register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (1).XL1ID; -- Live TTC data monitor. + register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (1).BCID; -- Live TTC data monitor. + register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (1).RESERVED0; -- Live TTC data monitor. + register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (1).LEN; -- Live TTC data monitor. + register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (1).FMT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_0_02 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (2).L1ID; -- Live TTC data monitor. + register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (2).XL1ID; -- Live TTC data monitor. + register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (2).BCID; -- Live TTC data monitor. + register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (2).RESERVED0; -- Live TTC data monitor. + register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (2).LEN; -- Live TTC data monitor. + register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (2).FMT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_0_03 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (3).L1ID; -- Live TTC data monitor. + register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (3).XL1ID; -- Live TTC data monitor. + register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (3).BCID; -- Live TTC data monitor. + register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (3).RESERVED0; -- Live TTC data monitor. + register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (3).LEN; -- Live TTC data monitor. + register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (3).FMT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_0_04 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (4).L1ID; -- Live TTC data monitor. + register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (4).XL1ID; -- Live TTC data monitor. + register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (4).BCID; -- Live TTC data monitor. + register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (4).RESERVED0; -- Live TTC data monitor. + register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (4).LEN; -- Live TTC data monitor. + register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (4).FMT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_0_05 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (5).L1ID; -- Live TTC data monitor. + register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (5).XL1ID; -- Live TTC data monitor. + register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (5).BCID; -- Live TTC data monitor. + register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (5).RESERVED0; -- Live TTC data monitor. + register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (5).LEN; -- Live TTC data monitor. + register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (5).FMT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_0_06 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (6).L1ID; -- Live TTC data monitor. + register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (6).XL1ID; -- Live TTC data monitor. + register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (6).BCID; -- Live TTC data monitor. + register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (6).RESERVED0; -- Live TTC data monitor. + register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (6).LEN; -- Live TTC data monitor. + register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (6).FMT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_0_07 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (7).L1ID; -- Live TTC data monitor. + register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (7).XL1ID; -- Live TTC data monitor. + register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (7).BCID; -- Live TTC data monitor. + register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (7).RESERVED0; -- Live TTC data monitor. + register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (7).LEN; -- Live TTC data monitor. + register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (7).FMT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_0_08 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (8).L1ID; -- Live TTC data monitor. + register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (8).XL1ID; -- Live TTC data monitor. + register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (8).BCID; -- Live TTC data monitor. + register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (8).RESERVED0; -- Live TTC data monitor. + register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (8).LEN; -- Live TTC data monitor. + register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (8).FMT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_0_09 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (9).L1ID; -- Live TTC data monitor. + register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (9).XL1ID; -- Live TTC data monitor. + register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (9).BCID; -- Live TTC data monitor. + register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (9).RESERVED0; -- Live TTC data monitor. + register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (9).LEN; -- Live TTC data monitor. + register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (9).FMT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_0_10 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (10).L1ID; -- Live TTC data monitor. + register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (10).XL1ID; -- Live TTC data monitor. + register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (10).BCID; -- Live TTC data monitor. + register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (10).RESERVED0; -- Live TTC data monitor. + register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (10).LEN; -- Live TTC data monitor. + register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (10).FMT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_0_11 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (11).L1ID; -- Live TTC data monitor. + register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (11).XL1ID; -- Live TTC data monitor. + register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (11).BCID; -- Live TTC data monitor. + register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (11).RESERVED0; -- Live TTC data monitor. + register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (11).LEN; -- Live TTC data monitor. + register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (11).FMT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_0_12 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (12).L1ID; -- Live TTC data monitor. + register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (12).XL1ID; -- Live TTC data monitor. + register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (12).BCID; -- Live TTC data monitor. + register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (12).RESERVED0; -- Live TTC data monitor. + register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (12).LEN; -- Live TTC data monitor. + register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (12).FMT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_0_13 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (13).L1ID; -- Live TTC data monitor. + register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (13).XL1ID; -- Live TTC data monitor. + register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (13).BCID; -- Live TTC data monitor. + register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (13).RESERVED0; -- Live TTC data monitor. + register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (13).LEN; -- Live TTC data monitor. + register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (13).FMT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_0_14 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (14).L1ID; -- Live TTC data monitor. + register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (14).XL1ID; -- Live TTC data monitor. + register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (14).BCID; -- Live TTC data monitor. + register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (14).RESERVED0; -- Live TTC data monitor. + register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (14).LEN; -- Live TTC data monitor. + register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (14).FMT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_0_15 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (15).L1ID; -- Live TTC data monitor. + register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (15).XL1ID; -- Live TTC data monitor. + register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (15).BCID; -- Live TTC data monitor. + register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (15).RESERVED0; -- Live TTC data monitor. + register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (15).LEN; -- Live TTC data monitor. + register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (15).FMT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_0_16 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (16).L1ID; -- Live TTC data monitor. + register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (16).XL1ID; -- Live TTC data monitor. + register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (16).BCID; -- Live TTC data monitor. + register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (16).RESERVED0; -- Live TTC data monitor. + register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (16).LEN; -- Live TTC data monitor. + register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (16).FMT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_0_17 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (17).L1ID; -- Live TTC data monitor. + register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (17).XL1ID; -- Live TTC data monitor. + register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (17).BCID; -- Live TTC data monitor. + register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (17).RESERVED0; -- Live TTC data monitor. + register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (17).LEN; -- Live TTC data monitor. + register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (17).FMT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_0_18 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (18).L1ID; -- Live TTC data monitor. + register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (18).XL1ID; -- Live TTC data monitor. + register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (18).BCID; -- Live TTC data monitor. + register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (18).RESERVED0; -- Live TTC data monitor. + register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (18).LEN; -- Live TTC data monitor. + register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (18).FMT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_0_19 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (19).L1ID; -- Live TTC data monitor. + register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (19).XL1ID; -- Live TTC data monitor. + register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (19).BCID; -- Live TTC data monitor. + register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (19).RESERVED0; -- Live TTC data monitor. + register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (19).LEN; -- Live TTC data monitor. + register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (19).FMT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_0_20 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (20).L1ID; -- Live TTC data monitor. + register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (20).XL1ID; -- Live TTC data monitor. + register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (20).BCID; -- Live TTC data monitor. + register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (20).RESERVED0; -- Live TTC data monitor. + register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (20).LEN; -- Live TTC data monitor. + register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (20).FMT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_0_21 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (21).L1ID; -- Live TTC data monitor. + register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (21).XL1ID; -- Live TTC data monitor. + register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (21).BCID; -- Live TTC data monitor. + register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (21).RESERVED0; -- Live TTC data monitor. + register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (21).LEN; -- Live TTC data monitor. + register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (21).FMT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_0_22 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (22).L1ID; -- Live TTC data monitor. + register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (22).XL1ID; -- Live TTC data monitor. + register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (22).BCID; -- Live TTC data monitor. + register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (22).RESERVED0; -- Live TTC data monitor. + register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (22).LEN; -- Live TTC data monitor. + register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (22).FMT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_0_23 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 40) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (23).L1ID; -- Live TTC data monitor. + register_read_data_25_s(39 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (23).XL1ID; -- Live TTC data monitor. + register_read_data_25_s(31 downto 20) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (23).BCID; -- Live TTC data monitor. + register_read_data_25_s(19 downto 16) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (23).RESERVED0; -- Live TTC data monitor. + register_read_data_25_s(15 downto 8) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (23).LEN; -- Live TTC data monitor. + register_read_data_25_s(7 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_0 (23).FMT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_1_00 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (0).RESERVED1; -- Live TTC data monitor. + register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (0).TRIGGER_TYPE; -- Live TTC data monitor. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (0).ORBIT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_1_01 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (1).RESERVED1; -- Live TTC data monitor. + register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (1).TRIGGER_TYPE; -- Live TTC data monitor. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (1).ORBIT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_1_02 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (2).RESERVED1; -- Live TTC data monitor. + register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (2).TRIGGER_TYPE; -- Live TTC data monitor. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (2).ORBIT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_1_03 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (3).RESERVED1; -- Live TTC data monitor. + register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (3).TRIGGER_TYPE; -- Live TTC data monitor. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (3).ORBIT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_1_04 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (4).RESERVED1; -- Live TTC data monitor. + register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (4).TRIGGER_TYPE; -- Live TTC data monitor. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (4).ORBIT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_1_05 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (5).RESERVED1; -- Live TTC data monitor. + register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (5).TRIGGER_TYPE; -- Live TTC data monitor. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (5).ORBIT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_1_06 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (6).RESERVED1; -- Live TTC data monitor. + register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (6).TRIGGER_TYPE; -- Live TTC data monitor. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (6).ORBIT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_1_07 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (7).RESERVED1; -- Live TTC data monitor. + register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (7).TRIGGER_TYPE; -- Live TTC data monitor. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (7).ORBIT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_1_08 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (8).RESERVED1; -- Live TTC data monitor. + register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (8).TRIGGER_TYPE; -- Live TTC data monitor. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (8).ORBIT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_1_09 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (9).RESERVED1; -- Live TTC data monitor. + register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (9).TRIGGER_TYPE; -- Live TTC data monitor. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (9).ORBIT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_1_10 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (10).RESERVED1; -- Live TTC data monitor. + register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (10).TRIGGER_TYPE; -- Live TTC data monitor. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (10).ORBIT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_1_11 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (11).RESERVED1; -- Live TTC data monitor. + register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (11).TRIGGER_TYPE; -- Live TTC data monitor. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (11).ORBIT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_1_12 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (12).RESERVED1; -- Live TTC data monitor. + register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (12).TRIGGER_TYPE; -- Live TTC data monitor. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (12).ORBIT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_1_13 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (13).RESERVED1; -- Live TTC data monitor. + register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (13).TRIGGER_TYPE; -- Live TTC data monitor. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (13).ORBIT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_1_14 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (14).RESERVED1; -- Live TTC data monitor. + register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (14).TRIGGER_TYPE; -- Live TTC data monitor. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (14).ORBIT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_1_15 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (15).RESERVED1; -- Live TTC data monitor. + register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (15).TRIGGER_TYPE; -- Live TTC data monitor. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (15).ORBIT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_1_16 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (16).RESERVED1; -- Live TTC data monitor. + register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (16).TRIGGER_TYPE; -- Live TTC data monitor. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (16).ORBIT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_1_17 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (17).RESERVED1; -- Live TTC data monitor. + register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (17).TRIGGER_TYPE; -- Live TTC data monitor. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (17).ORBIT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_1_18 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (18).RESERVED1; -- Live TTC data monitor. + register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (18).TRIGGER_TYPE; -- Live TTC data monitor. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (18).ORBIT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_1_19 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (19).RESERVED1; -- Live TTC data monitor. + register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (19).TRIGGER_TYPE; -- Live TTC data monitor. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (19).ORBIT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_1_20 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (20).RESERVED1; -- Live TTC data monitor. + register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (20).TRIGGER_TYPE; -- Live TTC data monitor. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (20).ORBIT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_1_21 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (21).RESERVED1; -- Live TTC data monitor. + register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (21).TRIGGER_TYPE; -- Live TTC data monitor. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (21).ORBIT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_1_22 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (22).RESERVED1; -- Live TTC data monitor. + register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (22).TRIGGER_TYPE; -- Live TTC data monitor. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (22).ORBIT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_TTC_1_23 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 48) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (23).RESERVED1; -- Live TTC data monitor. + register_read_data_25_s(47 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (23).TRIGGER_TYPE; -- Live TTC data monitor. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_TTC_1 (23).ORBIT; -- Live TTC data monitor. + end if; + when REG_FELIG_MON_COUNTERS_00 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (0).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (0).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. + end if; + when REG_FELIG_MON_COUNTERS_01 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (1).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (1).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. + end if; + when REG_FELIG_MON_COUNTERS_02 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (2).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (2).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. + end if; + when REG_FELIG_MON_COUNTERS_03 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (3).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (3).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. + end if; + when REG_FELIG_MON_COUNTERS_04 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (4).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (4).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. + end if; + when REG_FELIG_MON_COUNTERS_05 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (5).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (5).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. + end if; + when REG_FELIG_MON_COUNTERS_06 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (6).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (6).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. + end if; + when REG_FELIG_MON_COUNTERS_07 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (7).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (7).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. + end if; + when REG_FELIG_MON_COUNTERS_08 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (8).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (8).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. + end if; + when REG_FELIG_MON_COUNTERS_09 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (9).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (9).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. + end if; + when REG_FELIG_MON_COUNTERS_10 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (10).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (10).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. + end if; + when REG_FELIG_MON_COUNTERS_11 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (11).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (11).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. + end if; + when REG_FELIG_MON_COUNTERS_12 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (12).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (12).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. + end if; + when REG_FELIG_MON_COUNTERS_13 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (13).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (13).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. + end if; + when REG_FELIG_MON_COUNTERS_14 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (14).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (14).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. + end if; + when REG_FELIG_MON_COUNTERS_15 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (15).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (15).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. + end if; + when REG_FELIG_MON_COUNTERS_16 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (16).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (16).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. + end if; + when REG_FELIG_MON_COUNTERS_17 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (17).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (17).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. + end if; + when REG_FELIG_MON_COUNTERS_18 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (18).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (18).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. + end if; + when REG_FELIG_MON_COUNTERS_19 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (19).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (19).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. + end if; + when REG_FELIG_MON_COUNTERS_20 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (20).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (20).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. + end if; + when REG_FELIG_MON_COUNTERS_21 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (21).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (21).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. + end if; + when REG_FELIG_MON_COUNTERS_22 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (22).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (22).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. + end if; + when REG_FELIG_MON_COUNTERS_23 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (23).SLIDE_COUNT; -- Counts the number of rx slides commanded by the GBT logic. Should be static once a link is established. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_COUNTERS (23).FC_ERROR_COUNT; -- When FG_DATA_SELECT is 1, this counter reports the number of detected data errors. + end if; + when REG_FELIG_MON_FREQ_00 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (0).TX; -- FELIG regenerated TX clock frequency[Hz]. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (0).RX; -- FELIG recovered RX clock frequency[Hz]. + end if; + when REG_FELIG_MON_FREQ_01 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (1).TX; -- FELIG regenerated TX clock frequency[Hz]. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (1).RX; -- FELIG recovered RX clock frequency[Hz]. + end if; + when REG_FELIG_MON_FREQ_02 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (2).TX; -- FELIG regenerated TX clock frequency[Hz]. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (2).RX; -- FELIG recovered RX clock frequency[Hz]. + end if; + when REG_FELIG_MON_FREQ_03 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (3).TX; -- FELIG regenerated TX clock frequency[Hz]. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (3).RX; -- FELIG recovered RX clock frequency[Hz]. + end if; + when REG_FELIG_MON_FREQ_04 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (4).TX; -- FELIG regenerated TX clock frequency[Hz]. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (4).RX; -- FELIG recovered RX clock frequency[Hz]. + end if; + when REG_FELIG_MON_FREQ_05 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (5).TX; -- FELIG regenerated TX clock frequency[Hz]. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (5).RX; -- FELIG recovered RX clock frequency[Hz]. + end if; + when REG_FELIG_MON_FREQ_06 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (6).TX; -- FELIG regenerated TX clock frequency[Hz]. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (6).RX; -- FELIG recovered RX clock frequency[Hz]. + end if; + when REG_FELIG_MON_FREQ_07 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (7).TX; -- FELIG regenerated TX clock frequency[Hz]. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (7).RX; -- FELIG recovered RX clock frequency[Hz]. + end if; + when REG_FELIG_MON_FREQ_08 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (8).TX; -- FELIG regenerated TX clock frequency[Hz]. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (8).RX; -- FELIG recovered RX clock frequency[Hz]. + end if; + when REG_FELIG_MON_FREQ_09 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (9).TX; -- FELIG regenerated TX clock frequency[Hz]. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (9).RX; -- FELIG recovered RX clock frequency[Hz]. + end if; + when REG_FELIG_MON_FREQ_10 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (10).TX; -- FELIG regenerated TX clock frequency[Hz]. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (10).RX; -- FELIG recovered RX clock frequency[Hz]. + end if; + when REG_FELIG_MON_FREQ_11 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (11).TX; -- FELIG regenerated TX clock frequency[Hz]. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (11).RX; -- FELIG recovered RX clock frequency[Hz]. + end if; + when REG_FELIG_MON_FREQ_12 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (12).TX; -- FELIG regenerated TX clock frequency[Hz]. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (12).RX; -- FELIG recovered RX clock frequency[Hz]. + end if; + when REG_FELIG_MON_FREQ_13 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (13).TX; -- FELIG regenerated TX clock frequency[Hz]. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (13).RX; -- FELIG recovered RX clock frequency[Hz]. + end if; + when REG_FELIG_MON_FREQ_14 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (14).TX; -- FELIG regenerated TX clock frequency[Hz]. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (14).RX; -- FELIG recovered RX clock frequency[Hz]. + end if; + when REG_FELIG_MON_FREQ_15 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (15).TX; -- FELIG regenerated TX clock frequency[Hz]. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (15).RX; -- FELIG recovered RX clock frequency[Hz]. + end if; + when REG_FELIG_MON_FREQ_16 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (16).TX; -- FELIG regenerated TX clock frequency[Hz]. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (16).RX; -- FELIG recovered RX clock frequency[Hz]. + end if; + when REG_FELIG_MON_FREQ_17 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (17).TX; -- FELIG regenerated TX clock frequency[Hz]. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (17).RX; -- FELIG recovered RX clock frequency[Hz]. + end if; + when REG_FELIG_MON_FREQ_18 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (18).TX; -- FELIG regenerated TX clock frequency[Hz]. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (18).RX; -- FELIG recovered RX clock frequency[Hz]. + end if; + when REG_FELIG_MON_FREQ_19 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (19).TX; -- FELIG regenerated TX clock frequency[Hz]. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (19).RX; -- FELIG recovered RX clock frequency[Hz]. + end if; + when REG_FELIG_MON_FREQ_20 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (20).TX; -- FELIG regenerated TX clock frequency[Hz]. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (20).RX; -- FELIG recovered RX clock frequency[Hz]. + end if; + when REG_FELIG_MON_FREQ_21 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (21).TX; -- FELIG regenerated TX clock frequency[Hz]. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (21).RX; -- FELIG recovered RX clock frequency[Hz]. + end if; + when REG_FELIG_MON_FREQ_22 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (22).TX; -- FELIG regenerated TX clock frequency[Hz]. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (22).RX; -- FELIG recovered RX clock frequency[Hz]. + end if; + when REG_FELIG_MON_FREQ_23 => + if EMU_GENERATE_REGS then + register_read_data_25_s(63 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (23).TX; -- FELIG regenerated TX clock frequency[Hz]. + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_FREQ (23).RX; -- FELIG recovered RX clock frequency[Hz]. + end if; + when REG_FELIG_MON_L1A_ID_00 => + if EMU_GENERATE_REGS then + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (0); -- FELIG's last L1 ID. + end if; + when REG_FELIG_MON_L1A_ID_01 => + if EMU_GENERATE_REGS then + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (1); -- FELIG's last L1 ID. + end if; + when REG_FELIG_MON_L1A_ID_02 => + if EMU_GENERATE_REGS then + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (2); -- FELIG's last L1 ID. + end if; + when REG_FELIG_MON_L1A_ID_03 => + if EMU_GENERATE_REGS then + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (3); -- FELIG's last L1 ID. + end if; + when REG_FELIG_MON_L1A_ID_04 => + if EMU_GENERATE_REGS then + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (4); -- FELIG's last L1 ID. + end if; + when REG_FELIG_MON_L1A_ID_05 => + if EMU_GENERATE_REGS then + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (5); -- FELIG's last L1 ID. + end if; + when REG_FELIG_MON_L1A_ID_06 => + if EMU_GENERATE_REGS then + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (6); -- FELIG's last L1 ID. + end if; + when REG_FELIG_MON_L1A_ID_07 => + if EMU_GENERATE_REGS then + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (7); -- FELIG's last L1 ID. + end if; + when REG_FELIG_MON_L1A_ID_08 => + if EMU_GENERATE_REGS then + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (8); -- FELIG's last L1 ID. + end if; + when REG_FELIG_MON_L1A_ID_09 => + if EMU_GENERATE_REGS then + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (9); -- FELIG's last L1 ID. + end if; + when REG_FELIG_MON_L1A_ID_10 => + if EMU_GENERATE_REGS then + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (10); -- FELIG's last L1 ID. + end if; + when REG_FELIG_MON_L1A_ID_11 => + if EMU_GENERATE_REGS then + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (11); -- FELIG's last L1 ID. + end if; + when REG_FELIG_MON_L1A_ID_12 => + if EMU_GENERATE_REGS then + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (12); -- FELIG's last L1 ID. + end if; + when REG_FELIG_MON_L1A_ID_13 => + if EMU_GENERATE_REGS then + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (13); -- FELIG's last L1 ID. + end if; + when REG_FELIG_MON_L1A_ID_14 => + if EMU_GENERATE_REGS then + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (14); -- FELIG's last L1 ID. + end if; + when REG_FELIG_MON_L1A_ID_15 => + if EMU_GENERATE_REGS then + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (15); -- FELIG's last L1 ID. + end if; + when REG_FELIG_MON_L1A_ID_16 => + if EMU_GENERATE_REGS then + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (16); -- FELIG's last L1 ID. + end if; + when REG_FELIG_MON_L1A_ID_17 => + if EMU_GENERATE_REGS then + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (17); -- FELIG's last L1 ID. + end if; + when REG_FELIG_MON_L1A_ID_18 => + if EMU_GENERATE_REGS then + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (18); -- FELIG's last L1 ID. + end if; + when REG_FELIG_MON_L1A_ID_19 => + if EMU_GENERATE_REGS then + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (19); -- FELIG's last L1 ID. + end if; + when REG_FELIG_MON_L1A_ID_20 => + if EMU_GENERATE_REGS then + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (20); -- FELIG's last L1 ID. + end if; + when REG_FELIG_MON_L1A_ID_21 => + if EMU_GENERATE_REGS then + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (21); -- FELIG's last L1 ID. + end if; + when REG_FELIG_MON_L1A_ID_22 => + if EMU_GENERATE_REGS then + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (22); -- FELIG's last L1 ID. + end if; + when REG_FELIG_MON_L1A_ID_23 => + if EMU_GENERATE_REGS then + register_read_data_25_s(31 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_L1A_ID (23); -- FELIG's last L1 ID. + end if; + when REG_FELIG_MON_PICXO_00 => + if EMU_GENERATE_REGS then + register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (0).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. + register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (0).ERROR; -- Value indicates RX to TX frequency tracking error. + end if; + when REG_FELIG_MON_PICXO_01 => + if EMU_GENERATE_REGS then + register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (1).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. + register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (1).ERROR; -- Value indicates RX to TX frequency tracking error. + end if; + when REG_FELIG_MON_PICXO_02 => + if EMU_GENERATE_REGS then + register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (2).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. + register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (2).ERROR; -- Value indicates RX to TX frequency tracking error. + end if; + when REG_FELIG_MON_PICXO_03 => + if EMU_GENERATE_REGS then + register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (3).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. + register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (3).ERROR; -- Value indicates RX to TX frequency tracking error. + end if; + when REG_FELIG_MON_PICXO_04 => + if EMU_GENERATE_REGS then + register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (4).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. + register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (4).ERROR; -- Value indicates RX to TX frequency tracking error. + end if; + when REG_FELIG_MON_PICXO_05 => + if EMU_GENERATE_REGS then + register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (5).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. + register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (5).ERROR; -- Value indicates RX to TX frequency tracking error. + end if; + when REG_FELIG_MON_PICXO_06 => + if EMU_GENERATE_REGS then + register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (6).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. + register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (6).ERROR; -- Value indicates RX to TX frequency tracking error. + end if; + when REG_FELIG_MON_PICXO_07 => + if EMU_GENERATE_REGS then + register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (7).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. + register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (7).ERROR; -- Value indicates RX to TX frequency tracking error. + end if; + when REG_FELIG_MON_PICXO_08 => + if EMU_GENERATE_REGS then + register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (8).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. + register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (8).ERROR; -- Value indicates RX to TX frequency tracking error. + end if; + when REG_FELIG_MON_PICXO_09 => + if EMU_GENERATE_REGS then + register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (9).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. + register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (9).ERROR; -- Value indicates RX to TX frequency tracking error. + end if; + when REG_FELIG_MON_PICXO_10 => + if EMU_GENERATE_REGS then + register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (10).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. + register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (10).ERROR; -- Value indicates RX to TX frequency tracking error. + end if; + when REG_FELIG_MON_PICXO_11 => + if EMU_GENERATE_REGS then + register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (11).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. + register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (11).ERROR; -- Value indicates RX to TX frequency tracking error. + end if; + when REG_FELIG_MON_PICXO_12 => + if EMU_GENERATE_REGS then + register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (12).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. + register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (12).ERROR; -- Value indicates RX to TX frequency tracking error. + end if; + when REG_FELIG_MON_PICXO_13 => + if EMU_GENERATE_REGS then + register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (13).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. + register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (13).ERROR; -- Value indicates RX to TX frequency tracking error. + end if; + when REG_FELIG_MON_PICXO_14 => + if EMU_GENERATE_REGS then + register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (14).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. + register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (14).ERROR; -- Value indicates RX to TX frequency tracking error. + end if; + when REG_FELIG_MON_PICXO_15 => + if EMU_GENERATE_REGS then + register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (15).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. + register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (15).ERROR; -- Value indicates RX to TX frequency tracking error. + end if; + when REG_FELIG_MON_PICXO_16 => + if EMU_GENERATE_REGS then + register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (16).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. + register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (16).ERROR; -- Value indicates RX to TX frequency tracking error. + end if; + when REG_FELIG_MON_PICXO_17 => + if EMU_GENERATE_REGS then + register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (17).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. + register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (17).ERROR; -- Value indicates RX to TX frequency tracking error. + end if; + when REG_FELIG_MON_PICXO_18 => + if EMU_GENERATE_REGS then + register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (18).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. + register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (18).ERROR; -- Value indicates RX to TX frequency tracking error. + end if; + when REG_FELIG_MON_PICXO_19 => + if EMU_GENERATE_REGS then + register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (19).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. + register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (19).ERROR; -- Value indicates RX to TX frequency tracking error. + end if; + when REG_FELIG_MON_PICXO_20 => + if EMU_GENERATE_REGS then + register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (20).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. + register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (20).ERROR; -- Value indicates RX to TX frequency tracking error. + end if; + when REG_FELIG_MON_PICXO_21 => + if EMU_GENERATE_REGS then + register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (21).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. + register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (21).ERROR; -- Value indicates RX to TX frequency tracking error. + end if; + when REG_FELIG_MON_PICXO_22 => + if EMU_GENERATE_REGS then + register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (22).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. + register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (22).ERROR; -- Value indicates RX to TX frequency tracking error. + end if; + when REG_FELIG_MON_PICXO_23 => + if EMU_GENERATE_REGS then + register_read_data_25_s(53 downto 32) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (23).VLOT; -- Value indicates TX clock (recovered RX clock) to RX reference clock frequency offset. + register_read_data_25_s(20 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_PICXO (23).ERROR; -- Value indicates RX to TX frequency tracking error. + end if; + when REG_FELIG_MON_ITK_STRIPS_00 => + if EMU_GENERATE_REGS then + register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (0); -- data fifo status 2:write done 1:full 0:empty. + end if; + when REG_FELIG_MON_ITK_STRIPS_01 => + if EMU_GENERATE_REGS then + register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (1); -- data fifo status 2:write done 1:full 0:empty. + end if; + when REG_FELIG_MON_ITK_STRIPS_02 => + if EMU_GENERATE_REGS then + register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (2); -- data fifo status 2:write done 1:full 0:empty. + end if; + when REG_FELIG_MON_ITK_STRIPS_03 => + if EMU_GENERATE_REGS then + register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (3); -- data fifo status 2:write done 1:full 0:empty. + end if; + when REG_FELIG_MON_ITK_STRIPS_04 => + if EMU_GENERATE_REGS then + register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (4); -- data fifo status 2:write done 1:full 0:empty. + end if; + when REG_FELIG_MON_ITK_STRIPS_05 => + if EMU_GENERATE_REGS then + register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (5); -- data fifo status 2:write done 1:full 0:empty. + end if; + when REG_FELIG_MON_ITK_STRIPS_06 => + if EMU_GENERATE_REGS then + register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (6); -- data fifo status 2:write done 1:full 0:empty. + end if; + when REG_FELIG_MON_ITK_STRIPS_07 => + if EMU_GENERATE_REGS then + register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (7); -- data fifo status 2:write done 1:full 0:empty. + end if; + when REG_FELIG_MON_ITK_STRIPS_08 => + if EMU_GENERATE_REGS then + register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (8); -- data fifo status 2:write done 1:full 0:empty. + end if; + when REG_FELIG_MON_ITK_STRIPS_09 => + if EMU_GENERATE_REGS then + register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (9); -- data fifo status 2:write done 1:full 0:empty. + end if; + when REG_FELIG_MON_ITK_STRIPS_10 => + if EMU_GENERATE_REGS then + register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (10); -- data fifo status 2:write done 1:full 0:empty. + end if; + when REG_FELIG_MON_ITK_STRIPS_11 => + if EMU_GENERATE_REGS then + register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (11); -- data fifo status 2:write done 1:full 0:empty. + end if; + when REG_FELIG_MON_ITK_STRIPS_12 => + if EMU_GENERATE_REGS then + register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (12); -- data fifo status 2:write done 1:full 0:empty. + end if; + when REG_FELIG_MON_ITK_STRIPS_13 => + if EMU_GENERATE_REGS then + register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (13); -- data fifo status 2:write done 1:full 0:empty. + end if; + when REG_FELIG_MON_ITK_STRIPS_14 => + if EMU_GENERATE_REGS then + register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (14); -- data fifo status 2:write done 1:full 0:empty. + end if; + when REG_FELIG_MON_ITK_STRIPS_15 => + if EMU_GENERATE_REGS then + register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (15); -- data fifo status 2:write done 1:full 0:empty. + end if; + when REG_FELIG_MON_ITK_STRIPS_16 => + if EMU_GENERATE_REGS then + register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (16); -- data fifo status 2:write done 1:full 0:empty. + end if; + when REG_FELIG_MON_ITK_STRIPS_17 => + if EMU_GENERATE_REGS then + register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (17); -- data fifo status 2:write done 1:full 0:empty. + end if; + when REG_FELIG_MON_ITK_STRIPS_18 => + if EMU_GENERATE_REGS then + register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (18); -- data fifo status 2:write done 1:full 0:empty. + end if; + when REG_FELIG_MON_ITK_STRIPS_19 => + if EMU_GENERATE_REGS then + register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (19); -- data fifo status 2:write done 1:full 0:empty. + end if; + when REG_FELIG_MON_ITK_STRIPS_20 => + if EMU_GENERATE_REGS then + register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (20); -- data fifo status 2:write done 1:full 0:empty. + end if; + when REG_FELIG_MON_ITK_STRIPS_21 => + if EMU_GENERATE_REGS then + register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (21); -- data fifo status 2:write done 1:full 0:empty. + end if; + when REG_FELIG_MON_ITK_STRIPS_22 => + if EMU_GENERATE_REGS then + register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (22); -- data fifo status 2:write done 1:full 0:empty. + end if; + when REG_FELIG_MON_ITK_STRIPS_23 => + if EMU_GENERATE_REGS then + register_read_data_25_s(2 downto 0) <= register_map_monitor_s.register_map_generators.FELIG_MON_ITK_STRIPS (23); -- data fifo status 2:write done 1:full 0:empty. + end if; + +-- Wishbone + when REG_WISHBONE_STATUS => register_read_data_25_s(4 downto 4) <= register_map_monitor_s.wishbone_monitor.WISHBONE_STATUS.INT; -- interrupt + register_read_data_25_s(3 downto 3) <= register_map_monitor_s.wishbone_monitor.WISHBONE_STATUS.RETRY; -- Interface is not ready to accept data cycle should be retried + register_read_data_25_s(2 downto 2) <= register_map_monitor_s.wishbone_monitor.WISHBONE_STATUS.STALL; -- When pipelined mode slave can't accept additional transactions in its queue + register_read_data_25_s(1 downto 1) <= register_map_monitor_s.wishbone_monitor.WISHBONE_STATUS.ACKNOWLEDGE; -- Indicates the termination of a normal bus cycle + register_read_data_25_s(0 downto 0) <= register_map_monitor_s.wishbone_monitor.WISHBONE_STATUS.ERROR; -- Address not mapped by the crossbar + +-- MRODmonitors + when REG_MROD_EP0_CSMH_EMPTY => + if MROD_GENERATE_REGS = true then + register_read_data_25_s(23 downto 0) <= register_map_monitor_s.regmap_mrod_monitor.MROD_EP0_CSMH_EMPTY; -- CSM Handler FIFO Empty 23-0 + end if; + when REG_MROD_EP0_CSMH_FULL => + if MROD_GENERATE_REGS = true then + register_read_data_25_s(23 downto 0) <= register_map_monitor_s.regmap_mrod_monitor.MROD_EP0_CSMH_FULL; -- CSM Handler FIFO Full 23-0 + end if; + when REG_MROD_EP0_RXLOCKED => + if MROD_GENERATE_REGS = true then + register_read_data_25_s(23 downto 0) <= register_map_monitor_s.regmap_mrod_monitor.MROD_EP0_RXLOCKED; -- EP0 Receiver Locked monitor 23-0 + end if; + when REG_MROD_EP0_TXLOCKED => + if MROD_GENERATE_REGS = true then + register_read_data_25_s(23 downto 0) <= register_map_monitor_s.regmap_mrod_monitor.MROD_EP0_TXLOCKED; -- EP0 Transmitter Locked monitor 23-0 + end if; + when REG_MROD_EP1_CSMH_EMPTY => + if MROD_GENERATE_REGS = true then + register_read_data_25_s(23 downto 0) <= register_map_monitor_s.regmap_mrod_monitor.MROD_EP1_CSMH_EMPTY; -- CSM Handler FIFO Empty 23-0 + end if; + when REG_MROD_EP1_CSMH_FULL => + if MROD_GENERATE_REGS = true then + register_read_data_25_s(23 downto 0) <= register_map_monitor_s.regmap_mrod_monitor.MROD_EP1_CSMH_FULL; -- CSM Handler FIFO Full 23-0 + end if; + when REG_MROD_EP1_RXLOCKED => + if MROD_GENERATE_REGS = true then + register_read_data_25_s(23 downto 0) <= register_map_monitor_s.regmap_mrod_monitor.MROD_EP1_RXLOCKED; -- EP1 Receiver Locked monitor 23-0 + end if; + when REG_MROD_EP1_TXLOCKED => + if MROD_GENERATE_REGS = true then + register_read_data_25_s(23 downto 0) <= register_map_monitor_s.regmap_mrod_monitor.MROD_EP1_TXLOCKED; -- EP1 Transmitter Locked monitor 23-0 + end if; + ----------------------------------- + ---- GENERATED code END #3 ## ---- + ----------------------------------- + when others => register_read_data_25_s <= (others => '0'); + end case; + else --None of BAR0, BAR1 or BAR2 selected + register_read_data_25_s <= (others => '0'); + end if; + end if; + + register_write_done_25_s <= '0'; + if(register_write_enable_25_s = '1') then + --! Apply byte enable and word enable to Register writes + register_write_data_25_v := register_read_data_25_s; + + case (register_word_address_25_s(3 downto 2)) is + when "00" => + case (dword_count_25_s(2 downto 0)) is --write 1 or 2 dwords + when "001" => + for i in 0 to 3 loop + if first_be_25_s(i) = '1' then + register_write_data_25_v(7+i*8 downto i*8) := register_write_data_25_nobe_s(7+i*8 downto i*8); + end if; + end loop; + when "010" => + for i in 0 to 3 loop + if first_be_25_s(i) = '1' then + register_write_data_25_v(7+i*8 downto i*8) := register_write_data_25_nobe_s(7+i*8 downto i*8); + end if; + end loop; + for i in 0 to 3 loop + if last_be_25_s(i) = '1' then + register_write_data_25_v(39+i*8 downto 32+i*8) := register_write_data_25_nobe_s(39+i*8 downto 32+i*8); + end if; + end loop; + when others => NULL; + end case; + when "01" => + for i in 0 to 3 loop + if first_be_25_s(i) = '1' then + register_write_data_25_v(39+i*8 downto 32+i*8) := register_write_data_25_nobe_s(7+i*8 downto i*8); + end if; + end loop; + when "10" => + case (dword_count_25_s(2 downto 0)) is --write 1 or 2 dwords + when "001" => + for i in 0 to 3 loop + if first_be_25_s(i) = '1' then + register_write_data_25_v(71+i*8 downto 64+i*8) := register_write_data_25_nobe_s(7+i*8 downto i*8); + end if; + end loop; + when "010" => + for i in 0 to 3 loop + if first_be_25_s(i) = '1' then + register_write_data_25_v(71+i*8 downto 64+i*8) := register_write_data_25_nobe_s(7+i*8 downto i*8); + end if; + end loop; + for i in 0 to 3 loop + if last_be_25_s(i) = '1' then + register_write_data_25_v(103+i*8 downto 96+i*8) := register_write_data_25_nobe_s(39+i*8 downto 32+i*8); + end if; + end loop; + when others => NULL; + end case; + when "11" => + for i in 0 to 3 loop + if first_be_25_s(i) = '1' then + register_write_data_25_v(103+i*8 downto 96+i*8) := register_write_data_25_nobe_s(7+i*8 downto i*8); + end if; + end loop; + when others => NULL; + end case; + + --! End byte enable / word enable + + + register_write_done_25_s <= '1'; + --Write registers in BAR0 + if(bar_id_25_s = "000") then + register_write_address_v := register_write_address_25_s(19 downto 4)&"0000"; + case(register_write_address_v) is + when REG_DESCRIPTOR_0 => dma_descriptors_25_w_s( 0).end_address <= register_write_data_25_v(127 downto 64); + dma_descriptors_25_w_s( 0).start_address <= register_write_data_25_v(63 downto 0); + when REG_DESCRIPTOR_0a => dma_descriptors_25_w_s( 0).pc_pointer <= register_write_data_25_v(127 downto 64); + dma_descriptors_25_w_s( 0).wrap_around <= register_write_data_25_v(12); + --dma_descriptors_25_w_s( 0).read_not_write <= register_write_data_25_v(11); + dma_descriptors_25_w_s( 0).dword_count <= register_write_data_25_v(10 downto 0); + when REG_DESCRIPTOR_1 => dma_descriptors_25_w_s( 1).end_address <= register_write_data_25_v(127 downto 64); + dma_descriptors_25_w_s( 1).start_address <= register_write_data_25_v(63 downto 0); + when REG_DESCRIPTOR_1a => dma_descriptors_25_w_s( 1).pc_pointer <= register_write_data_25_v(127 downto 64); + dma_descriptors_25_w_s( 1).wrap_around <= register_write_data_25_v(12); + --dma_descriptors_25_w_s( 1).read_not_write <= register_write_data_25_v(11); + dma_descriptors_25_w_s( 1).dword_count <= register_write_data_25_v(10 downto 0); + when REG_DESCRIPTOR_2 => dma_descriptors_25_w_s( 2).end_address <= register_write_data_25_v(127 downto 64); + dma_descriptors_25_w_s( 2).start_address <= register_write_data_25_v(63 downto 0); + when REG_DESCRIPTOR_2a => dma_descriptors_25_w_s( 2).pc_pointer <= register_write_data_25_v(127 downto 64); + dma_descriptors_25_w_s( 2).wrap_around <= register_write_data_25_v(12); + --dma_descriptors_25_w_s( 2).read_not_write <= register_write_data_25_v(11); + dma_descriptors_25_w_s( 2).dword_count <= register_write_data_25_v(10 downto 0); + when REG_DESCRIPTOR_3 => dma_descriptors_25_w_s( 3).end_address <= register_write_data_25_v(127 downto 64); + dma_descriptors_25_w_s( 3).start_address <= register_write_data_25_v(63 downto 0); + when REG_DESCRIPTOR_3a => dma_descriptors_25_w_s( 3).pc_pointer <= register_write_data_25_v(127 downto 64); + dma_descriptors_25_w_s( 3).wrap_around <= register_write_data_25_v(12); + --dma_descriptors_25_w_s( 3).read_not_write <= register_write_data_25_v(11); + dma_descriptors_25_w_s( 3).dword_count <= register_write_data_25_v(10 downto 0); + when REG_DESCRIPTOR_4 => dma_descriptors_25_w_s( 4).end_address <= register_write_data_25_v(127 downto 64); + dma_descriptors_25_w_s( 4).start_address <= register_write_data_25_v(63 downto 0); + when REG_DESCRIPTOR_4a => dma_descriptors_25_w_s( 4).pc_pointer <= register_write_data_25_v(127 downto 64); + dma_descriptors_25_w_s( 4).wrap_around <= register_write_data_25_v(12); + --dma_descriptors_25_w_s( 4).read_not_write <= register_write_data_25_v(11); + dma_descriptors_25_w_s( 4).dword_count <= register_write_data_25_v(10 downto 0); + when REG_DESCRIPTOR_5 => dma_descriptors_25_w_s( 5).end_address <= register_write_data_25_v(127 downto 64); + dma_descriptors_25_w_s( 5).start_address <= register_write_data_25_v(63 downto 0); + when REG_DESCRIPTOR_5a => dma_descriptors_25_w_s( 5).pc_pointer <= register_write_data_25_v(127 downto 64); + dma_descriptors_25_w_s( 5).wrap_around <= register_write_data_25_v(12); + --dma_descriptors_25_w_s( 5).read_not_write <= register_write_data_25_v(11); + dma_descriptors_25_w_s( 5).dword_count <= register_write_data_25_v(10 downto 0); + when REG_DESCRIPTOR_6 => dma_descriptors_25_w_s( 6).end_address <= register_write_data_25_v(127 downto 64); + dma_descriptors_25_w_s( 6).start_address <= register_write_data_25_v(63 downto 0); + when REG_DESCRIPTOR_6a => dma_descriptors_25_w_s( 6).pc_pointer <= register_write_data_25_v(127 downto 64); + dma_descriptors_25_w_s( 6).wrap_around <= register_write_data_25_v(12); + --dma_descriptors_25_w_s( 6).read_not_write <= register_write_data_25_v(11); + dma_descriptors_25_w_s( 6).dword_count <= register_write_data_25_v(10 downto 0); + when REG_DESCRIPTOR_7 => dma_descriptors_25_w_s( 7).end_address <= register_write_data_25_v(127 downto 64); + dma_descriptors_25_w_s( 7).start_address <= register_write_data_25_v(63 downto 0); + when REG_DESCRIPTOR_7a => dma_descriptors_25_w_s( 7).pc_pointer <= register_write_data_25_v(127 downto 64); + dma_descriptors_25_w_s( 7).wrap_around <= register_write_data_25_v(12); + --dma_descriptors_25_w_s( 7).read_not_write <= register_write_data_25_v(11); + dma_descriptors_25_w_s( 7).dword_count <= register_write_data_25_v(10 downto 0); + when REG_DESCRIPTOR_ENABLE => for i in 0 to (NUMBER_OF_DESCRIPTORS-1) loop + dma_descriptors_25_w_s(i).enable <= register_write_data_25_v(i); + end loop; + dma_descriptors_enable_written_25_s <= '1'; + when REG_FIFO_FLUSH => flush_fifo_25_s <= '1'; + when REG_DMA_RESET => dma_soft_reset_25_s <= '1'; + when REG_SOFT_RESET => reset_global_soft_25_s <= '1'; + when REG_REGISTER_RESET => reset_register_map_s <= '1'; + when REG_FROMHOST_FULL_THRESH => fromhost_pfull_threshold_assert_s <= register_write_data_25_v(24 downto 16); + fromhost_pfull_threshold_negate_s <= register_write_data_25_v( 8 downto 0); + when REG_TOHOST_FULL_THRESH => tohost_pfull_threshold_assert_s <= register_write_data_25_v(27 downto 16); + tohost_pfull_threshold_negate_s <= register_write_data_25_v(11 downto 0); + when REG_BUSY_THRESH_ASSERT => busy_threshold_assert <= register_write_data_25_v(63 downto 0); + when REG_BUSY_THRESH_NEGATE => busy_threshold_negate <= register_write_data_25_v(63 downto 0); + when REG_PC_PTR_GAP => pc_ptr_gap_25_s <= register_write_data_25_v(63 downto 0); + when others => --do nothing + + end case; + --Write registers in BAR1 + elsif(bar_id_25_s = "001") then + register_write_address_v := register_write_address_25_s(19 downto 4)&"0000"; + case(register_write_address_v) is + when REG_INT_VEC_00 => int_vector_25_s(0).int_vec_add <= register_write_data_25_v(63 downto 0); + int_vector_25_s(0).int_vec_data <= register_write_data_25_v(95 downto 64); + int_vector_25_s(0).int_vec_ctrl <= register_write_data_25_v(127 downto 96); + when REG_INT_VEC_01 => int_vector_25_s(1).int_vec_add <= register_write_data_25_v(63 downto 0); + int_vector_25_s(1).int_vec_data <= register_write_data_25_v(95 downto 64); + int_vector_25_s(1).int_vec_ctrl <= register_write_data_25_v(127 downto 96); + when REG_INT_VEC_02 => int_vector_25_s(2).int_vec_add <= register_write_data_25_v(63 downto 0); + int_vector_25_s(2).int_vec_data <= register_write_data_25_v(95 downto 64); + int_vector_25_s(2).int_vec_ctrl <= register_write_data_25_v(127 downto 96); + when REG_INT_VEC_03 => int_vector_25_s(3).int_vec_add <= register_write_data_25_v(63 downto 0); + int_vector_25_s(3).int_vec_data <= register_write_data_25_v(95 downto 64); + int_vector_25_s(3).int_vec_ctrl <= register_write_data_25_v(127 downto 96); + when REG_INT_VEC_04 => int_vector_25_s(4).int_vec_add <= register_write_data_25_v(63 downto 0); + int_vector_25_s(4).int_vec_data <= register_write_data_25_v(95 downto 64); + int_vector_25_s(4).int_vec_ctrl <= register_write_data_25_v(127 downto 96); + when REG_INT_VEC_05 => int_vector_25_s(5).int_vec_add <= register_write_data_25_v(63 downto 0); + int_vector_25_s(5).int_vec_data <= register_write_data_25_v(95 downto 64); + int_vector_25_s(5).int_vec_ctrl <= register_write_data_25_v(127 downto 96); + when REG_INT_VEC_06 => int_vector_25_s(6).int_vec_add <= register_write_data_25_v(63 downto 0); + int_vector_25_s(6).int_vec_data <= register_write_data_25_v(95 downto 64); + int_vector_25_s(6).int_vec_ctrl <= register_write_data_25_v(127 downto 96); + when REG_INT_VEC_07 => int_vector_25_s(7).int_vec_add <= register_write_data_25_v(63 downto 0); + int_vector_25_s(7).int_vec_data <= register_write_data_25_v(95 downto 64); + int_vector_25_s(7).int_vec_ctrl <= register_write_data_25_v(127 downto 96); + when REG_INT_VEC_08 => int_vector_25_s(8).int_vec_add <= register_write_data_25_v(63 downto 0); + int_vector_25_s(8).int_vec_data <= register_write_data_25_v(95 downto 64); + int_vector_25_s(8).int_vec_ctrl <= register_write_data_25_v(127 downto 96); + when REG_INT_VEC_09 => int_vector_25_s(9).int_vec_add <= register_write_data_25_v(63 downto 0); + int_vector_25_s(9).int_vec_data <= register_write_data_25_v(95 downto 64); + int_vector_25_s(9).int_vec_ctrl <= register_write_data_25_v(127 downto 96); + when REG_INT_VEC_10 => int_vector_25_s(10).int_vec_add <= register_write_data_25_v(63 downto 0); + int_vector_25_s(10).int_vec_data <= register_write_data_25_v(95 downto 64); + int_vector_25_s(10).int_vec_ctrl <= register_write_data_25_v(127 downto 96); + when REG_INT_VEC_11 => int_vector_25_s(11).int_vec_add <= register_write_data_25_v(63 downto 0); + int_vector_25_s(11).int_vec_data <= register_write_data_25_v(95 downto 64); + int_vector_25_s(11).int_vec_ctrl <= register_write_data_25_v(127 downto 96); + when REG_INT_VEC_12 => int_vector_25_s(12).int_vec_add <= register_write_data_25_v(63 downto 0); + int_vector_25_s(12).int_vec_data <= register_write_data_25_v(95 downto 64); + int_vector_25_s(12).int_vec_ctrl <= register_write_data_25_v(127 downto 96); + when REG_INT_VEC_13 => int_vector_25_s(13).int_vec_add <= register_write_data_25_v(63 downto 0); + int_vector_25_s(13).int_vec_data <= register_write_data_25_v(95 downto 64); + int_vector_25_s(13).int_vec_ctrl <= register_write_data_25_v(127 downto 96); + when REG_INT_VEC_14 => int_vector_25_s(14).int_vec_add <= register_write_data_25_v(63 downto 0); + int_vector_25_s(14).int_vec_data <= register_write_data_25_v(95 downto 64); + int_vector_25_s(14).int_vec_ctrl <= register_write_data_25_v(127 downto 96); + when REG_INT_VEC_15 => int_vector_25_s(15).int_vec_add <= register_write_data_25_v(63 downto 0); + int_vector_25_s(15).int_vec_data <= register_write_data_25_v(95 downto 64); + int_vector_25_s(15).int_vec_ctrl <= register_write_data_25_v(127 downto 96); + when REG_INT_TAB_EN => int_table_en_s <= register_write_data_25_v(NUMBER_OF_INTERRUPTS-1 downto 0); + when others => + end case; + --Write registers in BAR2 + elsif(bar_id_25_s = "010") then + register_write_address_v := register_write_address_25_s(19 downto 4)&"0000"; + case(register_write_address_v) is + --! + --! generated registers write + ------------------------------------- + ---- ## GENERATED code BEGIN #4 ---- + ------------------------------------- + when REG_STATUS_LEDS => register_map_control_s.STATUS_LEDS <= register_write_data_25_v(7 downto 0); -- Board GPIO Leds + when REG_TIMEOUT_CTRL => register_map_control_s.TIMEOUT_CTRL.ENABLE <= register_write_data_25_v(32 downto 32); -- 1 enables the timout trailer generation for ToHost mode + register_map_control_s.TIMEOUT_CTRL.TIMEOUT <= register_write_data_25_v(31 downto 0); -- Number of 40 MHz clock cycles after which a timeout occurs. + when REG_CRTOHOST_FIFO_STATUS => register_map_control_s.CRTOHOST_FIFO_STATUS.CLEAR <= "1"; -- Any write to this register clears the latched FULL flags + when REG_CRFROMHOST_FIFO_STATUS => register_map_control_s.CRFROMHOST_FIFO_STATUS.CLEAR <= "1"; -- Any write to this register clears the latched FULL flags + when REG_BROADCAST_ENABLE_00 => + if GBT_NUM > 0 then + register_map_control_s.BROADCAST_ENABLE (0) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. end if; - when REG_FELIG_DATA_GEN_CONFIG_13 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_DATA_GEN_CONFIG (13).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. - register_map_control_s.FELIG_DATA_GEN_CONFIG (13).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. - register_map_control_s.FELIG_DATA_GEN_CONFIG (13).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_map_control_s.FELIG_DATA_GEN_CONFIG (13).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_map_control_s.FELIG_DATA_GEN_CONFIG (13).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. - register_map_control_s.FELIG_DATA_GEN_CONFIG (13).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + when REG_BROADCAST_ENABLE_01 => + if GBT_NUM > 1 then + register_map_control_s.BROADCAST_ENABLE (1) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. end if; - when REG_FELIG_DATA_GEN_CONFIG_14 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_DATA_GEN_CONFIG (14).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. - register_map_control_s.FELIG_DATA_GEN_CONFIG (14).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. - register_map_control_s.FELIG_DATA_GEN_CONFIG (14).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_map_control_s.FELIG_DATA_GEN_CONFIG (14).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_map_control_s.FELIG_DATA_GEN_CONFIG (14).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. - register_map_control_s.FELIG_DATA_GEN_CONFIG (14).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + when REG_BROADCAST_ENABLE_02 => + if GBT_NUM > 2 then + register_map_control_s.BROADCAST_ENABLE (2) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. end if; - when REG_FELIG_DATA_GEN_CONFIG_15 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_DATA_GEN_CONFIG (15).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. - register_map_control_s.FELIG_DATA_GEN_CONFIG (15).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. - register_map_control_s.FELIG_DATA_GEN_CONFIG (15).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_map_control_s.FELIG_DATA_GEN_CONFIG (15).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_map_control_s.FELIG_DATA_GEN_CONFIG (15).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. - register_map_control_s.FELIG_DATA_GEN_CONFIG (15).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + when REG_BROADCAST_ENABLE_03 => + if GBT_NUM > 3 then + register_map_control_s.BROADCAST_ENABLE (3) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. end if; - when REG_FELIG_DATA_GEN_CONFIG_16 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_DATA_GEN_CONFIG (16).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. - register_map_control_s.FELIG_DATA_GEN_CONFIG (16).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. - register_map_control_s.FELIG_DATA_GEN_CONFIG (16).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_map_control_s.FELIG_DATA_GEN_CONFIG (16).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_map_control_s.FELIG_DATA_GEN_CONFIG (16).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. - register_map_control_s.FELIG_DATA_GEN_CONFIG (16).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + when REG_BROADCAST_ENABLE_04 => + if GBT_NUM > 4 then + register_map_control_s.BROADCAST_ENABLE (4) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. end if; - when REG_FELIG_DATA_GEN_CONFIG_17 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_DATA_GEN_CONFIG (17).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. - register_map_control_s.FELIG_DATA_GEN_CONFIG (17).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. - register_map_control_s.FELIG_DATA_GEN_CONFIG (17).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_map_control_s.FELIG_DATA_GEN_CONFIG (17).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_map_control_s.FELIG_DATA_GEN_CONFIG (17).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. - register_map_control_s.FELIG_DATA_GEN_CONFIG (17).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + when REG_BROADCAST_ENABLE_05 => + if GBT_NUM > 5 then + register_map_control_s.BROADCAST_ENABLE (5) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. end if; - when REG_FELIG_DATA_GEN_CONFIG_18 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_DATA_GEN_CONFIG (18).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. - register_map_control_s.FELIG_DATA_GEN_CONFIG (18).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. - register_map_control_s.FELIG_DATA_GEN_CONFIG (18).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_map_control_s.FELIG_DATA_GEN_CONFIG (18).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_map_control_s.FELIG_DATA_GEN_CONFIG (18).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. - register_map_control_s.FELIG_DATA_GEN_CONFIG (18).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + when REG_BROADCAST_ENABLE_06 => + if GBT_NUM > 6 then + register_map_control_s.BROADCAST_ENABLE (6) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. end if; - when REG_FELIG_DATA_GEN_CONFIG_19 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_DATA_GEN_CONFIG (19).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. - register_map_control_s.FELIG_DATA_GEN_CONFIG (19).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. - register_map_control_s.FELIG_DATA_GEN_CONFIG (19).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_map_control_s.FELIG_DATA_GEN_CONFIG (19).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_map_control_s.FELIG_DATA_GEN_CONFIG (19).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. - register_map_control_s.FELIG_DATA_GEN_CONFIG (19).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + when REG_BROADCAST_ENABLE_07 => + if GBT_NUM > 7 then + register_map_control_s.BROADCAST_ENABLE (7) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. end if; - when REG_FELIG_DATA_GEN_CONFIG_20 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_DATA_GEN_CONFIG (20).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. - register_map_control_s.FELIG_DATA_GEN_CONFIG (20).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. - register_map_control_s.FELIG_DATA_GEN_CONFIG (20).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_map_control_s.FELIG_DATA_GEN_CONFIG (20).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_map_control_s.FELIG_DATA_GEN_CONFIG (20).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. - register_map_control_s.FELIG_DATA_GEN_CONFIG (20).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + when REG_BROADCAST_ENABLE_08 => + if GBT_NUM > 8 then + register_map_control_s.BROADCAST_ENABLE (8) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. end if; - when REG_FELIG_DATA_GEN_CONFIG_21 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_DATA_GEN_CONFIG (21).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. - register_map_control_s.FELIG_DATA_GEN_CONFIG (21).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. - register_map_control_s.FELIG_DATA_GEN_CONFIG (21).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_map_control_s.FELIG_DATA_GEN_CONFIG (21).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_map_control_s.FELIG_DATA_GEN_CONFIG (21).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. - register_map_control_s.FELIG_DATA_GEN_CONFIG (21).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + when REG_BROADCAST_ENABLE_09 => + if GBT_NUM > 9 then + register_map_control_s.BROADCAST_ENABLE (9) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. end if; - when REG_FELIG_DATA_GEN_CONFIG_22 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_DATA_GEN_CONFIG (22).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. - register_map_control_s.FELIG_DATA_GEN_CONFIG (22).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. - register_map_control_s.FELIG_DATA_GEN_CONFIG (22).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_map_control_s.FELIG_DATA_GEN_CONFIG (22).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_map_control_s.FELIG_DATA_GEN_CONFIG (22).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. - register_map_control_s.FELIG_DATA_GEN_CONFIG (22).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + when REG_BROADCAST_ENABLE_10 => + if GBT_NUM > 10 then + register_map_control_s.BROADCAST_ENABLE (10) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. end if; - when REG_FELIG_DATA_GEN_CONFIG_23 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_DATA_GEN_CONFIG (23).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. - register_map_control_s.FELIG_DATA_GEN_CONFIG (23).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. - register_map_control_s.FELIG_DATA_GEN_CONFIG (23).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. - register_map_control_s.FELIG_DATA_GEN_CONFIG (23).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. - register_map_control_s.FELIG_DATA_GEN_CONFIG (23).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. - register_map_control_s.FELIG_DATA_GEN_CONFIG (23).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + when REG_BROADCAST_ENABLE_11 => + if GBT_NUM > 11 then + register_map_control_s.BROADCAST_ENABLE (11) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. end if; - when REG_FELIG_ELINK_CONFIG_00 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_CONFIG (0).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_map_control_s.FELIG_ELINK_CONFIG (0).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_map_control_s.FELIG_ELINK_CONFIG (0).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. + when REG_BROADCAST_ENABLE_12 => + if GBT_NUM > 12 then + register_map_control_s.BROADCAST_ENABLE (12) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. end if; - when REG_FELIG_ELINK_CONFIG_01 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_CONFIG (1).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_map_control_s.FELIG_ELINK_CONFIG (1).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_map_control_s.FELIG_ELINK_CONFIG (1).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. + when REG_BROADCAST_ENABLE_13 => + if GBT_NUM > 13 then + register_map_control_s.BROADCAST_ENABLE (13) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. end if; - when REG_FELIG_ELINK_CONFIG_02 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_CONFIG (2).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_map_control_s.FELIG_ELINK_CONFIG (2).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_map_control_s.FELIG_ELINK_CONFIG (2).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. + when REG_BROADCAST_ENABLE_14 => + if GBT_NUM > 14 then + register_map_control_s.BROADCAST_ENABLE (14) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. end if; - when REG_FELIG_ELINK_CONFIG_03 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_CONFIG (3).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_map_control_s.FELIG_ELINK_CONFIG (3).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_map_control_s.FELIG_ELINK_CONFIG (3).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. + when REG_BROADCAST_ENABLE_15 => + if GBT_NUM > 15 then + register_map_control_s.BROADCAST_ENABLE (15) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. end if; - when REG_FELIG_ELINK_CONFIG_04 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_CONFIG (4).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_map_control_s.FELIG_ELINK_CONFIG (4).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_map_control_s.FELIG_ELINK_CONFIG (4).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. + when REG_BROADCAST_ENABLE_16 => + if GBT_NUM > 16 then + register_map_control_s.BROADCAST_ENABLE (16) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. end if; - when REG_FELIG_ELINK_CONFIG_05 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_CONFIG (5).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_map_control_s.FELIG_ELINK_CONFIG (5).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_map_control_s.FELIG_ELINK_CONFIG (5).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. + when REG_BROADCAST_ENABLE_17 => + if GBT_NUM > 17 then + register_map_control_s.BROADCAST_ENABLE (17) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. end if; - when REG_FELIG_ELINK_CONFIG_06 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_CONFIG (6).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_map_control_s.FELIG_ELINK_CONFIG (6).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_map_control_s.FELIG_ELINK_CONFIG (6).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. + when REG_BROADCAST_ENABLE_18 => + if GBT_NUM > 18 then + register_map_control_s.BROADCAST_ENABLE (18) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. end if; - when REG_FELIG_ELINK_CONFIG_07 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_CONFIG (7).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_map_control_s.FELIG_ELINK_CONFIG (7).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_map_control_s.FELIG_ELINK_CONFIG (7).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. + when REG_BROADCAST_ENABLE_19 => + if GBT_NUM > 19 then + register_map_control_s.BROADCAST_ENABLE (19) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. end if; - when REG_FELIG_ELINK_CONFIG_08 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_CONFIG (8).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_map_control_s.FELIG_ELINK_CONFIG (8).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_map_control_s.FELIG_ELINK_CONFIG (8).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. + when REG_BROADCAST_ENABLE_20 => + if GBT_NUM > 20 then + register_map_control_s.BROADCAST_ENABLE (20) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. end if; - when REG_FELIG_ELINK_CONFIG_09 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_CONFIG (9).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_map_control_s.FELIG_ELINK_CONFIG (9).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_map_control_s.FELIG_ELINK_CONFIG (9).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. + when REG_BROADCAST_ENABLE_21 => + if GBT_NUM > 21 then + register_map_control_s.BROADCAST_ENABLE (21) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. end if; - when REG_FELIG_ELINK_CONFIG_10 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_CONFIG (10).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_map_control_s.FELIG_ELINK_CONFIG (10).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_map_control_s.FELIG_ELINK_CONFIG (10).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. + when REG_BROADCAST_ENABLE_22 => + if GBT_NUM > 22 then + register_map_control_s.BROADCAST_ENABLE (22) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. end if; - when REG_FELIG_ELINK_CONFIG_11 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_CONFIG (11).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_map_control_s.FELIG_ELINK_CONFIG (11).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_map_control_s.FELIG_ELINK_CONFIG (11).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. + when REG_BROADCAST_ENABLE_23 => + if GBT_NUM > 23 then + register_map_control_s.BROADCAST_ENABLE (23) <= register_write_data_25_v(41 downto 0); -- Enable path to be included in a broadcast message. end if; - when REG_FELIG_ELINK_CONFIG_12 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_CONFIG (12).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_map_control_s.FELIG_ELINK_CONFIG (12).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_map_control_s.FELIG_ELINK_CONFIG (12).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. + when REG_LINK_00_HAS_STREAM_ID => + if GBT_NUM > 0 then + register_map_control_s.HAS_STREAM_ID (0).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (0).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (0).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (0).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (0).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (0).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (0).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. end if; - when REG_FELIG_ELINK_CONFIG_13 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_CONFIG (13).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_map_control_s.FELIG_ELINK_CONFIG (13).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_map_control_s.FELIG_ELINK_CONFIG (13).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. + when REG_LINK_01_HAS_STREAM_ID => + if GBT_NUM > 1 then + register_map_control_s.HAS_STREAM_ID (1).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (1).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (1).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (1).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (1).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (1).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (1).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. end if; - when REG_FELIG_ELINK_CONFIG_14 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_CONFIG (14).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_map_control_s.FELIG_ELINK_CONFIG (14).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_map_control_s.FELIG_ELINK_CONFIG (14).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. + when REG_LINK_02_HAS_STREAM_ID => + if GBT_NUM > 2 then + register_map_control_s.HAS_STREAM_ID (2).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (2).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (2).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (2).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (2).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (2).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (2).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. end if; - when REG_FELIG_ELINK_CONFIG_15 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_CONFIG (15).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_map_control_s.FELIG_ELINK_CONFIG (15).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_map_control_s.FELIG_ELINK_CONFIG (15).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. + when REG_LINK_03_HAS_STREAM_ID => + if GBT_NUM > 3 then + register_map_control_s.HAS_STREAM_ID (3).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (3).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (3).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (3).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (3).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (3).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (3).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. end if; - when REG_FELIG_ELINK_CONFIG_16 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_CONFIG (16).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_map_control_s.FELIG_ELINK_CONFIG (16).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_map_control_s.FELIG_ELINK_CONFIG (16).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. + when REG_LINK_04_HAS_STREAM_ID => + if GBT_NUM > 4 then + register_map_control_s.HAS_STREAM_ID (4).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (4).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (4).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (4).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (4).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (4).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (4).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. end if; - when REG_FELIG_ELINK_CONFIG_17 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_CONFIG (17).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_map_control_s.FELIG_ELINK_CONFIG (17).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_map_control_s.FELIG_ELINK_CONFIG (17).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. + when REG_LINK_05_HAS_STREAM_ID => + if GBT_NUM > 5 then + register_map_control_s.HAS_STREAM_ID (5).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (5).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (5).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (5).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (5).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (5).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (5).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. end if; - when REG_FELIG_ELINK_CONFIG_18 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_CONFIG (18).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_map_control_s.FELIG_ELINK_CONFIG (18).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_map_control_s.FELIG_ELINK_CONFIG (18).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. + when REG_LINK_06_HAS_STREAM_ID => + if GBT_NUM > 6 then + register_map_control_s.HAS_STREAM_ID (6).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (6).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (6).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (6).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (6).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (6).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (6).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. end if; - when REG_FELIG_ELINK_CONFIG_19 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_CONFIG (19).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_map_control_s.FELIG_ELINK_CONFIG (19).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_map_control_s.FELIG_ELINK_CONFIG (19).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. + when REG_LINK_07_HAS_STREAM_ID => + if GBT_NUM > 7 then + register_map_control_s.HAS_STREAM_ID (7).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (7).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (7).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (7).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (7).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (7).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (7).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. end if; - when REG_FELIG_ELINK_CONFIG_20 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_CONFIG (20).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_map_control_s.FELIG_ELINK_CONFIG (20).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_map_control_s.FELIG_ELINK_CONFIG (20).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. + when REG_LINK_08_HAS_STREAM_ID => + if GBT_NUM > 8 then + register_map_control_s.HAS_STREAM_ID (8).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (8).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (8).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (8).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (8).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (8).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (8).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. end if; - when REG_FELIG_ELINK_CONFIG_21 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_CONFIG (21).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_map_control_s.FELIG_ELINK_CONFIG (21).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_map_control_s.FELIG_ELINK_CONFIG (21).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. + when REG_LINK_09_HAS_STREAM_ID => + if GBT_NUM > 9 then + register_map_control_s.HAS_STREAM_ID (9).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (9).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (9).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (9).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (9).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (9).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (9).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. end if; - when REG_FELIG_ELINK_CONFIG_22 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_CONFIG (22).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_map_control_s.FELIG_ELINK_CONFIG (22).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_map_control_s.FELIG_ELINK_CONFIG (22).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. + when REG_LINK_10_HAS_STREAM_ID => + if GBT_NUM > 10 then + register_map_control_s.HAS_STREAM_ID (10).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (10).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (10).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (10).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (10).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (10).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (10).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. end if; - when REG_FELIG_ELINK_CONFIG_23 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_CONFIG (23).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. - register_map_control_s.FELIG_ELINK_CONFIG (23).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). - register_map_control_s.FELIG_ELINK_CONFIG (23).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. + when REG_LINK_11_HAS_STREAM_ID => + if GBT_NUM > 11 then + register_map_control_s.HAS_STREAM_ID (11).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (11).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (11).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (11).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (11).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (11).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (11).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. end if; - when REG_FELIG_ELINK_ENABLE_00 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_ENABLE (0) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + when REG_LINK_12_HAS_STREAM_ID => + if GBT_NUM > 12 then + register_map_control_s.HAS_STREAM_ID (12).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (12).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (12).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (12).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (12).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (12).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (12).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. end if; - when REG_FELIG_ELINK_ENABLE_01 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_ENABLE (1) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + when REG_LINK_13_HAS_STREAM_ID => + if GBT_NUM > 13 then + register_map_control_s.HAS_STREAM_ID (13).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (13).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (13).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (13).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (13).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (13).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (13).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. end if; - when REG_FELIG_ELINK_ENABLE_02 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_ENABLE (2) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + when REG_LINK_14_HAS_STREAM_ID => + if GBT_NUM > 14 then + register_map_control_s.HAS_STREAM_ID (14).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (14).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (14).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (14).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (14).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (14).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (14).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. end if; - when REG_FELIG_ELINK_ENABLE_03 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_ENABLE (3) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + when REG_LINK_15_HAS_STREAM_ID => + if GBT_NUM > 15 then + register_map_control_s.HAS_STREAM_ID (15).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (15).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (15).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (15).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (15).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (15).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (15).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. end if; - when REG_FELIG_ELINK_ENABLE_04 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_ENABLE (4) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + when REG_LINK_16_HAS_STREAM_ID => + if GBT_NUM > 16 then + register_map_control_s.HAS_STREAM_ID (16).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (16).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (16).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (16).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (16).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (16).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (16).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. end if; - when REG_FELIG_ELINK_ENABLE_05 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_ENABLE (5) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + when REG_LINK_17_HAS_STREAM_ID => + if GBT_NUM > 17 then + register_map_control_s.HAS_STREAM_ID (17).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (17).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (17).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (17).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (17).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (17).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (17).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. end if; - when REG_FELIG_ELINK_ENABLE_06 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_ENABLE (6) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + when REG_LINK_18_HAS_STREAM_ID => + if GBT_NUM > 18 then + register_map_control_s.HAS_STREAM_ID (18).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (18).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (18).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (18).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (18).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (18).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (18).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. end if; - when REG_FELIG_ELINK_ENABLE_07 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_ENABLE (7) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + when REG_LINK_19_HAS_STREAM_ID => + if GBT_NUM > 19 then + register_map_control_s.HAS_STREAM_ID (19).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (19).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (19).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (19).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (19).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (19).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (19).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. end if; - when REG_FELIG_ELINK_ENABLE_08 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_ENABLE (8) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + when REG_LINK_20_HAS_STREAM_ID => + if GBT_NUM > 20 then + register_map_control_s.HAS_STREAM_ID (20).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (20).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (20).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (20).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (20).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (20).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (20).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. end if; - when REG_FELIG_ELINK_ENABLE_09 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_ENABLE (9) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + when REG_LINK_21_HAS_STREAM_ID => + if GBT_NUM > 21 then + register_map_control_s.HAS_STREAM_ID (21).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (21).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (21).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (21).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (21).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (21).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (21).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. end if; - when REG_FELIG_ELINK_ENABLE_10 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_ENABLE (10) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + when REG_LINK_22_HAS_STREAM_ID => + if GBT_NUM > 22 then + register_map_control_s.HAS_STREAM_ID (22).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (22).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (22).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (22).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (22).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (22).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (22).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. end if; - when REG_FELIG_ELINK_ENABLE_11 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_ENABLE (11) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + when REG_LINK_23_HAS_STREAM_ID => + if GBT_NUM > 23 then + register_map_control_s.HAS_STREAM_ID (23).EGROUP6 <= register_write_data_25_v(55 downto 48); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (23).EGROUP5 <= register_write_data_25_v(47 downto 40); -- EPATH (Wide mode or lpGBT) is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (23).EGROUP4 <= register_write_data_25_v(39 downto 32); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (23).EGROUP3 <= register_write_data_25_v(31 downto 24); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (23).EGROUP2 <= register_write_data_25_v(23 downto 16); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (23).EGROUP1 <= register_write_data_25_v(15 downto 8); -- EPATH is associated with a STREAM ID + register_map_control_s.HAS_STREAM_ID (23).EGROUP0 <= register_write_data_25_v(7 downto 0); -- EPATH is associated with a STREAM ID, use only bit0 for FULL mode. end if; - when REG_FELIG_ELINK_ENABLE_12 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_ENABLE (12) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + when REG_DECODING_LINK00_EGROUP0_CTRL => + if GBT_NUM > 0 then + register_map_control_s.DECODING_EGROUP_CTRL (0)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (0)(0).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (0)(0).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (0)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_ELINK_ENABLE_13 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_ENABLE (13) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + when REG_DECODING_LINK00_EGROUP1_CTRL => + if GBT_NUM > 0 then + register_map_control_s.DECODING_EGROUP_CTRL (0)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (0)(1).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (0)(1).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (0)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_ELINK_ENABLE_14 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_ENABLE (14) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + when REG_DECODING_LINK00_EGROUP2_CTRL => + if GBT_NUM > 0 then + register_map_control_s.DECODING_EGROUP_CTRL (0)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (0)(2).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (0)(2).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (0)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_ELINK_ENABLE_15 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_ENABLE (15) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + when REG_DECODING_LINK00_EGROUP3_CTRL => + if GBT_NUM > 0 then + register_map_control_s.DECODING_EGROUP_CTRL (0)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (0)(3).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (0)(3).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (0)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_ELINK_ENABLE_16 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_ENABLE (16) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + when REG_DECODING_LINK00_EGROUP4_CTRL => + if GBT_NUM > 0 then + register_map_control_s.DECODING_EGROUP_CTRL (0)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (0)(4).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (0)(4).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (0)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_ELINK_ENABLE_17 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_ENABLE (17) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + when REG_DECODING_LINK00_EGROUP5_CTRL => + if GBT_NUM > 0 then + register_map_control_s.DECODING_EGROUP_CTRL (0)(5).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (0)(5).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (0)(5).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (0)(5).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_ELINK_ENABLE_18 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_ENABLE (18) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + when REG_DECODING_LINK00_EGROUP6_CTRL => + if GBT_NUM > 0 then + register_map_control_s.DECODING_EGROUP_CTRL (0)(6).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (0)(6).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (0)(6).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (0)(6).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_ELINK_ENABLE_19 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_ENABLE (19) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + when REG_DECODING_LINK01_EGROUP0_CTRL => + if GBT_NUM > 1 then + register_map_control_s.DECODING_EGROUP_CTRL (1)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (1)(0).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (1)(0).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (1)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_ELINK_ENABLE_20 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_ENABLE (20) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + when REG_DECODING_LINK01_EGROUP1_CTRL => + if GBT_NUM > 1 then + register_map_control_s.DECODING_EGROUP_CTRL (1)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (1)(1).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (1)(1).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (1)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_ELINK_ENABLE_21 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_ENABLE (21) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + when REG_DECODING_LINK01_EGROUP2_CTRL => + if GBT_NUM > 1 then + register_map_control_s.DECODING_EGROUP_CTRL (1)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (1)(2).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (1)(2).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (1)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_ELINK_ENABLE_22 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_ENABLE (22) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + when REG_DECODING_LINK01_EGROUP3_CTRL => + if GBT_NUM > 1 then + register_map_control_s.DECODING_EGROUP_CTRL (1)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (1)(3).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (1)(3).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (1)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_ELINK_ENABLE_23 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ELINK_ENABLE (23) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. + when REG_DECODING_LINK01_EGROUP4_CTRL => + if GBT_NUM > 1 then + register_map_control_s.DECODING_EGROUP_CTRL (1)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (1)(4).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (1)(4).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (1)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_GLOBAL_CONTROL => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_GLOBAL_CONTROL.FAKE_L1A_RATE <= register_write_data_25_v(63 downto 36); -- Sets the internal fake L1 trigger rate. [25ns/LSB] - register_map_control_s.FELIG_GLOBAL_CONTROL.PICXO_OFFSET_PPM <= register_write_data_25_v(35 downto 14); -- When OFFSET_EN is 1, this directly sets the output frequency, within the given adjustment range. - register_map_control_s.FELIG_GLOBAL_CONTROL.TRACK_DATA <= register_write_data_25_v(12 downto 12); -- FELIG GT core control. Must be set to enable normal operation. - register_map_control_s.FELIG_GLOBAL_CONTROL.RXUSERRDY <= register_write_data_25_v(11 downto 11); -- FELIG GT core control. Must be set to enable normal operation. - register_map_control_s.FELIG_GLOBAL_CONTROL.TXUSERRDY <= register_write_data_25_v(10 downto 10); -- FELIG GT core control. Must be set to enable normal operation. - register_map_control_s.FELIG_GLOBAL_CONTROL.AUTO_RESET <= register_write_data_25_v(9 downto 9); -- FELIG GT core control. If set the GT core automatically resets on data error. - register_map_control_s.FELIG_GLOBAL_CONTROL.PICXO_RESET <= register_write_data_25_v(8 downto 8); -- FELIG GT core control. Manual PICXO reset. - register_map_control_s.FELIG_GLOBAL_CONTROL.GTTX_RESET <= register_write_data_25_v(7 downto 7); -- FELIG GT core control. Manual GT TX reset - register_map_control_s.FELIG_GLOBAL_CONTROL.CPLL_RESET <= register_write_data_25_v(6 downto 6); -- FELIG GT core control. Manual CPLL reset. - register_map_control_s.FELIG_GLOBAL_CONTROL.X3_X4_OUTPUT_SELECT <= register_write_data_25_v(5 downto 0); -- X3/X4 SMA output source select. + when REG_DECODING_LINK01_EGROUP5_CTRL => + if GBT_NUM > 1 then + register_map_control_s.DECODING_EGROUP_CTRL (1)(5).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (1)(5).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (1)(5).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (1)(5).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_LANE_CONFIG_00 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_LANE_CONFIG (0).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_map_control_s.FELIG_LANE_CONFIG (0).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. - register_map_control_s.FELIG_LANE_CONFIG (0).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_map_control_s.FELIG_LANE_CONFIG (0).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_map_control_s.FELIG_LANE_CONFIG (0).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_map_control_s.FELIG_LANE_CONFIG (0).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_map_control_s.FELIG_LANE_CONFIG (0).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (0).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (0).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_map_control_s.FELIG_LANE_CONFIG (0).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_map_control_s.FELIG_LANE_CONFIG (0).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + when REG_DECODING_LINK01_EGROUP6_CTRL => + if GBT_NUM > 1 then + register_map_control_s.DECODING_EGROUP_CTRL (1)(6).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (1)(6).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (1)(6).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (1)(6).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_LANE_CONFIG_01 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_LANE_CONFIG (1).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_map_control_s.FELIG_LANE_CONFIG (1).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. - register_map_control_s.FELIG_LANE_CONFIG (1).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_map_control_s.FELIG_LANE_CONFIG (1).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_map_control_s.FELIG_LANE_CONFIG (1).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_map_control_s.FELIG_LANE_CONFIG (1).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_map_control_s.FELIG_LANE_CONFIG (1).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (1).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (1).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_map_control_s.FELIG_LANE_CONFIG (1).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_map_control_s.FELIG_LANE_CONFIG (1).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + when REG_DECODING_LINK02_EGROUP0_CTRL => + if GBT_NUM > 2 then + register_map_control_s.DECODING_EGROUP_CTRL (2)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (2)(0).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (2)(0).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (2)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_LANE_CONFIG_02 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_LANE_CONFIG (2).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_map_control_s.FELIG_LANE_CONFIG (2).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. - register_map_control_s.FELIG_LANE_CONFIG (2).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_map_control_s.FELIG_LANE_CONFIG (2).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_map_control_s.FELIG_LANE_CONFIG (2).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_map_control_s.FELIG_LANE_CONFIG (2).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_map_control_s.FELIG_LANE_CONFIG (2).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (2).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (2).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_map_control_s.FELIG_LANE_CONFIG (2).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_map_control_s.FELIG_LANE_CONFIG (2).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + when REG_DECODING_LINK02_EGROUP1_CTRL => + if GBT_NUM > 2 then + register_map_control_s.DECODING_EGROUP_CTRL (2)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (2)(1).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (2)(1).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (2)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_LANE_CONFIG_03 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_LANE_CONFIG (3).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_map_control_s.FELIG_LANE_CONFIG (3).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. - register_map_control_s.FELIG_LANE_CONFIG (3).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_map_control_s.FELIG_LANE_CONFIG (3).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_map_control_s.FELIG_LANE_CONFIG (3).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_map_control_s.FELIG_LANE_CONFIG (3).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_map_control_s.FELIG_LANE_CONFIG (3).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (3).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (3).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_map_control_s.FELIG_LANE_CONFIG (3).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_map_control_s.FELIG_LANE_CONFIG (3).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + when REG_DECODING_LINK02_EGROUP2_CTRL => + if GBT_NUM > 2 then + register_map_control_s.DECODING_EGROUP_CTRL (2)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (2)(2).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (2)(2).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (2)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_LANE_CONFIG_04 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_LANE_CONFIG (4).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_map_control_s.FELIG_LANE_CONFIG (4).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. - register_map_control_s.FELIG_LANE_CONFIG (4).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_map_control_s.FELIG_LANE_CONFIG (4).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_map_control_s.FELIG_LANE_CONFIG (4).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_map_control_s.FELIG_LANE_CONFIG (4).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_map_control_s.FELIG_LANE_CONFIG (4).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (4).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (4).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_map_control_s.FELIG_LANE_CONFIG (4).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_map_control_s.FELIG_LANE_CONFIG (4).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + when REG_DECODING_LINK02_EGROUP3_CTRL => + if GBT_NUM > 2 then + register_map_control_s.DECODING_EGROUP_CTRL (2)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (2)(3).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (2)(3).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (2)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_LANE_CONFIG_05 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_LANE_CONFIG (5).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_map_control_s.FELIG_LANE_CONFIG (5).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. - register_map_control_s.FELIG_LANE_CONFIG (5).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_map_control_s.FELIG_LANE_CONFIG (5).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_map_control_s.FELIG_LANE_CONFIG (5).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_map_control_s.FELIG_LANE_CONFIG (5).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_map_control_s.FELIG_LANE_CONFIG (5).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (5).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (5).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_map_control_s.FELIG_LANE_CONFIG (5).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_map_control_s.FELIG_LANE_CONFIG (5).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + when REG_DECODING_LINK02_EGROUP4_CTRL => + if GBT_NUM > 2 then + register_map_control_s.DECODING_EGROUP_CTRL (2)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (2)(4).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (2)(4).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (2)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_LANE_CONFIG_06 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_LANE_CONFIG (6).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_map_control_s.FELIG_LANE_CONFIG (6).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. - register_map_control_s.FELIG_LANE_CONFIG (6).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_map_control_s.FELIG_LANE_CONFIG (6).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_map_control_s.FELIG_LANE_CONFIG (6).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_map_control_s.FELIG_LANE_CONFIG (6).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_map_control_s.FELIG_LANE_CONFIG (6).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (6).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (6).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_map_control_s.FELIG_LANE_CONFIG (6).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_map_control_s.FELIG_LANE_CONFIG (6).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + when REG_DECODING_LINK02_EGROUP5_CTRL => + if GBT_NUM > 2 then + register_map_control_s.DECODING_EGROUP_CTRL (2)(5).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (2)(5).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (2)(5).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (2)(5).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_LANE_CONFIG_07 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_LANE_CONFIG (7).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_map_control_s.FELIG_LANE_CONFIG (7).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. - register_map_control_s.FELIG_LANE_CONFIG (7).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_map_control_s.FELIG_LANE_CONFIG (7).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_map_control_s.FELIG_LANE_CONFIG (7).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_map_control_s.FELIG_LANE_CONFIG (7).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_map_control_s.FELIG_LANE_CONFIG (7).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (7).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (7).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_map_control_s.FELIG_LANE_CONFIG (7).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_map_control_s.FELIG_LANE_CONFIG (7).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + when REG_DECODING_LINK02_EGROUP6_CTRL => + if GBT_NUM > 2 then + register_map_control_s.DECODING_EGROUP_CTRL (2)(6).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (2)(6).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (2)(6).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (2)(6).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_LANE_CONFIG_08 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_LANE_CONFIG (8).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_map_control_s.FELIG_LANE_CONFIG (8).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. - register_map_control_s.FELIG_LANE_CONFIG (8).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_map_control_s.FELIG_LANE_CONFIG (8).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_map_control_s.FELIG_LANE_CONFIG (8).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_map_control_s.FELIG_LANE_CONFIG (8).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_map_control_s.FELIG_LANE_CONFIG (8).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (8).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (8).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_map_control_s.FELIG_LANE_CONFIG (8).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_map_control_s.FELIG_LANE_CONFIG (8).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + when REG_DECODING_LINK03_EGROUP0_CTRL => + if GBT_NUM > 3 then + register_map_control_s.DECODING_EGROUP_CTRL (3)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (3)(0).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (3)(0).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (3)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_LANE_CONFIG_09 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_LANE_CONFIG (9).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_map_control_s.FELIG_LANE_CONFIG (9).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. - register_map_control_s.FELIG_LANE_CONFIG (9).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_map_control_s.FELIG_LANE_CONFIG (9).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_map_control_s.FELIG_LANE_CONFIG (9).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_map_control_s.FELIG_LANE_CONFIG (9).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_map_control_s.FELIG_LANE_CONFIG (9).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (9).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (9).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_map_control_s.FELIG_LANE_CONFIG (9).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_map_control_s.FELIG_LANE_CONFIG (9).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + when REG_DECODING_LINK03_EGROUP1_CTRL => + if GBT_NUM > 3 then + register_map_control_s.DECODING_EGROUP_CTRL (3)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (3)(1).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (3)(1).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (3)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_LANE_CONFIG_10 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_LANE_CONFIG (10).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_map_control_s.FELIG_LANE_CONFIG (10).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. - register_map_control_s.FELIG_LANE_CONFIG (10).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_map_control_s.FELIG_LANE_CONFIG (10).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_map_control_s.FELIG_LANE_CONFIG (10).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_map_control_s.FELIG_LANE_CONFIG (10).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_map_control_s.FELIG_LANE_CONFIG (10).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (10).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (10).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_map_control_s.FELIG_LANE_CONFIG (10).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_map_control_s.FELIG_LANE_CONFIG (10).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + when REG_DECODING_LINK03_EGROUP2_CTRL => + if GBT_NUM > 3 then + register_map_control_s.DECODING_EGROUP_CTRL (3)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (3)(2).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (3)(2).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (3)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_LANE_CONFIG_11 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_LANE_CONFIG (11).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_map_control_s.FELIG_LANE_CONFIG (11).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. - register_map_control_s.FELIG_LANE_CONFIG (11).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_map_control_s.FELIG_LANE_CONFIG (11).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_map_control_s.FELIG_LANE_CONFIG (11).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_map_control_s.FELIG_LANE_CONFIG (11).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_map_control_s.FELIG_LANE_CONFIG (11).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (11).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (11).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_map_control_s.FELIG_LANE_CONFIG (11).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_map_control_s.FELIG_LANE_CONFIG (11).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + when REG_DECODING_LINK03_EGROUP3_CTRL => + if GBT_NUM > 3 then + register_map_control_s.DECODING_EGROUP_CTRL (3)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (3)(3).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (3)(3).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (3)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_LANE_CONFIG_12 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_LANE_CONFIG (12).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_map_control_s.FELIG_LANE_CONFIG (12).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. - register_map_control_s.FELIG_LANE_CONFIG (12).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_map_control_s.FELIG_LANE_CONFIG (12).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_map_control_s.FELIG_LANE_CONFIG (12).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_map_control_s.FELIG_LANE_CONFIG (12).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_map_control_s.FELIG_LANE_CONFIG (12).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (12).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (12).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_map_control_s.FELIG_LANE_CONFIG (12).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_map_control_s.FELIG_LANE_CONFIG (12).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + when REG_DECODING_LINK03_EGROUP4_CTRL => + if GBT_NUM > 3 then + register_map_control_s.DECODING_EGROUP_CTRL (3)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (3)(4).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (3)(4).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (3)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_LANE_CONFIG_13 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_LANE_CONFIG (13).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_map_control_s.FELIG_LANE_CONFIG (13).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. - register_map_control_s.FELIG_LANE_CONFIG (13).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_map_control_s.FELIG_LANE_CONFIG (13).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_map_control_s.FELIG_LANE_CONFIG (13).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_map_control_s.FELIG_LANE_CONFIG (13).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_map_control_s.FELIG_LANE_CONFIG (13).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (13).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (13).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_map_control_s.FELIG_LANE_CONFIG (13).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_map_control_s.FELIG_LANE_CONFIG (13).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + when REG_DECODING_LINK03_EGROUP5_CTRL => + if GBT_NUM > 3 then + register_map_control_s.DECODING_EGROUP_CTRL (3)(5).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (3)(5).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (3)(5).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (3)(5).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_LANE_CONFIG_14 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_LANE_CONFIG (14).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_map_control_s.FELIG_LANE_CONFIG (14).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. - register_map_control_s.FELIG_LANE_CONFIG (14).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_map_control_s.FELIG_LANE_CONFIG (14).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_map_control_s.FELIG_LANE_CONFIG (14).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_map_control_s.FELIG_LANE_CONFIG (14).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_map_control_s.FELIG_LANE_CONFIG (14).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (14).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (14).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_map_control_s.FELIG_LANE_CONFIG (14).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_map_control_s.FELIG_LANE_CONFIG (14).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + when REG_DECODING_LINK03_EGROUP6_CTRL => + if GBT_NUM > 3 then + register_map_control_s.DECODING_EGROUP_CTRL (3)(6).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (3)(6).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (3)(6).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (3)(6).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_LANE_CONFIG_15 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_LANE_CONFIG (15).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_map_control_s.FELIG_LANE_CONFIG (15).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. - register_map_control_s.FELIG_LANE_CONFIG (15).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_map_control_s.FELIG_LANE_CONFIG (15).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_map_control_s.FELIG_LANE_CONFIG (15).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_map_control_s.FELIG_LANE_CONFIG (15).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_map_control_s.FELIG_LANE_CONFIG (15).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (15).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (15).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_map_control_s.FELIG_LANE_CONFIG (15).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_map_control_s.FELIG_LANE_CONFIG (15).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + when REG_DECODING_LINK04_EGROUP0_CTRL => + if GBT_NUM > 4 then + register_map_control_s.DECODING_EGROUP_CTRL (4)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (4)(0).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (4)(0).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (4)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_LANE_CONFIG_16 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_LANE_CONFIG (16).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_map_control_s.FELIG_LANE_CONFIG (16).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. - register_map_control_s.FELIG_LANE_CONFIG (16).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_map_control_s.FELIG_LANE_CONFIG (16).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_map_control_s.FELIG_LANE_CONFIG (16).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_map_control_s.FELIG_LANE_CONFIG (16).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_map_control_s.FELIG_LANE_CONFIG (16).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (16).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (16).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_map_control_s.FELIG_LANE_CONFIG (16).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_map_control_s.FELIG_LANE_CONFIG (16).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + when REG_DECODING_LINK04_EGROUP1_CTRL => + if GBT_NUM > 4 then + register_map_control_s.DECODING_EGROUP_CTRL (4)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (4)(1).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (4)(1).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (4)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_LANE_CONFIG_17 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_LANE_CONFIG (17).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_map_control_s.FELIG_LANE_CONFIG (17).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. - register_map_control_s.FELIG_LANE_CONFIG (17).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_map_control_s.FELIG_LANE_CONFIG (17).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_map_control_s.FELIG_LANE_CONFIG (17).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_map_control_s.FELIG_LANE_CONFIG (17).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_map_control_s.FELIG_LANE_CONFIG (17).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (17).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (17).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_map_control_s.FELIG_LANE_CONFIG (17).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_map_control_s.FELIG_LANE_CONFIG (17).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + when REG_DECODING_LINK04_EGROUP2_CTRL => + if GBT_NUM > 4 then + register_map_control_s.DECODING_EGROUP_CTRL (4)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (4)(2).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (4)(2).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (4)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_LANE_CONFIG_18 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_LANE_CONFIG (18).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_map_control_s.FELIG_LANE_CONFIG (18).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. - register_map_control_s.FELIG_LANE_CONFIG (18).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_map_control_s.FELIG_LANE_CONFIG (18).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_map_control_s.FELIG_LANE_CONFIG (18).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_map_control_s.FELIG_LANE_CONFIG (18).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_map_control_s.FELIG_LANE_CONFIG (18).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (18).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (18).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_map_control_s.FELIG_LANE_CONFIG (18).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_map_control_s.FELIG_LANE_CONFIG (18).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + when REG_DECODING_LINK04_EGROUP3_CTRL => + if GBT_NUM > 4 then + register_map_control_s.DECODING_EGROUP_CTRL (4)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (4)(3).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (4)(3).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (4)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_LANE_CONFIG_19 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_LANE_CONFIG (19).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_map_control_s.FELIG_LANE_CONFIG (19).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. - register_map_control_s.FELIG_LANE_CONFIG (19).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_map_control_s.FELIG_LANE_CONFIG (19).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_map_control_s.FELIG_LANE_CONFIG (19).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_map_control_s.FELIG_LANE_CONFIG (19).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_map_control_s.FELIG_LANE_CONFIG (19).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (19).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (19).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_map_control_s.FELIG_LANE_CONFIG (19).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_map_control_s.FELIG_LANE_CONFIG (19).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + when REG_DECODING_LINK04_EGROUP4_CTRL => + if GBT_NUM > 4 then + register_map_control_s.DECODING_EGROUP_CTRL (4)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (4)(4).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (4)(4).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (4)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_LANE_CONFIG_20 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_LANE_CONFIG (20).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_map_control_s.FELIG_LANE_CONFIG (20).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. - register_map_control_s.FELIG_LANE_CONFIG (20).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_map_control_s.FELIG_LANE_CONFIG (20).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_map_control_s.FELIG_LANE_CONFIG (20).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_map_control_s.FELIG_LANE_CONFIG (20).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_map_control_s.FELIG_LANE_CONFIG (20).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (20).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (20).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_map_control_s.FELIG_LANE_CONFIG (20).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_map_control_s.FELIG_LANE_CONFIG (20).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + when REG_DECODING_LINK04_EGROUP5_CTRL => + if GBT_NUM > 4 then + register_map_control_s.DECODING_EGROUP_CTRL (4)(5).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (4)(5).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (4)(5).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (4)(5).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_LANE_CONFIG_21 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_LANE_CONFIG (21).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_map_control_s.FELIG_LANE_CONFIG (21).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. - register_map_control_s.FELIG_LANE_CONFIG (21).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_map_control_s.FELIG_LANE_CONFIG (21).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_map_control_s.FELIG_LANE_CONFIG (21).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_map_control_s.FELIG_LANE_CONFIG (21).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_map_control_s.FELIG_LANE_CONFIG (21).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (21).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (21).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_map_control_s.FELIG_LANE_CONFIG (21).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_map_control_s.FELIG_LANE_CONFIG (21).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + when REG_DECODING_LINK04_EGROUP6_CTRL => + if GBT_NUM > 4 then + register_map_control_s.DECODING_EGROUP_CTRL (4)(6).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (4)(6).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (4)(6).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (4)(6).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_LANE_CONFIG_22 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_LANE_CONFIG (22).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_map_control_s.FELIG_LANE_CONFIG (22).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. - register_map_control_s.FELIG_LANE_CONFIG (22).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_map_control_s.FELIG_LANE_CONFIG (22).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_map_control_s.FELIG_LANE_CONFIG (22).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_map_control_s.FELIG_LANE_CONFIG (22).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_map_control_s.FELIG_LANE_CONFIG (22).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (22).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (22).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_map_control_s.FELIG_LANE_CONFIG (22).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_map_control_s.FELIG_LANE_CONFIG (22).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + when REG_DECODING_LINK05_EGROUP0_CTRL => + if GBT_NUM > 5 then + register_map_control_s.DECODING_EGROUP_CTRL (5)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (5)(0).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (5)(0).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (5)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_LANE_CONFIG_23 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_LANE_CONFIG (23).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. - register_map_control_s.FELIG_LANE_CONFIG (23).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. - register_map_control_s.FELIG_LANE_CONFIG (23).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. - register_map_control_s.FELIG_LANE_CONFIG (23).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. - register_map_control_s.FELIG_LANE_CONFIG (23).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. - register_map_control_s.FELIG_LANE_CONFIG (23).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. - register_map_control_s.FELIG_LANE_CONFIG (23).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (23).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. - register_map_control_s.FELIG_LANE_CONFIG (23).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. - register_map_control_s.FELIG_LANE_CONFIG (23).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. - register_map_control_s.FELIG_LANE_CONFIG (23).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + when REG_DECODING_LINK05_EGROUP1_CTRL => + if GBT_NUM > 5 then + register_map_control_s.DECODING_EGROUP_CTRL (5)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (5)(1).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (5)(1).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (5)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_MON_FREQ_GLOBAL => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_MON_FREQ_GLOBAL.XTAL_100MHZ <= register_write_data_25_v(63 downto 32); -- FELIG local oscillator frequency[Hz]. - register_map_control_s.FELIG_MON_FREQ_GLOBAL.CLK_41_667MHZ <= register_write_data_25_v(31 downto 0); -- FELIG PCIE MGTREFCLK frequency[Hz]. + when REG_DECODING_LINK05_EGROUP2_CTRL => + if GBT_NUM > 5 then + register_map_control_s.DECODING_EGROUP_CTRL (5)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (5)(2).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (5)(2).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (5)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_RESET => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_RESET.LB_FIFO <= register_write_data_25_v(63 downto 48); -- One bit per lane. When set to 1, resets all loopback FIFOs. - register_map_control_s.FELIG_RESET.FRAMEGEN <= register_write_data_25_v(47 downto 24); -- One bit per lane. When set to 1, resets all FELIG link checking logic. - register_map_control_s.FELIG_RESET.LANE <= register_write_data_25_v(23 downto 0); -- One bit per lane. When set to 1, resets all FELIG lane logic. + when REG_DECODING_LINK05_EGROUP3_CTRL => + if GBT_NUM > 5 then + register_map_control_s.DECODING_EGROUP_CTRL (5)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (5)(3).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (5)(3).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (5)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_RX_SLIDE_RESET => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_RX_SLIDE_RESET <= register_write_data_25_v(23 downto 0); -- One bit per lane. When set to 1, resets the gbt rx slide counter. + when REG_DECODING_LINK05_EGROUP4_CTRL => + if GBT_NUM > 5 then + register_map_control_s.DECODING_EGROUP_CTRL (5)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (5)(4).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (5)(4).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (5)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_00 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(0).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(0).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word + when REG_DECODING_LINK05_EGROUP5_CTRL => + if GBT_NUM > 5 then + register_map_control_s.DECODING_EGROUP_CTRL (5)(5).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (5)(5).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (5)(5).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (5)(5).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_01 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(1).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(1).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word + when REG_DECODING_LINK05_EGROUP6_CTRL => + if GBT_NUM > 5 then + register_map_control_s.DECODING_EGROUP_CTRL (5)(6).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (5)(6).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (5)(6).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (5)(6).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_02 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(2).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(2).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word + when REG_DECODING_LINK06_EGROUP0_CTRL => + if GBT_NUM > 6 then + register_map_control_s.DECODING_EGROUP_CTRL (6)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (6)(0).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (6)(0).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (6)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_03 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(3).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(3).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word + when REG_DECODING_LINK06_EGROUP1_CTRL => + if GBT_NUM > 6 then + register_map_control_s.DECODING_EGROUP_CTRL (6)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (6)(1).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (6)(1).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (6)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_04 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(4).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(4).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word + when REG_DECODING_LINK06_EGROUP2_CTRL => + if GBT_NUM > 6 then + register_map_control_s.DECODING_EGROUP_CTRL (6)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (6)(2).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (6)(2).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (6)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_05 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(5).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(5).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word + when REG_DECODING_LINK06_EGROUP3_CTRL => + if GBT_NUM > 6 then + register_map_control_s.DECODING_EGROUP_CTRL (6)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (6)(3).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (6)(3).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (6)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_06 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(6).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(6).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word + when REG_DECODING_LINK06_EGROUP4_CTRL => + if GBT_NUM > 6 then + register_map_control_s.DECODING_EGROUP_CTRL (6)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (6)(4).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (6)(4).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (6)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_07 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(7).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(7).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word + when REG_DECODING_LINK06_EGROUP5_CTRL => + if GBT_NUM > 6 then + register_map_control_s.DECODING_EGROUP_CTRL (6)(5).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (6)(5).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (6)(5).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (6)(5).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_08 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(8).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(8).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word + when REG_DECODING_LINK06_EGROUP6_CTRL => + if GBT_NUM > 6 then + register_map_control_s.DECODING_EGROUP_CTRL (6)(6).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (6)(6).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (6)(6).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (6)(6).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_09 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(9).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(9).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word + when REG_DECODING_LINK07_EGROUP0_CTRL => + if GBT_NUM > 7 then + register_map_control_s.DECODING_EGROUP_CTRL (7)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (7)(0).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (7)(0).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (7)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_10 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(10).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(10).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word + when REG_DECODING_LINK07_EGROUP1_CTRL => + if GBT_NUM > 7 then + register_map_control_s.DECODING_EGROUP_CTRL (7)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (7)(1).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (7)(1).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (7)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_11 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(11).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(11).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word + when REG_DECODING_LINK07_EGROUP2_CTRL => + if GBT_NUM > 7 then + register_map_control_s.DECODING_EGROUP_CTRL (7)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (7)(2).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (7)(2).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (7)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_12 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(12).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(12).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word + when REG_DECODING_LINK07_EGROUP3_CTRL => + if GBT_NUM > 7 then + register_map_control_s.DECODING_EGROUP_CTRL (7)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (7)(3).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (7)(3).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (7)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_13 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(13).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(13).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word + when REG_DECODING_LINK07_EGROUP4_CTRL => + if GBT_NUM > 7 then + register_map_control_s.DECODING_EGROUP_CTRL (7)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (7)(4).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (7)(4).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (7)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_14 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(14).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(14).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word + when REG_DECODING_LINK07_EGROUP5_CTRL => + if GBT_NUM > 7 then + register_map_control_s.DECODING_EGROUP_CTRL (7)(5).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (7)(5).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (7)(5).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (7)(5).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_15 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(15).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(15).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word + when REG_DECODING_LINK07_EGROUP6_CTRL => + if GBT_NUM > 7 then + register_map_control_s.DECODING_EGROUP_CTRL (7)(6).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (7)(6).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (7)(6).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (7)(6).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_16 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(16).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(16).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word + when REG_DECODING_LINK08_EGROUP0_CTRL => + if GBT_NUM > 8 then + register_map_control_s.DECODING_EGROUP_CTRL (8)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (8)(0).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (8)(0).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (8)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_17 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(17).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(17).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word + when REG_DECODING_LINK08_EGROUP1_CTRL => + if GBT_NUM > 8 then + register_map_control_s.DECODING_EGROUP_CTRL (8)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (8)(1).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (8)(1).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (8)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_18 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(18).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(18).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word + when REG_DECODING_LINK08_EGROUP2_CTRL => + if GBT_NUM > 8 then + register_map_control_s.DECODING_EGROUP_CTRL (8)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (8)(2).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (8)(2).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (8)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_19 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(19).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(19).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word + when REG_DECODING_LINK08_EGROUP3_CTRL => + if GBT_NUM > 8 then + register_map_control_s.DECODING_EGROUP_CTRL (8)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (8)(3).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (8)(3).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (8)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_20 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(20).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(20).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word + when REG_DECODING_LINK08_EGROUP4_CTRL => + if GBT_NUM > 8 then + register_map_control_s.DECODING_EGROUP_CTRL (8)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (8)(4).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (8)(4).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (8)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_21 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(21).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(21).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word + when REG_DECODING_LINK08_EGROUP5_CTRL => + if GBT_NUM > 8 then + register_map_control_s.DECODING_EGROUP_CTRL (8)(5).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (8)(5).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (8)(5).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (8)(5).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_22 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(22).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(22).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word + when REG_DECODING_LINK08_EGROUP6_CTRL => + if GBT_NUM > 8 then + register_map_control_s.DECODING_EGROUP_CTRL (8)(6).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (8)(6).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (8)(6).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (8)(6).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_23 => - if EMU_GENERATE_REGS then - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(23).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. - register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(23).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word + when REG_DECODING_LINK09_EGROUP0_CTRL => + if GBT_NUM > 9 then + register_map_control_s.DECODING_EGROUP_CTRL (9)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (9)(0).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (9)(0).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (9)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FMEMU_EVENT_INFO => - if EMU_GENERATE_REGS then - register_map_control_s.FMEMU_EVENT_INFO.L1ID <= register_write_data_25_v(63 downto 32); -- 32b field to show L1ID - register_map_control_s.FMEMU_EVENT_INFO.BCID <= register_write_data_25_v(31 downto 0); -- 32b field to show BCID + when REG_DECODING_LINK09_EGROUP1_CTRL => + if GBT_NUM > 9 then + register_map_control_s.DECODING_EGROUP_CTRL (9)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (9)(1).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (9)(1).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (9)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FMEMU_COUNTERS => - if EMU_GENERATE_REGS then - register_map_control_s.FMEMU_COUNTERS.WORD_CNT <= register_write_data_25_v(63 downto 48); -- Number of 32b words in one chunk - register_map_control_s.FMEMU_COUNTERS.IDLE_CNT <= register_write_data_25_v(47 downto 32); -- Minimum number of idles between chunks - register_map_control_s.FMEMU_COUNTERS.L1A_CNT <= register_write_data_25_v(31 downto 16); -- Number of chunks to send if not in TTC mode - register_map_control_s.FMEMU_COUNTERS.BUSY_TH_HIGH <= register_write_data_25_v(15 downto 8); -- Assert BUSY-ON above this threshold - register_map_control_s.FMEMU_COUNTERS.BUSY_TH_LOW <= register_write_data_25_v(7 downto 0); -- De-assert BUSY-ON below this threshold + when REG_DECODING_LINK09_EGROUP2_CTRL => + if GBT_NUM > 9 then + register_map_control_s.DECODING_EGROUP_CTRL (9)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (9)(2).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (9)(2).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (9)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FMEMU_CONTROL => - if EMU_GENERATE_REGS then - register_map_control_s.FMEMU_CONTROL.L1A_BITNR <= register_write_data_25_v(63 downto 56); -- Bitfield for L1A in TTC frame - register_map_control_s.FMEMU_CONTROL.XONXOFF_BITNR <= register_write_data_25_v(55 downto 48); -- Bitfield for Xon/Xoff in TTC frame - register_map_control_s.FMEMU_CONTROL.EMU_START <= register_write_data_25_v(47 downto 47); -- Start emulator functionality - register_map_control_s.FMEMU_CONTROL.TTC_MODE <= register_write_data_25_v(46 downto 46); -- Control the emulator by TTC input or by RegMap (1/0) - register_map_control_s.FMEMU_CONTROL.XONXOFF <= register_write_data_25_v(45 downto 45); -- Debug Xon/Xoff functionality (1/0) - register_map_control_s.FMEMU_CONTROL.INLC_CRC32 <= register_write_data_25_v(44 downto 44); -- 0: No checksum - -- 1: Append the data with a CRC32 + when REG_DECODING_LINK09_EGROUP3_CTRL => + if GBT_NUM > 9 then + register_map_control_s.DECODING_EGROUP_CTRL (9)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (9)(3).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved - register_map_control_s.FMEMU_CONTROL.BCR <= register_write_data_25_v(43 downto 43); -- Reset BCID to 0 - register_map_control_s.FMEMU_CONTROL.ECR <= register_write_data_25_v(42 downto 42); -- Reset L1ID to 0 - register_map_control_s.FMEMU_CONTROL.DATA_SRC_SEL <= register_write_data_25_v(41 downto 41); -- Data source select - -- 0: Data input comes from EMURAM - -- 1: Data input comes from PCIe + register_map_control_s.DECODING_EGROUP_CTRL (9)(3).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (9)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC + end if; + when REG_DECODING_LINK09_EGROUP4_CTRL => + if GBT_NUM > 9 then + register_map_control_s.DECODING_EGROUP_CTRL (9)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (9)(4).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved - register_map_control_s.FMEMU_CONTROL.FFU_FM_EMU_T <= register_write_data_25_v(31 downto 16); -- For Future Use (trigger registers) - register_map_control_s.FMEMU_CONTROL.FFU_FM_EMU_W <= register_write_data_25_v(15 downto 0); -- For Future Use (write registers) + register_map_control_s.DECODING_EGROUP_CTRL (9)(4).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (9)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FMEMU_RANDOM_RAM_ADDR => - if EMU_GENERATE_REGS then - register_map_control_s.FMEMU_RANDOM_RAM_ADDR <= register_write_data_25_v(9 downto 0); -- Controls the address of the ramblock for the random number generator + when REG_DECODING_LINK09_EGROUP5_CTRL => + if GBT_NUM > 9 then + register_map_control_s.DECODING_EGROUP_CTRL (9)(5).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (9)(5).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (9)(5).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (9)(5).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FMEMU_RANDOM_RAM => - if EMU_GENERATE_REGS then - register_map_control_s.FMEMU_RANDOM_RAM.WE <= "1"; -- Any write to this register (DATA) triggers a write to the ramblock - register_map_control_s.FMEMU_RANDOM_RAM.CHANNEL_SELECT <= register_write_data_25_v(39 downto 16); -- Enable write enable only for the selected channel - register_map_control_s.FMEMU_RANDOM_RAM.DATA <= register_write_data_25_v(15 downto 0); -- DATA field to be written to FMEMU_RANDOM_RAM_ADDR + when REG_DECODING_LINK09_EGROUP6_CTRL => + if GBT_NUM > 9 then + register_map_control_s.DECODING_EGROUP_CTRL (9)(6).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (9)(6).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (9)(6).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (9)(6).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_FMEMU_RANDOM_CONTROL => - if EMU_GENERATE_REGS then - register_map_control_s.FMEMU_RANDOM_CONTROL.SELECT_RANDOM <= register_write_data_25_v(20 downto 20); -- 1 enables the random chunk length, 0 uses a constant chunk length - register_map_control_s.FMEMU_RANDOM_CONTROL.SEED <= register_write_data_25_v(19 downto 10); -- Seed for the random number generator, should not be 0 - register_map_control_s.FMEMU_RANDOM_CONTROL.POLYNOMIAL <= register_write_data_25_v(9 downto 0); -- POLYNOMIAL for the random number generator (10b LFSR) Bit9 should always be 1 + when REG_DECODING_LINK10_EGROUP0_CTRL => + if GBT_NUM > 10 then + register_map_control_s.DECODING_EGROUP_CTRL (10)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (10)(0).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + + register_map_control_s.DECODING_EGROUP_CTRL (10)(0).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (10)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_WISHBONE_CONTROL => register_map_control_s.WISHBONE_CONTROL.WRITE_NOT_READ <= register_write_data_25_v(32 downto 32); -- wishbone write command wishbone read command - register_map_control_s.WISHBONE_CONTROL.ADDRESS <= register_write_data_25_v(31 downto 0); -- Slave address for Wishbone bus - when REG_WISHBONE_WRITE => register_map_control_s.WISHBONE_WRITE.WRITE_ENABLE <= "1"; -- Any write to this register triggers a write to the Wupper to Wishbone fifo - register_map_control_s.WISHBONE_WRITE.DATA <= register_write_data_25_v(31 downto 0); -- Wishbone - when REG_WISHBONE_READ => register_map_control_s.WISHBONE_READ.READ_ENABLE <= "1"; -- Any write to this register triggers a read from the Wishbone to Wupper fifo - when REG_GLOBAL_STRIPS_CONFIG => register_map_control_s.GLOBAL_STRIPS_CONFIG.TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger for every LCB link connected to this FELIX device - register_map_control_s.GLOBAL_STRIPS_CONFIG.TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- Global control for gating signal generation. Enables generating trickle gating signal in response to TTC BCR. TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. (See also BC_START, and BC_STOP fields) - when REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_0 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (0)(0).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (0)(0).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. + when REG_DECODING_LINK10_EGROUP1_CTRL => + if GBT_NUM > 10 then + register_map_control_s.DECODING_EGROUP_CTRL (10)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (10)(1).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved - register_map_control_s.LCB_CTRL (0)(0).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (0)(0).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (0)(0).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (0)(0).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) + register_map_control_s.DECODING_EGROUP_CTRL (10)(1).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (10)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC + end if; + when REG_DECODING_LINK10_EGROUP2_CTRL => + if GBT_NUM > 10 then + register_map_control_s.DECODING_EGROUP_CTRL (10)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (10)(2).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved - register_map_control_s.LCB_CTRL (0)(0).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) + register_map_control_s.DECODING_EGROUP_CTRL (10)(2).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (10)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC + end if; + when REG_DECODING_LINK10_EGROUP3_CTRL => + if GBT_NUM > 10 then + register_map_control_s.DECODING_EGROUP_CTRL (10)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (10)(3).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved - register_map_control_s.LCB_CTRL (0)(0).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (0)(0).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (0)(0).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) + register_map_control_s.DECODING_EGROUP_CTRL (10)(3).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (10)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC + end if; + when REG_DECODING_LINK10_EGROUP4_CTRL => + if GBT_NUM > 10 then + register_map_control_s.DECODING_EGROUP_CTRL (10)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (10)(4).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + register_map_control_s.DECODING_EGROUP_CTRL (10)(4).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (10)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_0 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (0)(0).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + when REG_DECODING_LINK10_EGROUP5_CTRL => + if GBT_NUM > 10 then + register_map_control_s.DECODING_EGROUP_CTRL (10)(5).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (10)(5).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved - register_map_control_s.LCB_TRICKLE_CONFIG (0)(0).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (0)(0).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (0)(0).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + register_map_control_s.DECODING_EGROUP_CTRL (10)(5).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (10)(5).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_MODULE_MASK_F_C_0 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (0)(0).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - - register_map_control_s.HCC_ABC_MASK_E_C (0)(0).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (0)(0).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (0)(0).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) + when REG_DECODING_LINK10_EGROUP6_CTRL => + if GBT_NUM > 10 then + register_map_control_s.DECODING_EGROUP_CTRL (10)(6).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (10)(6).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + register_map_control_s.DECODING_EGROUP_CTRL (10)(6).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (10)(6).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_B_8_0 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (0)(0).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (0)(0).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) + when REG_DECODING_LINK11_EGROUP0_CTRL => + if GBT_NUM > 11 then + register_map_control_s.DECODING_EGROUP_CTRL (11)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (11)(0).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved - register_map_control_s.LCB_ABC_MASK_B_8 (0)(0).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) + register_map_control_s.DECODING_EGROUP_CTRL (11)(0).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (11)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC + end if; + when REG_DECODING_LINK11_EGROUP1_CTRL => + if GBT_NUM > 11 then + register_map_control_s.DECODING_EGROUP_CTRL (11)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (11)(1).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved - register_map_control_s.LCB_ABC_MASK_B_8 (0)(0).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) + register_map_control_s.DECODING_EGROUP_CTRL (11)(1).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (11)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC + end if; + when REG_DECODING_LINK11_EGROUP2_CTRL => + if GBT_NUM > 11 then + register_map_control_s.DECODING_EGROUP_CTRL (11)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (11)(2).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + register_map_control_s.DECODING_EGROUP_CTRL (11)(2).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (11)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_7_4_0 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (0)(0).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) + when REG_DECODING_LINK11_EGROUP3_CTRL => + if GBT_NUM > 11 then + register_map_control_s.DECODING_EGROUP_CTRL (11)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (11)(3).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved - register_map_control_s.LCB_ABC_MASK_7_4 (0)(0).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) + register_map_control_s.DECODING_EGROUP_CTRL (11)(3).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (11)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC + end if; + when REG_DECODING_LINK11_EGROUP4_CTRL => + if GBT_NUM > 11 then + register_map_control_s.DECODING_EGROUP_CTRL (11)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (11)(4).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved - register_map_control_s.LCB_ABC_MASK_7_4 (0)(0).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) + register_map_control_s.DECODING_EGROUP_CTRL (11)(4).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (11)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC + end if; + when REG_DECODING_LINK11_EGROUP5_CTRL => + if GBT_NUM > 11 then + register_map_control_s.DECODING_EGROUP_CTRL (11)(5).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (11)(5).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved - register_map_control_s.LCB_ABC_MASK_7_4 (0)(0).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) + register_map_control_s.DECODING_EGROUP_CTRL (11)(5).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (11)(5).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC + end if; + when REG_DECODING_LINK11_EGROUP6_CTRL => + if GBT_NUM > 11 then + register_map_control_s.DECODING_EGROUP_CTRL (11)(6).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.DECODING_EGROUP_CTRL (11)(6).PATH_ENCODING <= register_write_data_25_v(42 downto 11); -- Encoding for every EPATH, 4 bits per E-path + -- 0: direct mode + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: TTC + -- 4: ITk Strips 8b10b + -- 5: ITk Pixel + -- 6: Endeavour + -- 7-15: reserved + register_map_control_s.DECODING_EGROUP_CTRL (11)(6).EPATH_WIDTH <= register_write_data_25_v(10 downto 8); -- Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 + register_map_control_s.DECODING_EGROUP_CTRL (11)(6).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per EPROC + end if; + when REG_MINI_EGROUP_TOHOST_00 => + if GBT_NUM > 0 then + register_map_control_s.MINI_EGROUP_TOHOST (0).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (0).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_TOHOST (0).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (0).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_TOHOST (0).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (0).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_TOHOST (0).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel + end if; + when REG_MINI_EGROUP_TOHOST_01 => + if GBT_NUM > 1 then + register_map_control_s.MINI_EGROUP_TOHOST (1).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (1).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_TOHOST (1).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (1).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_TOHOST (1).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (1).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_TOHOST (1).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel + end if; + when REG_MINI_EGROUP_TOHOST_02 => + if GBT_NUM > 2 then + register_map_control_s.MINI_EGROUP_TOHOST (2).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (2).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_TOHOST (2).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (2).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_TOHOST (2).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (2).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_TOHOST (2).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel + end if; + when REG_MINI_EGROUP_TOHOST_03 => + if GBT_NUM > 3 then + register_map_control_s.MINI_EGROUP_TOHOST (3).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (3).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_TOHOST (3).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (3).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_TOHOST (3).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (3).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_TOHOST (3).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel + end if; + when REG_MINI_EGROUP_TOHOST_04 => + if GBT_NUM > 4 then + register_map_control_s.MINI_EGROUP_TOHOST (4).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (4).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_TOHOST (4).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (4).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_TOHOST (4).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (4).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_TOHOST (4).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel + end if; + when REG_MINI_EGROUP_TOHOST_05 => + if GBT_NUM > 5 then + register_map_control_s.MINI_EGROUP_TOHOST (5).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (5).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_TOHOST (5).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (5).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_TOHOST (5).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (5).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_TOHOST (5).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel + end if; + when REG_MINI_EGROUP_TOHOST_06 => + if GBT_NUM > 6 then + register_map_control_s.MINI_EGROUP_TOHOST (6).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (6).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_TOHOST (6).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (6).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_TOHOST (6).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (6).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_TOHOST (6).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel + end if; + when REG_MINI_EGROUP_TOHOST_07 => + if GBT_NUM > 7 then + register_map_control_s.MINI_EGROUP_TOHOST (7).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (7).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_TOHOST (7).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (7).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_TOHOST (7).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (7).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_TOHOST (7).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel + end if; + when REG_MINI_EGROUP_TOHOST_08 => + if GBT_NUM > 8 then + register_map_control_s.MINI_EGROUP_TOHOST (8).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (8).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_TOHOST (8).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (8).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_TOHOST (8).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (8).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_TOHOST (8).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_3_0_0 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (0)(0).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (0)(0).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (0)(0).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (0)(0).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - + when REG_MINI_EGROUP_TOHOST_09 => + if GBT_NUM > 9 then + register_map_control_s.MINI_EGROUP_TOHOST (9).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (9).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_TOHOST (9).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (9).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_TOHOST (9).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (9).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_TOHOST (9).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_1 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (0)(1).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (0)(1).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_map_control_s.LCB_CTRL (0)(1).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (0)(1).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (0)(1).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (0)(1).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_map_control_s.LCB_CTRL (0)(1).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_map_control_s.LCB_CTRL (0)(1).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (0)(1).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (0)(1).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - + when REG_MINI_EGROUP_TOHOST_10 => + if GBT_NUM > 10 then + register_map_control_s.MINI_EGROUP_TOHOST (10).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (10).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_TOHOST (10).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (10).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_TOHOST (10).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (10).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_TOHOST (10).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_1 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (0)(1).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_map_control_s.LCB_TRICKLE_CONFIG (0)(1).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (0)(1).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (0)(1).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + when REG_MINI_EGROUP_TOHOST_11 => + if GBT_NUM > 11 then + register_map_control_s.MINI_EGROUP_TOHOST (11).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (11).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_TOHOST (11).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (11).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_TOHOST (11).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (11).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_TOHOST (11).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_MODULE_MASK_F_C_1 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (0)(1).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - - register_map_control_s.HCC_ABC_MASK_E_C (0)(1).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (0)(1).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (0)(1).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - + when REG_MINI_EGROUP_TOHOST_12 => + if GBT_NUM > 12 then + register_map_control_s.MINI_EGROUP_TOHOST (12).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (12).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_TOHOST (12).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (12).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_TOHOST (12).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (12).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_TOHOST (12).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_B_8_1 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (0)(1).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (0)(1).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (0)(1).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (0)(1).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - + when REG_MINI_EGROUP_TOHOST_13 => + if GBT_NUM > 13 then + register_map_control_s.MINI_EGROUP_TOHOST (13).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (13).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_TOHOST (13).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (13).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_TOHOST (13).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (13).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_TOHOST (13).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_7_4_1 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (0)(1).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (0)(1).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (0)(1).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (0)(1).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - + when REG_MINI_EGROUP_TOHOST_14 => + if GBT_NUM > 14 then + register_map_control_s.MINI_EGROUP_TOHOST (14).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (14).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_TOHOST (14).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (14).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_TOHOST (14).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (14).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_TOHOST (14).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_3_0_1 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (0)(1).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (0)(1).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (0)(1).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (0)(1).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - + when REG_MINI_EGROUP_TOHOST_15 => + if GBT_NUM > 15 then + register_map_control_s.MINI_EGROUP_TOHOST (15).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (15).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_TOHOST (15).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (15).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_TOHOST (15).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (15).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_TOHOST (15).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_2 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (0)(2).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (0)(2).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_map_control_s.LCB_CTRL (0)(2).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (0)(2).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (0)(2).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (0)(2).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_map_control_s.LCB_CTRL (0)(2).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_map_control_s.LCB_CTRL (0)(2).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (0)(2).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (0)(2).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - + when REG_MINI_EGROUP_TOHOST_16 => + if GBT_NUM > 16 then + register_map_control_s.MINI_EGROUP_TOHOST (16).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (16).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_TOHOST (16).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (16).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_TOHOST (16).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (16).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_TOHOST (16).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_2 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (0)(2).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_map_control_s.LCB_TRICKLE_CONFIG (0)(2).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (0)(2).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (0)(2).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + when REG_MINI_EGROUP_TOHOST_17 => + if GBT_NUM > 17 then + register_map_control_s.MINI_EGROUP_TOHOST (17).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (17).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_TOHOST (17).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (17).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_TOHOST (17).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (17).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_TOHOST (17).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_MODULE_MASK_F_C_2 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (0)(2).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - - register_map_control_s.HCC_ABC_MASK_E_C (0)(2).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (0)(2).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (0)(2).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - + when REG_MINI_EGROUP_TOHOST_18 => + if GBT_NUM > 18 then + register_map_control_s.MINI_EGROUP_TOHOST (18).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (18).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_TOHOST (18).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (18).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_TOHOST (18).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (18).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_TOHOST (18).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_B_8_2 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (0)(2).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (0)(2).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (0)(2).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (0)(2).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - + when REG_MINI_EGROUP_TOHOST_19 => + if GBT_NUM > 19 then + register_map_control_s.MINI_EGROUP_TOHOST (19).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (19).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_TOHOST (19).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (19).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_TOHOST (19).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (19).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_TOHOST (19).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_7_4_2 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (0)(2).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (0)(2).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (0)(2).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (0)(2).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - + when REG_MINI_EGROUP_TOHOST_20 => + if GBT_NUM > 20 then + register_map_control_s.MINI_EGROUP_TOHOST (20).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (20).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_TOHOST (20).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (20).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_TOHOST (20).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (20).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_TOHOST (20).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_3_0_2 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (0)(2).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (0)(2).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (0)(2).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (0)(2).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - + when REG_MINI_EGROUP_TOHOST_21 => + if GBT_NUM > 21 then + register_map_control_s.MINI_EGROUP_TOHOST (21).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (21).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_TOHOST (21).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (21).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_TOHOST (21).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (21).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_TOHOST (21).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_3 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (0)(3).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (0)(3).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_map_control_s.LCB_CTRL (0)(3).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (0)(3).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (0)(3).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (0)(3).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_map_control_s.LCB_CTRL (0)(3).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_map_control_s.LCB_CTRL (0)(3).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (0)(3).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (0)(3).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - + when REG_MINI_EGROUP_TOHOST_22 => + if GBT_NUM > 22 then + register_map_control_s.MINI_EGROUP_TOHOST (22).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (22).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_TOHOST (22).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (22).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_TOHOST (22).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (22).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_TOHOST (22).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_3 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (0)(3).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_map_control_s.LCB_TRICKLE_CONFIG (0)(3).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (0)(3).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (0)(3).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + when REG_MINI_EGROUP_TOHOST_23 => + if GBT_NUM > 23 then + register_map_control_s.MINI_EGROUP_TOHOST (23).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (23).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_TOHOST (23).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (23).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_TOHOST (23).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two input bits of EC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_TOHOST (23).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_TOHOST (23).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the EC channel end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_MODULE_MASK_F_C_3 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (0)(3).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - - register_map_control_s.HCC_ABC_MASK_E_C (0)(3).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) + when REG_TTC_TOHOST_ENABLE => register_map_control_s.TTC_TOHOST_ENABLE <= register_write_data_25_v(0 downto 0); -- Enables the ToHost Mini Egroup in TTC mode + when REG_DECODING_REVERSE_10B => register_map_control_s.DECODING_REVERSE_10B <= register_write_data_25_v(0 downto 0); -- Reverse 10-bit word of elink data for 8b10b E-links + -- 1: Receive 10-bit word in ToHost E-Paths, MSB first + -- 0: Receive 10-bit word in ToHost E-Paths, LSB first - register_map_control_s.HCC_ABC_MASK_E_C (0)(3).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) + when REG_ENCODING_REVERSE_10B => register_map_control_s.ENCODING_REVERSE_10B <= register_write_data_25_v(0 downto 0); -- Reverse 10-bit word of elink data for 8b10b E-links. 1 MSB first, 0 LSB first + when REG_ENCODING_LINK00_EGROUP0_CTRL => + if GBT_NUM > 0 then + register_map_control_s.ENCODING_EGROUP_CTRL (0)(0).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (0)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (0)(0).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.HCC_ABC_MASK_E_C (0)(3).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (0)(0).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + register_map_control_s.ENCODING_EGROUP_CTRL (0)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_B_8_3 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (0)(3).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (0)(3).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (0)(3).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) + when REG_ENCODING_LINK00_EGROUP1_CTRL => + if GBT_NUM > 0 then + register_map_control_s.ENCODING_EGROUP_CTRL (0)(1).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (0)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (0)(1).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_ABC_MASK_B_8 (0)(3).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (0)(1).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + register_map_control_s.ENCODING_EGROUP_CTRL (0)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_7_4_3 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (0)(3).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (0)(3).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (0)(3).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) + when REG_ENCODING_LINK00_EGROUP2_CTRL => + if GBT_NUM > 0 then + register_map_control_s.ENCODING_EGROUP_CTRL (0)(2).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (0)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (0)(2).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_ABC_MASK_7_4 (0)(3).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (0)(2).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + register_map_control_s.ENCODING_EGROUP_CTRL (0)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_3_0_3 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (0)(3).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (0)(3).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (0)(3).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) + when REG_ENCODING_LINK00_EGROUP3_CTRL => + if GBT_NUM > 0 then + register_map_control_s.ENCODING_EGROUP_CTRL (0)(3).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (0)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (0)(3).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_ABC_MASK_3_0 (0)(3).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (0)(3).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + register_map_control_s.ENCODING_EGROUP_CTRL (0)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH end if; - when REG_CR_ITK_R3L1_LINK_00_R3L1_0 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (0)(0).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (0)(0).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (0)(0).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_00_R3L1_1 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (0)(1).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (0)(1).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (0)(1).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_00_R3L1_2 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (0)(2).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (0)(2).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (0)(2).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_00_R3L1_3 => - if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (0)(3).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (0)(3).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (0)(3).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_0 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (1)(0).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (1)(0).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. + when REG_ENCODING_LINK00_EGROUP4_CTRL => + if GBT_NUM > 0 then + register_map_control_s.ENCODING_EGROUP_CTRL (0)(4).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (0)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (0)(4).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_CTRL (1)(0).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (1)(0).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (1)(0).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (1)(0).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) + register_map_control_s.ENCODING_EGROUP_CTRL (0)(4).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc - register_map_control_s.LCB_CTRL (1)(0).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) + register_map_control_s.ENCODING_EGROUP_CTRL (0)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK01_EGROUP0_CTRL => + if GBT_NUM > 1 then + register_map_control_s.ENCODING_EGROUP_CTRL (1)(0).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (1)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (1)(0).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_CTRL (1)(0).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (1)(0).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (1)(0).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) + register_map_control_s.ENCODING_EGROUP_CTRL (1)(0).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + register_map_control_s.ENCODING_EGROUP_CTRL (1)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_0 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (1)(0).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + when REG_ENCODING_LINK01_EGROUP1_CTRL => + if GBT_NUM > 1 then + register_map_control_s.ENCODING_EGROUP_CTRL (1)(1).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (1)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (1)(1).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_TRICKLE_CONFIG (1)(0).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (1)(0).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (1)(0).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + register_map_control_s.ENCODING_EGROUP_CTRL (1)(1).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_map_control_s.ENCODING_EGROUP_CTRL (1)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_MODULE_MASK_F_C_0 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (1)(0).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask + when REG_ENCODING_LINK01_EGROUP2_CTRL => + if GBT_NUM > 1 then + register_map_control_s.ENCODING_EGROUP_CTRL (1)(2).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (1)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (1)(2).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.HCC_ABC_MASK_E_C (1)(0).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (1)(2).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc - register_map_control_s.HCC_ABC_MASK_E_C (1)(0).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (1)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK01_EGROUP3_CTRL => + if GBT_NUM > 1 then + register_map_control_s.ENCODING_EGROUP_CTRL (1)(3).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (1)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (1)(3).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.HCC_ABC_MASK_E_C (1)(0).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (1)(3).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + register_map_control_s.ENCODING_EGROUP_CTRL (1)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_B_8_0 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (1)(0).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) + when REG_ENCODING_LINK01_EGROUP4_CTRL => + if GBT_NUM > 1 then + register_map_control_s.ENCODING_EGROUP_CTRL (1)(4).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (1)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (1)(4).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_ABC_MASK_B_8 (1)(0).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (1)(4).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc - register_map_control_s.LCB_ABC_MASK_B_8 (1)(0).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (1)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK02_EGROUP0_CTRL => + if GBT_NUM > 2 then + register_map_control_s.ENCODING_EGROUP_CTRL (2)(0).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (2)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (2)(0).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_ABC_MASK_B_8 (1)(0).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (2)(0).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + register_map_control_s.ENCODING_EGROUP_CTRL (2)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_7_4_0 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (1)(0).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) + when REG_ENCODING_LINK02_EGROUP1_CTRL => + if GBT_NUM > 2 then + register_map_control_s.ENCODING_EGROUP_CTRL (2)(1).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (2)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (2)(1).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_ABC_MASK_7_4 (1)(0).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (2)(1).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc - register_map_control_s.LCB_ABC_MASK_7_4 (1)(0).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (2)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK02_EGROUP2_CTRL => + if GBT_NUM > 2 then + register_map_control_s.ENCODING_EGROUP_CTRL (2)(2).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (2)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (2)(2).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_ABC_MASK_7_4 (1)(0).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (2)(2).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + register_map_control_s.ENCODING_EGROUP_CTRL (2)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_3_0_0 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (1)(0).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) + when REG_ENCODING_LINK02_EGROUP3_CTRL => + if GBT_NUM > 2 then + register_map_control_s.ENCODING_EGROUP_CTRL (2)(3).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (2)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (2)(3).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_ABC_MASK_3_0 (1)(0).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (2)(3).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc - register_map_control_s.LCB_ABC_MASK_3_0 (1)(0).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (2)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK02_EGROUP4_CTRL => + if GBT_NUM > 2 then + register_map_control_s.ENCODING_EGROUP_CTRL (2)(4).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (2)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (2)(4).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_ABC_MASK_3_0 (1)(0).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (2)(4).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + register_map_control_s.ENCODING_EGROUP_CTRL (2)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_1 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (1)(1).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (1)(1).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. + when REG_ENCODING_LINK03_EGROUP0_CTRL => + if GBT_NUM > 3 then + register_map_control_s.ENCODING_EGROUP_CTRL (3)(0).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (3)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (3)(0).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_CTRL (1)(1).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (1)(1).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (1)(1).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (1)(1).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) + register_map_control_s.ENCODING_EGROUP_CTRL (3)(0).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc - register_map_control_s.LCB_CTRL (1)(1).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) + register_map_control_s.ENCODING_EGROUP_CTRL (3)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK03_EGROUP1_CTRL => + if GBT_NUM > 3 then + register_map_control_s.ENCODING_EGROUP_CTRL (3)(1).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (3)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (3)(1).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_CTRL (1)(1).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (1)(1).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (1)(1).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) + register_map_control_s.ENCODING_EGROUP_CTRL (3)(1).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + register_map_control_s.ENCODING_EGROUP_CTRL (3)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_1 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (1)(1).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + when REG_ENCODING_LINK03_EGROUP2_CTRL => + if GBT_NUM > 3 then + register_map_control_s.ENCODING_EGROUP_CTRL (3)(2).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (3)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (3)(2).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_TRICKLE_CONFIG (1)(1).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (1)(1).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (1)(1).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + register_map_control_s.ENCODING_EGROUP_CTRL (3)(2).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_map_control_s.ENCODING_EGROUP_CTRL (3)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_MODULE_MASK_F_C_1 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (1)(1).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask + when REG_ENCODING_LINK03_EGROUP3_CTRL => + if GBT_NUM > 3 then + register_map_control_s.ENCODING_EGROUP_CTRL (3)(3).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (3)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (3)(3).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.HCC_ABC_MASK_E_C (1)(1).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (3)(3).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc - register_map_control_s.HCC_ABC_MASK_E_C (1)(1).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (3)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK03_EGROUP4_CTRL => + if GBT_NUM > 3 then + register_map_control_s.ENCODING_EGROUP_CTRL (3)(4).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (3)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (3)(4).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.HCC_ABC_MASK_E_C (1)(1).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (3)(4).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + register_map_control_s.ENCODING_EGROUP_CTRL (3)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_B_8_1 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (1)(1).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) + when REG_ENCODING_LINK04_EGROUP0_CTRL => + if GBT_NUM > 4 then + register_map_control_s.ENCODING_EGROUP_CTRL (4)(0).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (4)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (4)(0).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_ABC_MASK_B_8 (1)(1).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (4)(0).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc - register_map_control_s.LCB_ABC_MASK_B_8 (1)(1).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (4)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK04_EGROUP1_CTRL => + if GBT_NUM > 4 then + register_map_control_s.ENCODING_EGROUP_CTRL (4)(1).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (4)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (4)(1).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_ABC_MASK_B_8 (1)(1).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (4)(1).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + register_map_control_s.ENCODING_EGROUP_CTRL (4)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_7_4_1 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (1)(1).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) + when REG_ENCODING_LINK04_EGROUP2_CTRL => + if GBT_NUM > 4 then + register_map_control_s.ENCODING_EGROUP_CTRL (4)(2).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (4)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (4)(2).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_ABC_MASK_7_4 (1)(1).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (4)(2).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc - register_map_control_s.LCB_ABC_MASK_7_4 (1)(1).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (4)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK04_EGROUP3_CTRL => + if GBT_NUM > 4 then + register_map_control_s.ENCODING_EGROUP_CTRL (4)(3).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (4)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (4)(3).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_ABC_MASK_7_4 (1)(1).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (4)(3).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + register_map_control_s.ENCODING_EGROUP_CTRL (4)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_3_0_1 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (1)(1).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) + when REG_ENCODING_LINK04_EGROUP4_CTRL => + if GBT_NUM > 4 then + register_map_control_s.ENCODING_EGROUP_CTRL (4)(4).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (4)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (4)(4).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_ABC_MASK_3_0 (1)(1).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (4)(4).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc - register_map_control_s.LCB_ABC_MASK_3_0 (1)(1).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (4)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK05_EGROUP0_CTRL => + if GBT_NUM > 5 then + register_map_control_s.ENCODING_EGROUP_CTRL (5)(0).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (5)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (5)(0).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_ABC_MASK_3_0 (1)(1).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (5)(0).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + register_map_control_s.ENCODING_EGROUP_CTRL (5)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_2 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (1)(2).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (1)(2).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. + when REG_ENCODING_LINK05_EGROUP1_CTRL => + if GBT_NUM > 5 then + register_map_control_s.ENCODING_EGROUP_CTRL (5)(1).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (5)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (5)(1).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_CTRL (1)(2).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (1)(2).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (1)(2).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (1)(2).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) + register_map_control_s.ENCODING_EGROUP_CTRL (5)(1).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc - register_map_control_s.LCB_CTRL (1)(2).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) + register_map_control_s.ENCODING_EGROUP_CTRL (5)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK05_EGROUP2_CTRL => + if GBT_NUM > 5 then + register_map_control_s.ENCODING_EGROUP_CTRL (5)(2).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (5)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (5)(2).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_CTRL (1)(2).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (1)(2).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (1)(2).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) + register_map_control_s.ENCODING_EGROUP_CTRL (5)(2).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + register_map_control_s.ENCODING_EGROUP_CTRL (5)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_2 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (1)(2).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + when REG_ENCODING_LINK05_EGROUP3_CTRL => + if GBT_NUM > 5 then + register_map_control_s.ENCODING_EGROUP_CTRL (5)(3).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (5)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (5)(3).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_TRICKLE_CONFIG (1)(2).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (1)(2).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (1)(2).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + register_map_control_s.ENCODING_EGROUP_CTRL (5)(3).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_map_control_s.ENCODING_EGROUP_CTRL (5)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_MODULE_MASK_F_C_2 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (1)(2).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask + when REG_ENCODING_LINK05_EGROUP4_CTRL => + if GBT_NUM > 5 then + register_map_control_s.ENCODING_EGROUP_CTRL (5)(4).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (5)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (5)(4).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.HCC_ABC_MASK_E_C (1)(2).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (5)(4).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc - register_map_control_s.HCC_ABC_MASK_E_C (1)(2).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (5)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK06_EGROUP0_CTRL => + if GBT_NUM > 6 then + register_map_control_s.ENCODING_EGROUP_CTRL (6)(0).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (6)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (6)(0).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.HCC_ABC_MASK_E_C (1)(2).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (6)(0).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + register_map_control_s.ENCODING_EGROUP_CTRL (6)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_B_8_2 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (1)(2).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) + when REG_ENCODING_LINK06_EGROUP1_CTRL => + if GBT_NUM > 6 then + register_map_control_s.ENCODING_EGROUP_CTRL (6)(1).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (6)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (6)(1).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_ABC_MASK_B_8 (1)(2).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (6)(1).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc - register_map_control_s.LCB_ABC_MASK_B_8 (1)(2).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (6)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK06_EGROUP2_CTRL => + if GBT_NUM > 6 then + register_map_control_s.ENCODING_EGROUP_CTRL (6)(2).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (6)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (6)(2).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_ABC_MASK_B_8 (1)(2).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (6)(2).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + register_map_control_s.ENCODING_EGROUP_CTRL (6)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_7_4_2 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (1)(2).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) + when REG_ENCODING_LINK06_EGROUP3_CTRL => + if GBT_NUM > 6 then + register_map_control_s.ENCODING_EGROUP_CTRL (6)(3).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (6)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (6)(3).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_ABC_MASK_7_4 (1)(2).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (6)(3).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc - register_map_control_s.LCB_ABC_MASK_7_4 (1)(2).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (6)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK06_EGROUP4_CTRL => + if GBT_NUM > 6 then + register_map_control_s.ENCODING_EGROUP_CTRL (6)(4).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (6)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (6)(4).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_ABC_MASK_7_4 (1)(2).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (6)(4).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + register_map_control_s.ENCODING_EGROUP_CTRL (6)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_3_0_2 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (1)(2).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (1)(2).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (1)(2).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) + when REG_ENCODING_LINK07_EGROUP0_CTRL => + if GBT_NUM > 7 then + register_map_control_s.ENCODING_EGROUP_CTRL (7)(0).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (7)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (7)(0).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_ABC_MASK_3_0 (1)(2).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (7)(0).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + register_map_control_s.ENCODING_EGROUP_CTRL (7)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_3 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (1)(3).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (1)(3).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. + when REG_ENCODING_LINK07_EGROUP1_CTRL => + if GBT_NUM > 7 then + register_map_control_s.ENCODING_EGROUP_CTRL (7)(1).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (7)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (7)(1).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_CTRL (1)(3).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (1)(3).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (1)(3).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (1)(3).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) + register_map_control_s.ENCODING_EGROUP_CTRL (7)(1).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc - register_map_control_s.LCB_CTRL (1)(3).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) + register_map_control_s.ENCODING_EGROUP_CTRL (7)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK07_EGROUP2_CTRL => + if GBT_NUM > 7 then + register_map_control_s.ENCODING_EGROUP_CTRL (7)(2).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (7)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (7)(2).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_CTRL (1)(3).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (1)(3).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (1)(3).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) + register_map_control_s.ENCODING_EGROUP_CTRL (7)(2).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + register_map_control_s.ENCODING_EGROUP_CTRL (7)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_3 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (1)(3).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + when REG_ENCODING_LINK07_EGROUP3_CTRL => + if GBT_NUM > 7 then + register_map_control_s.ENCODING_EGROUP_CTRL (7)(3).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (7)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (7)(3).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_TRICKLE_CONFIG (1)(3).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (1)(3).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (1)(3).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + register_map_control_s.ENCODING_EGROUP_CTRL (7)(3).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_map_control_s.ENCODING_EGROUP_CTRL (7)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_MODULE_MASK_F_C_3 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (1)(3).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask + when REG_ENCODING_LINK07_EGROUP4_CTRL => + if GBT_NUM > 7 then + register_map_control_s.ENCODING_EGROUP_CTRL (7)(4).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (7)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (7)(4).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.HCC_ABC_MASK_E_C (1)(3).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (7)(4).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc - register_map_control_s.HCC_ABC_MASK_E_C (1)(3).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (7)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK08_EGROUP0_CTRL => + if GBT_NUM > 8 then + register_map_control_s.ENCODING_EGROUP_CTRL (8)(0).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (8)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (8)(0).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.HCC_ABC_MASK_E_C (1)(3).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (8)(0).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + register_map_control_s.ENCODING_EGROUP_CTRL (8)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_B_8_3 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (1)(3).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) + when REG_ENCODING_LINK08_EGROUP1_CTRL => + if GBT_NUM > 8 then + register_map_control_s.ENCODING_EGROUP_CTRL (8)(1).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (8)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (8)(1).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_ABC_MASK_B_8 (1)(3).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (8)(1).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc - register_map_control_s.LCB_ABC_MASK_B_8 (1)(3).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (8)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK08_EGROUP2_CTRL => + if GBT_NUM > 8 then + register_map_control_s.ENCODING_EGROUP_CTRL (8)(2).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (8)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (8)(2).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_ABC_MASK_B_8 (1)(3).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (8)(2).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + register_map_control_s.ENCODING_EGROUP_CTRL (8)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_7_4_3 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (1)(3).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) + when REG_ENCODING_LINK08_EGROUP3_CTRL => + if GBT_NUM > 8 then + register_map_control_s.ENCODING_EGROUP_CTRL (8)(3).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (8)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (8)(3).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_ABC_MASK_7_4 (1)(3).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (8)(3).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc - register_map_control_s.LCB_ABC_MASK_7_4 (1)(3).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (8)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK08_EGROUP4_CTRL => + if GBT_NUM > 8 then + register_map_control_s.ENCODING_EGROUP_CTRL (8)(4).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (8)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (8)(4).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_ABC_MASK_7_4 (1)(3).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (8)(4).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + register_map_control_s.ENCODING_EGROUP_CTRL (8)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_3_0_3 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (1)(3).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) + when REG_ENCODING_LINK09_EGROUP0_CTRL => + if GBT_NUM > 9 then + register_map_control_s.ENCODING_EGROUP_CTRL (9)(0).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (9)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (9)(0).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_ABC_MASK_3_0 (1)(3).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (9)(0).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc - register_map_control_s.LCB_ABC_MASK_3_0 (1)(3).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (9)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK09_EGROUP1_CTRL => + if GBT_NUM > 9 then + register_map_control_s.ENCODING_EGROUP_CTRL (9)(1).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (9)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (9)(1).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_ABC_MASK_3_0 (1)(3).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (9)(1).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + register_map_control_s.ENCODING_EGROUP_CTRL (9)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH end if; - when REG_CR_ITK_R3L1_LINK_01_R3L1_0 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (1)(0).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (1)(0).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (1)(0).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_01_R3L1_1 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (1)(1).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (1)(1).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (1)(1).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_01_R3L1_2 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (1)(2).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (1)(2).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (1)(2).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_01_R3L1_3 => - if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (1)(3).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (1)(3).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (1)(3).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_0 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (2)(0).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (2)(0).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. + when REG_ENCODING_LINK09_EGROUP2_CTRL => + if GBT_NUM > 9 then + register_map_control_s.ENCODING_EGROUP_CTRL (9)(2).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (9)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (9)(2).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_CTRL (2)(0).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (2)(0).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (2)(0).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (2)(0).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) + register_map_control_s.ENCODING_EGROUP_CTRL (9)(2).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc - register_map_control_s.LCB_CTRL (2)(0).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) + register_map_control_s.ENCODING_EGROUP_CTRL (9)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK09_EGROUP3_CTRL => + if GBT_NUM > 9 then + register_map_control_s.ENCODING_EGROUP_CTRL (9)(3).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (9)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (9)(3).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_CTRL (2)(0).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (2)(0).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (2)(0).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) + register_map_control_s.ENCODING_EGROUP_CTRL (9)(3).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + register_map_control_s.ENCODING_EGROUP_CTRL (9)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_0 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (2)(0).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + when REG_ENCODING_LINK09_EGROUP4_CTRL => + if GBT_NUM > 9 then + register_map_control_s.ENCODING_EGROUP_CTRL (9)(4).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (9)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (9)(4).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_TRICKLE_CONFIG (2)(0).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (2)(0).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (2)(0).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + register_map_control_s.ENCODING_EGROUP_CTRL (9)(4).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + + register_map_control_s.ENCODING_EGROUP_CTRL (9)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_MODULE_MASK_F_C_0 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (2)(0).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask + when REG_ENCODING_LINK10_EGROUP0_CTRL => + if GBT_NUM > 10 then + register_map_control_s.ENCODING_EGROUP_CTRL (10)(0).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (10)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (10)(0).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.HCC_ABC_MASK_E_C (2)(0).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (10)(0).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc - register_map_control_s.HCC_ABC_MASK_E_C (2)(0).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (10)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK10_EGROUP1_CTRL => + if GBT_NUM > 10 then + register_map_control_s.ENCODING_EGROUP_CTRL (10)(1).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (10)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (10)(1).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.HCC_ABC_MASK_E_C (2)(0).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (10)(1).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + register_map_control_s.ENCODING_EGROUP_CTRL (10)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_B_8_0 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (2)(0).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) + when REG_ENCODING_LINK10_EGROUP2_CTRL => + if GBT_NUM > 10 then + register_map_control_s.ENCODING_EGROUP_CTRL (10)(2).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (10)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (10)(2).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_ABC_MASK_B_8 (2)(0).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (10)(2).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc - register_map_control_s.LCB_ABC_MASK_B_8 (2)(0).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (10)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK10_EGROUP3_CTRL => + if GBT_NUM > 10 then + register_map_control_s.ENCODING_EGROUP_CTRL (10)(3).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (10)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (10)(3).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_ABC_MASK_B_8 (2)(0).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (10)(3).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + register_map_control_s.ENCODING_EGROUP_CTRL (10)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_7_4_0 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (2)(0).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) + when REG_ENCODING_LINK10_EGROUP4_CTRL => + if GBT_NUM > 10 then + register_map_control_s.ENCODING_EGROUP_CTRL (10)(4).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (10)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (10)(4).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_ABC_MASK_7_4 (2)(0).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (10)(4).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc - register_map_control_s.LCB_ABC_MASK_7_4 (2)(0).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (10)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK11_EGROUP0_CTRL => + if GBT_NUM > 11 then + register_map_control_s.ENCODING_EGROUP_CTRL (11)(0).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (11)(0).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (11)(0).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_ABC_MASK_7_4 (2)(0).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (11)(0).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + register_map_control_s.ENCODING_EGROUP_CTRL (11)(0).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_3_0_0 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (2)(0).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) + when REG_ENCODING_LINK11_EGROUP1_CTRL => + if GBT_NUM > 11 then + register_map_control_s.ENCODING_EGROUP_CTRL (11)(1).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (11)(1).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (11)(1).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_ABC_MASK_3_0 (2)(0).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (11)(1).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc - register_map_control_s.LCB_ABC_MASK_3_0 (2)(0).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (11)(1).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK11_EGROUP2_CTRL => + if GBT_NUM > 11 then + register_map_control_s.ENCODING_EGROUP_CTRL (11)(2).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (11)(2).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (11)(2).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_ABC_MASK_3_0 (2)(0).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) + register_map_control_s.ENCODING_EGROUP_CTRL (11)(2).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + register_map_control_s.ENCODING_EGROUP_CTRL (11)(2).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_1 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (2)(1).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (2)(1).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. + when REG_ENCODING_LINK11_EGROUP3_CTRL => + if GBT_NUM > 11 then + register_map_control_s.ENCODING_EGROUP_CTRL (11)(3).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (11)(3).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (11)(3).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_CTRL (2)(1).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (2)(1).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (2)(1).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (2)(1).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) + register_map_control_s.ENCODING_EGROUP_CTRL (11)(3).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc - register_map_control_s.LCB_CTRL (2)(1).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) + register_map_control_s.ENCODING_EGROUP_CTRL (11)(3).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH + end if; + when REG_ENCODING_LINK11_EGROUP4_CTRL => + if GBT_NUM > 11 then + register_map_control_s.ENCODING_EGROUP_CTRL (11)(4).TTC_OPTION <= register_write_data_25_v(62 downto 59); -- Selects TTC bits sent to the E-link + register_map_control_s.ENCODING_EGROUP_CTRL (11)(4).REVERSE_ELINKS <= register_write_data_25_v(50 downto 43); -- enables bit reversing for the elink in the given epath + register_map_control_s.ENCODING_EGROUP_CTRL (11)(4).EPATH_WIDTH <= register_write_data_25_v(42 downto 40); -- Width of the Elinks in the egroup + -- 0: 2 bit 80 Mb/s + -- 1: 4 bit 160 Mb/s + -- 2: 8 bit 320 Mb/s - register_map_control_s.LCB_CTRL (2)(1).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (2)(1).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (2)(1).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) + register_map_control_s.ENCODING_EGROUP_CTRL (11)(4).PATH_ENCODING <= register_write_data_25_v(39 downto 8); -- Encoding for every EPATH, 4 bits per E-Path + -- 0: No encoding + -- 1: 8b10b mode + -- 2: HDLC mode + -- 3: ITk Strip LCB + -- 4: ITk Pixel + -- 5: Endeavour + -- 6: reserved + -- 7: reserved + -- greater than 7: TTC mode, see firmware Phase 2 specification doc + register_map_control_s.ENCODING_EGROUP_CTRL (11)(4).EPATH_ENA <= register_write_data_25_v(7 downto 0); -- Enable bits per E-PATH end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_1 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (2)(1).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_map_control_s.LCB_TRICKLE_CONFIG (2)(1).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (2)(1).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (2)(1).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + when REG_MINI_EGROUP_FROMHOST_00 => + if GBT_NUM > 0 then + register_map_control_s.MINI_EGROUP_FROMHOST (0).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (0).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_FROMHOST (0).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (0).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_FROMHOST (0).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (0).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_FROMHOST (0).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_MODULE_MASK_F_C_1 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (2)(1).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - - register_map_control_s.HCC_ABC_MASK_E_C (2)(1).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (2)(1).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (2)(1).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - + when REG_MINI_EGROUP_FROMHOST_01 => + if GBT_NUM > 1 then + register_map_control_s.MINI_EGROUP_FROMHOST (1).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (1).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_FROMHOST (1).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (1).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_FROMHOST (1).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (1).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_FROMHOST (1).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup + end if; + when REG_MINI_EGROUP_FROMHOST_02 => + if GBT_NUM > 2 then + register_map_control_s.MINI_EGROUP_FROMHOST (2).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (2).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_FROMHOST (2).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (2).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_FROMHOST (2).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (2).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_FROMHOST (2).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup + end if; + when REG_MINI_EGROUP_FROMHOST_03 => + if GBT_NUM > 3 then + register_map_control_s.MINI_EGROUP_FROMHOST (3).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (3).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_FROMHOST (3).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (3).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_FROMHOST (3).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (3).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_FROMHOST (3).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup + end if; + when REG_MINI_EGROUP_FROMHOST_04 => + if GBT_NUM > 4 then + register_map_control_s.MINI_EGROUP_FROMHOST (4).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (4).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_FROMHOST (4).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (4).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_FROMHOST (4).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (4).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_FROMHOST (4).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup + end if; + when REG_MINI_EGROUP_FROMHOST_05 => + if GBT_NUM > 5 then + register_map_control_s.MINI_EGROUP_FROMHOST (5).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (5).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_FROMHOST (5).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (5).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_FROMHOST (5).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (5).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_FROMHOST (5).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup + end if; + when REG_MINI_EGROUP_FROMHOST_06 => + if GBT_NUM > 6 then + register_map_control_s.MINI_EGROUP_FROMHOST (6).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (6).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_FROMHOST (6).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (6).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_FROMHOST (6).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (6).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_FROMHOST (6).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_B_8_1 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (2)(1).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (2)(1).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (2)(1).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (2)(1).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - + when REG_MINI_EGROUP_FROMHOST_07 => + if GBT_NUM > 7 then + register_map_control_s.MINI_EGROUP_FROMHOST (7).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (7).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_FROMHOST (7).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (7).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_FROMHOST (7).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (7).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_FROMHOST (7).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_7_4_1 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (2)(1).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (2)(1).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (2)(1).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (2)(1).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - + when REG_MINI_EGROUP_FROMHOST_08 => + if GBT_NUM > 8 then + register_map_control_s.MINI_EGROUP_FROMHOST (8).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (8).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_FROMHOST (8).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (8).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_FROMHOST (8).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (8).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_FROMHOST (8).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_3_0_1 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (2)(1).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (2)(1).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (2)(1).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (2)(1).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - + when REG_MINI_EGROUP_FROMHOST_09 => + if GBT_NUM > 9 then + register_map_control_s.MINI_EGROUP_FROMHOST (9).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (9).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_FROMHOST (9).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (9).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_FROMHOST (9).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (9).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_FROMHOST (9).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_2 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (2)(2).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (2)(2).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_map_control_s.LCB_CTRL (2)(2).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (2)(2).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (2)(2).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (2)(2).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_map_control_s.LCB_CTRL (2)(2).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_map_control_s.LCB_CTRL (2)(2).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (2)(2).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (2)(2).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - + when REG_MINI_EGROUP_FROMHOST_10 => + if GBT_NUM > 10 then + register_map_control_s.MINI_EGROUP_FROMHOST (10).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (10).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_FROMHOST (10).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (10).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_FROMHOST (10).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (10).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_FROMHOST (10).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_2 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (2)(2).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_map_control_s.LCB_TRICKLE_CONFIG (2)(2).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (2)(2).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (2)(2).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + when REG_MINI_EGROUP_FROMHOST_11 => + if GBT_NUM > 11 then + register_map_control_s.MINI_EGROUP_FROMHOST (11).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (11).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_FROMHOST (11).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (11).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_FROMHOST (11).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (11).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_FROMHOST (11).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_MODULE_MASK_F_C_2 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (2)(2).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - - register_map_control_s.HCC_ABC_MASK_E_C (2)(2).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (2)(2).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (2)(2).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - + when REG_MINI_EGROUP_FROMHOST_12 => + if GBT_NUM > 12 then + register_map_control_s.MINI_EGROUP_FROMHOST (12).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (12).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_FROMHOST (12).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (12).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_FROMHOST (12).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (12).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_FROMHOST (12).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_B_8_2 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (2)(2).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (2)(2).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (2)(2).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (2)(2).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - + when REG_MINI_EGROUP_FROMHOST_13 => + if GBT_NUM > 13 then + register_map_control_s.MINI_EGROUP_FROMHOST (13).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (13).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_FROMHOST (13).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (13).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_FROMHOST (13).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (13).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_FROMHOST (13).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_7_4_2 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (2)(2).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (2)(2).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (2)(2).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (2)(2).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - + when REG_MINI_EGROUP_FROMHOST_14 => + if GBT_NUM > 14 then + register_map_control_s.MINI_EGROUP_FROMHOST (14).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (14).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_FROMHOST (14).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (14).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_FROMHOST (14).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (14).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_FROMHOST (14).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_3_0_2 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (2)(2).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (2)(2).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (2)(2).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (2)(2).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - + when REG_MINI_EGROUP_FROMHOST_15 => + if GBT_NUM > 15 then + register_map_control_s.MINI_EGROUP_FROMHOST (15).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (15).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_FROMHOST (15).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (15).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_FROMHOST (15).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (15).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_FROMHOST (15).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_3 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (2)(3).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (2)(3).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_map_control_s.LCB_CTRL (2)(3).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (2)(3).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (2)(3).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (2)(3).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_map_control_s.LCB_CTRL (2)(3).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_map_control_s.LCB_CTRL (2)(3).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (2)(3).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (2)(3).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - + when REG_MINI_EGROUP_FROMHOST_16 => + if GBT_NUM > 16 then + register_map_control_s.MINI_EGROUP_FROMHOST (16).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (16).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_FROMHOST (16).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (16).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_FROMHOST (16).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (16).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_FROMHOST (16).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup + end if; + when REG_MINI_EGROUP_FROMHOST_17 => + if GBT_NUM > 17 then + register_map_control_s.MINI_EGROUP_FROMHOST (17).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (17).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_FROMHOST (17).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (17).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_FROMHOST (17).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (17).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_FROMHOST (17).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_3 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (2)(3).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_map_control_s.LCB_TRICKLE_CONFIG (2)(3).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (2)(3).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (2)(3).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + when REG_MINI_EGROUP_FROMHOST_18 => + if GBT_NUM > 18 then + register_map_control_s.MINI_EGROUP_FROMHOST (18).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (18).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_FROMHOST (18).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (18).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_FROMHOST (18).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (18).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_FROMHOST (18).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_MODULE_MASK_F_C_3 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (2)(3).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - - register_map_control_s.HCC_ABC_MASK_E_C (2)(3).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (2)(3).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (2)(3).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - + when REG_MINI_EGROUP_FROMHOST_19 => + if GBT_NUM > 19 then + register_map_control_s.MINI_EGROUP_FROMHOST (19).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (19).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_FROMHOST (19).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (19).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_FROMHOST (19).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (19).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_FROMHOST (19).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_B_8_3 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (2)(3).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (2)(3).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (2)(3).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (2)(3).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - + when REG_MINI_EGROUP_FROMHOST_20 => + if GBT_NUM > 20 then + register_map_control_s.MINI_EGROUP_FROMHOST (20).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (20).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_FROMHOST (20).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (20).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_FROMHOST (20).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (20).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_FROMHOST (20).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_7_4_3 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (2)(3).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (2)(3).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (2)(3).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (2)(3).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - + when REG_MINI_EGROUP_FROMHOST_21 => + if GBT_NUM > 21 then + register_map_control_s.MINI_EGROUP_FROMHOST (21).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (21).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_FROMHOST (21).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (21).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_FROMHOST (21).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (21).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_FROMHOST (21).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_3_0_3 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (2)(3).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (2)(3).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (2)(3).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (2)(3).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - + when REG_MINI_EGROUP_FROMHOST_22 => + if GBT_NUM > 22 then + register_map_control_s.MINI_EGROUP_FROMHOST (22).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (22).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_FROMHOST (22).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (22).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_FROMHOST (22).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (22).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_FROMHOST (22).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup end if; - when REG_CR_ITK_R3L1_LINK_02_R3L1_0 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (2)(0).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (2)(0).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (2)(0).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end + when REG_MINI_EGROUP_FROMHOST_23 => + if GBT_NUM > 23 then + register_map_control_s.MINI_EGROUP_FROMHOST (23).AUX_BIT_SWAPPING <= register_write_data_25_v(11 downto 11); -- 0: two input bits of AUX e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (23).AUX_ENABLE <= register_write_data_25_v(10 downto 10); -- Enables the AUX channel + register_map_control_s.MINI_EGROUP_FROMHOST (23).IC_BIT_SWAPPING <= register_write_data_25_v(8 downto 8); -- 0: two input bits of IC e-link are as documented, 1: two input bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (23).IC_ENABLE <= register_write_data_25_v(7 downto 7); -- Enables the IC channel + register_map_control_s.MINI_EGROUP_FROMHOST (23).EC_BIT_SWAPPING <= register_write_data_25_v(5 downto 5); -- 0: two output bits of EC e-link are as documented, 1: two output bits are swapped + register_map_control_s.MINI_EGROUP_FROMHOST (23).EC_ENCODING <= register_write_data_25_v(4 downto 1); -- Configures encoding of the EC channel + register_map_control_s.MINI_EGROUP_FROMHOST (23).EC_ENABLE <= register_write_data_25_v(0 downto 0); -- Configures the FromHost Mini egroup end if; - when REG_CR_ITK_R3L1_LINK_02_R3L1_1 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (2)(1).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (2)(1).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (2)(1).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end + when REG_FE_EMU_ENA => register_map_control_s.FE_EMU_ENA.EMU_TOFRONTEND <= register_write_data_25_v(1 downto 1); -- Enable GBT dummy emulator ToFrontEnd + register_map_control_s.FE_EMU_ENA.EMU_TOHOST <= register_write_data_25_v(0 downto 0); -- Enable GBT dummy emulator ToHost + when REG_FE_EMU_CONFIG => register_map_control_s.FE_EMU_CONFIG.WE <= register_write_data_25_v(54 downto 47); -- write enable array, every bit is one emulator RAM block + register_map_control_s.FE_EMU_CONFIG.WRADDR <= register_write_data_25_v(46 downto 33); -- write address bus + register_map_control_s.FE_EMU_CONFIG.WRDATA <= register_write_data_25_v(32 downto 0); -- write data bus + when REG_FE_EMU_READ => register_map_control_s.FE_EMU_READ.SEL <= register_write_data_25_v(35 downto 33); -- Select ramblock to read back + when REG_GBT_CHANNEL_DISABLE => register_map_control_s.GBT_CHANNEL_DISABLE <= register_write_data_25_v(47 downto 0); -- Disable selected lpGBT, GBT or FULL mode channel + when REG_GBT_GENERAL_CTRL => register_map_control_s.GBT_GENERAL_CTRL <= register_write_data_25_v(63 downto 0); -- Alignment chk reset (not self clearing) + when REG_GBT_MODE_CTRL => register_map_control_s.GBT_MODE_CTRL.RX_ALIGN_TB_SW <= register_write_data_25_v(2 downto 2); -- RX_ALIGN_TB_SW + register_map_control_s.GBT_MODE_CTRL.RX_ALIGN_SW <= register_write_data_25_v(1 downto 1); -- RX_ALIGN_SW + register_map_control_s.GBT_MODE_CTRL.DESMUX_USE_SW <= register_write_data_25_v(0 downto 0); -- DESMUX_USE_SW + when REG_GBT_RXSLIDE_SELECT => + if GBT_GENERATE_ALL_REGS then + register_map_control_s.GBT_RXSLIDE_SELECT <= register_write_data_25_v(47 downto 0); -- RxSlide select [47:0] end if; - when REG_CR_ITK_R3L1_LINK_02_R3L1_2 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (2)(2).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (2)(2).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (2)(2).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end + when REG_GBT_RXSLIDE_MANUAL => + if GBT_GENERATE_ALL_REGS then + register_map_control_s.GBT_RXSLIDE_MANUAL <= register_write_data_25_v(47 downto 0); -- RxSlide select [47:0] end if; - when REG_CR_ITK_R3L1_LINK_02_R3L1_3 => - if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (2)(3).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (2)(3).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (2)(3).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end + when REG_GBT_TXUSRRDY => + if GBT_GENERATE_ALL_REGS then + register_map_control_s.GBT_TXUSRRDY <= register_write_data_25_v(47 downto 0); -- TxUsrRdy [47:0] end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_0 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (3)(0).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (3)(0).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_map_control_s.LCB_CTRL (3)(0).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (3)(0).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (3)(0).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (3)(0).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_map_control_s.LCB_CTRL (3)(0).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_map_control_s.LCB_CTRL (3)(0).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (3)(0).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (3)(0).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - + when REG_GBT_RXUSRRDY => + if GBT_GENERATE_ALL_REGS then + register_map_control_s.GBT_RXUSRRDY <= register_write_data_25_v(47 downto 0); -- RxUsrRdy [47:0] end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_0 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (3)(0).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_map_control_s.LCB_TRICKLE_CONFIG (3)(0).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (3)(0).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (3)(0).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + when REG_GBT_SOFT_RESET => register_map_control_s.GBT_SOFT_RESET <= register_write_data_25_v(47 downto 0); -- SOFT_RESET [47:0] + when REG_GBT_GTTX_RESET => register_map_control_s.GBT_GTTX_RESET <= register_write_data_25_v(47 downto 0); -- GTTX_RESET [47:0] + when REG_GBT_GTRX_RESET => register_map_control_s.GBT_GTRX_RESET <= register_write_data_25_v(47 downto 0); -- GTRX_RESET [47:0] + when REG_GBT_PLL_RESET => register_map_control_s.GBT_PLL_RESET.QPLL_RESET <= register_write_data_25_v(59 downto 48); -- QPLL_RESET [11:0] + register_map_control_s.GBT_PLL_RESET.CPLL_RESET <= register_write_data_25_v(47 downto 0); -- CPLL_RESET [47:0] + when REG_GBT_SOFT_TX_RESET => + if GBT_GENERATE_ALL_REGS then + register_map_control_s.GBT_SOFT_TX_RESET.RESET_ALL <= register_write_data_25_v(59 downto 48); -- SOFT_TX_RESET_ALL [11:0] + register_map_control_s.GBT_SOFT_TX_RESET.RESET_GT <= register_write_data_25_v(47 downto 0); -- SOFT_TX_RESET_GT [47:0] end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_MODULE_MASK_F_C_0 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (3)(0).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - - register_map_control_s.HCC_ABC_MASK_E_C (3)(0).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (3)(0).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (3)(0).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - + when REG_GBT_SOFT_RX_RESET => + if GBT_GENERATE_ALL_REGS then + register_map_control_s.GBT_SOFT_RX_RESET.RESET_ALL <= register_write_data_25_v(59 downto 48); -- SOFT_TX_RESET_ALL [11:0] + register_map_control_s.GBT_SOFT_RX_RESET.RESET_GT <= register_write_data_25_v(47 downto 0); -- SOFT_TX_RESET_GT [47:0] end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_B_8_0 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (3)(0).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (3)(0).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (3)(0).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (3)(0).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - + when REG_GBT_ODD_EVEN => + if GBT_GENERATE_ALL_REGS then + register_map_control_s.GBT_ODD_EVEN <= register_write_data_25_v(47 downto 0); -- OddEven [47:0] end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_7_4_0 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (3)(0).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (3)(0).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (3)(0).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) + when REG_GBT_TOPBOT => + if GBT_GENERATE_ALL_REGS then + register_map_control_s.GBT_TOPBOT <= register_write_data_25_v(47 downto 0); -- TopBot [47:0] + end if; + when REG_GBT_TX_TC_DLY_VALUE1 => register_map_control_s.GBT_TX_TC_DLY_VALUE1 <= register_write_data_25_v(47 downto 0); -- TX_TC_DLY_VALUE [47:0] + when REG_GBT_TX_TC_DLY_VALUE2 => register_map_control_s.GBT_TX_TC_DLY_VALUE2 <= register_write_data_25_v(47 downto 0); -- TX_TC_DLY_VALUE [95:48] + when REG_GBT_TX_TC_DLY_VALUE3 => register_map_control_s.GBT_TX_TC_DLY_VALUE3 <= register_write_data_25_v(47 downto 0); -- TX_TC_DLY_VALUE [143:96] + when REG_GBT_TX_TC_DLY_VALUE4 => register_map_control_s.GBT_TX_TC_DLY_VALUE4 <= register_write_data_25_v(47 downto 0); -- TX_TC_DLY_VALUE [191:144] + when REG_GBT_DATA_TXFORMAT1 => register_map_control_s.GBT_DATA_TXFORMAT1 <= register_write_data_25_v(47 downto 0); -- DATA_TXFORMAT [47:0] + when REG_GBT_DATA_TXFORMAT2 => register_map_control_s.GBT_DATA_TXFORMAT2 <= register_write_data_25_v(47 downto 0); -- DATA_TXFORMAT [95:48] + when REG_GBT_DATA_RXFORMAT1 => register_map_control_s.GBT_DATA_RXFORMAT1 <= register_write_data_25_v(47 downto 0); -- DATA_RXFORMAT [47:0] + when REG_GBT_DATA_RXFORMAT2 => register_map_control_s.GBT_DATA_RXFORMAT2 <= register_write_data_25_v(47 downto 0); -- DATA_RXFORMAT [95:0] + when REG_GBT_TX_RESET => register_map_control_s.GBT_TX_RESET <= register_write_data_25_v(47 downto 0); -- TX Logic reset [47:0] + when REG_GBT_RX_RESET => register_map_control_s.GBT_RX_RESET <= register_write_data_25_v(47 downto 0); -- RX Logic reset [47:0] + when REG_GBT_TX_TC_METHOD => register_map_control_s.GBT_TX_TC_METHOD <= register_write_data_25_v(47 downto 0); -- TX time domain crossing method [47:0] + when REG_GBT_OUTMUX_SEL => register_map_control_s.GBT_OUTMUX_SEL <= register_write_data_25_v(47 downto 0); -- Descrambler output MUX selection [47:0] + when REG_GBT_TC_EDGE => register_map_control_s.GBT_TC_EDGE <= register_write_data_25_v(47 downto 0); -- Sampling edge selection for TX domain crossing [47:0] + when REG_GBT_TXPOLARITY => register_map_control_s.GBT_TXPOLARITY <= register_write_data_25_v(47 downto 0); -- 0: default polarity + -- 1: reversed polarity for transmitter of GTH channels - register_map_control_s.LCB_ABC_MASK_7_4 (3)(0).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) + when REG_GBT_RXPOLARITY => register_map_control_s.GBT_RXPOLARITY <= register_write_data_25_v(47 downto 0); -- 0: default polarity + -- 1: reversed polarity for the receiver of the GTH channels - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_3_0_0 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (3)(0).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) + when REG_GTH_LOOPBACK_CONTROL => register_map_control_s.GTH_LOOPBACK_CONTROL <= register_write_data_25_v(2 downto 0); -- Controls loopback for loopback: read UG476 for the details. NOTE: the TXBUFFER is disabled, near end PCS loopback is not supported. + -- 000: Normal operation + -- 001: Near-End PCS Loopback + -- 010: Near-End PMA Loopback + -- 011: Reserved + -- 100: Far-End PMA Loopback + -- 101: Reserved + -- 110: Far-End PCS Loopback - register_map_control_s.LCB_ABC_MASK_3_0 (3)(0).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) + when REG_GBT_TOHOST_FANOUT => register_map_control_s.GBT_TOHOST_FANOUT.LOCK <= register_write_data_25_v(48 downto 48); -- Locks this particular register. If set prevents software from touching it. + register_map_control_s.GBT_TOHOST_FANOUT.SEL <= register_write_data_25_v(47 downto 0); -- ToHost FanOut/Selector. Every bitfield is a channel: + -- 1 : GBT_EMU, select GBT Emulator for a specific CentralRouter channel + -- 0 : GBT_WRAP, select real GBT link for a specific CentralRouter channel - register_map_control_s.LCB_ABC_MASK_3_0 (3)(0).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) + when REG_GBT_TOFRONTEND_FANOUT => register_map_control_s.GBT_TOFRONTEND_FANOUT.LOCK <= register_write_data_25_v(48 downto 48); -- Locks this particular register. If set prevents software from touching it. + register_map_control_s.GBT_TOFRONTEND_FANOUT.SEL <= register_write_data_25_v(47 downto 0); -- ToFrontEnd FanOut/Selector. Every bitfield is a channel: + -- 1 : GBT_EMU, select GBT Emulator for a specific GBT link + -- 0 : TTC_DEC, select CentralRouter data (including TTC) for a specific GBT link + -- - register_map_control_s.LCB_ABC_MASK_3_0 (3)(0).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) + when REG_TTC_DEC_CTRL => register_map_control_s.TTC_DEC_CTRL.L1A_DELAY <= register_write_data_25_v(30 downto 27); -- Number of BC to delay the L1A distribution to the frontends + register_map_control_s.TTC_DEC_CTRL.BCID_ONBCR <= register_write_data_25_v(26 downto 15); -- BCID is set to this value when BCR arrives + register_map_control_s.TTC_DEC_CTRL.ECR_BCR_SWAP <= register_write_data_25_v(13 downto 13); -- ECR and BCR signals are swapped at the output of the TTC decoder (needed only for LAr TTC) + register_map_control_s.TTC_DEC_CTRL.BUSY_OUTPUT_INHIBIT <= register_write_data_25_v(12 downto 12); -- forces the Busy LEMO output to BUSY-OFF + register_map_control_s.TTC_DEC_CTRL.TOHOST_RST <= register_write_data_25_v(11 downto 11); -- reset toHost in ttc decoder + register_map_control_s.TTC_DEC_CTRL.TT_BCH_EN <= register_write_data_25_v(10 downto 10); -- trigger type enable / disable for TTC-ToHost + register_map_control_s.TTC_DEC_CTRL.XL1ID_SW <= register_write_data_25_v(9 downto 2); -- set XL1ID value, the value to be set by XL1ID_RST signal + register_map_control_s.TTC_DEC_CTRL.XL1ID_RST <= register_write_data_25_v(1 downto 1); -- giving a trigger signal to reset XL1ID value + register_map_control_s.TTC_DEC_CTRL.MASTER_BUSY <= register_write_data_25_v(0 downto 0); -- L1A trigger throttling + when REG_TTC_EMU => register_map_control_s.TTC_EMU.SEL <= register_write_data_25_v(1 downto 1); -- Select TTC data source 1 TTC Emu | 0 TTC Decoder + register_map_control_s.TTC_EMU.ENA <= register_write_data_25_v(0 downto 0); -- Clear to load into the TTC emulator’s memory the required sequence, Set to run the TTC emulator sequence + when REG_TTC_DELAY_00 => register_map_control_s.TTC_DELAY (0) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_01 => register_map_control_s.TTC_DELAY (1) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_02 => register_map_control_s.TTC_DELAY (2) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_03 => register_map_control_s.TTC_DELAY (3) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_04 => register_map_control_s.TTC_DELAY (4) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_05 => register_map_control_s.TTC_DELAY (5) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_06 => register_map_control_s.TTC_DELAY (6) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_07 => register_map_control_s.TTC_DELAY (7) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_08 => register_map_control_s.TTC_DELAY (8) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_09 => register_map_control_s.TTC_DELAY (9) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_10 => register_map_control_s.TTC_DELAY (10) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_11 => register_map_control_s.TTC_DELAY (11) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_12 => register_map_control_s.TTC_DELAY (12) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_13 => register_map_control_s.TTC_DELAY (13) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_14 => register_map_control_s.TTC_DELAY (14) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_15 => register_map_control_s.TTC_DELAY (15) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_16 => register_map_control_s.TTC_DELAY (16) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_17 => register_map_control_s.TTC_DELAY (17) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_18 => register_map_control_s.TTC_DELAY (18) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_19 => register_map_control_s.TTC_DELAY (19) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_20 => register_map_control_s.TTC_DELAY (20) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_21 => register_map_control_s.TTC_DELAY (21) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_22 => register_map_control_s.TTC_DELAY (22) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_23 => register_map_control_s.TTC_DELAY (23) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_24 => register_map_control_s.TTC_DELAY (24) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_25 => register_map_control_s.TTC_DELAY (25) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_26 => register_map_control_s.TTC_DELAY (26) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_27 => register_map_control_s.TTC_DELAY (27) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_28 => register_map_control_s.TTC_DELAY (28) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_29 => register_map_control_s.TTC_DELAY (29) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_30 => register_map_control_s.TTC_DELAY (30) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_31 => register_map_control_s.TTC_DELAY (31) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_32 => register_map_control_s.TTC_DELAY (32) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_33 => register_map_control_s.TTC_DELAY (33) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_34 => register_map_control_s.TTC_DELAY (34) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_35 => register_map_control_s.TTC_DELAY (35) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_36 => register_map_control_s.TTC_DELAY (36) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_37 => register_map_control_s.TTC_DELAY (37) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_38 => register_map_control_s.TTC_DELAY (38) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_39 => register_map_control_s.TTC_DELAY (39) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_40 => register_map_control_s.TTC_DELAY (40) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_41 => register_map_control_s.TTC_DELAY (41) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_42 => register_map_control_s.TTC_DELAY (42) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_43 => register_map_control_s.TTC_DELAY (43) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_44 => register_map_control_s.TTC_DELAY (44) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_45 => register_map_control_s.TTC_DELAY (45) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_46 => register_map_control_s.TTC_DELAY (46) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_DELAY_47 => register_map_control_s.TTC_DELAY (47) <= register_write_data_25_v(3 downto 0); -- Controls the TTC Fanout delay values + when REG_TTC_BUSY_TIMING_CTRL => register_map_control_s.TTC_BUSY_TIMING_CTRL.PRESCALE <= register_write_data_25_v(51 downto 32); -- Prescales the 40MHz clock to create an internal slow clock + register_map_control_s.TTC_BUSY_TIMING_CTRL.BUSY_WIDTH <= register_write_data_25_v(31 downto 16); -- Minimum number of 40MHz clocks that the busy is asserted + register_map_control_s.TTC_BUSY_TIMING_CTRL.LIMIT_TIME <= register_write_data_25_v(15 downto 0); -- Number of prescaled clocks a given busy must be asserted before it is recognized + when REG_TTC_BUSY_CLEAR => register_map_control_s.TTC_BUSY_CLEAR <= "1"; -- clears the latching busy bits in TTC_BUSY_ACCEPTED + when REG_TTC_EMU_CONTROL => register_map_control_s.TTC_EMU_CONTROL.BROADCAST <= register_write_data_25_v(32 downto 27); -- Broadcast data + register_map_control_s.TTC_EMU_CONTROL.ECR <= register_write_data_25_v(26 downto 26); -- Event counter reset + register_map_control_s.TTC_EMU_CONTROL.BCR <= register_write_data_25_v(25 downto 25); -- Bunch counter reset + register_map_control_s.TTC_EMU_CONTROL.L1A <= register_write_data_25_v(24 downto 24); -- Level 1 Accept + when REG_TTC_EMU_L1A_PERIOD => register_map_control_s.TTC_EMU_L1A_PERIOD <= register_write_data_25_v(31 downto 0); -- L1A period in BC. 0 means manual L1A with TTC_EMU_CONTROL.L1A + when REG_TTC_EMU_ECR_PERIOD => register_map_control_s.TTC_EMU_ECR_PERIOD <= register_write_data_25_v(31 downto 0); -- ECR period in BC. 0 means manual ECR with TTC_EMU_CONTROL.ECR + when REG_TTC_EMU_BCR_PERIOD => register_map_control_s.TTC_EMU_BCR_PERIOD <= register_write_data_25_v(31 downto 0); -- BCR period in BC. 0 means manual BCR with TTC_EMU_CONTROL.BCR + when REG_TTC_EMU_LONG_CHANNEL_DATA => register_map_control_s.TTC_EMU_LONG_CHANNEL_DATA <= register_write_data_25_v(31 downto 0); -- Long channel data for the TTC emulator + when REG_TTC_EMU_RESET => register_map_control_s.TTC_EMU_RESET <= "1"; -- Any write to this register resets the TTC Emulator to the default state. + when REG_TTC_ECR_MONITOR => register_map_control_s.TTC_ECR_MONITOR.CLEAR <= "1"; -- Counts the number of ECRs received from the TTC system, any write to this register clears the counter + when REG_TTC_TTYPE_MONITOR => register_map_control_s.TTC_TTYPE_MONITOR.CLEAR <= "1"; -- Counts the number of TType received from the TTC system, any write to this register clears the counter + when REG_TTC_BCR_PERIODICITY_MONITOR => register_map_control_s.TTC_BCR_PERIODICITY_MONITOR.CLEAR <= "1"; -- Counts the number of times the BCR period does not match 3564, any write to this register clears the counter + when REG_XOFF_FM_CH_FIFO_THRESH_LOW => register_map_control_s.XOFF_FM_CH_FIFO_THRESH_LOW <= register_write_data_25_v(3 downto 0); -- Controls the low threshold of the channel fifo in FULL mode on which + -- an Xon will be asserted, bitfields control 4 MSB - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_1 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (3)(1).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (3)(1).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. + when REG_XOFF_FM_CH_FIFO_THRESH_HIGH => register_map_control_s.XOFF_FM_CH_FIFO_THRESH_HIGH <= register_write_data_25_v(3 downto 0); -- Controls the high threshold of the channel fifo in FULL mode on which + -- an Xoff will be asserted, bitfields control 4 MSB - name: XOFF_FM_LOW_THRESH_CROSSED - register_map_control_s.LCB_CTRL (3)(1).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (3)(1).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (3)(1).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (3)(1).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) + when REG_XOFF_FM_HIGH_THRESH => register_map_control_s.XOFF_FM_HIGH_THRESH.CLEAR_LATCH <= "1"; -- Writing this register will clear all CROSS_LATCHED bits + when REG_XOFF_FM_SOFT_XOFF => register_map_control_s.XOFF_FM_SOFT_XOFF <= register_write_data_25_v(23 downto 0); -- Set any bit in this register to assert XOFF for the given channel, clearing bits will assert XON + when REG_XOFF_ENABLE => register_map_control_s.XOFF_ENABLE <= register_write_data_25_v(23 downto 0); -- Enable XOFF assertion (To Frontend) in case the FULL mode CH FIFO gets beyond thresholds. One bit per channel + when REG_DMA_BUSY_STATUS => register_map_control_s.DMA_BUSY_STATUS.CLEAR_LATCH <= "1"; -- Any write to this register clears TOHOST_BUSY_LATCHED + register_map_control_s.DMA_BUSY_STATUS.ENABLE <= register_write_data_25_v(4 downto 4); -- Enable the DMA buffer on the server as a source of busy + when REG_FM_BUSY_CHANNEL_STATUS => register_map_control_s.FM_BUSY_CHANNEL_STATUS.CLEAR_LATCH <= "1"; -- Any write to this register will clear the BUSY_LATCHED bits + when REG_BUSY_MAIN_OUTPUT_FIFO_THRESH => register_map_control_s.BUSY_MAIN_OUTPUT_FIFO_THRESH.BUSY_ENABLE <= register_write_data_25_v(24 downto 24); -- Enable busy generation if thresholds are crossed + register_map_control_s.BUSY_MAIN_OUTPUT_FIFO_THRESH.LOW <= register_write_data_25_v(23 downto 12); -- Low, Negate threshold of busy generation from main output fifo + register_map_control_s.BUSY_MAIN_OUTPUT_FIFO_THRESH.HIGH <= register_write_data_25_v(11 downto 0); -- High, Assert threshold of busy generation from main output fifo + when REG_BUSY_MAIN_OUTPUT_FIFO_STATUS => register_map_control_s.BUSY_MAIN_OUTPUT_FIFO_STATUS.CLEAR_LATCHED <= "1"; -- Any write to this register will clear the + when REG_ELINK_BUSY_ENABLE00 => register_map_control_s.ELINK_BUSY_ENABLE (0) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE01 => register_map_control_s.ELINK_BUSY_ENABLE (1) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE02 => register_map_control_s.ELINK_BUSY_ENABLE (2) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE03 => register_map_control_s.ELINK_BUSY_ENABLE (3) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE04 => register_map_control_s.ELINK_BUSY_ENABLE (4) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE05 => register_map_control_s.ELINK_BUSY_ENABLE (5) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE06 => register_map_control_s.ELINK_BUSY_ENABLE (6) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE07 => register_map_control_s.ELINK_BUSY_ENABLE (7) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE08 => register_map_control_s.ELINK_BUSY_ENABLE (8) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE09 => register_map_control_s.ELINK_BUSY_ENABLE (9) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE10 => register_map_control_s.ELINK_BUSY_ENABLE (10) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE11 => register_map_control_s.ELINK_BUSY_ENABLE (11) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE12 => register_map_control_s.ELINK_BUSY_ENABLE (12) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE13 => register_map_control_s.ELINK_BUSY_ENABLE (13) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE14 => register_map_control_s.ELINK_BUSY_ENABLE (14) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE15 => register_map_control_s.ELINK_BUSY_ENABLE (15) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE16 => register_map_control_s.ELINK_BUSY_ENABLE (16) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE17 => register_map_control_s.ELINK_BUSY_ENABLE (17) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE18 => register_map_control_s.ELINK_BUSY_ENABLE (18) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE19 => register_map_control_s.ELINK_BUSY_ENABLE (19) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE20 => register_map_control_s.ELINK_BUSY_ENABLE (20) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE21 => register_map_control_s.ELINK_BUSY_ENABLE (21) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE22 => register_map_control_s.ELINK_BUSY_ENABLE (22) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_ELINK_BUSY_ENABLE23 => register_map_control_s.ELINK_BUSY_ENABLE (23) <= register_write_data_25_v(56 downto 0); -- Per elink (and FULL mode link) enable of the busy signal towards the LEMO output + when REG_HK_CTRL_I2C => register_map_control_s.HK_CTRL_I2C.CONFIG_TRIG <= register_write_data_25_v(1 downto 1); -- i2c_config_trig + register_map_control_s.HK_CTRL_I2C.CLKFREQ_SEL <= register_write_data_25_v(0 downto 0); -- i2c_clkfreq_sel + when REG_HK_CTRL_FMC => register_map_control_s.HK_CTRL_FMC.SI5345_INSEL <= register_write_data_25_v(6 downto 5); -- Selects the input clock source + -- 0 : FPGA (FMC LA01) + -- 1 : FMC OSC (40.079 MHz) + -- 2 : FPGA (FMC LA18) - register_map_control_s.LCB_CTRL (3)(1).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) + register_map_control_s.HK_CTRL_FMC.SI5345_A <= register_write_data_25_v(4 downto 3); -- Si5345 I2C address select 2 LSB (0x0:default, dev id 0x68) + register_map_control_s.HK_CTRL_FMC.SI5345_OE <= register_write_data_25_v(2 downto 2); -- Si5345 active low output enable (0:enable) + register_map_control_s.HK_CTRL_FMC.SI5345_RSTN <= register_write_data_25_v(1 downto 1); -- Si5345 active low output enable (0:reset) + register_map_control_s.HK_CTRL_FMC.SI5345_SEL <= register_write_data_25_v(0 downto 0); -- Si5345 programming mode + -- 1 : I2C mode (default) + -- 0 : SPI mode - register_map_control_s.LCB_CTRL (3)(1).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (3)(1).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (3)(1).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) + when REG_HK_MON_FMC => register_map_control_s.HK_MON_FMC.SI5345_LOL <= register_write_data_25_v(1 downto 1); -- Si5345 Loss Of Lock pin + register_map_control_s.HK_MON_FMC.SI5345_INTR <= register_write_data_25_v(0 downto 0); -- Si5345 Interrupt flagging chip change of status + when REG_MMCM_MAIN => register_map_control_s.MMCM_MAIN.LCLK_SEL <= register_write_data_25_v(3 downto 3); -- 1: LCLK + -- 0: TTC + when REG_I2C_WR => register_map_control_s.I2C_WR.I2C_WREN <= not register_map_monitor_s.register_map_hk_monitor.I2C_WR.I2C_FULL; -- Any write to this register triggers an I2C read or write sequence + register_map_control_s.I2C_WR.WRITE_2BYTES <= register_write_data_25_v(24 downto 24); -- Write two bytes + register_map_control_s.I2C_WR.DATA_BYTE2 <= register_write_data_25_v(23 downto 16); -- Data byte 2 + register_map_control_s.I2C_WR.DATA_BYTE1 <= register_write_data_25_v(15 downto 8); -- Data byte 1 + register_map_control_s.I2C_WR.SLAVE_ADDRESS <= register_write_data_25_v(7 downto 1); -- Slave address + register_map_control_s.I2C_WR.READ_NOT_WRITE <= register_write_data_25_v(0 downto 0); -- READ/<o>WRITE</o> + when REG_I2C_RD => register_map_control_s.I2C_RD.I2C_RDEN <= not register_map_monitor_s.register_map_hk_monitor.I2C_RD.I2C_EMPTY; -- Any write to this register pops the last I2C data from the FIFO + when REG_INT_TEST => register_map_control_s.INT_TEST.TRIGGER <= "1"; -- Fire a test MSIx interrupt set in IRQ + register_map_control_s.INT_TEST.IRQ <= register_write_data_25_v(3 downto 0); -- Set this field to a value equal to the MSIX interrupt to be fired. The write triggers the interrupt immediately. + when REG_CONFIG_FLASH_WR => register_map_control_s.CONFIG_FLASH_WR.FAST_WRITE <= register_write_data_25_v(57 downto 57); -- Write command only. Only used for fast programming. + register_map_control_s.CONFIG_FLASH_WR.FAST_READ <= register_write_data_25_v(56 downto 56); -- Status reading without command writing. Only used for fast programming. + register_map_control_s.CONFIG_FLASH_WR.PAR_CTRL <= register_write_data_25_v(55 downto 55); -- Choose use FW or uC to select the Flash partition. 1 FW | 0 uC. + register_map_control_s.CONFIG_FLASH_WR.PAR_WR <= register_write_data_25_v(54 downto 53); -- Choose Flash partition. Valid when PAR_CTRL is 1. + register_map_control_s.CONFIG_FLASH_WR.FLASH_SEL <= register_write_data_25_v(52 downto 52); -- 1 takes control over flash, 0 gives JTAG control over flash + register_map_control_s.CONFIG_FLASH_WR.DO_INIT <= register_write_data_25_v(51 downto 51); -- Untested feature, don't use it yet. + register_map_control_s.CONFIG_FLASH_WR.DO_READSTATUS <= register_write_data_25_v(50 downto 50); -- Reads status from flash + register_map_control_s.CONFIG_FLASH_WR.DO_CLEARSTATUS <= register_write_data_25_v(49 downto 49); -- Clears status reading from flash, back to normal flash operation + register_map_control_s.CONFIG_FLASH_WR.DO_ERASEBLOCK <= register_write_data_25_v(48 downto 48); -- Erased the current block of the flash, this register has to be cleared by software + register_map_control_s.CONFIG_FLASH_WR.DO_UNLOCK_BLOCK <= register_write_data_25_v(47 downto 47); -- Unlock writes to the current block, this register has to be cleared by software + register_map_control_s.CONFIG_FLASH_WR.DO_READ <= register_write_data_25_v(46 downto 46); -- Reads the 16 bits from current address, this register has to be cleared by software + register_map_control_s.CONFIG_FLASH_WR.DO_WRITE <= register_write_data_25_v(45 downto 45); -- Writes the 16 bits to current address, this register has to be cleared by software + register_map_control_s.CONFIG_FLASH_WR.DO_READDEVICEID <= register_write_data_25_v(44 downto 44); -- DIN should return 0x0089, this register has to be cleared by software + register_map_control_s.CONFIG_FLASH_WR.DO_RESET <= register_write_data_25_v(43 downto 43); -- Can be used in the future, currently disconnected in firmware + register_map_control_s.CONFIG_FLASH_WR.ADDRESS <= register_write_data_25_v(42 downto 16); -- Address for read and write operations (25 bits, upper 2 bits are controlled by uC) + register_map_control_s.CONFIG_FLASH_WR.WRITE_DATA <= register_write_data_25_v(15 downto 0); -- Value of data to write towards flash + when REG_RXUSRCLK_FREQ => register_map_control_s.RXUSRCLK_FREQ.CHANNEL <= register_write_data_25_v(37 downto 32); -- Select the Transceiver channel to measure the clock from. + when REG_FELIG_DATA_GEN_CONFIG_00 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_DATA_GEN_CONFIG (0).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. + register_map_control_s.FELIG_DATA_GEN_CONFIG (0).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. + register_map_control_s.FELIG_DATA_GEN_CONFIG (0).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_map_control_s.FELIG_DATA_GEN_CONFIG (0).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_map_control_s.FELIG_DATA_GEN_CONFIG (0).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. + register_map_control_s.FELIG_DATA_GEN_CONFIG (0).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + end if; + when REG_FELIG_DATA_GEN_CONFIG_01 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_DATA_GEN_CONFIG (1).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. + register_map_control_s.FELIG_DATA_GEN_CONFIG (1).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. + register_map_control_s.FELIG_DATA_GEN_CONFIG (1).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_map_control_s.FELIG_DATA_GEN_CONFIG (1).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_map_control_s.FELIG_DATA_GEN_CONFIG (1).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. + register_map_control_s.FELIG_DATA_GEN_CONFIG (1).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + end if; + when REG_FELIG_DATA_GEN_CONFIG_02 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_DATA_GEN_CONFIG (2).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. + register_map_control_s.FELIG_DATA_GEN_CONFIG (2).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. + register_map_control_s.FELIG_DATA_GEN_CONFIG (2).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_map_control_s.FELIG_DATA_GEN_CONFIG (2).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_map_control_s.FELIG_DATA_GEN_CONFIG (2).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. + register_map_control_s.FELIG_DATA_GEN_CONFIG (2).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + end if; + when REG_FELIG_DATA_GEN_CONFIG_03 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_DATA_GEN_CONFIG (3).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. + register_map_control_s.FELIG_DATA_GEN_CONFIG (3).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. + register_map_control_s.FELIG_DATA_GEN_CONFIG (3).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_map_control_s.FELIG_DATA_GEN_CONFIG (3).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_map_control_s.FELIG_DATA_GEN_CONFIG (3).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. + register_map_control_s.FELIG_DATA_GEN_CONFIG (3).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + end if; + when REG_FELIG_DATA_GEN_CONFIG_04 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_DATA_GEN_CONFIG (4).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. + register_map_control_s.FELIG_DATA_GEN_CONFIG (4).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. + register_map_control_s.FELIG_DATA_GEN_CONFIG (4).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_map_control_s.FELIG_DATA_GEN_CONFIG (4).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_map_control_s.FELIG_DATA_GEN_CONFIG (4).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. + register_map_control_s.FELIG_DATA_GEN_CONFIG (4).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + end if; + when REG_FELIG_DATA_GEN_CONFIG_05 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_DATA_GEN_CONFIG (5).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. + register_map_control_s.FELIG_DATA_GEN_CONFIG (5).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. + register_map_control_s.FELIG_DATA_GEN_CONFIG (5).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_map_control_s.FELIG_DATA_GEN_CONFIG (5).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_map_control_s.FELIG_DATA_GEN_CONFIG (5).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. + register_map_control_s.FELIG_DATA_GEN_CONFIG (5).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_1 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (3)(1).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_map_control_s.LCB_TRICKLE_CONFIG (3)(1).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (3)(1).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (3)(1).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + when REG_FELIG_DATA_GEN_CONFIG_06 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_DATA_GEN_CONFIG (6).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. + register_map_control_s.FELIG_DATA_GEN_CONFIG (6).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. + register_map_control_s.FELIG_DATA_GEN_CONFIG (6).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_map_control_s.FELIG_DATA_GEN_CONFIG (6).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_map_control_s.FELIG_DATA_GEN_CONFIG (6).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. + register_map_control_s.FELIG_DATA_GEN_CONFIG (6).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_MODULE_MASK_F_C_1 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (3)(1).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - - register_map_control_s.HCC_ABC_MASK_E_C (3)(1).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (3)(1).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (3)(1).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_DATA_GEN_CONFIG_07 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_DATA_GEN_CONFIG (7).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. + register_map_control_s.FELIG_DATA_GEN_CONFIG (7).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. + register_map_control_s.FELIG_DATA_GEN_CONFIG (7).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_map_control_s.FELIG_DATA_GEN_CONFIG (7).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_map_control_s.FELIG_DATA_GEN_CONFIG (7).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. + register_map_control_s.FELIG_DATA_GEN_CONFIG (7).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_B_8_1 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (3)(1).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (3)(1).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (3)(1).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (3)(1).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_DATA_GEN_CONFIG_08 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_DATA_GEN_CONFIG (8).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. + register_map_control_s.FELIG_DATA_GEN_CONFIG (8).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. + register_map_control_s.FELIG_DATA_GEN_CONFIG (8).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_map_control_s.FELIG_DATA_GEN_CONFIG (8).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_map_control_s.FELIG_DATA_GEN_CONFIG (8).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. + register_map_control_s.FELIG_DATA_GEN_CONFIG (8).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_7_4_1 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (3)(1).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (3)(1).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (3)(1).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (3)(1).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_DATA_GEN_CONFIG_09 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_DATA_GEN_CONFIG (9).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. + register_map_control_s.FELIG_DATA_GEN_CONFIG (9).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. + register_map_control_s.FELIG_DATA_GEN_CONFIG (9).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_map_control_s.FELIG_DATA_GEN_CONFIG (9).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_map_control_s.FELIG_DATA_GEN_CONFIG (9).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. + register_map_control_s.FELIG_DATA_GEN_CONFIG (9).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_3_0_1 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (3)(1).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (3)(1).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (3)(1).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (3)(1).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_DATA_GEN_CONFIG_10 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_DATA_GEN_CONFIG (10).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. + register_map_control_s.FELIG_DATA_GEN_CONFIG (10).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. + register_map_control_s.FELIG_DATA_GEN_CONFIG (10).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_map_control_s.FELIG_DATA_GEN_CONFIG (10).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_map_control_s.FELIG_DATA_GEN_CONFIG (10).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. + register_map_control_s.FELIG_DATA_GEN_CONFIG (10).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_2 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (3)(2).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (3)(2).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_map_control_s.LCB_CTRL (3)(2).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (3)(2).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (3)(2).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (3)(2).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_map_control_s.LCB_CTRL (3)(2).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_map_control_s.LCB_CTRL (3)(2).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (3)(2).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (3)(2).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - + when REG_FELIG_DATA_GEN_CONFIG_11 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_DATA_GEN_CONFIG (11).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. + register_map_control_s.FELIG_DATA_GEN_CONFIG (11).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. + register_map_control_s.FELIG_DATA_GEN_CONFIG (11).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_map_control_s.FELIG_DATA_GEN_CONFIG (11).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_map_control_s.FELIG_DATA_GEN_CONFIG (11).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. + register_map_control_s.FELIG_DATA_GEN_CONFIG (11).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_2 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (3)(2).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_map_control_s.LCB_TRICKLE_CONFIG (3)(2).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (3)(2).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (3)(2).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + when REG_FELIG_DATA_GEN_CONFIG_12 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_DATA_GEN_CONFIG (12).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. + register_map_control_s.FELIG_DATA_GEN_CONFIG (12).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. + register_map_control_s.FELIG_DATA_GEN_CONFIG (12).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_map_control_s.FELIG_DATA_GEN_CONFIG (12).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_map_control_s.FELIG_DATA_GEN_CONFIG (12).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. + register_map_control_s.FELIG_DATA_GEN_CONFIG (12).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_MODULE_MASK_F_C_2 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (3)(2).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - - register_map_control_s.HCC_ABC_MASK_E_C (3)(2).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (3)(2).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (3)(2).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_DATA_GEN_CONFIG_13 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_DATA_GEN_CONFIG (13).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. + register_map_control_s.FELIG_DATA_GEN_CONFIG (13).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. + register_map_control_s.FELIG_DATA_GEN_CONFIG (13).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_map_control_s.FELIG_DATA_GEN_CONFIG (13).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_map_control_s.FELIG_DATA_GEN_CONFIG (13).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. + register_map_control_s.FELIG_DATA_GEN_CONFIG (13).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_B_8_2 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (3)(2).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (3)(2).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (3)(2).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (3)(2).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_DATA_GEN_CONFIG_14 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_DATA_GEN_CONFIG (14).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. + register_map_control_s.FELIG_DATA_GEN_CONFIG (14).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. + register_map_control_s.FELIG_DATA_GEN_CONFIG (14).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_map_control_s.FELIG_DATA_GEN_CONFIG (14).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_map_control_s.FELIG_DATA_GEN_CONFIG (14).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. + register_map_control_s.FELIG_DATA_GEN_CONFIG (14).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_7_4_2 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (3)(2).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (3)(2).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (3)(2).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (3)(2).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_DATA_GEN_CONFIG_15 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_DATA_GEN_CONFIG (15).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. + register_map_control_s.FELIG_DATA_GEN_CONFIG (15).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. + register_map_control_s.FELIG_DATA_GEN_CONFIG (15).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_map_control_s.FELIG_DATA_GEN_CONFIG (15).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_map_control_s.FELIG_DATA_GEN_CONFIG (15).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. + register_map_control_s.FELIG_DATA_GEN_CONFIG (15).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_3_0_2 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (3)(2).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (3)(2).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (3)(2).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (3)(2).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_DATA_GEN_CONFIG_16 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_DATA_GEN_CONFIG (16).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. + register_map_control_s.FELIG_DATA_GEN_CONFIG (16).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. + register_map_control_s.FELIG_DATA_GEN_CONFIG (16).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_map_control_s.FELIG_DATA_GEN_CONFIG (16).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_map_control_s.FELIG_DATA_GEN_CONFIG (16).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. + register_map_control_s.FELIG_DATA_GEN_CONFIG (16).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + end if; + when REG_FELIG_DATA_GEN_CONFIG_17 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_DATA_GEN_CONFIG (17).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. + register_map_control_s.FELIG_DATA_GEN_CONFIG (17).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. + register_map_control_s.FELIG_DATA_GEN_CONFIG (17).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_map_control_s.FELIG_DATA_GEN_CONFIG (17).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_map_control_s.FELIG_DATA_GEN_CONFIG (17).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. + register_map_control_s.FELIG_DATA_GEN_CONFIG (17).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA + end if; + when REG_FELIG_DATA_GEN_CONFIG_18 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_DATA_GEN_CONFIG (18).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. + register_map_control_s.FELIG_DATA_GEN_CONFIG (18).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. + register_map_control_s.FELIG_DATA_GEN_CONFIG (18).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_map_control_s.FELIG_DATA_GEN_CONFIG (18).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_map_control_s.FELIG_DATA_GEN_CONFIG (18).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. + register_map_control_s.FELIG_DATA_GEN_CONFIG (18).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_3 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (3)(3).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (3)(3).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_map_control_s.LCB_CTRL (3)(3).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (3)(3).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (3)(3).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (3)(3).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_map_control_s.LCB_CTRL (3)(3).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_map_control_s.LCB_CTRL (3)(3).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (3)(3).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (3)(3).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - + when REG_FELIG_DATA_GEN_CONFIG_19 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_DATA_GEN_CONFIG (19).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. + register_map_control_s.FELIG_DATA_GEN_CONFIG (19).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. + register_map_control_s.FELIG_DATA_GEN_CONFIG (19).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_map_control_s.FELIG_DATA_GEN_CONFIG (19).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_map_control_s.FELIG_DATA_GEN_CONFIG (19).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. + register_map_control_s.FELIG_DATA_GEN_CONFIG (19).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_3 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (3)(3).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_map_control_s.LCB_TRICKLE_CONFIG (3)(3).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (3)(3).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (3)(3).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + when REG_FELIG_DATA_GEN_CONFIG_20 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_DATA_GEN_CONFIG (20).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. + register_map_control_s.FELIG_DATA_GEN_CONFIG (20).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. + register_map_control_s.FELIG_DATA_GEN_CONFIG (20).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_map_control_s.FELIG_DATA_GEN_CONFIG (20).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_map_control_s.FELIG_DATA_GEN_CONFIG (20).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. + register_map_control_s.FELIG_DATA_GEN_CONFIG (20).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_MODULE_MASK_F_C_3 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (3)(3).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - - register_map_control_s.HCC_ABC_MASK_E_C (3)(3).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (3)(3).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (3)(3).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_DATA_GEN_CONFIG_21 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_DATA_GEN_CONFIG (21).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. + register_map_control_s.FELIG_DATA_GEN_CONFIG (21).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. + register_map_control_s.FELIG_DATA_GEN_CONFIG (21).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_map_control_s.FELIG_DATA_GEN_CONFIG (21).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_map_control_s.FELIG_DATA_GEN_CONFIG (21).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. + register_map_control_s.FELIG_DATA_GEN_CONFIG (21).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_B_8_3 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (3)(3).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (3)(3).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (3)(3).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (3)(3).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_DATA_GEN_CONFIG_22 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_DATA_GEN_CONFIG (22).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. + register_map_control_s.FELIG_DATA_GEN_CONFIG (22).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. + register_map_control_s.FELIG_DATA_GEN_CONFIG (22).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_map_control_s.FELIG_DATA_GEN_CONFIG (22).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_map_control_s.FELIG_DATA_GEN_CONFIG (22).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. + register_map_control_s.FELIG_DATA_GEN_CONFIG (22).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_7_4_3 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (3)(3).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (3)(3).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (3)(3).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (3)(3).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_DATA_GEN_CONFIG_23 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_DATA_GEN_CONFIG (23).USERDATA <= register_write_data_25_v(63 downto 48); -- Sets static payload word. When PATTERN_SEL=1. + register_map_control_s.FELIG_DATA_GEN_CONFIG (23).CHUNK_LENGTH <= register_write_data_25_v(47 downto 32); -- FELIG data generator chunk-length in bytes. + register_map_control_s.FELIG_DATA_GEN_CONFIG (23).RESET <= register_write_data_25_v(19 downto 15); -- FELIG data generator reset. One bit per group, 0:normal operation, 1:egroup emulation held in reset. + register_map_control_s.FELIG_DATA_GEN_CONFIG (23).SW_BUSY <= register_write_data_25_v(14 downto 10); -- FELIG elink bus state. One bit per group, 0:normal operation, 1:elink enter busy state. + register_map_control_s.FELIG_DATA_GEN_CONFIG (23).DATA_FORMAT <= register_write_data_25_v(9 downto 5); -- FELIG data generator format. 0:8b10b, 1:direct. + register_map_control_s.FELIG_DATA_GEN_CONFIG (23).PATTERN_SEL <= register_write_data_25_v(4 downto 0); -- FELIG data payload type. One bit per group, 0:byte counter, 1:USERDATA end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_3_0_3 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (3)(3).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (3)(3).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (3)(3).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (3)(3).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ELINK_CONFIG_00 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_CONFIG (0).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_map_control_s.FELIG_ELINK_CONFIG (0).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_map_control_s.FELIG_ELINK_CONFIG (0).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. end if; - when REG_CR_ITK_R3L1_LINK_03_R3L1_0 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (3)(0).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (3)(0).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (3)(0).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end + when REG_FELIG_ELINK_CONFIG_01 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_CONFIG (1).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_map_control_s.FELIG_ELINK_CONFIG (1).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_map_control_s.FELIG_ELINK_CONFIG (1).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. end if; - when REG_CR_ITK_R3L1_LINK_03_R3L1_1 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (3)(1).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (3)(1).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (3)(1).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end + when REG_FELIG_ELINK_CONFIG_02 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_CONFIG (2).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_map_control_s.FELIG_ELINK_CONFIG (2).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_map_control_s.FELIG_ELINK_CONFIG (2).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. end if; - when REG_CR_ITK_R3L1_LINK_03_R3L1_2 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (3)(2).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (3)(2).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (3)(2).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end + when REG_FELIG_ELINK_CONFIG_03 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_CONFIG (3).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_map_control_s.FELIG_ELINK_CONFIG (3).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_map_control_s.FELIG_ELINK_CONFIG (3).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. end if; - when REG_CR_ITK_R3L1_LINK_03_R3L1_3 => - if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (3)(3).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (3)(3).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (3)(3).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end + when REG_FELIG_ELINK_CONFIG_04 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_CONFIG (4).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_map_control_s.FELIG_ELINK_CONFIG (4).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_map_control_s.FELIG_ELINK_CONFIG (4).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_0 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(0).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (4)(0).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_map_control_s.LCB_CTRL (4)(0).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (4)(0).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (4)(0).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (4)(0).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_map_control_s.LCB_CTRL (4)(0).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_map_control_s.LCB_CTRL (4)(0).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (4)(0).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (4)(0).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - + when REG_FELIG_ELINK_CONFIG_05 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_CONFIG (5).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_map_control_s.FELIG_ELINK_CONFIG (5).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_map_control_s.FELIG_ELINK_CONFIG (5).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_0 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (4)(0).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_map_control_s.LCB_TRICKLE_CONFIG (4)(0).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (4)(0).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (4)(0).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + when REG_FELIG_ELINK_CONFIG_06 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_CONFIG (6).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_map_control_s.FELIG_ELINK_CONFIG (6).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_map_control_s.FELIG_ELINK_CONFIG (6).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_0 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (4)(0).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - - register_map_control_s.HCC_ABC_MASK_E_C (4)(0).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (4)(0).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (4)(0).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ELINK_CONFIG_07 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_CONFIG (7).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_map_control_s.FELIG_ELINK_CONFIG (7).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_map_control_s.FELIG_ELINK_CONFIG (7).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_0 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (4)(0).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (4)(0).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (4)(0).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (4)(0).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ELINK_CONFIG_08 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_CONFIG (8).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_map_control_s.FELIG_ELINK_CONFIG (8).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_map_control_s.FELIG_ELINK_CONFIG (8).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_0 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (4)(0).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (4)(0).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (4)(0).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (4)(0).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ELINK_CONFIG_09 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_CONFIG (9).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_map_control_s.FELIG_ELINK_CONFIG (9).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_map_control_s.FELIG_ELINK_CONFIG (9).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_0 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (4)(0).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (4)(0).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (4)(0).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (4)(0).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ELINK_CONFIG_10 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_CONFIG (10).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_map_control_s.FELIG_ELINK_CONFIG (10).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_map_control_s.FELIG_ELINK_CONFIG (10).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. + end if; + when REG_FELIG_ELINK_CONFIG_11 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_CONFIG (11).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_map_control_s.FELIG_ELINK_CONFIG (11).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_map_control_s.FELIG_ELINK_CONFIG (11).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. + end if; + when REG_FELIG_ELINK_CONFIG_12 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_CONFIG (12).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_map_control_s.FELIG_ELINK_CONFIG (12).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_map_control_s.FELIG_ELINK_CONFIG (12).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_1 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(1).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (4)(1).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_map_control_s.LCB_CTRL (4)(1).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (4)(1).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (4)(1).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (4)(1).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_map_control_s.LCB_CTRL (4)(1).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_map_control_s.LCB_CTRL (4)(1).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (4)(1).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (4)(1).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - + when REG_FELIG_ELINK_CONFIG_13 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_CONFIG (13).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_map_control_s.FELIG_ELINK_CONFIG (13).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_map_control_s.FELIG_ELINK_CONFIG (13).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_1 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (4)(1).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_map_control_s.LCB_TRICKLE_CONFIG (4)(1).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (4)(1).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (4)(1).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + when REG_FELIG_ELINK_CONFIG_14 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_CONFIG (14).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_map_control_s.FELIG_ELINK_CONFIG (14).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_map_control_s.FELIG_ELINK_CONFIG (14).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_1 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (4)(1).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - - register_map_control_s.HCC_ABC_MASK_E_C (4)(1).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (4)(1).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (4)(1).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ELINK_CONFIG_15 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_CONFIG (15).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_map_control_s.FELIG_ELINK_CONFIG (15).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_map_control_s.FELIG_ELINK_CONFIG (15).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_1 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (4)(1).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (4)(1).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (4)(1).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (4)(1).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ELINK_CONFIG_16 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_CONFIG (16).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_map_control_s.FELIG_ELINK_CONFIG (16).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_map_control_s.FELIG_ELINK_CONFIG (16).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_1 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (4)(1).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (4)(1).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (4)(1).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (4)(1).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ELINK_CONFIG_17 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_CONFIG (17).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_map_control_s.FELIG_ELINK_CONFIG (17).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_map_control_s.FELIG_ELINK_CONFIG (17).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_1 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (4)(1).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (4)(1).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (4)(1).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (4)(1).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ELINK_CONFIG_18 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_CONFIG (18).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_map_control_s.FELIG_ELINK_CONFIG (18).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_map_control_s.FELIG_ELINK_CONFIG (18).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_2 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(2).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (4)(2).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_map_control_s.LCB_CTRL (4)(2).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (4)(2).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (4)(2).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (4)(2).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_map_control_s.LCB_CTRL (4)(2).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_map_control_s.LCB_CTRL (4)(2).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (4)(2).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (4)(2).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - + when REG_FELIG_ELINK_CONFIG_19 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_CONFIG (19).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_map_control_s.FELIG_ELINK_CONFIG (19).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_map_control_s.FELIG_ELINK_CONFIG (19).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_2 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (4)(2).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_map_control_s.LCB_TRICKLE_CONFIG (4)(2).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (4)(2).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (4)(2).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + when REG_FELIG_ELINK_CONFIG_20 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_CONFIG (20).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_map_control_s.FELIG_ELINK_CONFIG (20).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_map_control_s.FELIG_ELINK_CONFIG (20).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_2 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (4)(2).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - - register_map_control_s.HCC_ABC_MASK_E_C (4)(2).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (4)(2).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (4)(2).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ELINK_CONFIG_21 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_CONFIG (21).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_map_control_s.FELIG_ELINK_CONFIG (21).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_map_control_s.FELIG_ELINK_CONFIG (21).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_2 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (4)(2).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (4)(2).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (4)(2).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (4)(2).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ELINK_CONFIG_22 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_CONFIG (22).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_map_control_s.FELIG_ELINK_CONFIG (22).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_map_control_s.FELIG_ELINK_CONFIG (22).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_2 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (4)(2).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (4)(2).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (4)(2).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (4)(2).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ELINK_CONFIG_23 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_CONFIG (23).ENDIAN_MOD <= register_write_data_25_v(39 downto 35); -- FELIG elink data input endian control. One bit per egroup. 0:little-endian (8b10b), 1:big-endian. + register_map_control_s.FELIG_ELINK_CONFIG (23).INPUT_WIDTH <= register_write_data_25_v(34 downto 30); -- FELIG elink data input width. One bit per egroup. 0:8-bit (direct), 1:10-bit (8b10b). + register_map_control_s.FELIG_ELINK_CONFIG (23).OUTPUT_WIDTH <= register_write_data_25_v(9 downto 0); -- FELIG elink data output width. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_2 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (4)(2).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (4)(2).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (4)(2).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (4)(2).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ELINK_ENABLE_00 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_ENABLE (0) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_3 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (4)(3).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (4)(3).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_map_control_s.LCB_CTRL (4)(3).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (4)(3).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (4)(3).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (4)(3).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_map_control_s.LCB_CTRL (4)(3).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_map_control_s.LCB_CTRL (4)(3).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (4)(3).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (4)(3).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - + when REG_FELIG_ELINK_ENABLE_01 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_ENABLE (1) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_3 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (4)(3).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_map_control_s.LCB_TRICKLE_CONFIG (4)(3).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (4)(3).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (4)(3).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + when REG_FELIG_ELINK_ENABLE_02 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_ENABLE (2) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_3 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (4)(3).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - - register_map_control_s.HCC_ABC_MASK_E_C (4)(3).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (4)(3).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (4)(3).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ELINK_ENABLE_03 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_ENABLE (3) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_3 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (4)(3).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (4)(3).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (4)(3).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (4)(3).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ELINK_ENABLE_04 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_ENABLE (4) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_3 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (4)(3).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (4)(3).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (4)(3).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (4)(3).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ELINK_ENABLE_05 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_ENABLE (5) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_3 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (4)(3).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (4)(3).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (4)(3).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (4)(3).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ELINK_ENABLE_06 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_ENABLE (6) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. end if; - when REG_CR_ITK_R3L1_LINK_04_R3L1_0 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (4)(0).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (4)(0).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (4)(0).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_04_R3L1_1 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (4)(1).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (4)(1).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (4)(1).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_04_R3L1_2 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (4)(2).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (4)(2).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (4)(2).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_04_R3L1_3 => - if (GBT_NUM > 4 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (4)(3).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (4)(3).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (4)(3).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_0 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(0).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (5)(0).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_map_control_s.LCB_CTRL (5)(0).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (5)(0).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (5)(0).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (5)(0).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_map_control_s.LCB_CTRL (5)(0).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_map_control_s.LCB_CTRL (5)(0).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (5)(0).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (5)(0).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - + when REG_FELIG_ELINK_ENABLE_07 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_ENABLE (7) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_0 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (5)(0).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_map_control_s.LCB_TRICKLE_CONFIG (5)(0).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (5)(0).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (5)(0).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + when REG_FELIG_ELINK_ENABLE_08 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_ENABLE (8) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_0 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (5)(0).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - - register_map_control_s.HCC_ABC_MASK_E_C (5)(0).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (5)(0).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (5)(0).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ELINK_ENABLE_09 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_ENABLE (9) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_0 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (5)(0).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (5)(0).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (5)(0).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (5)(0).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ELINK_ENABLE_10 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_ENABLE (10) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_0 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (5)(0).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (5)(0).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (5)(0).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (5)(0).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ELINK_ENABLE_11 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_ENABLE (11) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_0 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (5)(0).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (5)(0).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (5)(0).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (5)(0).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ELINK_ENABLE_12 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_ENABLE (12) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_1 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(1).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (5)(1).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_map_control_s.LCB_CTRL (5)(1).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (5)(1).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (5)(1).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (5)(1).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_map_control_s.LCB_CTRL (5)(1).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_map_control_s.LCB_CTRL (5)(1).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (5)(1).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (5)(1).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - + when REG_FELIG_ELINK_ENABLE_13 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_ENABLE (13) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_1 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (5)(1).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_map_control_s.LCB_TRICKLE_CONFIG (5)(1).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (5)(1).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (5)(1).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + when REG_FELIG_ELINK_ENABLE_14 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_ENABLE (14) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_1 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (5)(1).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - - register_map_control_s.HCC_ABC_MASK_E_C (5)(1).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (5)(1).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (5)(1).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ELINK_ENABLE_15 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_ENABLE (15) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_1 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (5)(1).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (5)(1).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (5)(1).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (5)(1).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ELINK_ENABLE_16 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_ENABLE (16) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_1 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (5)(1).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (5)(1).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (5)(1).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (5)(1).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ELINK_ENABLE_17 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_ENABLE (17) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_1 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (5)(1).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (5)(1).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (5)(1).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (5)(1).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ELINK_ENABLE_18 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_ENABLE (18) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_2 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(2).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (5)(2).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_map_control_s.LCB_CTRL (5)(2).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (5)(2).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (5)(2).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (5)(2).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_map_control_s.LCB_CTRL (5)(2).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_map_control_s.LCB_CTRL (5)(2).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (5)(2).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (5)(2).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - + when REG_FELIG_ELINK_ENABLE_19 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_ENABLE (19) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_2 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (5)(2).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_map_control_s.LCB_TRICKLE_CONFIG (5)(2).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (5)(2).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (5)(2).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + when REG_FELIG_ELINK_ENABLE_20 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_ENABLE (20) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_2 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (5)(2).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - - register_map_control_s.HCC_ABC_MASK_E_C (5)(2).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (5)(2).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (5)(2).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ELINK_ENABLE_21 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_ENABLE (21) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_2 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (5)(2).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (5)(2).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (5)(2).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (5)(2).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ELINK_ENABLE_22 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_ENABLE (22) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_2 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (5)(2).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (5)(2).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (5)(2).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (5)(2).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ELINK_ENABLE_23 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ELINK_ENABLE (23) <= register_write_data_25_v(39 downto 0); -- FELIG elink enable. One bit per elink. 0:disabled, 1:enabled. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_2 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (5)(2).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (5)(2).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (5)(2).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (5)(2).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_GLOBAL_CONTROL => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_GLOBAL_CONTROL.FAKE_L1A_RATE <= register_write_data_25_v(63 downto 36); -- Sets the internal fake L1 trigger rate. [25ns/LSB] + register_map_control_s.FELIG_GLOBAL_CONTROL.PICXO_OFFSET_PPM <= register_write_data_25_v(35 downto 14); -- When OFFSET_EN is 1, this directly sets the output frequency, within the given adjustment range. + register_map_control_s.FELIG_GLOBAL_CONTROL.TRACK_DATA <= register_write_data_25_v(12 downto 12); -- FELIG GT core control. Must be set to enable normal operation. + register_map_control_s.FELIG_GLOBAL_CONTROL.RXUSERRDY <= register_write_data_25_v(11 downto 11); -- FELIG GT core control. Must be set to enable normal operation. + register_map_control_s.FELIG_GLOBAL_CONTROL.TXUSERRDY <= register_write_data_25_v(10 downto 10); -- FELIG GT core control. Must be set to enable normal operation. + register_map_control_s.FELIG_GLOBAL_CONTROL.AUTO_RESET <= register_write_data_25_v(9 downto 9); -- FELIG GT core control. If set the GT core automatically resets on data error. + register_map_control_s.FELIG_GLOBAL_CONTROL.PICXO_RESET <= register_write_data_25_v(8 downto 8); -- FELIG GT core control. Manual PICXO reset. + register_map_control_s.FELIG_GLOBAL_CONTROL.GTTX_RESET <= register_write_data_25_v(7 downto 7); -- FELIG GT core control. Manual GT TX reset + register_map_control_s.FELIG_GLOBAL_CONTROL.CPLL_RESET <= register_write_data_25_v(6 downto 6); -- FELIG GT core control. Manual CPLL reset. + register_map_control_s.FELIG_GLOBAL_CONTROL.X3_X4_OUTPUT_SELECT <= register_write_data_25_v(5 downto 0); -- X3/X4 SMA output source select. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_3 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (5)(3).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (5)(3).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_map_control_s.LCB_CTRL (5)(3).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (5)(3).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (5)(3).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (5)(3).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_map_control_s.LCB_CTRL (5)(3).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_map_control_s.LCB_CTRL (5)(3).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (5)(3).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (5)(3).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - + when REG_FELIG_LANE_CONFIG_00 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_LANE_CONFIG (0).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_map_control_s.FELIG_LANE_CONFIG (0).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. + register_map_control_s.FELIG_LANE_CONFIG (0).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_map_control_s.FELIG_LANE_CONFIG (0).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_map_control_s.FELIG_LANE_CONFIG (0).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_map_control_s.FELIG_LANE_CONFIG (0).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_map_control_s.FELIG_LANE_CONFIG (0).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (0).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (0).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_map_control_s.FELIG_LANE_CONFIG (0).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_map_control_s.FELIG_LANE_CONFIG (0).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_3 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (5)(3).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_map_control_s.LCB_TRICKLE_CONFIG (5)(3).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (5)(3).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (5)(3).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + when REG_FELIG_LANE_CONFIG_01 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_LANE_CONFIG (1).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_map_control_s.FELIG_LANE_CONFIG (1).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. + register_map_control_s.FELIG_LANE_CONFIG (1).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_map_control_s.FELIG_LANE_CONFIG (1).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_map_control_s.FELIG_LANE_CONFIG (1).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_map_control_s.FELIG_LANE_CONFIG (1).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_map_control_s.FELIG_LANE_CONFIG (1).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (1).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (1).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_map_control_s.FELIG_LANE_CONFIG (1).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_map_control_s.FELIG_LANE_CONFIG (1).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_3 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (5)(3).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - - register_map_control_s.HCC_ABC_MASK_E_C (5)(3).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (5)(3).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (5)(3).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_LANE_CONFIG_02 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_LANE_CONFIG (2).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_map_control_s.FELIG_LANE_CONFIG (2).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. + register_map_control_s.FELIG_LANE_CONFIG (2).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_map_control_s.FELIG_LANE_CONFIG (2).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_map_control_s.FELIG_LANE_CONFIG (2).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_map_control_s.FELIG_LANE_CONFIG (2).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_map_control_s.FELIG_LANE_CONFIG (2).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (2).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (2).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_map_control_s.FELIG_LANE_CONFIG (2).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_map_control_s.FELIG_LANE_CONFIG (2).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_3 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (5)(3).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (5)(3).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (5)(3).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (5)(3).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_LANE_CONFIG_03 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_LANE_CONFIG (3).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_map_control_s.FELIG_LANE_CONFIG (3).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. + register_map_control_s.FELIG_LANE_CONFIG (3).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_map_control_s.FELIG_LANE_CONFIG (3).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_map_control_s.FELIG_LANE_CONFIG (3).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_map_control_s.FELIG_LANE_CONFIG (3).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_map_control_s.FELIG_LANE_CONFIG (3).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (3).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (3).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_map_control_s.FELIG_LANE_CONFIG (3).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_map_control_s.FELIG_LANE_CONFIG (3).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_3 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (5)(3).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (5)(3).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (5)(3).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (5)(3).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_LANE_CONFIG_04 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_LANE_CONFIG (4).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_map_control_s.FELIG_LANE_CONFIG (4).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. + register_map_control_s.FELIG_LANE_CONFIG (4).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_map_control_s.FELIG_LANE_CONFIG (4).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_map_control_s.FELIG_LANE_CONFIG (4).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_map_control_s.FELIG_LANE_CONFIG (4).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_map_control_s.FELIG_LANE_CONFIG (4).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (4).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (4).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_map_control_s.FELIG_LANE_CONFIG (4).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_map_control_s.FELIG_LANE_CONFIG (4).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_3 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (5)(3).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (5)(3).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (5)(3).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (5)(3).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_LANE_CONFIG_05 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_LANE_CONFIG (5).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_map_control_s.FELIG_LANE_CONFIG (5).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. + register_map_control_s.FELIG_LANE_CONFIG (5).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_map_control_s.FELIG_LANE_CONFIG (5).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_map_control_s.FELIG_LANE_CONFIG (5).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_map_control_s.FELIG_LANE_CONFIG (5).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_map_control_s.FELIG_LANE_CONFIG (5).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (5).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (5).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_map_control_s.FELIG_LANE_CONFIG (5).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_map_control_s.FELIG_LANE_CONFIG (5).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) end if; - when REG_CR_ITK_R3L1_LINK_05_R3L1_0 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (5)(0).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (5)(0).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (5)(0).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_05_R3L1_1 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (5)(1).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (5)(1).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (5)(1).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_05_R3L1_2 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (5)(2).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (5)(2).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (5)(2).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_05_R3L1_3 => - if (GBT_NUM > 5 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (5)(3).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (5)(3).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (5)(3).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_0 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(0).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (6)(0).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_map_control_s.LCB_CTRL (6)(0).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (6)(0).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (6)(0).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (6)(0).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_map_control_s.LCB_CTRL (6)(0).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_map_control_s.LCB_CTRL (6)(0).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (6)(0).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (6)(0).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - + when REG_FELIG_LANE_CONFIG_06 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_LANE_CONFIG (6).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_map_control_s.FELIG_LANE_CONFIG (6).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. + register_map_control_s.FELIG_LANE_CONFIG (6).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_map_control_s.FELIG_LANE_CONFIG (6).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_map_control_s.FELIG_LANE_CONFIG (6).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_map_control_s.FELIG_LANE_CONFIG (6).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_map_control_s.FELIG_LANE_CONFIG (6).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (6).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (6).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_map_control_s.FELIG_LANE_CONFIG (6).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_map_control_s.FELIG_LANE_CONFIG (6).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_0 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (6)(0).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_map_control_s.LCB_TRICKLE_CONFIG (6)(0).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (6)(0).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (6)(0).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + when REG_FELIG_LANE_CONFIG_07 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_LANE_CONFIG (7).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_map_control_s.FELIG_LANE_CONFIG (7).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. + register_map_control_s.FELIG_LANE_CONFIG (7).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_map_control_s.FELIG_LANE_CONFIG (7).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_map_control_s.FELIG_LANE_CONFIG (7).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_map_control_s.FELIG_LANE_CONFIG (7).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_map_control_s.FELIG_LANE_CONFIG (7).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (7).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (7).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_map_control_s.FELIG_LANE_CONFIG (7).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_map_control_s.FELIG_LANE_CONFIG (7).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_0 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (6)(0).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - - register_map_control_s.HCC_ABC_MASK_E_C (6)(0).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (6)(0).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (6)(0).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_LANE_CONFIG_08 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_LANE_CONFIG (8).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_map_control_s.FELIG_LANE_CONFIG (8).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. + register_map_control_s.FELIG_LANE_CONFIG (8).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_map_control_s.FELIG_LANE_CONFIG (8).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_map_control_s.FELIG_LANE_CONFIG (8).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_map_control_s.FELIG_LANE_CONFIG (8).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_map_control_s.FELIG_LANE_CONFIG (8).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (8).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (8).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_map_control_s.FELIG_LANE_CONFIG (8).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_map_control_s.FELIG_LANE_CONFIG (8).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_0 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (6)(0).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (6)(0).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (6)(0).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (6)(0).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_LANE_CONFIG_09 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_LANE_CONFIG (9).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_map_control_s.FELIG_LANE_CONFIG (9).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. + register_map_control_s.FELIG_LANE_CONFIG (9).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_map_control_s.FELIG_LANE_CONFIG (9).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_map_control_s.FELIG_LANE_CONFIG (9).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_map_control_s.FELIG_LANE_CONFIG (9).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_map_control_s.FELIG_LANE_CONFIG (9).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (9).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (9).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_map_control_s.FELIG_LANE_CONFIG (9).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_map_control_s.FELIG_LANE_CONFIG (9).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_0 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (6)(0).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (6)(0).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (6)(0).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (6)(0).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_LANE_CONFIG_10 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_LANE_CONFIG (10).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_map_control_s.FELIG_LANE_CONFIG (10).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. + register_map_control_s.FELIG_LANE_CONFIG (10).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_map_control_s.FELIG_LANE_CONFIG (10).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_map_control_s.FELIG_LANE_CONFIG (10).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_map_control_s.FELIG_LANE_CONFIG (10).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_map_control_s.FELIG_LANE_CONFIG (10).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (10).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (10).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_map_control_s.FELIG_LANE_CONFIG (10).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_map_control_s.FELIG_LANE_CONFIG (10).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_0 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (6)(0).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (6)(0).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (6)(0).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (6)(0).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_LANE_CONFIG_11 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_LANE_CONFIG (11).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_map_control_s.FELIG_LANE_CONFIG (11).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. + register_map_control_s.FELIG_LANE_CONFIG (11).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_map_control_s.FELIG_LANE_CONFIG (11).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_map_control_s.FELIG_LANE_CONFIG (11).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_map_control_s.FELIG_LANE_CONFIG (11).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_map_control_s.FELIG_LANE_CONFIG (11).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (11).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (11).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_map_control_s.FELIG_LANE_CONFIG (11).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_map_control_s.FELIG_LANE_CONFIG (11).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_1 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(1).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (6)(1).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_map_control_s.LCB_CTRL (6)(1).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (6)(1).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (6)(1).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (6)(1).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_map_control_s.LCB_CTRL (6)(1).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_map_control_s.LCB_CTRL (6)(1).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (6)(1).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (6)(1).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - + when REG_FELIG_LANE_CONFIG_12 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_LANE_CONFIG (12).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_map_control_s.FELIG_LANE_CONFIG (12).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. + register_map_control_s.FELIG_LANE_CONFIG (12).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_map_control_s.FELIG_LANE_CONFIG (12).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_map_control_s.FELIG_LANE_CONFIG (12).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_map_control_s.FELIG_LANE_CONFIG (12).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_map_control_s.FELIG_LANE_CONFIG (12).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (12).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (12).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_map_control_s.FELIG_LANE_CONFIG (12).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_map_control_s.FELIG_LANE_CONFIG (12).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_1 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (6)(1).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_map_control_s.LCB_TRICKLE_CONFIG (6)(1).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (6)(1).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (6)(1).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + when REG_FELIG_LANE_CONFIG_13 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_LANE_CONFIG (13).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_map_control_s.FELIG_LANE_CONFIG (13).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. + register_map_control_s.FELIG_LANE_CONFIG (13).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_map_control_s.FELIG_LANE_CONFIG (13).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_map_control_s.FELIG_LANE_CONFIG (13).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_map_control_s.FELIG_LANE_CONFIG (13).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_map_control_s.FELIG_LANE_CONFIG (13).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (13).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (13).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_map_control_s.FELIG_LANE_CONFIG (13).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_map_control_s.FELIG_LANE_CONFIG (13).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_1 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (6)(1).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - - register_map_control_s.HCC_ABC_MASK_E_C (6)(1).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (6)(1).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (6)(1).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_LANE_CONFIG_14 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_LANE_CONFIG (14).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_map_control_s.FELIG_LANE_CONFIG (14).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. + register_map_control_s.FELIG_LANE_CONFIG (14).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_map_control_s.FELIG_LANE_CONFIG (14).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_map_control_s.FELIG_LANE_CONFIG (14).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_map_control_s.FELIG_LANE_CONFIG (14).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_map_control_s.FELIG_LANE_CONFIG (14).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (14).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (14).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_map_control_s.FELIG_LANE_CONFIG (14).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_map_control_s.FELIG_LANE_CONFIG (14).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_1 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (6)(1).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (6)(1).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (6)(1).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (6)(1).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_LANE_CONFIG_15 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_LANE_CONFIG (15).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_map_control_s.FELIG_LANE_CONFIG (15).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. + register_map_control_s.FELIG_LANE_CONFIG (15).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_map_control_s.FELIG_LANE_CONFIG (15).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_map_control_s.FELIG_LANE_CONFIG (15).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_map_control_s.FELIG_LANE_CONFIG (15).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_map_control_s.FELIG_LANE_CONFIG (15).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (15).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (15).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_map_control_s.FELIG_LANE_CONFIG (15).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_map_control_s.FELIG_LANE_CONFIG (15).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_1 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (6)(1).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (6)(1).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (6)(1).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (6)(1).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_LANE_CONFIG_16 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_LANE_CONFIG (16).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_map_control_s.FELIG_LANE_CONFIG (16).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. + register_map_control_s.FELIG_LANE_CONFIG (16).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_map_control_s.FELIG_LANE_CONFIG (16).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_map_control_s.FELIG_LANE_CONFIG (16).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_map_control_s.FELIG_LANE_CONFIG (16).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_map_control_s.FELIG_LANE_CONFIG (16).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (16).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (16).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_map_control_s.FELIG_LANE_CONFIG (16).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_map_control_s.FELIG_LANE_CONFIG (16).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) + end if; + when REG_FELIG_LANE_CONFIG_17 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_LANE_CONFIG (17).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_map_control_s.FELIG_LANE_CONFIG (17).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. + register_map_control_s.FELIG_LANE_CONFIG (17).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_map_control_s.FELIG_LANE_CONFIG (17).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_map_control_s.FELIG_LANE_CONFIG (17).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_map_control_s.FELIG_LANE_CONFIG (17).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_map_control_s.FELIG_LANE_CONFIG (17).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (17).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (17).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_map_control_s.FELIG_LANE_CONFIG (17).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_map_control_s.FELIG_LANE_CONFIG (17).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_1 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (6)(1).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (6)(1).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (6)(1).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (6)(1).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_LANE_CONFIG_18 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_LANE_CONFIG (18).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_map_control_s.FELIG_LANE_CONFIG (18).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. + register_map_control_s.FELIG_LANE_CONFIG (18).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_map_control_s.FELIG_LANE_CONFIG (18).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_map_control_s.FELIG_LANE_CONFIG (18).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_map_control_s.FELIG_LANE_CONFIG (18).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_map_control_s.FELIG_LANE_CONFIG (18).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (18).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (18).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_map_control_s.FELIG_LANE_CONFIG (18).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_map_control_s.FELIG_LANE_CONFIG (18).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_2 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(2).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (6)(2).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_map_control_s.LCB_CTRL (6)(2).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (6)(2).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (6)(2).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (6)(2).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_map_control_s.LCB_CTRL (6)(2).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_map_control_s.LCB_CTRL (6)(2).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (6)(2).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (6)(2).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - + when REG_FELIG_LANE_CONFIG_19 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_LANE_CONFIG (19).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_map_control_s.FELIG_LANE_CONFIG (19).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. + register_map_control_s.FELIG_LANE_CONFIG (19).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_map_control_s.FELIG_LANE_CONFIG (19).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_map_control_s.FELIG_LANE_CONFIG (19).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_map_control_s.FELIG_LANE_CONFIG (19).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_map_control_s.FELIG_LANE_CONFIG (19).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (19).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (19).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_map_control_s.FELIG_LANE_CONFIG (19).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_map_control_s.FELIG_LANE_CONFIG (19).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_2 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (6)(2).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_map_control_s.LCB_TRICKLE_CONFIG (6)(2).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (6)(2).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (6)(2).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + when REG_FELIG_LANE_CONFIG_20 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_LANE_CONFIG (20).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_map_control_s.FELIG_LANE_CONFIG (20).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. + register_map_control_s.FELIG_LANE_CONFIG (20).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_map_control_s.FELIG_LANE_CONFIG (20).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_map_control_s.FELIG_LANE_CONFIG (20).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_map_control_s.FELIG_LANE_CONFIG (20).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_map_control_s.FELIG_LANE_CONFIG (20).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (20).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (20).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_map_control_s.FELIG_LANE_CONFIG (20).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_map_control_s.FELIG_LANE_CONFIG (20).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_2 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (6)(2).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - - register_map_control_s.HCC_ABC_MASK_E_C (6)(2).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (6)(2).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (6)(2).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_LANE_CONFIG_21 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_LANE_CONFIG (21).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_map_control_s.FELIG_LANE_CONFIG (21).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. + register_map_control_s.FELIG_LANE_CONFIG (21).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_map_control_s.FELIG_LANE_CONFIG (21).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_map_control_s.FELIG_LANE_CONFIG (21).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_map_control_s.FELIG_LANE_CONFIG (21).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_map_control_s.FELIG_LANE_CONFIG (21).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (21).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (21).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_map_control_s.FELIG_LANE_CONFIG (21).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_map_control_s.FELIG_LANE_CONFIG (21).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_2 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (6)(2).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (6)(2).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (6)(2).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (6)(2).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_LANE_CONFIG_22 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_LANE_CONFIG (22).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_map_control_s.FELIG_LANE_CONFIG (22).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. + register_map_control_s.FELIG_LANE_CONFIG (22).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_map_control_s.FELIG_LANE_CONFIG (22).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_map_control_s.FELIG_LANE_CONFIG (22).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_map_control_s.FELIG_LANE_CONFIG (22).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_map_control_s.FELIG_LANE_CONFIG (22).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (22).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (22).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_map_control_s.FELIG_LANE_CONFIG (22).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_map_control_s.FELIG_LANE_CONFIG (22).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_2 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (6)(2).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (6)(2).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (6)(2).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (6)(2).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_LANE_CONFIG_23 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_LANE_CONFIG (23).B_CH_BIT_SEL <= register_write_data_25_v(63 downto 42); -- When OFFSET_EN is 1. this directly sets the output frequency. within the given adjustment range. + register_map_control_s.FELIG_LANE_CONFIG (23).A_CH_BIT_SEL <= register_write_data_25_v(41 downto 35); -- Selects the bit from the received FELIX data from which to extract the L1A. + register_map_control_s.FELIG_LANE_CONFIG (23).LB_FIFO_DELAY <= register_write_data_25_v(34 downto 30); -- When the GTH or GTB loopback is enabled, this controls the loopback latency in clock cycles. + register_map_control_s.FELIG_LANE_CONFIG (23).ELINK_SYNC <= register_write_data_25_v(7 downto 7); -- When set, synchronizes the elink word boundaries. Must be set back to 0 to resume normal operation. + register_map_control_s.FELIG_LANE_CONFIG (23).PICXO_OFFEST_EN <= register_write_data_25_v(6 downto 6); -- FELIG TX frequency override. 0:frequency tracking enabled, 1:TX frequency set by PICXO_OFFSET_PPM. + register_map_control_s.FELIG_LANE_CONFIG (23).PI_HOLD <= register_write_data_25_v(5 downto 5); -- FELIG phase-interpolator hold. 0:frequency tracking enabled, 1:freeze TX frequency. + register_map_control_s.FELIG_LANE_CONFIG (23).GBT_LB_ENABLE <= register_write_data_25_v(4 downto 4); -- FELIG GBT direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (23).GBH_LB_ENABLE <= register_write_data_25_v(3 downto 3); -- FELIG GTH direct loopback enable. 0:disabled, 1:enabled. + register_map_control_s.FELIG_LANE_CONFIG (23).L1A_SOURCE <= register_write_data_25_v(2 downto 2); -- FELIG L1A data source select. 0:from local counter, 1:from FELIX. + register_map_control_s.FELIG_LANE_CONFIG (23).GBT_EMU_SOURCE <= register_write_data_25_v(1 downto 1); -- FELIG emulation data source select. 0:state-machine emulator, 1:ram-based emulator. + register_map_control_s.FELIG_LANE_CONFIG (23).FG_SOURCE <= register_write_data_25_v(0 downto 0); -- FELIG link check data source selection control. 0:normal operation, 1:PRBS link checker (not elink emulation data) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_2 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (6)(2).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (6)(2).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (6)(2).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (6)(2).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_MON_FREQ_GLOBAL => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_MON_FREQ_GLOBAL.XTAL_100MHZ <= register_write_data_25_v(63 downto 32); -- FELIG local oscillator frequency[Hz]. + register_map_control_s.FELIG_MON_FREQ_GLOBAL.CLK_41_667MHZ <= register_write_data_25_v(31 downto 0); -- FELIG PCIE MGTREFCLK frequency[Hz]. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_3 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (6)(3).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (6)(3).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_map_control_s.LCB_CTRL (6)(3).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (6)(3).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (6)(3).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (6)(3).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_map_control_s.LCB_CTRL (6)(3).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_map_control_s.LCB_CTRL (6)(3).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (6)(3).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (6)(3).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - + when REG_FELIG_RESET => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_RESET.LB_FIFO <= register_write_data_25_v(63 downto 48); -- One bit per lane. When set to 1, resets all loopback FIFOs. + register_map_control_s.FELIG_RESET.FRAMEGEN <= register_write_data_25_v(47 downto 24); -- One bit per lane. When set to 1, resets all FELIG link checking logic. + register_map_control_s.FELIG_RESET.LANE <= register_write_data_25_v(23 downto 0); -- One bit per lane. When set to 1, resets all FELIG lane logic. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_3 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (6)(3).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_map_control_s.LCB_TRICKLE_CONFIG (6)(3).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (6)(3).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (6)(3).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + when REG_FELIG_RX_SLIDE_RESET => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_RX_SLIDE_RESET <= register_write_data_25_v(23 downto 0); -- One bit per lane. When set to 1, resets the gbt rx slide counter. end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_3 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (6)(3).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - - register_map_control_s.HCC_ABC_MASK_E_C (6)(3).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (6)(3).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (6)(3).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_00 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(0).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(0).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_3 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (6)(3).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (6)(3).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (6)(3).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (6)(3).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_01 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(1).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(1).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_3 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (6)(3).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (6)(3).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (6)(3).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (6)(3).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_02 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(2).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(2).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_3 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (6)(3).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (6)(3).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (6)(3).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (6)(3).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_03 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(3).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(3).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word end if; - when REG_CR_ITK_R3L1_LINK_06_R3L1_0 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (6)(0).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (6)(0).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (6)(0).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_06_R3L1_1 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (6)(1).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (6)(1).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (6)(1).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_06_R3L1_2 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (6)(2).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (6)(2).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (6)(2).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_06_R3L1_3 => - if (GBT_NUM > 6 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (6)(3).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (6)(3).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (6)(3).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_0 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(0).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (7)(0).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_map_control_s.LCB_CTRL (7)(0).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (7)(0).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (7)(0).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (7)(0).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_map_control_s.LCB_CTRL (7)(0).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_map_control_s.LCB_CTRL (7)(0).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (7)(0).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (7)(0).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_04 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(4).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(4).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_0 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (7)(0).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_map_control_s.LCB_TRICKLE_CONFIG (7)(0).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (7)(0).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (7)(0).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_05 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(5).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(5).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_0 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (7)(0).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - - register_map_control_s.HCC_ABC_MASK_E_C (7)(0).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (7)(0).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (7)(0).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_06 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(6).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(6).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_0 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (7)(0).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (7)(0).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (7)(0).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (7)(0).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_07 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(7).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(7).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_0 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (7)(0).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (7)(0).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (7)(0).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (7)(0).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_08 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(8).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(8).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_0 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (7)(0).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (7)(0).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (7)(0).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (7)(0).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_09 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(9).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(9).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_1 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(1).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (7)(1).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_map_control_s.LCB_CTRL (7)(1).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (7)(1).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (7)(1).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (7)(1).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_map_control_s.LCB_CTRL (7)(1).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_map_control_s.LCB_CTRL (7)(1).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (7)(1).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (7)(1).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_10 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(10).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(10).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_1 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (7)(1).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_map_control_s.LCB_TRICKLE_CONFIG (7)(1).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (7)(1).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (7)(1).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_11 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(11).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(11).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_1 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (7)(1).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - - register_map_control_s.HCC_ABC_MASK_E_C (7)(1).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (7)(1).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (7)(1).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_12 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(12).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(12).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_1 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (7)(1).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (7)(1).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (7)(1).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (7)(1).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_13 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(13).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(13).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_1 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (7)(1).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (7)(1).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (7)(1).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (7)(1).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_14 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(14).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(14).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_1 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (7)(1).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (7)(1).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (7)(1).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (7)(1).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_15 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(15).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(15).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_2 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(2).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (7)(2).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_map_control_s.LCB_CTRL (7)(2).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (7)(2).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (7)(2).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (7)(2).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_map_control_s.LCB_CTRL (7)(2).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_map_control_s.LCB_CTRL (7)(2).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (7)(2).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (7)(2).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_16 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(16).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(16).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_2 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (7)(2).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_map_control_s.LCB_TRICKLE_CONFIG (7)(2).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (7)(2).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (7)(2).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_17 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(17).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(17).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_2 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (7)(2).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - - register_map_control_s.HCC_ABC_MASK_E_C (7)(2).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (7)(2).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (7)(2).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_18 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(18).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(18).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_2 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (7)(2).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (7)(2).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (7)(2).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (7)(2).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_19 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(19).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(19).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_2 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (7)(2).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (7)(2).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (7)(2).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (7)(2).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_20 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(20).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(20).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_2 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (7)(2).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (7)(2).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (7)(2).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (7)(2).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_21 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(21).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(21).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_3 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (7)(3).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (7)(3).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - register_map_control_s.LCB_CTRL (7)(3).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (7)(3).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (7)(3).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (7)(3).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - register_map_control_s.LCB_CTRL (7)(3).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - register_map_control_s.LCB_CTRL (7)(3).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (7)(3).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (7)(3).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_22 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(22).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(22).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_3 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (7)(3).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - register_map_control_s.LCB_TRICKLE_CONFIG (7)(3).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (7)(3).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (7)(3).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + when REG_FELIG_ITK_STRIPS_DATA_GEN_CONFIG_23 => + if EMU_GENERATE_REGS then + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(23).ITKS_FIFO_CTL <= register_write_data_25_v(19 downto 17); -- data fifo control 2:rst 1:rd 0:wr. + register_map_control_s.FELIG_ITK_STRIPS_DATA_GEN_CONFIG(23).ITKS_FIFO_DATA <= register_write_data_25_v(16 downto 0); -- itks emu data 16:last word 15-0:data word end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_3 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (7)(3).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - - register_map_control_s.HCC_ABC_MASK_E_C (7)(3).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (7)(3).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - register_map_control_s.HCC_ABC_MASK_E_C (7)(3).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - + when REG_FMEMU_EVENT_INFO => + if EMU_GENERATE_REGS then + register_map_control_s.FMEMU_EVENT_INFO.L1ID <= register_write_data_25_v(63 downto 32); -- 32b field to show L1ID + register_map_control_s.FMEMU_EVENT_INFO.BCID <= register_write_data_25_v(31 downto 0); -- 32b field to show BCID end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_3 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (7)(3).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (7)(3).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (7)(3).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_B_8 (7)(3).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - + when REG_FMEMU_COUNTERS => + if EMU_GENERATE_REGS then + register_map_control_s.FMEMU_COUNTERS.WORD_CNT <= register_write_data_25_v(63 downto 48); -- Number of 32b words in one chunk + register_map_control_s.FMEMU_COUNTERS.IDLE_CNT <= register_write_data_25_v(47 downto 32); -- Minimum number of idles between chunks + register_map_control_s.FMEMU_COUNTERS.L1A_CNT <= register_write_data_25_v(31 downto 16); -- Number of chunks to send if not in TTC mode + register_map_control_s.FMEMU_COUNTERS.BUSY_TH_HIGH <= register_write_data_25_v(15 downto 8); -- Assert BUSY-ON above this threshold + register_map_control_s.FMEMU_COUNTERS.BUSY_TH_LOW <= register_write_data_25_v(7 downto 0); -- De-assert BUSY-ON below this threshold end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_3 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (7)(3).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (7)(3).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_7_4 (7)(3).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) + when REG_FMEMU_CONTROL => + if EMU_GENERATE_REGS then + register_map_control_s.FMEMU_CONTROL.L1A_BITNR <= register_write_data_25_v(63 downto 56); -- Bitfield for L1A in TTC frame + register_map_control_s.FMEMU_CONTROL.XONXOFF_BITNR <= register_write_data_25_v(55 downto 48); -- Bitfield for Xon/Xoff in TTC frame + register_map_control_s.FMEMU_CONTROL.EMU_START <= register_write_data_25_v(47 downto 47); -- Start emulator functionality + register_map_control_s.FMEMU_CONTROL.TTC_MODE <= register_write_data_25_v(46 downto 46); -- Control the emulator by TTC input or by RegMap (1/0) + register_map_control_s.FMEMU_CONTROL.XONXOFF <= register_write_data_25_v(45 downto 45); -- Debug Xon/Xoff functionality (1/0) + register_map_control_s.FMEMU_CONTROL.INLC_CRC32 <= register_write_data_25_v(44 downto 44); -- 0: No checksum + -- 1: Append the data with a CRC32 - register_map_control_s.LCB_ABC_MASK_7_4 (7)(3).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) + register_map_control_s.FMEMU_CONTROL.BCR <= register_write_data_25_v(43 downto 43); -- Reset BCID to 0 + register_map_control_s.FMEMU_CONTROL.ECR <= register_write_data_25_v(42 downto 42); -- Reset L1ID to 0 + register_map_control_s.FMEMU_CONTROL.DATA_SRC_SEL <= register_write_data_25_v(41 downto 41); -- Data source select + -- 0: Data input comes from EMURAM + -- 1: Data input comes from PCIe + register_map_control_s.FMEMU_CONTROL.FFU_FM_EMU_T <= register_write_data_25_v(31 downto 16); -- For Future Use (trigger registers) + register_map_control_s.FMEMU_CONTROL.FFU_FM_EMU_W <= register_write_data_25_v(15 downto 0); -- For Future Use (write registers) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_3 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (7)(3).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (7)(3).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (7)(3).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - register_map_control_s.LCB_ABC_MASK_3_0 (7)(3).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - + when REG_FMEMU_RANDOM_RAM_ADDR => + if EMU_GENERATE_REGS then + register_map_control_s.FMEMU_RANDOM_RAM_ADDR <= register_write_data_25_v(9 downto 0); -- Controls the address of the ramblock for the random number generator + end if; + when REG_FMEMU_RANDOM_RAM => + if EMU_GENERATE_REGS then + register_map_control_s.FMEMU_RANDOM_RAM.WE <= "1"; -- Any write to this register (DATA) triggers a write to the ramblock + register_map_control_s.FMEMU_RANDOM_RAM.CHANNEL_SELECT <= register_write_data_25_v(39 downto 16); -- Enable write enable only for the selected channel + register_map_control_s.FMEMU_RANDOM_RAM.DATA <= register_write_data_25_v(15 downto 0); -- DATA field to be written to FMEMU_RANDOM_RAM_ADDR + end if; + when REG_FMEMU_RANDOM_CONTROL => + if EMU_GENERATE_REGS then + register_map_control_s.FMEMU_RANDOM_CONTROL.SELECT_RANDOM <= register_write_data_25_v(20 downto 20); -- 1 enables the random chunk length, 0 uses a constant chunk length + register_map_control_s.FMEMU_RANDOM_CONTROL.SEED <= register_write_data_25_v(19 downto 10); -- Seed for the random number generator, should not be 0 + register_map_control_s.FMEMU_RANDOM_CONTROL.POLYNOMIAL <= register_write_data_25_v(9 downto 0); -- POLYNOMIAL for the random number generator (10b LFSR) Bit9 should always be 1 end if; - when REG_CR_ITK_R3L1_LINK_07_R3L1_0 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (7)(0).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (7)(0).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (7)(0).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_07_R3L1_1 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (7)(1).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (7)(1).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (7)(1).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_07_R3L1_2 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (7)(2).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (7)(2).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (7)(2).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_07_R3L1_3 => - if (GBT_NUM > 7 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (7)(3).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (7)(3).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (7)(3).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_0 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(0).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (8)(0).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, + when REG_WISHBONE_CONTROL => register_map_control_s.WISHBONE_CONTROL.WRITE_NOT_READ <= register_write_data_25_v(32 downto 32); -- wishbone write command wishbone read command + register_map_control_s.WISHBONE_CONTROL.ADDRESS <= register_write_data_25_v(31 downto 0); -- Slave address for Wishbone bus + when REG_WISHBONE_WRITE => register_map_control_s.WISHBONE_WRITE.WRITE_ENABLE <= "1"; -- Any write to this register triggers a write to the Wupper to Wishbone fifo + register_map_control_s.WISHBONE_WRITE.DATA <= register_write_data_25_v(31 downto 0); -- Wishbone + when REG_WISHBONE_READ => register_map_control_s.WISHBONE_READ.READ_ENABLE <= "1"; -- Any write to this register triggers a read from the Wishbone to Wupper fifo + when REG_GLOBAL_STRIPS_CONFIG => register_map_control_s.GLOBAL_STRIPS_CONFIG.TEST_MODULE_MASK <= register_write_data_25_v(15 downto 11); -- (for tests only) contains R3 mask for the simulated trigger data + register_map_control_s.GLOBAL_STRIPS_CONFIG.TEST_R3L1_TAG <= register_write_data_25_v(10 downto 4); -- (for tests only) contains R3 or L1 tag for the simulated trigger data + register_map_control_s.GLOBAL_STRIPS_CONFIG.TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(1 downto 1); -- Global control for gating signal generation. Enables generating trickle gating signal in response to TTC BCR. TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. (See also BC_START, and BC_STOP fields) + when REG_GLOBAL_TRICKLE_TRIGGER => register_map_control_s.GLOBAL_TRICKLE_TRIGGER <= "1"; -- writing to this register issues a single trickle trigger for every LCB link connected to this FELIX device + when REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_0 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_CTRL (0)(0).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs + register_map_control_s.LCB_CTRL (0)(0).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - register_map_control_s.LCB_CTRL (8)(0).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (8)(0).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (8)(0).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (8)(0).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: + register_map_control_s.LCB_CTRL (0)(0).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal + register_map_control_s.LCB_CTRL (0)(0).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames + register_map_control_s.LCB_CTRL (0)(0).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames + register_map_control_s.LCB_CTRL (0)(0).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: -- 00: command decoder (use same command encoding format as trickle configuration) -- 01: trickle memory (see phase2 documentation for command encoding format) -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) -- 11: (invalid, don't use) - register_map_control_s.LCB_CTRL (8)(0).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end + register_map_control_s.LCB_CTRL (0)(0).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - register_map_control_s.LCB_CTRL (8)(0).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (8)(0).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (8)(0).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. + register_map_control_s.LCB_CTRL (0)(0).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals + register_map_control_s.LCB_CTRL (0)(0).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. -- (See also BC_START, and BC_STOP fields) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_0 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (8)(0).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + when REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_TRIGGER_0 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.TRICKLE_TRIGGER (0)(0) <= "1"; -- writing to this register issues a single trickle trigger + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_0 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_TRICKLE_CONFIG (0)(0).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address - register_map_control_s.LCB_TRICKLE_CONFIG (8)(0).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (8)(0).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (8)(0).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + register_map_control_s.LCB_TRICKLE_CONFIG (0)(0).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer + register_map_control_s.LCB_TRICKLE_CONFIG (0)(0).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory + register_map_control_s.LCB_TRICKLE_CONFIG (0)(0).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_0 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (8)(0).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask + when REG_CR_ITK_STRIPS_LCB_LINKS_00_MODULE_MASK_F_C_0 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.HCC_ABC_MASK_E_C (0)(0).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - register_map_control_s.HCC_ABC_MASK_E_C (8)(0).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE + register_map_control_s.HCC_ABC_MASK_E_C (0)(0).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE -- mask(i) <=> (abc_id = i) - register_map_control_s.HCC_ABC_MASK_E_C (8)(0).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD + register_map_control_s.HCC_ABC_MASK_E_C (0)(0).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD -- mask(i) <=> (abc_id = i) - register_map_control_s.HCC_ABC_MASK_E_C (8)(0).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC + register_map_control_s.HCC_ABC_MASK_E_C (0)(0).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_0 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (8)(0).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB + when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_B_8_0 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_B_8 (0)(0).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (8)(0).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA + register_map_control_s.LCB_ABC_MASK_B_8 (0)(0).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (8)(0).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 + register_map_control_s.LCB_ABC_MASK_B_8 (0)(0).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (8)(0).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 + register_map_control_s.LCB_ABC_MASK_B_8 (0)(0).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_0 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (8)(0).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 + when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_7_4_0 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_7_4 (0)(0).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (8)(0).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 + register_map_control_s.LCB_ABC_MASK_7_4 (0)(0).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (8)(0).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 + register_map_control_s.LCB_ABC_MASK_7_4 (0)(0).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (8)(0).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 + register_map_control_s.LCB_ABC_MASK_7_4 (0)(0).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_0 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (8)(0).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 + when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_3_0_0 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_3_0 (0)(0).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (8)(0).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 + register_map_control_s.LCB_ABC_MASK_3_0 (0)(0).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (8)(0).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 + register_map_control_s.LCB_ABC_MASK_3_0 (0)(0).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (8)(0).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 + register_map_control_s.LCB_ABC_MASK_3_0 (0)(0).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_1 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(1).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (8)(1).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, + when REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_1 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_CTRL (0)(1).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs + register_map_control_s.LCB_CTRL (0)(1).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - register_map_control_s.LCB_CTRL (8)(1).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (8)(1).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (8)(1).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (8)(1).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: + register_map_control_s.LCB_CTRL (0)(1).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal + register_map_control_s.LCB_CTRL (0)(1).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames + register_map_control_s.LCB_CTRL (0)(1).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames + register_map_control_s.LCB_CTRL (0)(1).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: -- 00: command decoder (use same command encoding format as trickle configuration) -- 01: trickle memory (see phase2 documentation for command encoding format) -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) -- 11: (invalid, don't use) - register_map_control_s.LCB_CTRL (8)(1).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end + register_map_control_s.LCB_CTRL (0)(1).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - register_map_control_s.LCB_CTRL (8)(1).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (8)(1).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (8)(1).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. + register_map_control_s.LCB_CTRL (0)(1).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals + register_map_control_s.LCB_CTRL (0)(1).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. -- (See also BC_START, and BC_STOP fields) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_1 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (8)(1).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + when REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_TRIGGER_1 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.TRICKLE_TRIGGER (0)(1) <= "1"; -- writing to this register issues a single trickle trigger + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_1 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_TRICKLE_CONFIG (0)(1).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address - register_map_control_s.LCB_TRICKLE_CONFIG (8)(1).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (8)(1).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (8)(1).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + register_map_control_s.LCB_TRICKLE_CONFIG (0)(1).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer + register_map_control_s.LCB_TRICKLE_CONFIG (0)(1).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory + register_map_control_s.LCB_TRICKLE_CONFIG (0)(1).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_1 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (8)(1).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask + when REG_CR_ITK_STRIPS_LCB_LINKS_00_MODULE_MASK_F_C_1 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.HCC_ABC_MASK_E_C (0)(1).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - register_map_control_s.HCC_ABC_MASK_E_C (8)(1).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE + register_map_control_s.HCC_ABC_MASK_E_C (0)(1).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE -- mask(i) <=> (abc_id = i) - register_map_control_s.HCC_ABC_MASK_E_C (8)(1).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD + register_map_control_s.HCC_ABC_MASK_E_C (0)(1).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD -- mask(i) <=> (abc_id = i) - register_map_control_s.HCC_ABC_MASK_E_C (8)(1).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC + register_map_control_s.HCC_ABC_MASK_E_C (0)(1).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_1 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (8)(1).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB + when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_B_8_1 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_B_8 (0)(1).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (8)(1).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA + register_map_control_s.LCB_ABC_MASK_B_8 (0)(1).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (8)(1).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 + register_map_control_s.LCB_ABC_MASK_B_8 (0)(1).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (8)(1).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 + register_map_control_s.LCB_ABC_MASK_B_8 (0)(1).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_1 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (8)(1).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 + when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_7_4_1 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_7_4 (0)(1).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (8)(1).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 + register_map_control_s.LCB_ABC_MASK_7_4 (0)(1).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (8)(1).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 + register_map_control_s.LCB_ABC_MASK_7_4 (0)(1).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (8)(1).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 + register_map_control_s.LCB_ABC_MASK_7_4 (0)(1).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_1 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (8)(1).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 + when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_3_0_1 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_3_0 (0)(1).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (8)(1).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 + register_map_control_s.LCB_ABC_MASK_3_0 (0)(1).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (8)(1).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 + register_map_control_s.LCB_ABC_MASK_3_0 (0)(1).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (8)(1).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 + register_map_control_s.LCB_ABC_MASK_3_0 (0)(1).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_2 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(2).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (8)(2).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, + when REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_2 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_CTRL (0)(2).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs + register_map_control_s.LCB_CTRL (0)(2).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - register_map_control_s.LCB_CTRL (8)(2).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (8)(2).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (8)(2).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (8)(2).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: + register_map_control_s.LCB_CTRL (0)(2).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal + register_map_control_s.LCB_CTRL (0)(2).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames + register_map_control_s.LCB_CTRL (0)(2).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames + register_map_control_s.LCB_CTRL (0)(2).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: -- 00: command decoder (use same command encoding format as trickle configuration) -- 01: trickle memory (see phase2 documentation for command encoding format) -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) -- 11: (invalid, don't use) - register_map_control_s.LCB_CTRL (8)(2).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end + register_map_control_s.LCB_CTRL (0)(2).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - register_map_control_s.LCB_CTRL (8)(2).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (8)(2).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (8)(2).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. + register_map_control_s.LCB_CTRL (0)(2).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals + register_map_control_s.LCB_CTRL (0)(2).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. -- (See also BC_START, and BC_STOP fields) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_2 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (8)(2).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + when REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_TRIGGER_2 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.TRICKLE_TRIGGER (0)(2) <= "1"; -- writing to this register issues a single trickle trigger + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_2 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_TRICKLE_CONFIG (0)(2).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address - register_map_control_s.LCB_TRICKLE_CONFIG (8)(2).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (8)(2).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (8)(2).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + register_map_control_s.LCB_TRICKLE_CONFIG (0)(2).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer + register_map_control_s.LCB_TRICKLE_CONFIG (0)(2).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory + register_map_control_s.LCB_TRICKLE_CONFIG (0)(2).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_2 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (8)(2).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask + when REG_CR_ITK_STRIPS_LCB_LINKS_00_MODULE_MASK_F_C_2 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.HCC_ABC_MASK_E_C (0)(2).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - register_map_control_s.HCC_ABC_MASK_E_C (8)(2).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE + register_map_control_s.HCC_ABC_MASK_E_C (0)(2).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE -- mask(i) <=> (abc_id = i) - register_map_control_s.HCC_ABC_MASK_E_C (8)(2).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD + register_map_control_s.HCC_ABC_MASK_E_C (0)(2).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD -- mask(i) <=> (abc_id = i) - register_map_control_s.HCC_ABC_MASK_E_C (8)(2).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC + register_map_control_s.HCC_ABC_MASK_E_C (0)(2).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_2 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (8)(2).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB + when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_B_8_2 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_B_8 (0)(2).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (8)(2).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA + register_map_control_s.LCB_ABC_MASK_B_8 (0)(2).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (8)(2).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 + register_map_control_s.LCB_ABC_MASK_B_8 (0)(2).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (8)(2).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 + register_map_control_s.LCB_ABC_MASK_B_8 (0)(2).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_2 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (8)(2).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 + when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_7_4_2 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_7_4 (0)(2).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (8)(2).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 + register_map_control_s.LCB_ABC_MASK_7_4 (0)(2).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (8)(2).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 + register_map_control_s.LCB_ABC_MASK_7_4 (0)(2).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (8)(2).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 + register_map_control_s.LCB_ABC_MASK_7_4 (0)(2).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_2 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (8)(2).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 + when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_3_0_2 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_3_0 (0)(2).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (8)(2).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 + register_map_control_s.LCB_ABC_MASK_3_0 (0)(2).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (8)(2).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 + register_map_control_s.LCB_ABC_MASK_3_0 (0)(2).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (8)(2).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 + register_map_control_s.LCB_ABC_MASK_3_0 (0)(2).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_3 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (8)(3).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (8)(3).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, + when REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_3 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_CTRL (0)(3).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs + register_map_control_s.LCB_CTRL (0)(3).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - register_map_control_s.LCB_CTRL (8)(3).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (8)(3).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (8)(3).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (8)(3).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: + register_map_control_s.LCB_CTRL (0)(3).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal + register_map_control_s.LCB_CTRL (0)(3).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames + register_map_control_s.LCB_CTRL (0)(3).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames + register_map_control_s.LCB_CTRL (0)(3).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: -- 00: command decoder (use same command encoding format as trickle configuration) -- 01: trickle memory (see phase2 documentation for command encoding format) -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) -- 11: (invalid, don't use) - register_map_control_s.LCB_CTRL (8)(3).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end + register_map_control_s.LCB_CTRL (0)(3).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - register_map_control_s.LCB_CTRL (8)(3).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (8)(3).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (8)(3).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. + register_map_control_s.LCB_CTRL (0)(3).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals + register_map_control_s.LCB_CTRL (0)(3).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. -- (See also BC_START, and BC_STOP fields) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_3 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (8)(3).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + when REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_TRIGGER_3 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.TRICKLE_TRIGGER (0)(3) <= "1"; -- writing to this register issues a single trickle trigger + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_3 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_TRICKLE_CONFIG (0)(3).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address - register_map_control_s.LCB_TRICKLE_CONFIG (8)(3).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (8)(3).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (8)(3).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + register_map_control_s.LCB_TRICKLE_CONFIG (0)(3).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer + register_map_control_s.LCB_TRICKLE_CONFIG (0)(3).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory + register_map_control_s.LCB_TRICKLE_CONFIG (0)(3).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_3 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (8)(3).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask + when REG_CR_ITK_STRIPS_LCB_LINKS_00_MODULE_MASK_F_C_3 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.HCC_ABC_MASK_E_C (0)(3).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - register_map_control_s.HCC_ABC_MASK_E_C (8)(3).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE + register_map_control_s.HCC_ABC_MASK_E_C (0)(3).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE -- mask(i) <=> (abc_id = i) - register_map_control_s.HCC_ABC_MASK_E_C (8)(3).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD + register_map_control_s.HCC_ABC_MASK_E_C (0)(3).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD -- mask(i) <=> (abc_id = i) - register_map_control_s.HCC_ABC_MASK_E_C (8)(3).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC + register_map_control_s.HCC_ABC_MASK_E_C (0)(3).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_3 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (8)(3).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB + when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_B_8_3 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_B_8 (0)(3).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (8)(3).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA + register_map_control_s.LCB_ABC_MASK_B_8 (0)(3).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (8)(3).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 + register_map_control_s.LCB_ABC_MASK_B_8 (0)(3).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (8)(3).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 + register_map_control_s.LCB_ABC_MASK_B_8 (0)(3).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_3 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (8)(3).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 + when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_7_4_3 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_7_4 (0)(3).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (8)(3).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 + register_map_control_s.LCB_ABC_MASK_7_4 (0)(3).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (8)(3).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 + register_map_control_s.LCB_ABC_MASK_7_4 (0)(3).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (8)(3).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 + register_map_control_s.LCB_ABC_MASK_7_4 (0)(3).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_3 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (8)(3).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 + when REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_3_0_3 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_3_0 (0)(3).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (8)(3).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 + register_map_control_s.LCB_ABC_MASK_3_0 (0)(3).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (8)(3).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 + register_map_control_s.LCB_ABC_MASK_3_0 (0)(3).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (8)(3).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 + register_map_control_s.LCB_ABC_MASK_3_0 (0)(3).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_R3L1_LINK_08_R3L1_0 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (8)(0).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (8)(0).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (8)(0).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_08_R3L1_1 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (8)(1).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (8)(1).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (8)(1).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_08_R3L1_2 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (8)(2).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (8)(2).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (8)(2).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_08_R3L1_3 => - if (GBT_NUM > 8 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (8)(3).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (8)(3).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (8)(3).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_0 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(0).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (9)(0).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, + when REG_CR_ITK_R3L1_LINK_00_R3L1_0 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.R3L1_CTRL (0)(0).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal + register_map_control_s.R3L1_CTRL (0)(0).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end + register_map_control_s.R3L1_CTRL (0)(0).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end + end if; + when REG_CR_ITK_R3L1_LINK_00_R3L1_1 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.R3L1_CTRL (0)(1).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal + register_map_control_s.R3L1_CTRL (0)(1).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end + register_map_control_s.R3L1_CTRL (0)(1).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end + end if; + when REG_CR_ITK_R3L1_LINK_00_R3L1_2 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.R3L1_CTRL (0)(2).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal + register_map_control_s.R3L1_CTRL (0)(2).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end + register_map_control_s.R3L1_CTRL (0)(2).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end + end if; + when REG_CR_ITK_R3L1_LINK_00_R3L1_3 => + if (GBT_NUM > 0 and FIRMWARE_MODE = 5) then + register_map_control_s.R3L1_CTRL (0)(3).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal + register_map_control_s.R3L1_CTRL (0)(3).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end + register_map_control_s.R3L1_CTRL (0)(3).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_0 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_CTRL (1)(0).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs + register_map_control_s.LCB_CTRL (1)(0).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - register_map_control_s.LCB_CTRL (9)(0).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (9)(0).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (9)(0).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (9)(0).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: + register_map_control_s.LCB_CTRL (1)(0).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal + register_map_control_s.LCB_CTRL (1)(0).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames + register_map_control_s.LCB_CTRL (1)(0).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames + register_map_control_s.LCB_CTRL (1)(0).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: -- 00: command decoder (use same command encoding format as trickle configuration) -- 01: trickle memory (see phase2 documentation for command encoding format) -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) -- 11: (invalid, don't use) - register_map_control_s.LCB_CTRL (9)(0).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end + register_map_control_s.LCB_CTRL (1)(0).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - register_map_control_s.LCB_CTRL (9)(0).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (9)(0).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (9)(0).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. + register_map_control_s.LCB_CTRL (1)(0).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals + register_map_control_s.LCB_CTRL (1)(0).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. -- (See also BC_START, and BC_STOP fields) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_0 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (9)(0).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + when REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_TRIGGER_0 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.TRICKLE_TRIGGER (1)(0) <= "1"; -- writing to this register issues a single trickle trigger + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_0 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_TRICKLE_CONFIG (1)(0).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address - register_map_control_s.LCB_TRICKLE_CONFIG (9)(0).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (9)(0).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (9)(0).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + register_map_control_s.LCB_TRICKLE_CONFIG (1)(0).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer + register_map_control_s.LCB_TRICKLE_CONFIG (1)(0).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory + register_map_control_s.LCB_TRICKLE_CONFIG (1)(0).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_0 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (9)(0).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask + when REG_CR_ITK_STRIPS_LCB_LINKS_01_MODULE_MASK_F_C_0 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.HCC_ABC_MASK_E_C (1)(0).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - register_map_control_s.HCC_ABC_MASK_E_C (9)(0).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE + register_map_control_s.HCC_ABC_MASK_E_C (1)(0).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE -- mask(i) <=> (abc_id = i) - register_map_control_s.HCC_ABC_MASK_E_C (9)(0).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD + register_map_control_s.HCC_ABC_MASK_E_C (1)(0).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD -- mask(i) <=> (abc_id = i) - register_map_control_s.HCC_ABC_MASK_E_C (9)(0).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC + register_map_control_s.HCC_ABC_MASK_E_C (1)(0).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_0 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (9)(0).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB + when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_B_8_0 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_B_8 (1)(0).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (9)(0).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA + register_map_control_s.LCB_ABC_MASK_B_8 (1)(0).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (9)(0).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 + register_map_control_s.LCB_ABC_MASK_B_8 (1)(0).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (9)(0).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 + register_map_control_s.LCB_ABC_MASK_B_8 (1)(0).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_0 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (9)(0).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 + when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_7_4_0 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_7_4 (1)(0).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (9)(0).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 + register_map_control_s.LCB_ABC_MASK_7_4 (1)(0).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (9)(0).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 + register_map_control_s.LCB_ABC_MASK_7_4 (1)(0).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (9)(0).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 + register_map_control_s.LCB_ABC_MASK_7_4 (1)(0).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_0 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (9)(0).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 + when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_3_0_0 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_3_0 (1)(0).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (9)(0).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 + register_map_control_s.LCB_ABC_MASK_3_0 (1)(0).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (9)(0).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 + register_map_control_s.LCB_ABC_MASK_3_0 (1)(0).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (9)(0).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 + register_map_control_s.LCB_ABC_MASK_3_0 (1)(0).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_1 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(1).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (9)(1).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, + when REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_1 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_CTRL (1)(1).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs + register_map_control_s.LCB_CTRL (1)(1).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - register_map_control_s.LCB_CTRL (9)(1).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (9)(1).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (9)(1).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (9)(1).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: + register_map_control_s.LCB_CTRL (1)(1).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal + register_map_control_s.LCB_CTRL (1)(1).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames + register_map_control_s.LCB_CTRL (1)(1).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames + register_map_control_s.LCB_CTRL (1)(1).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: -- 00: command decoder (use same command encoding format as trickle configuration) -- 01: trickle memory (see phase2 documentation for command encoding format) -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) -- 11: (invalid, don't use) - register_map_control_s.LCB_CTRL (9)(1).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end + register_map_control_s.LCB_CTRL (1)(1).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - register_map_control_s.LCB_CTRL (9)(1).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (9)(1).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (9)(1).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. + register_map_control_s.LCB_CTRL (1)(1).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals + register_map_control_s.LCB_CTRL (1)(1).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. -- (See also BC_START, and BC_STOP fields) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_1 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (9)(1).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + when REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_TRIGGER_1 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.TRICKLE_TRIGGER (1)(1) <= "1"; -- writing to this register issues a single trickle trigger + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_1 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_TRICKLE_CONFIG (1)(1).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address - register_map_control_s.LCB_TRICKLE_CONFIG (9)(1).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (9)(1).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (9)(1).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + register_map_control_s.LCB_TRICKLE_CONFIG (1)(1).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer + register_map_control_s.LCB_TRICKLE_CONFIG (1)(1).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory + register_map_control_s.LCB_TRICKLE_CONFIG (1)(1).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_1 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (9)(1).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask + when REG_CR_ITK_STRIPS_LCB_LINKS_01_MODULE_MASK_F_C_1 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.HCC_ABC_MASK_E_C (1)(1).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - register_map_control_s.HCC_ABC_MASK_E_C (9)(1).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE + register_map_control_s.HCC_ABC_MASK_E_C (1)(1).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE -- mask(i) <=> (abc_id = i) - register_map_control_s.HCC_ABC_MASK_E_C (9)(1).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD + register_map_control_s.HCC_ABC_MASK_E_C (1)(1).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD -- mask(i) <=> (abc_id = i) - register_map_control_s.HCC_ABC_MASK_E_C (9)(1).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC + register_map_control_s.HCC_ABC_MASK_E_C (1)(1).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_1 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (9)(1).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB + when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_B_8_1 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_B_8 (1)(1).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (9)(1).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA + register_map_control_s.LCB_ABC_MASK_B_8 (1)(1).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (9)(1).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 + register_map_control_s.LCB_ABC_MASK_B_8 (1)(1).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (9)(1).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 + register_map_control_s.LCB_ABC_MASK_B_8 (1)(1).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_1 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (9)(1).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 + when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_7_4_1 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_7_4 (1)(1).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (9)(1).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 + register_map_control_s.LCB_ABC_MASK_7_4 (1)(1).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (9)(1).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 + register_map_control_s.LCB_ABC_MASK_7_4 (1)(1).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (9)(1).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 + register_map_control_s.LCB_ABC_MASK_7_4 (1)(1).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_1 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (9)(1).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 + when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_3_0_1 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_3_0 (1)(1).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (9)(1).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 + register_map_control_s.LCB_ABC_MASK_3_0 (1)(1).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (9)(1).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 + register_map_control_s.LCB_ABC_MASK_3_0 (1)(1).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (9)(1).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 + register_map_control_s.LCB_ABC_MASK_3_0 (1)(1).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_2 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(2).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (9)(2).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, + when REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_2 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_CTRL (1)(2).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs + register_map_control_s.LCB_CTRL (1)(2).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - register_map_control_s.LCB_CTRL (9)(2).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (9)(2).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (9)(2).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (9)(2).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: + register_map_control_s.LCB_CTRL (1)(2).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal + register_map_control_s.LCB_CTRL (1)(2).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames + register_map_control_s.LCB_CTRL (1)(2).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames + register_map_control_s.LCB_CTRL (1)(2).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: -- 00: command decoder (use same command encoding format as trickle configuration) -- 01: trickle memory (see phase2 documentation for command encoding format) -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) -- 11: (invalid, don't use) - register_map_control_s.LCB_CTRL (9)(2).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end + register_map_control_s.LCB_CTRL (1)(2).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - register_map_control_s.LCB_CTRL (9)(2).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (9)(2).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (9)(2).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. + register_map_control_s.LCB_CTRL (1)(2).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals + register_map_control_s.LCB_CTRL (1)(2).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. -- (See also BC_START, and BC_STOP fields) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_2 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (9)(2).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + when REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_TRIGGER_2 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.TRICKLE_TRIGGER (1)(2) <= "1"; -- writing to this register issues a single trickle trigger + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_2 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_TRICKLE_CONFIG (1)(2).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address - register_map_control_s.LCB_TRICKLE_CONFIG (9)(2).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (9)(2).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (9)(2).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + register_map_control_s.LCB_TRICKLE_CONFIG (1)(2).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer + register_map_control_s.LCB_TRICKLE_CONFIG (1)(2).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory + register_map_control_s.LCB_TRICKLE_CONFIG (1)(2).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_2 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (9)(2).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask + when REG_CR_ITK_STRIPS_LCB_LINKS_01_MODULE_MASK_F_C_2 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.HCC_ABC_MASK_E_C (1)(2).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - register_map_control_s.HCC_ABC_MASK_E_C (9)(2).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE + register_map_control_s.HCC_ABC_MASK_E_C (1)(2).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE -- mask(i) <=> (abc_id = i) - register_map_control_s.HCC_ABC_MASK_E_C (9)(2).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD + register_map_control_s.HCC_ABC_MASK_E_C (1)(2).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD -- mask(i) <=> (abc_id = i) - register_map_control_s.HCC_ABC_MASK_E_C (9)(2).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC + register_map_control_s.HCC_ABC_MASK_E_C (1)(2).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_2 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (9)(2).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB + when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_B_8_2 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_B_8 (1)(2).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (9)(2).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA + register_map_control_s.LCB_ABC_MASK_B_8 (1)(2).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (9)(2).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 + register_map_control_s.LCB_ABC_MASK_B_8 (1)(2).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (9)(2).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 + register_map_control_s.LCB_ABC_MASK_B_8 (1)(2).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_2 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (9)(2).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 + when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_7_4_2 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_7_4 (1)(2).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (9)(2).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 + register_map_control_s.LCB_ABC_MASK_7_4 (1)(2).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (9)(2).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 + register_map_control_s.LCB_ABC_MASK_7_4 (1)(2).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (9)(2).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 + register_map_control_s.LCB_ABC_MASK_7_4 (1)(2).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_2 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (9)(2).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 + when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_3_0_2 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_3_0 (1)(2).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (9)(2).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 + register_map_control_s.LCB_ABC_MASK_3_0 (1)(2).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (9)(2).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 + register_map_control_s.LCB_ABC_MASK_3_0 (1)(2).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (9)(2).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 + register_map_control_s.LCB_ABC_MASK_3_0 (1)(2).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_3 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (9)(3).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (9)(3).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, + when REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_3 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_CTRL (1)(3).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs + register_map_control_s.LCB_CTRL (1)(3).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - register_map_control_s.LCB_CTRL (9)(3).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (9)(3).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (9)(3).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (9)(3).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: + register_map_control_s.LCB_CTRL (1)(3).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal + register_map_control_s.LCB_CTRL (1)(3).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames + register_map_control_s.LCB_CTRL (1)(3).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames + register_map_control_s.LCB_CTRL (1)(3).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: -- 00: command decoder (use same command encoding format as trickle configuration) -- 01: trickle memory (see phase2 documentation for command encoding format) -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) -- 11: (invalid, don't use) - register_map_control_s.LCB_CTRL (9)(3).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end + register_map_control_s.LCB_CTRL (1)(3).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - register_map_control_s.LCB_CTRL (9)(3).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (9)(3).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (9)(3).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. + register_map_control_s.LCB_CTRL (1)(3).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals + register_map_control_s.LCB_CTRL (1)(3).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. -- (See also BC_START, and BC_STOP fields) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_3 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (9)(3).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + when REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_TRIGGER_3 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.TRICKLE_TRIGGER (1)(3) <= "1"; -- writing to this register issues a single trickle trigger + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_3 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_TRICKLE_CONFIG (1)(3).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address - register_map_control_s.LCB_TRICKLE_CONFIG (9)(3).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (9)(3).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (9)(3).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + register_map_control_s.LCB_TRICKLE_CONFIG (1)(3).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer + register_map_control_s.LCB_TRICKLE_CONFIG (1)(3).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory + register_map_control_s.LCB_TRICKLE_CONFIG (1)(3).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_3 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (9)(3).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask + when REG_CR_ITK_STRIPS_LCB_LINKS_01_MODULE_MASK_F_C_3 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.HCC_ABC_MASK_E_C (1)(3).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - register_map_control_s.HCC_ABC_MASK_E_C (9)(3).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE + register_map_control_s.HCC_ABC_MASK_E_C (1)(3).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE -- mask(i) <=> (abc_id = i) - register_map_control_s.HCC_ABC_MASK_E_C (9)(3).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD + register_map_control_s.HCC_ABC_MASK_E_C (1)(3).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD -- mask(i) <=> (abc_id = i) - register_map_control_s.HCC_ABC_MASK_E_C (9)(3).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC + register_map_control_s.HCC_ABC_MASK_E_C (1)(3).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_3 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (9)(3).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB + when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_B_8_3 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_B_8 (1)(3).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (9)(3).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA + register_map_control_s.LCB_ABC_MASK_B_8 (1)(3).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (9)(3).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 + register_map_control_s.LCB_ABC_MASK_B_8 (1)(3).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (9)(3).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 + register_map_control_s.LCB_ABC_MASK_B_8 (1)(3).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_3 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (9)(3).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 + when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_7_4_3 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_7_4 (1)(3).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (9)(3).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 + register_map_control_s.LCB_ABC_MASK_7_4 (1)(3).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (9)(3).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 + register_map_control_s.LCB_ABC_MASK_7_4 (1)(3).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (9)(3).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 + register_map_control_s.LCB_ABC_MASK_7_4 (1)(3).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_3 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (9)(3).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 + when REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_3_0_3 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_3_0 (1)(3).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (9)(3).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 + register_map_control_s.LCB_ABC_MASK_3_0 (1)(3).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (9)(3).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 + register_map_control_s.LCB_ABC_MASK_3_0 (1)(3).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (9)(3).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 + register_map_control_s.LCB_ABC_MASK_3_0 (1)(3).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_R3L1_LINK_09_R3L1_0 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (9)(0).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (9)(0).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (9)(0).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_09_R3L1_1 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (9)(1).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (9)(1).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (9)(1).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_09_R3L1_2 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (9)(2).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (9)(2).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (9)(2).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_09_R3L1_3 => - if (GBT_NUM > 9 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (9)(3).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (9)(3).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (9)(3).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_0 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(0).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (10)(0).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, + when REG_CR_ITK_R3L1_LINK_01_R3L1_0 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.R3L1_CTRL (1)(0).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal + register_map_control_s.R3L1_CTRL (1)(0).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end + register_map_control_s.R3L1_CTRL (1)(0).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end + end if; + when REG_CR_ITK_R3L1_LINK_01_R3L1_1 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.R3L1_CTRL (1)(1).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal + register_map_control_s.R3L1_CTRL (1)(1).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end + register_map_control_s.R3L1_CTRL (1)(1).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end + end if; + when REG_CR_ITK_R3L1_LINK_01_R3L1_2 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.R3L1_CTRL (1)(2).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal + register_map_control_s.R3L1_CTRL (1)(2).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end + register_map_control_s.R3L1_CTRL (1)(2).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end + end if; + when REG_CR_ITK_R3L1_LINK_01_R3L1_3 => + if (GBT_NUM > 1 and FIRMWARE_MODE = 5) then + register_map_control_s.R3L1_CTRL (1)(3).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal + register_map_control_s.R3L1_CTRL (1)(3).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end + register_map_control_s.R3L1_CTRL (1)(3).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_0 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_CTRL (2)(0).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs + register_map_control_s.LCB_CTRL (2)(0).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - register_map_control_s.LCB_CTRL (10)(0).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (10)(0).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (10)(0).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (10)(0).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: + register_map_control_s.LCB_CTRL (2)(0).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal + register_map_control_s.LCB_CTRL (2)(0).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames + register_map_control_s.LCB_CTRL (2)(0).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames + register_map_control_s.LCB_CTRL (2)(0).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: -- 00: command decoder (use same command encoding format as trickle configuration) -- 01: trickle memory (see phase2 documentation for command encoding format) -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) -- 11: (invalid, don't use) - register_map_control_s.LCB_CTRL (10)(0).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end + register_map_control_s.LCB_CTRL (2)(0).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - register_map_control_s.LCB_CTRL (10)(0).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (10)(0).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (10)(0).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. + register_map_control_s.LCB_CTRL (2)(0).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals + register_map_control_s.LCB_CTRL (2)(0).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. -- (See also BC_START, and BC_STOP fields) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_0 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (10)(0).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + when REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_TRIGGER_0 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.TRICKLE_TRIGGER (2)(0) <= "1"; -- writing to this register issues a single trickle trigger + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_0 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_TRICKLE_CONFIG (2)(0).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address - register_map_control_s.LCB_TRICKLE_CONFIG (10)(0).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (10)(0).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (10)(0).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + register_map_control_s.LCB_TRICKLE_CONFIG (2)(0).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer + register_map_control_s.LCB_TRICKLE_CONFIG (2)(0).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory + register_map_control_s.LCB_TRICKLE_CONFIG (2)(0).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_0 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (10)(0).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask + when REG_CR_ITK_STRIPS_LCB_LINKS_02_MODULE_MASK_F_C_0 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.HCC_ABC_MASK_E_C (2)(0).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - register_map_control_s.HCC_ABC_MASK_E_C (10)(0).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE + register_map_control_s.HCC_ABC_MASK_E_C (2)(0).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE -- mask(i) <=> (abc_id = i) - register_map_control_s.HCC_ABC_MASK_E_C (10)(0).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD + register_map_control_s.HCC_ABC_MASK_E_C (2)(0).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD -- mask(i) <=> (abc_id = i) - register_map_control_s.HCC_ABC_MASK_E_C (10)(0).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC + register_map_control_s.HCC_ABC_MASK_E_C (2)(0).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_0 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (10)(0).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB + when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_B_8_0 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_B_8 (2)(0).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (10)(0).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA + register_map_control_s.LCB_ABC_MASK_B_8 (2)(0).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (10)(0).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 + register_map_control_s.LCB_ABC_MASK_B_8 (2)(0).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (10)(0).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 + register_map_control_s.LCB_ABC_MASK_B_8 (2)(0).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_0 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (10)(0).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 + when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_7_4_0 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_7_4 (2)(0).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (10)(0).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 + register_map_control_s.LCB_ABC_MASK_7_4 (2)(0).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (10)(0).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 + register_map_control_s.LCB_ABC_MASK_7_4 (2)(0).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (10)(0).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 + register_map_control_s.LCB_ABC_MASK_7_4 (2)(0).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_0 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (10)(0).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 + when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_3_0_0 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_3_0 (2)(0).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (10)(0).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 + register_map_control_s.LCB_ABC_MASK_3_0 (2)(0).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (10)(0).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 + register_map_control_s.LCB_ABC_MASK_3_0 (2)(0).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (10)(0).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 + register_map_control_s.LCB_ABC_MASK_3_0 (2)(0).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_1 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(1).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (10)(1).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, + when REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_1 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_CTRL (2)(1).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs + register_map_control_s.LCB_CTRL (2)(1).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - register_map_control_s.LCB_CTRL (10)(1).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (10)(1).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (10)(1).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (10)(1).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: + register_map_control_s.LCB_CTRL (2)(1).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal + register_map_control_s.LCB_CTRL (2)(1).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames + register_map_control_s.LCB_CTRL (2)(1).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames + register_map_control_s.LCB_CTRL (2)(1).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: -- 00: command decoder (use same command encoding format as trickle configuration) -- 01: trickle memory (see phase2 documentation for command encoding format) -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) -- 11: (invalid, don't use) - register_map_control_s.LCB_CTRL (10)(1).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end + register_map_control_s.LCB_CTRL (2)(1).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - register_map_control_s.LCB_CTRL (10)(1).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (10)(1).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (10)(1).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. + register_map_control_s.LCB_CTRL (2)(1).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals + register_map_control_s.LCB_CTRL (2)(1).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. -- (See also BC_START, and BC_STOP fields) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_1 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (10)(1).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + when REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_TRIGGER_1 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.TRICKLE_TRIGGER (2)(1) <= "1"; -- writing to this register issues a single trickle trigger + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_1 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_TRICKLE_CONFIG (2)(1).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address - register_map_control_s.LCB_TRICKLE_CONFIG (10)(1).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (10)(1).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (10)(1).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + register_map_control_s.LCB_TRICKLE_CONFIG (2)(1).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer + register_map_control_s.LCB_TRICKLE_CONFIG (2)(1).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory + register_map_control_s.LCB_TRICKLE_CONFIG (2)(1).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_1 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (10)(1).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask + when REG_CR_ITK_STRIPS_LCB_LINKS_02_MODULE_MASK_F_C_1 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.HCC_ABC_MASK_E_C (2)(1).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - register_map_control_s.HCC_ABC_MASK_E_C (10)(1).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE + register_map_control_s.HCC_ABC_MASK_E_C (2)(1).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE -- mask(i) <=> (abc_id = i) - register_map_control_s.HCC_ABC_MASK_E_C (10)(1).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD + register_map_control_s.HCC_ABC_MASK_E_C (2)(1).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD -- mask(i) <=> (abc_id = i) - register_map_control_s.HCC_ABC_MASK_E_C (10)(1).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC + register_map_control_s.HCC_ABC_MASK_E_C (2)(1).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_1 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (10)(1).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB + when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_B_8_1 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_B_8 (2)(1).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (10)(1).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA + register_map_control_s.LCB_ABC_MASK_B_8 (2)(1).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (10)(1).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 + register_map_control_s.LCB_ABC_MASK_B_8 (2)(1).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (10)(1).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 + register_map_control_s.LCB_ABC_MASK_B_8 (2)(1).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_1 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (10)(1).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 + when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_7_4_1 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_7_4 (2)(1).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (10)(1).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 + register_map_control_s.LCB_ABC_MASK_7_4 (2)(1).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (10)(1).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 + register_map_control_s.LCB_ABC_MASK_7_4 (2)(1).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (10)(1).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 + register_map_control_s.LCB_ABC_MASK_7_4 (2)(1).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_1 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (10)(1).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 + when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_3_0_1 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_3_0 (2)(1).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (10)(1).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 + register_map_control_s.LCB_ABC_MASK_3_0 (2)(1).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (10)(1).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 + register_map_control_s.LCB_ABC_MASK_3_0 (2)(1).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (10)(1).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 + register_map_control_s.LCB_ABC_MASK_3_0 (2)(1).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_2 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(2).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (10)(2).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, + when REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_2 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_CTRL (2)(2).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs + register_map_control_s.LCB_CTRL (2)(2).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - register_map_control_s.LCB_CTRL (10)(2).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (10)(2).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (10)(2).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (10)(2).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: + register_map_control_s.LCB_CTRL (2)(2).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal + register_map_control_s.LCB_CTRL (2)(2).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames + register_map_control_s.LCB_CTRL (2)(2).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames + register_map_control_s.LCB_CTRL (2)(2).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: -- 00: command decoder (use same command encoding format as trickle configuration) -- 01: trickle memory (see phase2 documentation for command encoding format) -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) -- 11: (invalid, don't use) - register_map_control_s.LCB_CTRL (10)(2).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end + register_map_control_s.LCB_CTRL (2)(2).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - register_map_control_s.LCB_CTRL (10)(2).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (10)(2).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (10)(2).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. + register_map_control_s.LCB_CTRL (2)(2).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals + register_map_control_s.LCB_CTRL (2)(2).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. -- (See also BC_START, and BC_STOP fields) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_2 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (10)(2).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + when REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_TRIGGER_2 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.TRICKLE_TRIGGER (2)(2) <= "1"; -- writing to this register issues a single trickle trigger + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_2 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_TRICKLE_CONFIG (2)(2).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address - register_map_control_s.LCB_TRICKLE_CONFIG (10)(2).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (10)(2).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (10)(2).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + register_map_control_s.LCB_TRICKLE_CONFIG (2)(2).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer + register_map_control_s.LCB_TRICKLE_CONFIG (2)(2).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory + register_map_control_s.LCB_TRICKLE_CONFIG (2)(2).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_2 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (10)(2).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask + when REG_CR_ITK_STRIPS_LCB_LINKS_02_MODULE_MASK_F_C_2 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.HCC_ABC_MASK_E_C (2)(2).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - register_map_control_s.HCC_ABC_MASK_E_C (10)(2).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE + register_map_control_s.HCC_ABC_MASK_E_C (2)(2).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE -- mask(i) <=> (abc_id = i) - register_map_control_s.HCC_ABC_MASK_E_C (10)(2).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD + register_map_control_s.HCC_ABC_MASK_E_C (2)(2).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD -- mask(i) <=> (abc_id = i) - register_map_control_s.HCC_ABC_MASK_E_C (10)(2).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC + register_map_control_s.HCC_ABC_MASK_E_C (2)(2).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_2 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (10)(2).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB + when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_B_8_2 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_B_8 (2)(2).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (10)(2).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA + register_map_control_s.LCB_ABC_MASK_B_8 (2)(2).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (10)(2).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 + register_map_control_s.LCB_ABC_MASK_B_8 (2)(2).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (10)(2).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 + register_map_control_s.LCB_ABC_MASK_B_8 (2)(2).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_2 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (10)(2).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 + when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_7_4_2 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_7_4 (2)(2).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (10)(2).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 + register_map_control_s.LCB_ABC_MASK_7_4 (2)(2).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (10)(2).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 + register_map_control_s.LCB_ABC_MASK_7_4 (2)(2).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (10)(2).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 + register_map_control_s.LCB_ABC_MASK_7_4 (2)(2).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_2 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (10)(2).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 + when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_3_0_2 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_3_0 (2)(2).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (10)(2).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 + register_map_control_s.LCB_ABC_MASK_3_0 (2)(2).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (10)(2).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 + register_map_control_s.LCB_ABC_MASK_3_0 (2)(2).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (10)(2).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 + register_map_control_s.LCB_ABC_MASK_3_0 (2)(2).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_3 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (10)(3).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (10)(3).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, + when REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_3 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_CTRL (2)(3).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs + register_map_control_s.LCB_CTRL (2)(3).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - register_map_control_s.LCB_CTRL (10)(3).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (10)(3).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (10)(3).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (10)(3).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: + register_map_control_s.LCB_CTRL (2)(3).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal + register_map_control_s.LCB_CTRL (2)(3).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames + register_map_control_s.LCB_CTRL (2)(3).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames + register_map_control_s.LCB_CTRL (2)(3).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: -- 00: command decoder (use same command encoding format as trickle configuration) -- 01: trickle memory (see phase2 documentation for command encoding format) -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) -- 11: (invalid, don't use) - register_map_control_s.LCB_CTRL (10)(3).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end + register_map_control_s.LCB_CTRL (2)(3).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - register_map_control_s.LCB_CTRL (10)(3).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (10)(3).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (10)(3).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. + register_map_control_s.LCB_CTRL (2)(3).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals + register_map_control_s.LCB_CTRL (2)(3).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. -- (See also BC_START, and BC_STOP fields) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_3 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (10)(3).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + when REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_TRIGGER_3 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.TRICKLE_TRIGGER (2)(3) <= "1"; -- writing to this register issues a single trickle trigger + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_3 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_TRICKLE_CONFIG (2)(3).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address - register_map_control_s.LCB_TRICKLE_CONFIG (10)(3).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (10)(3).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (10)(3).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + register_map_control_s.LCB_TRICKLE_CONFIG (2)(3).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer + register_map_control_s.LCB_TRICKLE_CONFIG (2)(3).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory + register_map_control_s.LCB_TRICKLE_CONFIG (2)(3).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_3 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (10)(3).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask + when REG_CR_ITK_STRIPS_LCB_LINKS_02_MODULE_MASK_F_C_3 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.HCC_ABC_MASK_E_C (2)(3).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - register_map_control_s.HCC_ABC_MASK_E_C (10)(3).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE + register_map_control_s.HCC_ABC_MASK_E_C (2)(3).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE -- mask(i) <=> (abc_id = i) - register_map_control_s.HCC_ABC_MASK_E_C (10)(3).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD + register_map_control_s.HCC_ABC_MASK_E_C (2)(3).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD -- mask(i) <=> (abc_id = i) - register_map_control_s.HCC_ABC_MASK_E_C (10)(3).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC + register_map_control_s.HCC_ABC_MASK_E_C (2)(3).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_3 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (10)(3).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB + when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_B_8_3 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_B_8 (2)(3).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (10)(3).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA + register_map_control_s.LCB_ABC_MASK_B_8 (2)(3).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (10)(3).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 + register_map_control_s.LCB_ABC_MASK_B_8 (2)(3).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (10)(3).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 + register_map_control_s.LCB_ABC_MASK_B_8 (2)(3).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_3 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (10)(3).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 + when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_7_4_3 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_7_4 (2)(3).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (10)(3).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 + register_map_control_s.LCB_ABC_MASK_7_4 (2)(3).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (10)(3).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 + register_map_control_s.LCB_ABC_MASK_7_4 (2)(3).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (10)(3).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 + register_map_control_s.LCB_ABC_MASK_7_4 (2)(3).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_3 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (10)(3).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 + when REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_3_0_3 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_3_0 (2)(3).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (10)(3).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 + register_map_control_s.LCB_ABC_MASK_3_0 (2)(3).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (10)(3).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 + register_map_control_s.LCB_ABC_MASK_3_0 (2)(3).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (10)(3).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 + register_map_control_s.LCB_ABC_MASK_3_0 (2)(3).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_R3L1_LINK_10_R3L1_0 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (10)(0).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (10)(0).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (10)(0).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_10_R3L1_1 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (10)(1).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (10)(1).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (10)(1).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_10_R3L1_2 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (10)(2).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (10)(2).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (10)(2).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_R3L1_LINK_10_R3L1_3 => - if (GBT_NUM > 10 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (10)(3).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (10)(3).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (10)(3).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end - end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_0 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(0).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (11)(0).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, + when REG_CR_ITK_R3L1_LINK_02_R3L1_0 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.R3L1_CTRL (2)(0).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal + register_map_control_s.R3L1_CTRL (2)(0).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end + register_map_control_s.R3L1_CTRL (2)(0).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end + end if; + when REG_CR_ITK_R3L1_LINK_02_R3L1_1 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.R3L1_CTRL (2)(1).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal + register_map_control_s.R3L1_CTRL (2)(1).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end + register_map_control_s.R3L1_CTRL (2)(1).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end + end if; + when REG_CR_ITK_R3L1_LINK_02_R3L1_2 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.R3L1_CTRL (2)(2).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal + register_map_control_s.R3L1_CTRL (2)(2).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end + register_map_control_s.R3L1_CTRL (2)(2).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end + end if; + when REG_CR_ITK_R3L1_LINK_02_R3L1_3 => + if (GBT_NUM > 2 and FIRMWARE_MODE = 5) then + register_map_control_s.R3L1_CTRL (2)(3).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal + register_map_control_s.R3L1_CTRL (2)(3).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end + register_map_control_s.R3L1_CTRL (2)(3).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_0 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_CTRL (3)(0).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs + register_map_control_s.LCB_CTRL (3)(0).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - register_map_control_s.LCB_CTRL (11)(0).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (11)(0).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (11)(0).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (11)(0).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: + register_map_control_s.LCB_CTRL (3)(0).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal + register_map_control_s.LCB_CTRL (3)(0).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames + register_map_control_s.LCB_CTRL (3)(0).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames + register_map_control_s.LCB_CTRL (3)(0).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: -- 00: command decoder (use same command encoding format as trickle configuration) -- 01: trickle memory (see phase2 documentation for command encoding format) -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) -- 11: (invalid, don't use) - register_map_control_s.LCB_CTRL (11)(0).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end + register_map_control_s.LCB_CTRL (3)(0).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - register_map_control_s.LCB_CTRL (11)(0).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (11)(0).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (11)(0).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. + register_map_control_s.LCB_CTRL (3)(0).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals + register_map_control_s.LCB_CTRL (3)(0).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. -- (See also BC_START, and BC_STOP fields) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_0 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (11)(0).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + when REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_TRIGGER_0 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.TRICKLE_TRIGGER (3)(0) <= "1"; -- writing to this register issues a single trickle trigger + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_0 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_TRICKLE_CONFIG (3)(0).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address - register_map_control_s.LCB_TRICKLE_CONFIG (11)(0).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (11)(0).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (11)(0).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + register_map_control_s.LCB_TRICKLE_CONFIG (3)(0).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer + register_map_control_s.LCB_TRICKLE_CONFIG (3)(0).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory + register_map_control_s.LCB_TRICKLE_CONFIG (3)(0).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_0 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (11)(0).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask + when REG_CR_ITK_STRIPS_LCB_LINKS_03_MODULE_MASK_F_C_0 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.HCC_ABC_MASK_E_C (3)(0).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - register_map_control_s.HCC_ABC_MASK_E_C (11)(0).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE + register_map_control_s.HCC_ABC_MASK_E_C (3)(0).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE -- mask(i) <=> (abc_id = i) - register_map_control_s.HCC_ABC_MASK_E_C (11)(0).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD + register_map_control_s.HCC_ABC_MASK_E_C (3)(0).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD -- mask(i) <=> (abc_id = i) - register_map_control_s.HCC_ABC_MASK_E_C (11)(0).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC + register_map_control_s.HCC_ABC_MASK_E_C (3)(0).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_0 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (11)(0).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB + when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_B_8_0 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_B_8 (3)(0).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (11)(0).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA + register_map_control_s.LCB_ABC_MASK_B_8 (3)(0).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (11)(0).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 + register_map_control_s.LCB_ABC_MASK_B_8 (3)(0).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (11)(0).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 + register_map_control_s.LCB_ABC_MASK_B_8 (3)(0).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_0 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (11)(0).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 + when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_7_4_0 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_7_4 (3)(0).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (11)(0).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 + register_map_control_s.LCB_ABC_MASK_7_4 (3)(0).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (11)(0).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 + register_map_control_s.LCB_ABC_MASK_7_4 (3)(0).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (11)(0).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 + register_map_control_s.LCB_ABC_MASK_7_4 (3)(0).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_0 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (11)(0).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 + when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_3_0_0 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_3_0 (3)(0).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (11)(0).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 + register_map_control_s.LCB_ABC_MASK_3_0 (3)(0).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (11)(0).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 + register_map_control_s.LCB_ABC_MASK_3_0 (3)(0).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (11)(0).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 + register_map_control_s.LCB_ABC_MASK_3_0 (3)(0).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_1 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(1).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (11)(1).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, + when REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_1 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_CTRL (3)(1).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs + register_map_control_s.LCB_CTRL (3)(1).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - register_map_control_s.LCB_CTRL (11)(1).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (11)(1).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (11)(1).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (11)(1).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: + register_map_control_s.LCB_CTRL (3)(1).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal + register_map_control_s.LCB_CTRL (3)(1).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames + register_map_control_s.LCB_CTRL (3)(1).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames + register_map_control_s.LCB_CTRL (3)(1).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: -- 00: command decoder (use same command encoding format as trickle configuration) -- 01: trickle memory (see phase2 documentation for command encoding format) -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) -- 11: (invalid, don't use) - register_map_control_s.LCB_CTRL (11)(1).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end + register_map_control_s.LCB_CTRL (3)(1).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - register_map_control_s.LCB_CTRL (11)(1).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (11)(1).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (11)(1).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. + register_map_control_s.LCB_CTRL (3)(1).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals + register_map_control_s.LCB_CTRL (3)(1).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. -- (See also BC_START, and BC_STOP fields) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_1 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (11)(1).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + when REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_TRIGGER_1 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.TRICKLE_TRIGGER (3)(1) <= "1"; -- writing to this register issues a single trickle trigger + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_1 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_TRICKLE_CONFIG (3)(1).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address - register_map_control_s.LCB_TRICKLE_CONFIG (11)(1).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (11)(1).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (11)(1).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + register_map_control_s.LCB_TRICKLE_CONFIG (3)(1).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer + register_map_control_s.LCB_TRICKLE_CONFIG (3)(1).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory + register_map_control_s.LCB_TRICKLE_CONFIG (3)(1).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_1 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (11)(1).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask + when REG_CR_ITK_STRIPS_LCB_LINKS_03_MODULE_MASK_F_C_1 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.HCC_ABC_MASK_E_C (3)(1).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - register_map_control_s.HCC_ABC_MASK_E_C (11)(1).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE + register_map_control_s.HCC_ABC_MASK_E_C (3)(1).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE -- mask(i) <=> (abc_id = i) - register_map_control_s.HCC_ABC_MASK_E_C (11)(1).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD + register_map_control_s.HCC_ABC_MASK_E_C (3)(1).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD -- mask(i) <=> (abc_id = i) - register_map_control_s.HCC_ABC_MASK_E_C (11)(1).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC + register_map_control_s.HCC_ABC_MASK_E_C (3)(1).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_1 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (11)(1).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB + when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_B_8_1 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_B_8 (3)(1).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (11)(1).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA + register_map_control_s.LCB_ABC_MASK_B_8 (3)(1).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (11)(1).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 + register_map_control_s.LCB_ABC_MASK_B_8 (3)(1).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (11)(1).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 + register_map_control_s.LCB_ABC_MASK_B_8 (3)(1).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_1 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (11)(1).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 + when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_7_4_1 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_7_4 (3)(1).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (11)(1).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 + register_map_control_s.LCB_ABC_MASK_7_4 (3)(1).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (11)(1).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 + register_map_control_s.LCB_ABC_MASK_7_4 (3)(1).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (11)(1).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 + register_map_control_s.LCB_ABC_MASK_7_4 (3)(1).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_1 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (11)(1).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 + when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_3_0_1 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_3_0 (3)(1).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (11)(1).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 + register_map_control_s.LCB_ABC_MASK_3_0 (3)(1).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (11)(1).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 + register_map_control_s.LCB_ABC_MASK_3_0 (3)(1).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (11)(1).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 + register_map_control_s.LCB_ABC_MASK_3_0 (3)(1).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_2 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(2).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (11)(2).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, + when REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_2 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_CTRL (3)(2).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs + register_map_control_s.LCB_CTRL (3)(2).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - register_map_control_s.LCB_CTRL (11)(2).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (11)(2).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (11)(2).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (11)(2).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: + register_map_control_s.LCB_CTRL (3)(2).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal + register_map_control_s.LCB_CTRL (3)(2).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames + register_map_control_s.LCB_CTRL (3)(2).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames + register_map_control_s.LCB_CTRL (3)(2).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: -- 00: command decoder (use same command encoding format as trickle configuration) -- 01: trickle memory (see phase2 documentation for command encoding format) -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) -- 11: (invalid, don't use) - register_map_control_s.LCB_CTRL (11)(2).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end + register_map_control_s.LCB_CTRL (3)(2).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - register_map_control_s.LCB_CTRL (11)(2).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (11)(2).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (11)(2).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. + register_map_control_s.LCB_CTRL (3)(2).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals + register_map_control_s.LCB_CTRL (3)(2).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. -- (See also BC_START, and BC_STOP fields) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_2 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (11)(2).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + when REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_TRIGGER_2 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.TRICKLE_TRIGGER (3)(2) <= "1"; -- writing to this register issues a single trickle trigger + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_2 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_TRICKLE_CONFIG (3)(2).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address - register_map_control_s.LCB_TRICKLE_CONFIG (11)(2).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (11)(2).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (11)(2).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + register_map_control_s.LCB_TRICKLE_CONFIG (3)(2).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer + register_map_control_s.LCB_TRICKLE_CONFIG (3)(2).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory + register_map_control_s.LCB_TRICKLE_CONFIG (3)(2).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_2 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (11)(2).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask + when REG_CR_ITK_STRIPS_LCB_LINKS_03_MODULE_MASK_F_C_2 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.HCC_ABC_MASK_E_C (3)(2).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - register_map_control_s.HCC_ABC_MASK_E_C (11)(2).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE + register_map_control_s.HCC_ABC_MASK_E_C (3)(2).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE -- mask(i) <=> (abc_id = i) - register_map_control_s.HCC_ABC_MASK_E_C (11)(2).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD + register_map_control_s.HCC_ABC_MASK_E_C (3)(2).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD -- mask(i) <=> (abc_id = i) - register_map_control_s.HCC_ABC_MASK_E_C (11)(2).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC + register_map_control_s.HCC_ABC_MASK_E_C (3)(2).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_2 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (11)(2).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB + when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_B_8_2 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_B_8 (3)(2).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (11)(2).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA + register_map_control_s.LCB_ABC_MASK_B_8 (3)(2).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (11)(2).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 + register_map_control_s.LCB_ABC_MASK_B_8 (3)(2).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (11)(2).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 + register_map_control_s.LCB_ABC_MASK_B_8 (3)(2).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_2 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (11)(2).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 + when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_7_4_2 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_7_4 (3)(2).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (11)(2).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 + register_map_control_s.LCB_ABC_MASK_7_4 (3)(2).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (11)(2).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 + register_map_control_s.LCB_ABC_MASK_7_4 (3)(2).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (11)(2).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 + register_map_control_s.LCB_ABC_MASK_7_4 (3)(2).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_2 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (11)(2).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 + when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_3_0_2 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_3_0 (3)(2).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (11)(2).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 + register_map_control_s.LCB_ABC_MASK_3_0 (3)(2).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (11)(2).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 + register_map_control_s.LCB_ABC_MASK_3_0 (3)(2).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (11)(2).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 + register_map_control_s.LCB_ABC_MASK_3_0 (3)(2).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_3 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_CTRL (11)(3).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs - register_map_control_s.LCB_CTRL (11)(3).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, + when REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_3 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_CTRL (3)(3).L0A_BCR_DELAY <= register_write_data_25_v(49 downto 38); -- TTC BCR signal will be delayed by this many BCs + register_map_control_s.LCB_CTRL (3)(3).L0A_FRAME_DELAY <= register_write_data_25_v(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - register_map_control_s.LCB_CTRL (11)(3).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal - register_map_control_s.LCB_CTRL (11)(3).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (11)(3).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames - register_map_control_s.LCB_CTRL (11)(3).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: + register_map_control_s.LCB_CTRL (3)(3).FRAME_PHASE <= register_write_data_25_v(33 downto 32); -- phase of LCB frame with respect to TTC BCR signal + register_map_control_s.LCB_CTRL (3)(3).TRICKLE_BC_START <= register_write_data_25_v(31 downto 20); -- Determines the start of the allowed BC interval for low-priority LCB frames + register_map_control_s.LCB_CTRL (3)(3).TRICKLE_BC_STOP <= register_write_data_25_v(19 downto 8); -- Determines the end of the allowed BC interval for low-priority LCB frames + register_map_control_s.LCB_CTRL (3)(3).LCB_DESTINATION_MUX <= register_write_data_25_v(5 downto 4); -- Determines where the elink data is sent to: -- 00: command decoder (use same command encoding format as trickle configuration) -- 01: trickle memory (see phase2 documentation for command encoding format) -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) -- 11: (invalid, don't use) - register_map_control_s.LCB_CTRL (11)(3).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end + register_map_control_s.LCB_CTRL (3)(3).TRICKLE_TRIG_RUN <= register_write_data_25_v(3 downto 3); -- if enabled, trickle configuration is sent out continuously to the front-end -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - register_map_control_s.LCB_CTRL (11)(3).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals - register_map_control_s.LCB_CTRL (11)(3).TRICKLE_TRIG_PULSE <= "1"; -- writing to this register issues a single trickle trigger - register_map_control_s.LCB_CTRL (11)(3).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. + register_map_control_s.LCB_CTRL (3)(3).TTC_L0A_ENABLE <= register_write_data_25_v(2 downto 2); -- enable generating L0A frames in response to TTC system signals + register_map_control_s.LCB_CTRL (3)(3).TTC_GENERATE_GATING_ENABLE <= register_write_data_25_v(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. -- (See also BC_START, and BC_STOP fields) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_3 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_TRICKLE_CONFIG (11)(3).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + when REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_TRIGGER_3 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.TRICKLE_TRIGGER (3)(3) <= "1"; -- writing to this register issues a single trickle trigger + end if; + when REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_3 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_TRICKLE_CONFIG (3)(3).MOVE_WRITE_PTR <= "1"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address - register_map_control_s.LCB_TRICKLE_CONFIG (11)(3).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer - register_map_control_s.LCB_TRICKLE_CONFIG (11)(3).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory - register_map_control_s.LCB_TRICKLE_CONFIG (11)(3).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) + register_map_control_s.LCB_TRICKLE_CONFIG (3)(3).WRITE_PTR <= register_write_data_25_v(47 downto 32); -- Trickle configuration memory write pointer + register_map_control_s.LCB_TRICKLE_CONFIG (3)(3).VALID_DATA_START <= register_write_data_25_v(31 downto 16); -- Start address of trickle configuration in trickle memory + register_map_control_s.LCB_TRICKLE_CONFIG (3)(3).VALID_DATA_END <= register_write_data_25_v(15 downto 0); -- Stop address of trickle configuration in trickle memory (last valid byte) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_3 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.HCC_ABC_MASK_E_C (11)(3).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask + when REG_CR_ITK_STRIPS_LCB_LINKS_03_MODULE_MASK_F_C_3 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.HCC_ABC_MASK_E_C (3)(3).HCC_MASK <= register_write_data_25_v(63 downto 48); -- HCC* module mask - register_map_control_s.HCC_ABC_MASK_E_C (11)(3).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE + register_map_control_s.HCC_ABC_MASK_E_C (3)(3).ABC_MASK_HCC_E <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xE -- mask(i) <=> (abc_id = i) - register_map_control_s.HCC_ABC_MASK_E_C (11)(3).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD + register_map_control_s.HCC_ABC_MASK_E_C (3)(3).ABC_MASK_HCC_D <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0xD -- mask(i) <=> (abc_id = i) - register_map_control_s.HCC_ABC_MASK_E_C (11)(3).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC + register_map_control_s.HCC_ABC_MASK_E_C (3)(3).ABC_MASK_HCC_C <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0xC -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_3 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_B_8 (11)(3).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB + when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_B_8_3 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_B_8 (3)(3).ABC_MASK_HCC_B <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0xB -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (11)(3).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA + register_map_control_s.LCB_ABC_MASK_B_8 (3)(3).ABC_MASK_HCC_A <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0xA -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (11)(3).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 + register_map_control_s.LCB_ABC_MASK_B_8 (3)(3).ABC_MASK_HCC_9 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x9 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_B_8 (11)(3).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 + register_map_control_s.LCB_ABC_MASK_B_8 (3)(3).ABC_MASK_HCC_8 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x8 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_3 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_7_4 (11)(3).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 + when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_7_4_3 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_7_4 (3)(3).ABC_MASK_HCC_7 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (11)(3).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 + register_map_control_s.LCB_ABC_MASK_7_4 (3)(3).ABC_MASK_HCC_6 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x6 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (11)(3).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 + register_map_control_s.LCB_ABC_MASK_7_4 (3)(3).ABC_MASK_HCC_5 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x5 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_7_4 (11)(3).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 + register_map_control_s.LCB_ABC_MASK_7_4 (3)(3).ABC_MASK_HCC_4 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x4 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_3 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.LCB_ABC_MASK_3_0 (11)(3).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 + when REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_3_0_3 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.LCB_ABC_MASK_3_0 (3)(3).ABC_MASK_HCC_3 <= register_write_data_25_v(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (11)(3).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 + register_map_control_s.LCB_ABC_MASK_3_0 (3)(3).ABC_MASK_HCC_2 <= register_write_data_25_v(47 downto 32); -- Masks register commands with destination hcc_id = 0x2 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (11)(3).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 + register_map_control_s.LCB_ABC_MASK_3_0 (3)(3).ABC_MASK_HCC_1 <= register_write_data_25_v(31 downto 16); -- Masks register commands with destination hcc_id = 0x1 -- mask(i) <=> (abc_id = i) - register_map_control_s.LCB_ABC_MASK_3_0 (11)(3).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 + register_map_control_s.LCB_ABC_MASK_3_0 (3)(3).ABC_MASK_HCC_0 <= register_write_data_25_v(15 downto 0); -- Masks register commands with destination hcc_id = 0x0 -- mask(i) <=> (abc_id = i) end if; - when REG_CR_ITK_R3L1_LINK_11_R3L1_0 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (11)(0).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (11)(0).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (11)(0).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end + when REG_CR_ITK_R3L1_LINK_03_R3L1_0 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.R3L1_CTRL (3)(0).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal + register_map_control_s.R3L1_CTRL (3)(0).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end + register_map_control_s.R3L1_CTRL (3)(0).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end end if; - when REG_CR_ITK_R3L1_LINK_11_R3L1_1 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (11)(1).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (11)(1).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (11)(1).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end + when REG_CR_ITK_R3L1_LINK_03_R3L1_1 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.R3L1_CTRL (3)(1).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal + register_map_control_s.R3L1_CTRL (3)(1).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end + register_map_control_s.R3L1_CTRL (3)(1).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end end if; - when REG_CR_ITK_R3L1_LINK_11_R3L1_2 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (11)(2).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (11)(2).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (11)(2).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end + when REG_CR_ITK_R3L1_LINK_03_R3L1_2 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.R3L1_CTRL (3)(2).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal + register_map_control_s.R3L1_CTRL (3)(2).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end + register_map_control_s.R3L1_CTRL (3)(2).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end end if; - when REG_CR_ITK_R3L1_LINK_11_R3L1_3 => - if (GBT_NUM > 11 and FIRMWARE_MODE = 5) then - register_map_control_s.R3L1_CTRL (11)(3).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal - register_map_control_s.R3L1_CTRL (11)(3).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end - register_map_control_s.R3L1_CTRL (11)(3).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end + when REG_CR_ITK_R3L1_LINK_03_R3L1_3 => + if (GBT_NUM > 3 and FIRMWARE_MODE = 5) then + register_map_control_s.R3L1_CTRL (3)(3).FRAME_PHASE <= register_write_data_25_v(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal + register_map_control_s.R3L1_CTRL (3)(3).L1_ENABLE <= register_write_data_25_v(1 downto 1); -- enables sending TTC L1 signals to the front-end + register_map_control_s.R3L1_CTRL (3)(3).R3_ENABLE <= register_write_data_25_v(0 downto 0); -- enables sending RoI R3 signals to the front-end end if; + when REG_STRIPS_R3_TRIGGER => register_map_control_s.STRIPS_R3_TRIGGER <= "1"; -- (for tests only) simulate R3 trigger (issues 4-5 sequential triggers) + when REG_STRIPS_L1_TRIGGER => register_map_control_s.STRIPS_L1_TRIGGER <= "1"; -- (for tests only) simulate L1 trigger (issues 4-5 sequential triggers) + when REG_STRIPS_R3L1_TRIGGER => register_map_control_s.STRIPS_R3L1_TRIGGER <= "1"; -- (for tests only) simulate simultaneous R3 and L1 trigger (issues 4-5 sequential triggers) when REG_MROD_CTRL => if MROD_GENERATE_REGS = true then register_map_control_s.MROD_CTRL.OPTIONS <= register_write_data_25_v(15 downto 4); -- Extra options for MROD diff --git a/sources/templates/pcie_package.vhd b/sources/templates/pcie_package.vhd index 53aa1aee0..6d426c7ae 100644 --- a/sources/templates/pcie_package.vhd +++ b/sources/templates/pcie_package.vhd @@ -1297,392 +1297,156 @@ package pcie_package is --** ITK_STRIPS_CTRL constant REG_GLOBAL_STRIPS_CONFIG : std_logic_vector(19 downto 0) := x"0d000"; + constant REG_GLOBAL_TRICKLE_TRIGGER : std_logic_vector(19 downto 0) := x"0d010"; --** ITK_STRIPS_GBT --** ITK_STRIPS_LCB_LINKS - constant REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_0 : std_logic_vector(19 downto 0) := x"0d010"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_0 : std_logic_vector(19 downto 0) := x"0d020"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_00_MODULE_MASK_F_C_0 : std_logic_vector(19 downto 0) := x"0d030"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_B_8_0 : std_logic_vector(19 downto 0) := x"0d040"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_7_4_0 : std_logic_vector(19 downto 0) := x"0d050"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_3_0_0 : std_logic_vector(19 downto 0) := x"0d060"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_1 : std_logic_vector(19 downto 0) := x"0d070"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_1 : std_logic_vector(19 downto 0) := x"0d080"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_00_MODULE_MASK_F_C_1 : std_logic_vector(19 downto 0) := x"0d090"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_B_8_1 : std_logic_vector(19 downto 0) := x"0d0a0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_7_4_1 : std_logic_vector(19 downto 0) := x"0d0b0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_3_0_1 : std_logic_vector(19 downto 0) := x"0d0c0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_2 : std_logic_vector(19 downto 0) := x"0d0d0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_2 : std_logic_vector(19 downto 0) := x"0d0e0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_00_MODULE_MASK_F_C_2 : std_logic_vector(19 downto 0) := x"0d0f0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_B_8_2 : std_logic_vector(19 downto 0) := x"0d100"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_7_4_2 : std_logic_vector(19 downto 0) := x"0d110"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_3_0_2 : std_logic_vector(19 downto 0) := x"0d120"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_3 : std_logic_vector(19 downto 0) := x"0d130"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_3 : std_logic_vector(19 downto 0) := x"0d140"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_00_MODULE_MASK_F_C_3 : std_logic_vector(19 downto 0) := x"0d150"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_B_8_3 : std_logic_vector(19 downto 0) := x"0d160"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_7_4_3 : std_logic_vector(19 downto 0) := x"0d170"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_3_0_3 : std_logic_vector(19 downto 0) := x"0d180"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_0 : std_logic_vector(19 downto 0) := x"0d020"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_TRIGGER_0 : std_logic_vector(19 downto 0) := x"0d030"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_0 : std_logic_vector(19 downto 0) := x"0d040"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_00_MODULE_MASK_F_C_0 : std_logic_vector(19 downto 0) := x"0d050"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_B_8_0 : std_logic_vector(19 downto 0) := x"0d060"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_7_4_0 : std_logic_vector(19 downto 0) := x"0d070"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_3_0_0 : std_logic_vector(19 downto 0) := x"0d080"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_1 : std_logic_vector(19 downto 0) := x"0d090"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_TRIGGER_1 : std_logic_vector(19 downto 0) := x"0d0a0"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_1 : std_logic_vector(19 downto 0) := x"0d0b0"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_00_MODULE_MASK_F_C_1 : std_logic_vector(19 downto 0) := x"0d0c0"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_B_8_1 : std_logic_vector(19 downto 0) := x"0d0d0"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_7_4_1 : std_logic_vector(19 downto 0) := x"0d0e0"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_3_0_1 : std_logic_vector(19 downto 0) := x"0d0f0"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_2 : std_logic_vector(19 downto 0) := x"0d100"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_TRIGGER_2 : std_logic_vector(19 downto 0) := x"0d110"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_2 : std_logic_vector(19 downto 0) := x"0d120"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_00_MODULE_MASK_F_C_2 : std_logic_vector(19 downto 0) := x"0d130"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_B_8_2 : std_logic_vector(19 downto 0) := x"0d140"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_7_4_2 : std_logic_vector(19 downto 0) := x"0d150"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_3_0_2 : std_logic_vector(19 downto 0) := x"0d160"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_3 : std_logic_vector(19 downto 0) := x"0d170"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_TRIGGER_3 : std_logic_vector(19 downto 0) := x"0d180"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_3 : std_logic_vector(19 downto 0) := x"0d190"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_00_MODULE_MASK_F_C_3 : std_logic_vector(19 downto 0) := x"0d1a0"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_B_8_3 : std_logic_vector(19 downto 0) := x"0d1b0"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_7_4_3 : std_logic_vector(19 downto 0) := x"0d1c0"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_3_0_3 : std_logic_vector(19 downto 0) := x"0d1d0"; --** ITK_STRIPS_R3L1_LINKS - constant REG_CR_ITK_R3L1_LINK_00_R3L1_0 : std_logic_vector(19 downto 0) := x"0d190"; - constant REG_CR_ITK_R3L1_LINK_00_R3L1_1 : std_logic_vector(19 downto 0) := x"0d1a0"; - constant REG_CR_ITK_R3L1_LINK_00_R3L1_2 : std_logic_vector(19 downto 0) := x"0d1b0"; - constant REG_CR_ITK_R3L1_LINK_00_R3L1_3 : std_logic_vector(19 downto 0) := x"0d1c0"; + constant REG_CR_ITK_R3L1_LINK_00_R3L1_0 : std_logic_vector(19 downto 0) := x"0d1e0"; + constant REG_CR_ITK_R3L1_LINK_00_R3L1_1 : std_logic_vector(19 downto 0) := x"0d1f0"; + constant REG_CR_ITK_R3L1_LINK_00_R3L1_2 : std_logic_vector(19 downto 0) := x"0d200"; + constant REG_CR_ITK_R3L1_LINK_00_R3L1_3 : std_logic_vector(19 downto 0) := x"0d210"; --** ITK_STRIPS_LCB_LINKS - constant REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_0 : std_logic_vector(19 downto 0) := x"0d1d0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_0 : std_logic_vector(19 downto 0) := x"0d1e0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_01_MODULE_MASK_F_C_0 : std_logic_vector(19 downto 0) := x"0d1f0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_B_8_0 : std_logic_vector(19 downto 0) := x"0d200"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_7_4_0 : std_logic_vector(19 downto 0) := x"0d210"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_3_0_0 : std_logic_vector(19 downto 0) := x"0d220"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_1 : std_logic_vector(19 downto 0) := x"0d230"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_1 : std_logic_vector(19 downto 0) := x"0d240"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_01_MODULE_MASK_F_C_1 : std_logic_vector(19 downto 0) := x"0d250"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_B_8_1 : std_logic_vector(19 downto 0) := x"0d260"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_7_4_1 : std_logic_vector(19 downto 0) := x"0d270"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_3_0_1 : std_logic_vector(19 downto 0) := x"0d280"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_2 : std_logic_vector(19 downto 0) := x"0d290"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_2 : std_logic_vector(19 downto 0) := x"0d2a0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_01_MODULE_MASK_F_C_2 : std_logic_vector(19 downto 0) := x"0d2b0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_B_8_2 : std_logic_vector(19 downto 0) := x"0d2c0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_7_4_2 : std_logic_vector(19 downto 0) := x"0d2d0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_3_0_2 : std_logic_vector(19 downto 0) := x"0d2e0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_3 : std_logic_vector(19 downto 0) := x"0d2f0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_3 : std_logic_vector(19 downto 0) := x"0d300"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_01_MODULE_MASK_F_C_3 : std_logic_vector(19 downto 0) := x"0d310"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_B_8_3 : std_logic_vector(19 downto 0) := x"0d320"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_7_4_3 : std_logic_vector(19 downto 0) := x"0d330"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_3_0_3 : std_logic_vector(19 downto 0) := x"0d340"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_0 : std_logic_vector(19 downto 0) := x"0d220"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_TRIGGER_0 : std_logic_vector(19 downto 0) := x"0d230"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_0 : std_logic_vector(19 downto 0) := x"0d240"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_01_MODULE_MASK_F_C_0 : std_logic_vector(19 downto 0) := x"0d250"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_B_8_0 : std_logic_vector(19 downto 0) := x"0d260"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_7_4_0 : std_logic_vector(19 downto 0) := x"0d270"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_3_0_0 : std_logic_vector(19 downto 0) := x"0d280"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_1 : std_logic_vector(19 downto 0) := x"0d290"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_TRIGGER_1 : std_logic_vector(19 downto 0) := x"0d2a0"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_1 : std_logic_vector(19 downto 0) := x"0d2b0"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_01_MODULE_MASK_F_C_1 : std_logic_vector(19 downto 0) := x"0d2c0"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_B_8_1 : std_logic_vector(19 downto 0) := x"0d2d0"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_7_4_1 : std_logic_vector(19 downto 0) := x"0d2e0"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_3_0_1 : std_logic_vector(19 downto 0) := x"0d2f0"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_2 : std_logic_vector(19 downto 0) := x"0d300"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_TRIGGER_2 : std_logic_vector(19 downto 0) := x"0d310"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_2 : std_logic_vector(19 downto 0) := x"0d320"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_01_MODULE_MASK_F_C_2 : std_logic_vector(19 downto 0) := x"0d330"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_B_8_2 : std_logic_vector(19 downto 0) := x"0d340"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_7_4_2 : std_logic_vector(19 downto 0) := x"0d350"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_3_0_2 : std_logic_vector(19 downto 0) := x"0d360"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_3 : std_logic_vector(19 downto 0) := x"0d370"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_TRIGGER_3 : std_logic_vector(19 downto 0) := x"0d380"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_3 : std_logic_vector(19 downto 0) := x"0d390"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_01_MODULE_MASK_F_C_3 : std_logic_vector(19 downto 0) := x"0d3a0"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_B_8_3 : std_logic_vector(19 downto 0) := x"0d3b0"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_7_4_3 : std_logic_vector(19 downto 0) := x"0d3c0"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_01_ABC_MODULE_MASK_3_0_3 : std_logic_vector(19 downto 0) := x"0d3d0"; --** ITK_STRIPS_R3L1_LINKS - constant REG_CR_ITK_R3L1_LINK_01_R3L1_0 : std_logic_vector(19 downto 0) := x"0d350"; - constant REG_CR_ITK_R3L1_LINK_01_R3L1_1 : std_logic_vector(19 downto 0) := x"0d360"; - constant REG_CR_ITK_R3L1_LINK_01_R3L1_2 : std_logic_vector(19 downto 0) := x"0d370"; - constant REG_CR_ITK_R3L1_LINK_01_R3L1_3 : std_logic_vector(19 downto 0) := x"0d380"; + constant REG_CR_ITK_R3L1_LINK_01_R3L1_0 : std_logic_vector(19 downto 0) := x"0d3e0"; + constant REG_CR_ITK_R3L1_LINK_01_R3L1_1 : std_logic_vector(19 downto 0) := x"0d3f0"; + constant REG_CR_ITK_R3L1_LINK_01_R3L1_2 : std_logic_vector(19 downto 0) := x"0d400"; + constant REG_CR_ITK_R3L1_LINK_01_R3L1_3 : std_logic_vector(19 downto 0) := x"0d410"; --** ITK_STRIPS_LCB_LINKS - constant REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_0 : std_logic_vector(19 downto 0) := x"0d390"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_0 : std_logic_vector(19 downto 0) := x"0d3a0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_02_MODULE_MASK_F_C_0 : std_logic_vector(19 downto 0) := x"0d3b0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_B_8_0 : std_logic_vector(19 downto 0) := x"0d3c0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_7_4_0 : std_logic_vector(19 downto 0) := x"0d3d0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_3_0_0 : std_logic_vector(19 downto 0) := x"0d3e0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_1 : std_logic_vector(19 downto 0) := x"0d3f0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_1 : std_logic_vector(19 downto 0) := x"0d400"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_02_MODULE_MASK_F_C_1 : std_logic_vector(19 downto 0) := x"0d410"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_B_8_1 : std_logic_vector(19 downto 0) := x"0d420"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_7_4_1 : std_logic_vector(19 downto 0) := x"0d430"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_3_0_1 : std_logic_vector(19 downto 0) := x"0d440"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_2 : std_logic_vector(19 downto 0) := x"0d450"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_2 : std_logic_vector(19 downto 0) := x"0d460"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_02_MODULE_MASK_F_C_2 : std_logic_vector(19 downto 0) := x"0d470"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_B_8_2 : std_logic_vector(19 downto 0) := x"0d480"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_7_4_2 : std_logic_vector(19 downto 0) := x"0d490"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_3_0_2 : std_logic_vector(19 downto 0) := x"0d4a0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_3 : std_logic_vector(19 downto 0) := x"0d4b0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_3 : std_logic_vector(19 downto 0) := x"0d4c0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_02_MODULE_MASK_F_C_3 : std_logic_vector(19 downto 0) := x"0d4d0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_B_8_3 : std_logic_vector(19 downto 0) := x"0d4e0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_7_4_3 : std_logic_vector(19 downto 0) := x"0d4f0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_3_0_3 : std_logic_vector(19 downto 0) := x"0d500"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_0 : std_logic_vector(19 downto 0) := x"0d420"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_TRIGGER_0 : std_logic_vector(19 downto 0) := x"0d430"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_0 : std_logic_vector(19 downto 0) := x"0d440"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_02_MODULE_MASK_F_C_0 : std_logic_vector(19 downto 0) := x"0d450"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_B_8_0 : std_logic_vector(19 downto 0) := x"0d460"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_7_4_0 : std_logic_vector(19 downto 0) := x"0d470"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_3_0_0 : std_logic_vector(19 downto 0) := x"0d480"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_1 : std_logic_vector(19 downto 0) := x"0d490"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_TRIGGER_1 : std_logic_vector(19 downto 0) := x"0d4a0"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_1 : std_logic_vector(19 downto 0) := x"0d4b0"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_02_MODULE_MASK_F_C_1 : std_logic_vector(19 downto 0) := x"0d4c0"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_B_8_1 : std_logic_vector(19 downto 0) := x"0d4d0"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_7_4_1 : std_logic_vector(19 downto 0) := x"0d4e0"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_3_0_1 : std_logic_vector(19 downto 0) := x"0d4f0"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_2 : std_logic_vector(19 downto 0) := x"0d500"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_TRIGGER_2 : std_logic_vector(19 downto 0) := x"0d510"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_2 : std_logic_vector(19 downto 0) := x"0d520"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_02_MODULE_MASK_F_C_2 : std_logic_vector(19 downto 0) := x"0d530"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_B_8_2 : std_logic_vector(19 downto 0) := x"0d540"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_7_4_2 : std_logic_vector(19 downto 0) := x"0d550"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_3_0_2 : std_logic_vector(19 downto 0) := x"0d560"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_3 : std_logic_vector(19 downto 0) := x"0d570"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_TRIGGER_3 : std_logic_vector(19 downto 0) := x"0d580"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_3 : std_logic_vector(19 downto 0) := x"0d590"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_02_MODULE_MASK_F_C_3 : std_logic_vector(19 downto 0) := x"0d5a0"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_B_8_3 : std_logic_vector(19 downto 0) := x"0d5b0"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_7_4_3 : std_logic_vector(19 downto 0) := x"0d5c0"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_02_ABC_MODULE_MASK_3_0_3 : std_logic_vector(19 downto 0) := x"0d5d0"; --** ITK_STRIPS_R3L1_LINKS - constant REG_CR_ITK_R3L1_LINK_02_R3L1_0 : std_logic_vector(19 downto 0) := x"0d510"; - constant REG_CR_ITK_R3L1_LINK_02_R3L1_1 : std_logic_vector(19 downto 0) := x"0d520"; - constant REG_CR_ITK_R3L1_LINK_02_R3L1_2 : std_logic_vector(19 downto 0) := x"0d530"; - constant REG_CR_ITK_R3L1_LINK_02_R3L1_3 : std_logic_vector(19 downto 0) := x"0d540"; + constant REG_CR_ITK_R3L1_LINK_02_R3L1_0 : std_logic_vector(19 downto 0) := x"0d5e0"; + constant REG_CR_ITK_R3L1_LINK_02_R3L1_1 : std_logic_vector(19 downto 0) := x"0d5f0"; + constant REG_CR_ITK_R3L1_LINK_02_R3L1_2 : std_logic_vector(19 downto 0) := x"0d600"; + constant REG_CR_ITK_R3L1_LINK_02_R3L1_3 : std_logic_vector(19 downto 0) := x"0d610"; --** ITK_STRIPS_LCB_LINKS - constant REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_0 : std_logic_vector(19 downto 0) := x"0d550"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_0 : std_logic_vector(19 downto 0) := x"0d560"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_03_MODULE_MASK_F_C_0 : std_logic_vector(19 downto 0) := x"0d570"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_B_8_0 : std_logic_vector(19 downto 0) := x"0d580"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_7_4_0 : std_logic_vector(19 downto 0) := x"0d590"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_3_0_0 : std_logic_vector(19 downto 0) := x"0d5a0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_1 : std_logic_vector(19 downto 0) := x"0d5b0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_1 : std_logic_vector(19 downto 0) := x"0d5c0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_03_MODULE_MASK_F_C_1 : std_logic_vector(19 downto 0) := x"0d5d0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_B_8_1 : std_logic_vector(19 downto 0) := x"0d5e0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_7_4_1 : std_logic_vector(19 downto 0) := x"0d5f0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_3_0_1 : std_logic_vector(19 downto 0) := x"0d600"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_2 : std_logic_vector(19 downto 0) := x"0d610"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_2 : std_logic_vector(19 downto 0) := x"0d620"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_03_MODULE_MASK_F_C_2 : std_logic_vector(19 downto 0) := x"0d630"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_B_8_2 : std_logic_vector(19 downto 0) := x"0d640"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_7_4_2 : std_logic_vector(19 downto 0) := x"0d650"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_3_0_2 : std_logic_vector(19 downto 0) := x"0d660"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_3 : std_logic_vector(19 downto 0) := x"0d670"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_3 : std_logic_vector(19 downto 0) := x"0d680"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_03_MODULE_MASK_F_C_3 : std_logic_vector(19 downto 0) := x"0d690"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_B_8_3 : std_logic_vector(19 downto 0) := x"0d6a0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_7_4_3 : std_logic_vector(19 downto 0) := x"0d6b0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_3_0_3 : std_logic_vector(19 downto 0) := x"0d6c0"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_0 : std_logic_vector(19 downto 0) := x"0d620"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_TRIGGER_0 : std_logic_vector(19 downto 0) := x"0d630"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_0 : std_logic_vector(19 downto 0) := x"0d640"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_03_MODULE_MASK_F_C_0 : std_logic_vector(19 downto 0) := x"0d650"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_B_8_0 : std_logic_vector(19 downto 0) := x"0d660"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_7_4_0 : std_logic_vector(19 downto 0) := x"0d670"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_3_0_0 : std_logic_vector(19 downto 0) := x"0d680"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_1 : std_logic_vector(19 downto 0) := x"0d690"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_TRIGGER_1 : std_logic_vector(19 downto 0) := x"0d6a0"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_1 : std_logic_vector(19 downto 0) := x"0d6b0"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_03_MODULE_MASK_F_C_1 : std_logic_vector(19 downto 0) := x"0d6c0"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_B_8_1 : std_logic_vector(19 downto 0) := x"0d6d0"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_7_4_1 : std_logic_vector(19 downto 0) := x"0d6e0"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_3_0_1 : std_logic_vector(19 downto 0) := x"0d6f0"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_2 : std_logic_vector(19 downto 0) := x"0d700"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_TRIGGER_2 : std_logic_vector(19 downto 0) := x"0d710"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_2 : std_logic_vector(19 downto 0) := x"0d720"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_03_MODULE_MASK_F_C_2 : std_logic_vector(19 downto 0) := x"0d730"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_B_8_2 : std_logic_vector(19 downto 0) := x"0d740"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_7_4_2 : std_logic_vector(19 downto 0) := x"0d750"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_3_0_2 : std_logic_vector(19 downto 0) := x"0d760"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_3 : std_logic_vector(19 downto 0) := x"0d770"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_TRIGGER_3 : std_logic_vector(19 downto 0) := x"0d780"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_3 : std_logic_vector(19 downto 0) := x"0d790"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_03_MODULE_MASK_F_C_3 : std_logic_vector(19 downto 0) := x"0d7a0"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_B_8_3 : std_logic_vector(19 downto 0) := x"0d7b0"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_7_4_3 : std_logic_vector(19 downto 0) := x"0d7c0"; + constant REG_CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_3_0_3 : std_logic_vector(19 downto 0) := x"0d7d0"; --** ITK_STRIPS_R3L1_LINKS - constant REG_CR_ITK_R3L1_LINK_03_R3L1_0 : std_logic_vector(19 downto 0) := x"0d6d0"; - constant REG_CR_ITK_R3L1_LINK_03_R3L1_1 : std_logic_vector(19 downto 0) := x"0d6e0"; - constant REG_CR_ITK_R3L1_LINK_03_R3L1_2 : std_logic_vector(19 downto 0) := x"0d6f0"; - constant REG_CR_ITK_R3L1_LINK_03_R3L1_3 : std_logic_vector(19 downto 0) := x"0d700"; - - --** ITK_STRIPS_LCB_LINKS - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_0 : std_logic_vector(19 downto 0) := x"0d710"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_0 : std_logic_vector(19 downto 0) := x"0d720"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_0 : std_logic_vector(19 downto 0) := x"0d730"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_0 : std_logic_vector(19 downto 0) := x"0d740"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_0 : std_logic_vector(19 downto 0) := x"0d750"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_0 : std_logic_vector(19 downto 0) := x"0d760"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_1 : std_logic_vector(19 downto 0) := x"0d770"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_1 : std_logic_vector(19 downto 0) := x"0d780"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_1 : std_logic_vector(19 downto 0) := x"0d790"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_1 : std_logic_vector(19 downto 0) := x"0d7a0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_1 : std_logic_vector(19 downto 0) := x"0d7b0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_1 : std_logic_vector(19 downto 0) := x"0d7c0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_2 : std_logic_vector(19 downto 0) := x"0d7d0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_2 : std_logic_vector(19 downto 0) := x"0d7e0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_2 : std_logic_vector(19 downto 0) := x"0d7f0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_2 : std_logic_vector(19 downto 0) := x"0d800"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_2 : std_logic_vector(19 downto 0) := x"0d810"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_2 : std_logic_vector(19 downto 0) := x"0d820"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_3 : std_logic_vector(19 downto 0) := x"0d830"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_3 : std_logic_vector(19 downto 0) := x"0d840"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_3 : std_logic_vector(19 downto 0) := x"0d850"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_3 : std_logic_vector(19 downto 0) := x"0d860"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_3 : std_logic_vector(19 downto 0) := x"0d870"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_3 : std_logic_vector(19 downto 0) := x"0d880"; - - --** ITK_STRIPS_R3L1_LINKS - constant REG_CR_ITK_R3L1_LINK_04_R3L1_0 : std_logic_vector(19 downto 0) := x"0d890"; - constant REG_CR_ITK_R3L1_LINK_04_R3L1_1 : std_logic_vector(19 downto 0) := x"0d8a0"; - constant REG_CR_ITK_R3L1_LINK_04_R3L1_2 : std_logic_vector(19 downto 0) := x"0d8b0"; - constant REG_CR_ITK_R3L1_LINK_04_R3L1_3 : std_logic_vector(19 downto 0) := x"0d8c0"; - - --** ITK_STRIPS_LCB_LINKS - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_0 : std_logic_vector(19 downto 0) := x"0d8d0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_0 : std_logic_vector(19 downto 0) := x"0d8e0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_0 : std_logic_vector(19 downto 0) := x"0d8f0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_0 : std_logic_vector(19 downto 0) := x"0d900"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_0 : std_logic_vector(19 downto 0) := x"0d910"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_0 : std_logic_vector(19 downto 0) := x"0d920"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_1 : std_logic_vector(19 downto 0) := x"0d930"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_1 : std_logic_vector(19 downto 0) := x"0d940"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_1 : std_logic_vector(19 downto 0) := x"0d950"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_1 : std_logic_vector(19 downto 0) := x"0d960"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_1 : std_logic_vector(19 downto 0) := x"0d970"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_1 : std_logic_vector(19 downto 0) := x"0d980"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_2 : std_logic_vector(19 downto 0) := x"0d990"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_2 : std_logic_vector(19 downto 0) := x"0d9a0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_2 : std_logic_vector(19 downto 0) := x"0d9b0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_2 : std_logic_vector(19 downto 0) := x"0d9c0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_2 : std_logic_vector(19 downto 0) := x"0d9d0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_2 : std_logic_vector(19 downto 0) := x"0d9e0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_3 : std_logic_vector(19 downto 0) := x"0d9f0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_3 : std_logic_vector(19 downto 0) := x"0da00"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_3 : std_logic_vector(19 downto 0) := x"0da10"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_3 : std_logic_vector(19 downto 0) := x"0da20"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_3 : std_logic_vector(19 downto 0) := x"0da30"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_3 : std_logic_vector(19 downto 0) := x"0da40"; - - --** ITK_STRIPS_R3L1_LINKS - constant REG_CR_ITK_R3L1_LINK_05_R3L1_0 : std_logic_vector(19 downto 0) := x"0da50"; - constant REG_CR_ITK_R3L1_LINK_05_R3L1_1 : std_logic_vector(19 downto 0) := x"0da60"; - constant REG_CR_ITK_R3L1_LINK_05_R3L1_2 : std_logic_vector(19 downto 0) := x"0da70"; - constant REG_CR_ITK_R3L1_LINK_05_R3L1_3 : std_logic_vector(19 downto 0) := x"0da80"; - - --** ITK_STRIPS_LCB_LINKS - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_0 : std_logic_vector(19 downto 0) := x"0da90"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_0 : std_logic_vector(19 downto 0) := x"0daa0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_0 : std_logic_vector(19 downto 0) := x"0dab0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_0 : std_logic_vector(19 downto 0) := x"0dac0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_0 : std_logic_vector(19 downto 0) := x"0dad0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_0 : std_logic_vector(19 downto 0) := x"0dae0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_1 : std_logic_vector(19 downto 0) := x"0daf0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_1 : std_logic_vector(19 downto 0) := x"0db00"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_1 : std_logic_vector(19 downto 0) := x"0db10"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_1 : std_logic_vector(19 downto 0) := x"0db20"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_1 : std_logic_vector(19 downto 0) := x"0db30"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_1 : std_logic_vector(19 downto 0) := x"0db40"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_2 : std_logic_vector(19 downto 0) := x"0db50"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_2 : std_logic_vector(19 downto 0) := x"0db60"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_2 : std_logic_vector(19 downto 0) := x"0db70"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_2 : std_logic_vector(19 downto 0) := x"0db80"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_2 : std_logic_vector(19 downto 0) := x"0db90"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_2 : std_logic_vector(19 downto 0) := x"0dba0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_3 : std_logic_vector(19 downto 0) := x"0dbb0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_3 : std_logic_vector(19 downto 0) := x"0dbc0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_3 : std_logic_vector(19 downto 0) := x"0dbd0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_3 : std_logic_vector(19 downto 0) := x"0dbe0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_3 : std_logic_vector(19 downto 0) := x"0dbf0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_3 : std_logic_vector(19 downto 0) := x"0dc00"; - - --** ITK_STRIPS_R3L1_LINKS - constant REG_CR_ITK_R3L1_LINK_06_R3L1_0 : std_logic_vector(19 downto 0) := x"0dc10"; - constant REG_CR_ITK_R3L1_LINK_06_R3L1_1 : std_logic_vector(19 downto 0) := x"0dc20"; - constant REG_CR_ITK_R3L1_LINK_06_R3L1_2 : std_logic_vector(19 downto 0) := x"0dc30"; - constant REG_CR_ITK_R3L1_LINK_06_R3L1_3 : std_logic_vector(19 downto 0) := x"0dc40"; - - --** ITK_STRIPS_LCB_LINKS - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_0 : std_logic_vector(19 downto 0) := x"0dc50"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_0 : std_logic_vector(19 downto 0) := x"0dc60"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_0 : std_logic_vector(19 downto 0) := x"0dc70"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_0 : std_logic_vector(19 downto 0) := x"0dc80"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_0 : std_logic_vector(19 downto 0) := x"0dc90"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_0 : std_logic_vector(19 downto 0) := x"0dca0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_1 : std_logic_vector(19 downto 0) := x"0dcb0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_1 : std_logic_vector(19 downto 0) := x"0dcc0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_1 : std_logic_vector(19 downto 0) := x"0dcd0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_1 : std_logic_vector(19 downto 0) := x"0dce0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_1 : std_logic_vector(19 downto 0) := x"0dcf0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_1 : std_logic_vector(19 downto 0) := x"0dd00"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_2 : std_logic_vector(19 downto 0) := x"0dd10"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_2 : std_logic_vector(19 downto 0) := x"0dd20"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_2 : std_logic_vector(19 downto 0) := x"0dd30"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_2 : std_logic_vector(19 downto 0) := x"0dd40"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_2 : std_logic_vector(19 downto 0) := x"0dd50"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_2 : std_logic_vector(19 downto 0) := x"0dd60"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_3 : std_logic_vector(19 downto 0) := x"0dd70"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_3 : std_logic_vector(19 downto 0) := x"0dd80"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_3 : std_logic_vector(19 downto 0) := x"0dd90"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_3 : std_logic_vector(19 downto 0) := x"0dda0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_3 : std_logic_vector(19 downto 0) := x"0ddb0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_3 : std_logic_vector(19 downto 0) := x"0ddc0"; - - --** ITK_STRIPS_R3L1_LINKS - constant REG_CR_ITK_R3L1_LINK_07_R3L1_0 : std_logic_vector(19 downto 0) := x"0ddd0"; - constant REG_CR_ITK_R3L1_LINK_07_R3L1_1 : std_logic_vector(19 downto 0) := x"0dde0"; - constant REG_CR_ITK_R3L1_LINK_07_R3L1_2 : std_logic_vector(19 downto 0) := x"0ddf0"; - constant REG_CR_ITK_R3L1_LINK_07_R3L1_3 : std_logic_vector(19 downto 0) := x"0de00"; - - --** ITK_STRIPS_LCB_LINKS - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_0 : std_logic_vector(19 downto 0) := x"0de10"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_0 : std_logic_vector(19 downto 0) := x"0de20"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_0 : std_logic_vector(19 downto 0) := x"0de30"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_0 : std_logic_vector(19 downto 0) := x"0de40"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_0 : std_logic_vector(19 downto 0) := x"0de50"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_0 : std_logic_vector(19 downto 0) := x"0de60"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_1 : std_logic_vector(19 downto 0) := x"0de70"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_1 : std_logic_vector(19 downto 0) := x"0de80"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_1 : std_logic_vector(19 downto 0) := x"0de90"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_1 : std_logic_vector(19 downto 0) := x"0dea0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_1 : std_logic_vector(19 downto 0) := x"0deb0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_1 : std_logic_vector(19 downto 0) := x"0dec0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_2 : std_logic_vector(19 downto 0) := x"0ded0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_2 : std_logic_vector(19 downto 0) := x"0dee0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_2 : std_logic_vector(19 downto 0) := x"0def0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_2 : std_logic_vector(19 downto 0) := x"0df00"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_2 : std_logic_vector(19 downto 0) := x"0df10"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_2 : std_logic_vector(19 downto 0) := x"0df20"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_3 : std_logic_vector(19 downto 0) := x"0df30"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_3 : std_logic_vector(19 downto 0) := x"0df40"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_3 : std_logic_vector(19 downto 0) := x"0df50"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_3 : std_logic_vector(19 downto 0) := x"0df60"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_3 : std_logic_vector(19 downto 0) := x"0df70"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_3 : std_logic_vector(19 downto 0) := x"0df80"; - - --** ITK_STRIPS_R3L1_LINKS - constant REG_CR_ITK_R3L1_LINK_08_R3L1_0 : std_logic_vector(19 downto 0) := x"0df90"; - constant REG_CR_ITK_R3L1_LINK_08_R3L1_1 : std_logic_vector(19 downto 0) := x"0dfa0"; - constant REG_CR_ITK_R3L1_LINK_08_R3L1_2 : std_logic_vector(19 downto 0) := x"0dfb0"; - constant REG_CR_ITK_R3L1_LINK_08_R3L1_3 : std_logic_vector(19 downto 0) := x"0dfc0"; - - --** ITK_STRIPS_LCB_LINKS - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_0 : std_logic_vector(19 downto 0) := x"0dfd0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_0 : std_logic_vector(19 downto 0) := x"0dfe0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_0 : std_logic_vector(19 downto 0) := x"0dff0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_0 : std_logic_vector(19 downto 0) := x"0e000"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_0 : std_logic_vector(19 downto 0) := x"0e010"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_0 : std_logic_vector(19 downto 0) := x"0e020"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_1 : std_logic_vector(19 downto 0) := x"0e030"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_1 : std_logic_vector(19 downto 0) := x"0e040"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_1 : std_logic_vector(19 downto 0) := x"0e050"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_1 : std_logic_vector(19 downto 0) := x"0e060"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_1 : std_logic_vector(19 downto 0) := x"0e070"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_1 : std_logic_vector(19 downto 0) := x"0e080"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_2 : std_logic_vector(19 downto 0) := x"0e090"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_2 : std_logic_vector(19 downto 0) := x"0e0a0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_2 : std_logic_vector(19 downto 0) := x"0e0b0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_2 : std_logic_vector(19 downto 0) := x"0e0c0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_2 : std_logic_vector(19 downto 0) := x"0e0d0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_2 : std_logic_vector(19 downto 0) := x"0e0e0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_3 : std_logic_vector(19 downto 0) := x"0e0f0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_3 : std_logic_vector(19 downto 0) := x"0e100"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_3 : std_logic_vector(19 downto 0) := x"0e110"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_3 : std_logic_vector(19 downto 0) := x"0e120"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_3 : std_logic_vector(19 downto 0) := x"0e130"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_3 : std_logic_vector(19 downto 0) := x"0e140"; - - --** ITK_STRIPS_R3L1_LINKS - constant REG_CR_ITK_R3L1_LINK_09_R3L1_0 : std_logic_vector(19 downto 0) := x"0e150"; - constant REG_CR_ITK_R3L1_LINK_09_R3L1_1 : std_logic_vector(19 downto 0) := x"0e160"; - constant REG_CR_ITK_R3L1_LINK_09_R3L1_2 : std_logic_vector(19 downto 0) := x"0e170"; - constant REG_CR_ITK_R3L1_LINK_09_R3L1_3 : std_logic_vector(19 downto 0) := x"0e180"; - - --** ITK_STRIPS_LCB_LINKS - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_0 : std_logic_vector(19 downto 0) := x"0e190"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_0 : std_logic_vector(19 downto 0) := x"0e1a0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_0 : std_logic_vector(19 downto 0) := x"0e1b0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_0 : std_logic_vector(19 downto 0) := x"0e1c0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_0 : std_logic_vector(19 downto 0) := x"0e1d0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_0 : std_logic_vector(19 downto 0) := x"0e1e0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_1 : std_logic_vector(19 downto 0) := x"0e1f0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_1 : std_logic_vector(19 downto 0) := x"0e200"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_1 : std_logic_vector(19 downto 0) := x"0e210"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_1 : std_logic_vector(19 downto 0) := x"0e220"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_1 : std_logic_vector(19 downto 0) := x"0e230"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_1 : std_logic_vector(19 downto 0) := x"0e240"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_2 : std_logic_vector(19 downto 0) := x"0e250"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_2 : std_logic_vector(19 downto 0) := x"0e260"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_2 : std_logic_vector(19 downto 0) := x"0e270"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_2 : std_logic_vector(19 downto 0) := x"0e280"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_2 : std_logic_vector(19 downto 0) := x"0e290"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_2 : std_logic_vector(19 downto 0) := x"0e2a0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_3 : std_logic_vector(19 downto 0) := x"0e2b0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_3 : std_logic_vector(19 downto 0) := x"0e2c0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_3 : std_logic_vector(19 downto 0) := x"0e2d0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_3 : std_logic_vector(19 downto 0) := x"0e2e0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_3 : std_logic_vector(19 downto 0) := x"0e2f0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_3 : std_logic_vector(19 downto 0) := x"0e300"; - - --** ITK_STRIPS_R3L1_LINKS - constant REG_CR_ITK_R3L1_LINK_10_R3L1_0 : std_logic_vector(19 downto 0) := x"0e310"; - constant REG_CR_ITK_R3L1_LINK_10_R3L1_1 : std_logic_vector(19 downto 0) := x"0e320"; - constant REG_CR_ITK_R3L1_LINK_10_R3L1_2 : std_logic_vector(19 downto 0) := x"0e330"; - constant REG_CR_ITK_R3L1_LINK_10_R3L1_3 : std_logic_vector(19 downto 0) := x"0e340"; - - --** ITK_STRIPS_LCB_LINKS - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_0 : std_logic_vector(19 downto 0) := x"0e350"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_0 : std_logic_vector(19 downto 0) := x"0e360"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_0 : std_logic_vector(19 downto 0) := x"0e370"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_0 : std_logic_vector(19 downto 0) := x"0e380"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_0 : std_logic_vector(19 downto 0) := x"0e390"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_0 : std_logic_vector(19 downto 0) := x"0e3a0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_1 : std_logic_vector(19 downto 0) := x"0e3b0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_1 : std_logic_vector(19 downto 0) := x"0e3c0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_1 : std_logic_vector(19 downto 0) := x"0e3d0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_1 : std_logic_vector(19 downto 0) := x"0e3e0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_1 : std_logic_vector(19 downto 0) := x"0e3f0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_1 : std_logic_vector(19 downto 0) := x"0e400"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_2 : std_logic_vector(19 downto 0) := x"0e410"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_2 : std_logic_vector(19 downto 0) := x"0e420"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_2 : std_logic_vector(19 downto 0) := x"0e430"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_2 : std_logic_vector(19 downto 0) := x"0e440"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_2 : std_logic_vector(19 downto 0) := x"0e450"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_2 : std_logic_vector(19 downto 0) := x"0e460"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_3 : std_logic_vector(19 downto 0) := x"0e470"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_3 : std_logic_vector(19 downto 0) := x"0e480"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_3 : std_logic_vector(19 downto 0) := x"0e490"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_3 : std_logic_vector(19 downto 0) := x"0e4a0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_3 : std_logic_vector(19 downto 0) := x"0e4b0"; - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_3 : std_logic_vector(19 downto 0) := x"0e4c0"; - - --** ITK_STRIPS_R3L1_LINKS - constant REG_CR_ITK_R3L1_LINK_11_R3L1_0 : std_logic_vector(19 downto 0) := x"0e4d0"; - constant REG_CR_ITK_R3L1_LINK_11_R3L1_1 : std_logic_vector(19 downto 0) := x"0e4e0"; - constant REG_CR_ITK_R3L1_LINK_11_R3L1_2 : std_logic_vector(19 downto 0) := x"0e4f0"; - constant REG_CR_ITK_R3L1_LINK_11_R3L1_3 : std_logic_vector(19 downto 0) := x"0e500"; + constant REG_CR_ITK_R3L1_LINK_03_R3L1_0 : std_logic_vector(19 downto 0) := x"0d7e0"; + constant REG_CR_ITK_R3L1_LINK_03_R3L1_1 : std_logic_vector(19 downto 0) := x"0d7f0"; + constant REG_CR_ITK_R3L1_LINK_03_R3L1_2 : std_logic_vector(19 downto 0) := x"0d800"; + constant REG_CR_ITK_R3L1_LINK_03_R3L1_3 : std_logic_vector(19 downto 0) := x"0d810"; + constant REG_STRIPS_R3_TRIGGER : std_logic_vector(19 downto 0) := x"0d820"; + constant REG_STRIPS_L1_TRIGGER : std_logic_vector(19 downto 0) := x"0d830"; + constant REG_STRIPS_R3L1_TRIGGER : std_logic_vector(19 downto 0) := x"0d840"; --** MRODregisters constant REG_MROD_CTRL : std_logic_vector(19 downto 0) := x"0f000"; @@ -1870,6 +1634,7 @@ package pcie_package is end record; type bitfield_ttc_dec_ctrl_w_type is record + L1A_DELAY : std_logic_vector(30 downto 27); -- Number of BC to delay the L1A distribution to the frontends BCID_ONBCR : std_logic_vector(26 downto 15); -- BCID is set to this value when BCR arrives ECR_BCR_SWAP : std_logic_vector(13 downto 13); -- ECR and BCR signals are swapped at the output of the TTC decoder (needed only for LAr TTC) BUSY_OUTPUT_INHIBIT : std_logic_vector(12 downto 12); -- forces the Busy LEMO output to BUSY-OFF @@ -2131,12 +1896,13 @@ package pcie_package is READ_ENABLE : std_logic_vector(64 downto 64); -- Any write to this register triggers a read from the Wishbone to Wupper fifo end record; - type bitfield_global_strips_config_t_type is record - TRICKLE_TRIG_PULSE : std_logic_vector(64 downto 64); -- writing to this register issues a single trickle trigger for every LCB link connected to this FELIX device - TTC_GENERATE_GATING_ENABLE : std_logic_vector(0 downto 0); -- Global control for gating signal generation. Enables generating trickle gating signal in response to TTC BCR. TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. (See also BC_START, and BC_STOP fields) + type bitfield_global_strips_config_w_type is record + TEST_MODULE_MASK : std_logic_vector(15 downto 11); -- (for tests only) contains R3 mask for the simulated trigger data + TEST_R3L1_TAG : std_logic_vector(10 downto 4); -- (for tests only) contains R3 or L1 tag for the simulated trigger data + TTC_GENERATE_GATING_ENABLE : std_logic_vector(1 downto 1); -- Global control for gating signal generation. Enables generating trickle gating signal in response to TTC BCR. TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. (See also BC_START, and BC_STOP fields) end record; - type bitfield_lcb_ctrl_t_type is record + type bitfield_lcb_ctrl_w_type is record L0A_BCR_DELAY : std_logic_vector(49 downto 38); -- TTC BCR signal will be delayed by this many BCs L0A_FRAME_DELAY : std_logic_vector(37 downto 34); -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. @@ -2155,19 +1921,19 @@ package pcie_package is -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) TTC_L0A_ENABLE : std_logic_vector(2 downto 2); -- enable generating L0A frames in response to TTC system signals - TRICKLE_TRIG_PULSE : std_logic_vector(1 downto 1); -- writing to this register issues a single trickle trigger TTC_GENERATE_GATING_ENABLE : std_logic_vector(0 downto 0); -- enables generating trickle gating signal in response to TTC BCR. -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. -- (See also BC_START, and BC_STOP fields) end record; --Array of registers - type bitfield_lcb_ctrl_t_array_type is array (0 to 3) of bitfield_lcb_ctrl_t_type; + type bitfield_lcb_ctrl_w_array_type is array (0 to 3) of bitfield_lcb_ctrl_w_type; --Two dimensional array of registers - type bitfield_lcb_ctrl_t_2d_array_type is array (0 to 11) of bitfield_lcb_ctrl_t_array_type; + type bitfield_lcb_ctrl_w_2d_array_type is array (0 to 3) of bitfield_lcb_ctrl_w_array_type; + --Array of registers (std_logic_vector) + type bitfield_trickle_trigger_t_array_type is array (0 to 3) of std_logic_vector(64 downto 64); -- writing to this register issues a single trickle trigger type bitfield_lcb_trickle_config_t_type is record - MOVE_WRITE_PTR : std_logic_vector(64 downto 64); -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + MOVE_WRITE_PTR : std_logic_vector(64 downto 64); -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address WRITE_PTR : std_logic_vector(47 downto 32); -- Trickle configuration memory write pointer VALID_DATA_START : std_logic_vector(31 downto 16); -- Start address of trickle configuration in trickle memory @@ -2176,7 +1942,7 @@ package pcie_package is --Array of registers type bitfield_lcb_trickle_config_t_array_type is array (0 to 3) of bitfield_lcb_trickle_config_t_type; --Two dimensional array of registers - type bitfield_lcb_trickle_config_t_2d_array_type is array (0 to 11) of bitfield_lcb_trickle_config_t_array_type; + type bitfield_lcb_trickle_config_t_2d_array_type is array (0 to 3) of bitfield_lcb_trickle_config_t_array_type; type bitfield_hcc_abc_mask_e_c_w_type is record HCC_MASK : std_logic_vector(63 downto 48); -- HCC* module mask @@ -2193,7 +1959,7 @@ package pcie_package is --Array of registers type bitfield_hcc_abc_mask_e_c_w_array_type is array (0 to 3) of bitfield_hcc_abc_mask_e_c_w_type; --Two dimensional array of registers - type bitfield_hcc_abc_mask_e_c_w_2d_array_type is array (0 to 11) of bitfield_hcc_abc_mask_e_c_w_array_type; + type bitfield_hcc_abc_mask_e_c_w_2d_array_type is array (0 to 3) of bitfield_hcc_abc_mask_e_c_w_array_type; type bitfield_lcb_abc_mask_b_8_w_type is record ABC_MASK_HCC_B : std_logic_vector(63 downto 48); -- Masks register commands with destination hcc_id = 0xB -- mask(i) <=> (abc_id = i) @@ -2211,7 +1977,7 @@ package pcie_package is --Array of registers type bitfield_lcb_abc_mask_b_8_w_array_type is array (0 to 3) of bitfield_lcb_abc_mask_b_8_w_type; --Two dimensional array of registers - type bitfield_lcb_abc_mask_b_8_w_2d_array_type is array (0 to 11) of bitfield_lcb_abc_mask_b_8_w_array_type; + type bitfield_lcb_abc_mask_b_8_w_2d_array_type is array (0 to 3) of bitfield_lcb_abc_mask_b_8_w_array_type; type bitfield_lcb_abc_mask_7_4_w_type is record ABC_MASK_HCC_7 : std_logic_vector(63 downto 48); -- Masks register commands with destination hcc_id = 0x7 -- mask(i) <=> (abc_id = i) @@ -2229,7 +1995,7 @@ package pcie_package is --Array of registers type bitfield_lcb_abc_mask_7_4_w_array_type is array (0 to 3) of bitfield_lcb_abc_mask_7_4_w_type; --Two dimensional array of registers - type bitfield_lcb_abc_mask_7_4_w_2d_array_type is array (0 to 11) of bitfield_lcb_abc_mask_7_4_w_array_type; + type bitfield_lcb_abc_mask_7_4_w_2d_array_type is array (0 to 3) of bitfield_lcb_abc_mask_7_4_w_array_type; type bitfield_lcb_abc_mask_3_0_w_type is record ABC_MASK_HCC_3 : std_logic_vector(63 downto 48); -- Masks register commands with destination hcc_id = 0x3 -- mask(i) <=> (abc_id = i) @@ -2247,7 +2013,7 @@ package pcie_package is --Array of registers type bitfield_lcb_abc_mask_3_0_w_array_type is array (0 to 3) of bitfield_lcb_abc_mask_3_0_w_type; --Two dimensional array of registers - type bitfield_lcb_abc_mask_3_0_w_2d_array_type is array (0 to 11) of bitfield_lcb_abc_mask_3_0_w_array_type; + type bitfield_lcb_abc_mask_3_0_w_2d_array_type is array (0 to 3) of bitfield_lcb_abc_mask_3_0_w_array_type; type bitfield_r3l1_ctrl_w_type is record FRAME_PHASE : std_logic_vector(3 downto 2); -- phase of R3L1 frame with respect to TTC BCR signal L1_ENABLE : std_logic_vector(1 downto 1); -- enables sending TTC L1 signals to the front-end @@ -2256,7 +2022,13 @@ package pcie_package is --Array of registers type bitfield_r3l1_ctrl_w_array_type is array (0 to 3) of bitfield_r3l1_ctrl_w_type; --Two dimensional array of registers - type bitfield_r3l1_ctrl_w_2d_array_type is array (0 to 11) of bitfield_r3l1_ctrl_w_array_type; + type bitfield_r3l1_ctrl_w_2d_array_type is array (0 to 3) of bitfield_r3l1_ctrl_w_array_type; + --Array of registers (std_logic_vector) + type bitfield_trickle_trigger_t_array_type is array (0 to 3) of std_logic_vector(64 downto 64); -- writing to this register issues a single trickle trigger + --Array of registers (std_logic_vector) + type bitfield_trickle_trigger_t_array_type is array (0 to 3) of std_logic_vector(64 downto 64); -- writing to this register issues a single trickle trigger + --Array of registers (std_logic_vector) + type bitfield_trickle_trigger_t_array_type is array (0 to 3) of std_logic_vector(64 downto 64); -- writing to this register issues a single trickle trigger type bitfield_mrod_ctrl_w_type is record OPTIONS : std_logic_vector(15 downto 4); -- Extra options for MROD GOLTESTMODE : std_logic_vector(3 downto 0); -- GOL Test Mode (emulate CSM): @@ -2389,8 +2161,10 @@ package pcie_package is WISHBONE_CONTROL : bitfield_wishbone_control_w_type; -- Wishbone WISHBONE_WRITE : bitfield_wishbone_write_t_type; -- Wishbone WISHBONE_READ : bitfield_wishbone_read_t_type; -- Wishbone - GLOBAL_STRIPS_CONFIG : bitfield_global_strips_config_t_type; -- Synchronous trigger for all LCB links on device - LCB_CTRL : bitfield_lcb_ctrl_t_2d_array_type; -- Determines LCB link configuration + GLOBAL_STRIPS_CONFIG : bitfield_global_strips_config_w_type; -- Synchronous trigger for all LCB links on device + GLOBAL_TRICKLE_TRIGGER : std_logic_vector(64 downto 64); -- writing to this register issues a single trickle trigger for every LCB link connected to this FELIX device + LCB_CTRL : bitfield_lcb_ctrl_w_2d_array_type; -- Determines LCB link configuration + TRICKLE_TRIGGER : bitfield_trickle_trigger_t_2d_array_type; LCB_TRICKLE_CONFIG : bitfield_lcb_trickle_config_t_2d_array_type; -- Trickle trigger configuration HCC_ABC_MASK_E_C : bitfield_hcc_abc_mask_e_c_w_2d_array_type; -- Disables register commands addressed to masked HCC*/ABC* chips. Register commands for which -- corresponding mask bit is set to '1' will be ignored by the command encoder. @@ -2413,6 +2187,9 @@ package pcie_package is -- modules without overwriting the entire trickle configuratrion memory. R3L1_CTRL : bitfield_r3l1_ctrl_w_2d_array_type; -- Determines R3L1 link configuration + STRIPS_R3_TRIGGER : std_logic_vector(64 downto 64); -- (for tests only) simulate R3 trigger (issues 4-5 sequential triggers) + STRIPS_L1_TRIGGER : std_logic_vector(64 downto 64); -- (for tests only) simulate L1 trigger (issues 4-5 sequential triggers) + STRIPS_R3L1_TRIGGER : std_logic_vector(64 downto 64); -- (for tests only) simulate simultaneous R3 and L1 trigger (issues 4-5 sequential triggers) MROD_CTRL : bitfield_mrod_ctrl_w_type; -- Specific registers for MROD MROD_EP0_CSMENABLE : std_logic_vector(23 downto 0); -- EP0 CSM Data Enable channel 23-0 MROD_EP0_EMPTYSUPPR : std_logic_vector(23 downto 0); -- EP0 Set Empty Suppression channel 23-0 @@ -5281,6 +5058,7 @@ package pcie_package is -- 0 : TTC_DEC, select CentralRouter data (including TTC) for a specific GBT link -- + constant REG_TTC_DEC_CTRL_L1A_DELAY_C : std_logic_vector(30 downto 27) := x"0"; -- Number of BC to delay the L1A distribution to the frontends constant REG_TTC_DEC_CTRL_BCID_ONBCR_C : std_logic_vector(26 downto 15) := x"000"; -- BCID is set to this value when BCR arrives constant REG_TTC_DEC_CTRL_ECR_BCR_SWAP_C : std_logic_vector(13 downto 13) := "0"; -- ECR and BCR signals are swapped at the output of the TTC decoder (needed only for LAr TTC) constant REG_TTC_DEC_CTRL_BUSY_OUTPUT_INHIBIT_C : std_logic_vector(12 downto 12) := "0"; -- forces the Busy LEMO output to BUSY-OFF @@ -6043,8 +5821,10 @@ package pcie_package is constant REG_WISHBONE_WRITE_WRITE_ENABLE_C : std_logic_vector(64 downto 64) := "0"; -- Any write to this register triggers a write to the Wupper to Wishbone fifo constant REG_WISHBONE_WRITE_DATA_C : std_logic_vector(31 downto 0) := x"00000000"; -- Wishbone constant REG_WISHBONE_READ_READ_ENABLE_C : std_logic_vector(64 downto 64) := "0"; -- Any write to this register triggers a read from the Wishbone to Wupper fifo - constant REG_GLOBAL_STRIPS_CONFIG_TRICKLE_TRIG_PULSE_C: std_logic_vector(64 downto 64) := "0"; -- writing to this register issues a single trickle trigger for every LCB link connected to this FELIX device - constant REG_GLOBAL_STRIPS_CONFIG_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- Global control for gating signal generation. Enables generating trickle gating signal in response to TTC BCR. TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. (See also BC_START, and BC_STOP fields) + constant REG_GLOBAL_STRIPS_CONFIG_TEST_MODULE_MASK_C: std_logic_vector(15 downto 11) := "00000"; -- (for tests only) contains R3 mask for the simulated trigger data + constant REG_GLOBAL_STRIPS_CONFIG_TEST_R3L1_TAG_C: std_logic_vector(10 downto 4) := "0000000"; -- (for tests only) contains R3 or L1 tag for the simulated trigger data + constant REG_GLOBAL_STRIPS_CONFIG_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(1 downto 1) := "0"; -- Global control for gating signal generation. Enables generating trickle gating signal in response to TTC BCR. TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. (See also BC_START, and BC_STOP fields) + constant REG_GLOBAL_TRICKLE_TRIGGER_C : std_logic_vector(64 downto 64) := "0"; -- writing to this register issues a single trickle trigger for every LCB link connected to this FELIX device constant REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_0_L0A_BCR_DELAY_C: std_logic_vector(49 downto 38) := x"000"; -- TTC BCR signal will be delayed by this many BCs constant REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_0_L0A_FRAME_DELAY_C: std_logic_vector(37 downto 34) := x"0"; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. @@ -6063,13 +5843,12 @@ package pcie_package is -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) constant REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_0_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_0_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger constant REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_0_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. -- (See also BC_START, and BC_STOP fields) - constant REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_0_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + constant REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_TRIGGER_0_C: std_logic_vector(64 downto 64) := "0"; -- writing to this register issues a single trickle trigger + constant REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_0_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address constant REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_0_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer constant REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_0_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory @@ -6139,13 +5918,12 @@ package pcie_package is -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) constant REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_1_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_1_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger constant REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_1_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. -- (See also BC_START, and BC_STOP fields) - constant REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_1_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + constant REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_TRIGGER_1_C: std_logic_vector(64 downto 64) := "0"; -- writing to this register issues a single trickle trigger + constant REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_1_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address constant REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_1_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer constant REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_1_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory @@ -6215,13 +5993,12 @@ package pcie_package is -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) constant REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_2_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_2_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger constant REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_2_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. -- (See also BC_START, and BC_STOP fields) - constant REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_2_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + constant REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_TRIGGER_2_C: std_logic_vector(64 downto 64) := "0"; -- writing to this register issues a single trickle trigger + constant REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_2_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address constant REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_2_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer constant REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_2_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory @@ -6291,13 +6068,12 @@ package pcie_package is -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) constant REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_3_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_3_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger constant REG_CR_ITK_STRIPS_LCB_LINKS_00_LCB_3_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. -- (See also BC_START, and BC_STOP fields) - constant REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_3_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + constant REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_TRIGGER_3_C: std_logic_vector(64 downto 64) := "0"; -- writing to this register issues a single trickle trigger + constant REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_3_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address constant REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_3_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer constant REG_CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_3_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory @@ -6379,13 +6155,12 @@ package pcie_package is -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) constant REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_0_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_0_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger constant REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_0_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. -- (See also BC_START, and BC_STOP fields) - constant REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_0_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + constant REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_TRIGGER_0_C: std_logic_vector(64 downto 64) := "0"; -- writing to this register issues a single trickle trigger + constant REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_0_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address constant REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_0_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer constant REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_0_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory @@ -6455,13 +6230,12 @@ package pcie_package is -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) constant REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_1_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_1_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger constant REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_1_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. -- (See also BC_START, and BC_STOP fields) - constant REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_1_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + constant REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_TRIGGER_1_C: std_logic_vector(64 downto 64) := "0"; -- writing to this register issues a single trickle trigger + constant REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_1_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address constant REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_1_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer constant REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_1_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory @@ -6531,13 +6305,12 @@ package pcie_package is -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) constant REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_2_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_2_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger constant REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_2_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. -- (See also BC_START, and BC_STOP fields) - constant REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_2_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + constant REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_TRIGGER_2_C: std_logic_vector(64 downto 64) := "0"; -- writing to this register issues a single trickle trigger + constant REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_2_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address constant REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_2_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer constant REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_2_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory @@ -6607,13 +6380,12 @@ package pcie_package is -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) constant REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_3_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_3_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger constant REG_CR_ITK_STRIPS_LCB_LINKS_01_LCB_3_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. -- (See also BC_START, and BC_STOP fields) - constant REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_3_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + constant REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_TRIGGER_3_C: std_logic_vector(64 downto 64) := "0"; -- writing to this register issues a single trickle trigger + constant REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_3_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address constant REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_3_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer constant REG_CR_ITK_STRIPS_LCB_LINKS_01_TRICKLE_MEMORY_CONFIG_3_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory @@ -6695,13 +6467,12 @@ package pcie_package is -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) constant REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_0_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_0_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger constant REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_0_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. -- (See also BC_START, and BC_STOP fields) - constant REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_0_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + constant REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_TRIGGER_0_C: std_logic_vector(64 downto 64) := "0"; -- writing to this register issues a single trickle trigger + constant REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_0_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address constant REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_0_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer constant REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_0_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory @@ -6771,13 +6542,12 @@ package pcie_package is -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) constant REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_1_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_1_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger constant REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_1_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. -- (See also BC_START, and BC_STOP fields) - constant REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_1_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + constant REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_TRIGGER_1_C: std_logic_vector(64 downto 64) := "0"; -- writing to this register issues a single trickle trigger + constant REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_1_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address constant REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_1_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer constant REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_1_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory @@ -6847,13 +6617,12 @@ package pcie_package is -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) constant REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_2_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_2_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger constant REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_2_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. -- (See also BC_START, and BC_STOP fields) - constant REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_2_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + constant REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_TRIGGER_2_C: std_logic_vector(64 downto 64) := "0"; -- writing to this register issues a single trickle trigger + constant REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_2_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address constant REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_2_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer constant REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_2_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory @@ -6923,13 +6692,12 @@ package pcie_package is -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) constant REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_3_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_3_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger constant REG_CR_ITK_STRIPS_LCB_LINKS_02_LCB_3_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. -- (See also BC_START, and BC_STOP fields) - constant REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_3_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + constant REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_TRIGGER_3_C: std_logic_vector(64 downto 64) := "0"; -- writing to this register issues a single trickle trigger + constant REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_3_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address constant REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_3_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer constant REG_CR_ITK_STRIPS_LCB_LINKS_02_TRICKLE_MEMORY_CONFIG_3_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory @@ -7011,13 +6779,12 @@ package pcie_package is -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) constant REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_0_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_0_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger constant REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_0_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. -- (See also BC_START, and BC_STOP fields) - constant REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_0_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + constant REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_TRIGGER_0_C: std_logic_vector(64 downto 64) := "0"; -- writing to this register issues a single trickle trigger + constant REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_0_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address constant REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_0_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer constant REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_0_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory @@ -7087,13 +6854,12 @@ package pcie_package is -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) constant REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_1_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_1_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger constant REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_1_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. -- (See also BC_START, and BC_STOP fields) - constant REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_1_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + constant REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_TRIGGER_1_C: std_logic_vector(64 downto 64) := "0"; -- writing to this register issues a single trickle trigger + constant REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_1_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address constant REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_1_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer constant REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_1_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory @@ -7163,13 +6929,12 @@ package pcie_package is -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) constant REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_2_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_2_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger constant REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_2_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. -- (See also BC_START, and BC_STOP fields) - constant REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_2_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + constant REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_TRIGGER_2_C: std_logic_vector(64 downto 64) := "0"; -- writing to this register issues a single trickle trigger + constant REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_2_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address constant REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_2_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer constant REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_2_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory @@ -7239,13 +7004,12 @@ package pcie_package is -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) constant REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_3_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_3_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger constant REG_CR_ITK_STRIPS_LCB_LINKS_03_LCB_3_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. -- (See also BC_START, and BC_STOP fields) - constant REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_3_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. + constant REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_TRIGGER_3_C: std_logic_vector(64 downto 64) := "0"; -- writing to this register issues a single trickle trigger + constant REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_3_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address constant REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_3_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer constant REG_CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_3_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory @@ -7309,2534 +7073,9 @@ package pcie_package is constant REG_CR_ITK_R3L1_LINK_03_R3L1_3_FRAME_PHASE_C: std_logic_vector(3 downto 2) := "00"; -- phase of R3L1 frame with respect to TTC BCR signal constant REG_CR_ITK_R3L1_LINK_03_R3L1_3_L1_ENABLE_C: std_logic_vector(1 downto 1) := "0"; -- enables sending TTC L1 signals to the front-end constant REG_CR_ITK_R3L1_LINK_03_R3L1_3_R3_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables sending RoI R3 signals to the front-end - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_0_L0A_BCR_DELAY_C: std_logic_vector(49 downto 38) := x"000"; -- TTC BCR signal will be delayed by this many BCs - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_0_L0A_FRAME_DELAY_C: std_logic_vector(37 downto 34) := x"0"; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_0_FRAME_PHASE_C: std_logic_vector(33 downto 32) := "00"; -- phase of LCB frame with respect to TTC BCR signal - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_0_TRICKLE_BC_START_C: std_logic_vector(31 downto 20) := x"000"; -- Determines the start of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_0_TRICKLE_BC_STOP_C: std_logic_vector(19 downto 8) := x"000"; -- Determines the end of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_0_LCB_DESTINATION_MUX_C: std_logic_vector(5 downto 4) := "00"; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_0_TRICKLE_TRIG_RUN_C: std_logic_vector(3 downto 3) := "0"; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_0_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_0_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_0_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_0_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_0_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_0_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_0_VALID_DATA_END_C: std_logic_vector(15 downto 0) := x"0000"; -- Stop address of trickle configuration in trickle memory (last valid byte) - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_0_HCC_MASK_C: std_logic_vector(63 downto 48) := x"0000"; -- HCC* module mask - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_0_ABC_MASK_HCC_E_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_0_ABC_MASK_HCC_D_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_0_ABC_MASK_HCC_C_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_B_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_A_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_9_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_8_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_7_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_6_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_5_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_4_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_3_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_2_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_1_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_0_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_1_L0A_BCR_DELAY_C: std_logic_vector(49 downto 38) := x"000"; -- TTC BCR signal will be delayed by this many BCs - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_1_L0A_FRAME_DELAY_C: std_logic_vector(37 downto 34) := x"0"; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_1_FRAME_PHASE_C: std_logic_vector(33 downto 32) := "00"; -- phase of LCB frame with respect to TTC BCR signal - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_1_TRICKLE_BC_START_C: std_logic_vector(31 downto 20) := x"000"; -- Determines the start of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_1_TRICKLE_BC_STOP_C: std_logic_vector(19 downto 8) := x"000"; -- Determines the end of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_1_LCB_DESTINATION_MUX_C: std_logic_vector(5 downto 4) := "00"; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_1_TRICKLE_TRIG_RUN_C: std_logic_vector(3 downto 3) := "0"; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_1_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_1_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_1_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_1_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_1_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_1_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_1_VALID_DATA_END_C: std_logic_vector(15 downto 0) := x"0000"; -- Stop address of trickle configuration in trickle memory (last valid byte) - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_1_HCC_MASK_C: std_logic_vector(63 downto 48) := x"0000"; -- HCC* module mask - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_1_ABC_MASK_HCC_E_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_1_ABC_MASK_HCC_D_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_1_ABC_MASK_HCC_C_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_B_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_A_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_9_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_8_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_7_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_6_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_5_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_4_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_3_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_2_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_1_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_0_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_2_L0A_BCR_DELAY_C: std_logic_vector(49 downto 38) := x"000"; -- TTC BCR signal will be delayed by this many BCs - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_2_L0A_FRAME_DELAY_C: std_logic_vector(37 downto 34) := x"0"; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_2_FRAME_PHASE_C: std_logic_vector(33 downto 32) := "00"; -- phase of LCB frame with respect to TTC BCR signal - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_2_TRICKLE_BC_START_C: std_logic_vector(31 downto 20) := x"000"; -- Determines the start of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_2_TRICKLE_BC_STOP_C: std_logic_vector(19 downto 8) := x"000"; -- Determines the end of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_2_LCB_DESTINATION_MUX_C: std_logic_vector(5 downto 4) := "00"; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_2_TRICKLE_TRIG_RUN_C: std_logic_vector(3 downto 3) := "0"; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_2_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_2_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_2_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_2_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_2_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_2_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_2_VALID_DATA_END_C: std_logic_vector(15 downto 0) := x"0000"; -- Stop address of trickle configuration in trickle memory (last valid byte) - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_2_HCC_MASK_C: std_logic_vector(63 downto 48) := x"0000"; -- HCC* module mask - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_2_ABC_MASK_HCC_E_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_2_ABC_MASK_HCC_D_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_2_ABC_MASK_HCC_C_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_B_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_A_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_9_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_8_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_7_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_6_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_5_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_4_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_3_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_2_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_1_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_0_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_3_L0A_BCR_DELAY_C: std_logic_vector(49 downto 38) := x"000"; -- TTC BCR signal will be delayed by this many BCs - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_3_L0A_FRAME_DELAY_C: std_logic_vector(37 downto 34) := x"0"; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_3_FRAME_PHASE_C: std_logic_vector(33 downto 32) := "00"; -- phase of LCB frame with respect to TTC BCR signal - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_3_TRICKLE_BC_START_C: std_logic_vector(31 downto 20) := x"000"; -- Determines the start of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_3_TRICKLE_BC_STOP_C: std_logic_vector(19 downto 8) := x"000"; -- Determines the end of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_3_LCB_DESTINATION_MUX_C: std_logic_vector(5 downto 4) := "00"; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_3_TRICKLE_TRIG_RUN_C: std_logic_vector(3 downto 3) := "0"; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_3_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_3_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_LCB_3_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_3_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_3_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_3_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_TRICKLE_MEMORY_CONFIG_3_VALID_DATA_END_C: std_logic_vector(15 downto 0) := x"0000"; -- Stop address of trickle configuration in trickle memory (last valid byte) - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_3_HCC_MASK_C: std_logic_vector(63 downto 48) := x"0000"; -- HCC* module mask - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_3_ABC_MASK_HCC_E_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_3_ABC_MASK_HCC_D_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_MODULE_MASK_F_C_3_ABC_MASK_HCC_C_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_B_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_A_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_9_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_8_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_7_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_6_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_5_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_4_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_3_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_2_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_1_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_04_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_0_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_R3L1_LINK_04_R3L1_0_FRAME_PHASE_C: std_logic_vector(3 downto 2) := "00"; -- phase of R3L1 frame with respect to TTC BCR signal - constant REG_CR_ITK_R3L1_LINK_04_R3L1_0_L1_ENABLE_C: std_logic_vector(1 downto 1) := "0"; -- enables sending TTC L1 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_04_R3L1_0_R3_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables sending RoI R3 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_04_R3L1_1_FRAME_PHASE_C: std_logic_vector(3 downto 2) := "00"; -- phase of R3L1 frame with respect to TTC BCR signal - constant REG_CR_ITK_R3L1_LINK_04_R3L1_1_L1_ENABLE_C: std_logic_vector(1 downto 1) := "0"; -- enables sending TTC L1 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_04_R3L1_1_R3_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables sending RoI R3 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_04_R3L1_2_FRAME_PHASE_C: std_logic_vector(3 downto 2) := "00"; -- phase of R3L1 frame with respect to TTC BCR signal - constant REG_CR_ITK_R3L1_LINK_04_R3L1_2_L1_ENABLE_C: std_logic_vector(1 downto 1) := "0"; -- enables sending TTC L1 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_04_R3L1_2_R3_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables sending RoI R3 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_04_R3L1_3_FRAME_PHASE_C: std_logic_vector(3 downto 2) := "00"; -- phase of R3L1 frame with respect to TTC BCR signal - constant REG_CR_ITK_R3L1_LINK_04_R3L1_3_L1_ENABLE_C: std_logic_vector(1 downto 1) := "0"; -- enables sending TTC L1 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_04_R3L1_3_R3_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables sending RoI R3 signals to the front-end - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_0_L0A_BCR_DELAY_C: std_logic_vector(49 downto 38) := x"000"; -- TTC BCR signal will be delayed by this many BCs - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_0_L0A_FRAME_DELAY_C: std_logic_vector(37 downto 34) := x"0"; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_0_FRAME_PHASE_C: std_logic_vector(33 downto 32) := "00"; -- phase of LCB frame with respect to TTC BCR signal - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_0_TRICKLE_BC_START_C: std_logic_vector(31 downto 20) := x"000"; -- Determines the start of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_0_TRICKLE_BC_STOP_C: std_logic_vector(19 downto 8) := x"000"; -- Determines the end of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_0_LCB_DESTINATION_MUX_C: std_logic_vector(5 downto 4) := "00"; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_0_TRICKLE_TRIG_RUN_C: std_logic_vector(3 downto 3) := "0"; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_0_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_0_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_0_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_0_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_0_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_0_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_0_VALID_DATA_END_C: std_logic_vector(15 downto 0) := x"0000"; -- Stop address of trickle configuration in trickle memory (last valid byte) - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_0_HCC_MASK_C: std_logic_vector(63 downto 48) := x"0000"; -- HCC* module mask - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_0_ABC_MASK_HCC_E_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_0_ABC_MASK_HCC_D_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_0_ABC_MASK_HCC_C_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_B_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_A_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_9_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_8_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_7_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_6_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_5_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_4_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_3_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_2_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_1_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_0_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_1_L0A_BCR_DELAY_C: std_logic_vector(49 downto 38) := x"000"; -- TTC BCR signal will be delayed by this many BCs - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_1_L0A_FRAME_DELAY_C: std_logic_vector(37 downto 34) := x"0"; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_1_FRAME_PHASE_C: std_logic_vector(33 downto 32) := "00"; -- phase of LCB frame with respect to TTC BCR signal - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_1_TRICKLE_BC_START_C: std_logic_vector(31 downto 20) := x"000"; -- Determines the start of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_1_TRICKLE_BC_STOP_C: std_logic_vector(19 downto 8) := x"000"; -- Determines the end of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_1_LCB_DESTINATION_MUX_C: std_logic_vector(5 downto 4) := "00"; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_1_TRICKLE_TRIG_RUN_C: std_logic_vector(3 downto 3) := "0"; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_1_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_1_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_1_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_1_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_1_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_1_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_1_VALID_DATA_END_C: std_logic_vector(15 downto 0) := x"0000"; -- Stop address of trickle configuration in trickle memory (last valid byte) - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_1_HCC_MASK_C: std_logic_vector(63 downto 48) := x"0000"; -- HCC* module mask - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_1_ABC_MASK_HCC_E_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_1_ABC_MASK_HCC_D_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_1_ABC_MASK_HCC_C_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_B_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_A_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_9_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_8_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_7_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_6_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_5_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_4_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_3_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_2_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_1_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_0_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_2_L0A_BCR_DELAY_C: std_logic_vector(49 downto 38) := x"000"; -- TTC BCR signal will be delayed by this many BCs - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_2_L0A_FRAME_DELAY_C: std_logic_vector(37 downto 34) := x"0"; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_2_FRAME_PHASE_C: std_logic_vector(33 downto 32) := "00"; -- phase of LCB frame with respect to TTC BCR signal - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_2_TRICKLE_BC_START_C: std_logic_vector(31 downto 20) := x"000"; -- Determines the start of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_2_TRICKLE_BC_STOP_C: std_logic_vector(19 downto 8) := x"000"; -- Determines the end of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_2_LCB_DESTINATION_MUX_C: std_logic_vector(5 downto 4) := "00"; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_2_TRICKLE_TRIG_RUN_C: std_logic_vector(3 downto 3) := "0"; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_2_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_2_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_2_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_2_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_2_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_2_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_2_VALID_DATA_END_C: std_logic_vector(15 downto 0) := x"0000"; -- Stop address of trickle configuration in trickle memory (last valid byte) - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_2_HCC_MASK_C: std_logic_vector(63 downto 48) := x"0000"; -- HCC* module mask - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_2_ABC_MASK_HCC_E_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_2_ABC_MASK_HCC_D_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_2_ABC_MASK_HCC_C_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_B_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_A_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_9_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_8_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_7_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_6_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_5_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_4_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_3_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_2_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_1_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_0_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_3_L0A_BCR_DELAY_C: std_logic_vector(49 downto 38) := x"000"; -- TTC BCR signal will be delayed by this many BCs - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_3_L0A_FRAME_DELAY_C: std_logic_vector(37 downto 34) := x"0"; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_3_FRAME_PHASE_C: std_logic_vector(33 downto 32) := "00"; -- phase of LCB frame with respect to TTC BCR signal - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_3_TRICKLE_BC_START_C: std_logic_vector(31 downto 20) := x"000"; -- Determines the start of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_3_TRICKLE_BC_STOP_C: std_logic_vector(19 downto 8) := x"000"; -- Determines the end of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_3_LCB_DESTINATION_MUX_C: std_logic_vector(5 downto 4) := "00"; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_3_TRICKLE_TRIG_RUN_C: std_logic_vector(3 downto 3) := "0"; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_3_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_3_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_LCB_3_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_3_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_3_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_3_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_TRICKLE_MEMORY_CONFIG_3_VALID_DATA_END_C: std_logic_vector(15 downto 0) := x"0000"; -- Stop address of trickle configuration in trickle memory (last valid byte) - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_3_HCC_MASK_C: std_logic_vector(63 downto 48) := x"0000"; -- HCC* module mask - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_3_ABC_MASK_HCC_E_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_3_ABC_MASK_HCC_D_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_MODULE_MASK_F_C_3_ABC_MASK_HCC_C_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_B_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_A_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_9_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_8_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_7_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_6_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_5_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_4_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_3_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_2_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_1_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_05_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_0_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_R3L1_LINK_05_R3L1_0_FRAME_PHASE_C: std_logic_vector(3 downto 2) := "00"; -- phase of R3L1 frame with respect to TTC BCR signal - constant REG_CR_ITK_R3L1_LINK_05_R3L1_0_L1_ENABLE_C: std_logic_vector(1 downto 1) := "0"; -- enables sending TTC L1 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_05_R3L1_0_R3_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables sending RoI R3 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_05_R3L1_1_FRAME_PHASE_C: std_logic_vector(3 downto 2) := "00"; -- phase of R3L1 frame with respect to TTC BCR signal - constant REG_CR_ITK_R3L1_LINK_05_R3L1_1_L1_ENABLE_C: std_logic_vector(1 downto 1) := "0"; -- enables sending TTC L1 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_05_R3L1_1_R3_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables sending RoI R3 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_05_R3L1_2_FRAME_PHASE_C: std_logic_vector(3 downto 2) := "00"; -- phase of R3L1 frame with respect to TTC BCR signal - constant REG_CR_ITK_R3L1_LINK_05_R3L1_2_L1_ENABLE_C: std_logic_vector(1 downto 1) := "0"; -- enables sending TTC L1 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_05_R3L1_2_R3_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables sending RoI R3 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_05_R3L1_3_FRAME_PHASE_C: std_logic_vector(3 downto 2) := "00"; -- phase of R3L1 frame with respect to TTC BCR signal - constant REG_CR_ITK_R3L1_LINK_05_R3L1_3_L1_ENABLE_C: std_logic_vector(1 downto 1) := "0"; -- enables sending TTC L1 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_05_R3L1_3_R3_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables sending RoI R3 signals to the front-end - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_0_L0A_BCR_DELAY_C: std_logic_vector(49 downto 38) := x"000"; -- TTC BCR signal will be delayed by this many BCs - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_0_L0A_FRAME_DELAY_C: std_logic_vector(37 downto 34) := x"0"; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_0_FRAME_PHASE_C: std_logic_vector(33 downto 32) := "00"; -- phase of LCB frame with respect to TTC BCR signal - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_0_TRICKLE_BC_START_C: std_logic_vector(31 downto 20) := x"000"; -- Determines the start of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_0_TRICKLE_BC_STOP_C: std_logic_vector(19 downto 8) := x"000"; -- Determines the end of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_0_LCB_DESTINATION_MUX_C: std_logic_vector(5 downto 4) := "00"; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_0_TRICKLE_TRIG_RUN_C: std_logic_vector(3 downto 3) := "0"; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_0_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_0_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_0_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_0_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_0_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_0_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_0_VALID_DATA_END_C: std_logic_vector(15 downto 0) := x"0000"; -- Stop address of trickle configuration in trickle memory (last valid byte) - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_0_HCC_MASK_C: std_logic_vector(63 downto 48) := x"0000"; -- HCC* module mask - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_0_ABC_MASK_HCC_E_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_0_ABC_MASK_HCC_D_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_0_ABC_MASK_HCC_C_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_B_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_A_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_9_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_8_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_7_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_6_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_5_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_4_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_3_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_2_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_1_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_0_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_1_L0A_BCR_DELAY_C: std_logic_vector(49 downto 38) := x"000"; -- TTC BCR signal will be delayed by this many BCs - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_1_L0A_FRAME_DELAY_C: std_logic_vector(37 downto 34) := x"0"; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_1_FRAME_PHASE_C: std_logic_vector(33 downto 32) := "00"; -- phase of LCB frame with respect to TTC BCR signal - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_1_TRICKLE_BC_START_C: std_logic_vector(31 downto 20) := x"000"; -- Determines the start of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_1_TRICKLE_BC_STOP_C: std_logic_vector(19 downto 8) := x"000"; -- Determines the end of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_1_LCB_DESTINATION_MUX_C: std_logic_vector(5 downto 4) := "00"; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_1_TRICKLE_TRIG_RUN_C: std_logic_vector(3 downto 3) := "0"; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_1_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_1_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_1_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_1_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_1_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_1_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_1_VALID_DATA_END_C: std_logic_vector(15 downto 0) := x"0000"; -- Stop address of trickle configuration in trickle memory (last valid byte) - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_1_HCC_MASK_C: std_logic_vector(63 downto 48) := x"0000"; -- HCC* module mask - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_1_ABC_MASK_HCC_E_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_1_ABC_MASK_HCC_D_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_1_ABC_MASK_HCC_C_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_B_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_A_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_9_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_8_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_7_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_6_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_5_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_4_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_3_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_2_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_1_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_0_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_2_L0A_BCR_DELAY_C: std_logic_vector(49 downto 38) := x"000"; -- TTC BCR signal will be delayed by this many BCs - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_2_L0A_FRAME_DELAY_C: std_logic_vector(37 downto 34) := x"0"; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_2_FRAME_PHASE_C: std_logic_vector(33 downto 32) := "00"; -- phase of LCB frame with respect to TTC BCR signal - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_2_TRICKLE_BC_START_C: std_logic_vector(31 downto 20) := x"000"; -- Determines the start of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_2_TRICKLE_BC_STOP_C: std_logic_vector(19 downto 8) := x"000"; -- Determines the end of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_2_LCB_DESTINATION_MUX_C: std_logic_vector(5 downto 4) := "00"; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_2_TRICKLE_TRIG_RUN_C: std_logic_vector(3 downto 3) := "0"; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_2_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_2_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_2_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_2_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_2_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_2_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_2_VALID_DATA_END_C: std_logic_vector(15 downto 0) := x"0000"; -- Stop address of trickle configuration in trickle memory (last valid byte) - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_2_HCC_MASK_C: std_logic_vector(63 downto 48) := x"0000"; -- HCC* module mask - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_2_ABC_MASK_HCC_E_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_2_ABC_MASK_HCC_D_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_2_ABC_MASK_HCC_C_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_B_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_A_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_9_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_8_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_7_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_6_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_5_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_4_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_3_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_2_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_1_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_0_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_3_L0A_BCR_DELAY_C: std_logic_vector(49 downto 38) := x"000"; -- TTC BCR signal will be delayed by this many BCs - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_3_L0A_FRAME_DELAY_C: std_logic_vector(37 downto 34) := x"0"; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_3_FRAME_PHASE_C: std_logic_vector(33 downto 32) := "00"; -- phase of LCB frame with respect to TTC BCR signal - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_3_TRICKLE_BC_START_C: std_logic_vector(31 downto 20) := x"000"; -- Determines the start of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_3_TRICKLE_BC_STOP_C: std_logic_vector(19 downto 8) := x"000"; -- Determines the end of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_3_LCB_DESTINATION_MUX_C: std_logic_vector(5 downto 4) := "00"; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_3_TRICKLE_TRIG_RUN_C: std_logic_vector(3 downto 3) := "0"; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_3_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_3_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_LCB_3_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_3_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_3_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_3_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_TRICKLE_MEMORY_CONFIG_3_VALID_DATA_END_C: std_logic_vector(15 downto 0) := x"0000"; -- Stop address of trickle configuration in trickle memory (last valid byte) - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_3_HCC_MASK_C: std_logic_vector(63 downto 48) := x"0000"; -- HCC* module mask - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_3_ABC_MASK_HCC_E_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_3_ABC_MASK_HCC_D_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_MODULE_MASK_F_C_3_ABC_MASK_HCC_C_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_B_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_A_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_9_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_8_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_7_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_6_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_5_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_4_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_3_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_2_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_1_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_06_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_0_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_R3L1_LINK_06_R3L1_0_FRAME_PHASE_C: std_logic_vector(3 downto 2) := "00"; -- phase of R3L1 frame with respect to TTC BCR signal - constant REG_CR_ITK_R3L1_LINK_06_R3L1_0_L1_ENABLE_C: std_logic_vector(1 downto 1) := "0"; -- enables sending TTC L1 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_06_R3L1_0_R3_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables sending RoI R3 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_06_R3L1_1_FRAME_PHASE_C: std_logic_vector(3 downto 2) := "00"; -- phase of R3L1 frame with respect to TTC BCR signal - constant REG_CR_ITK_R3L1_LINK_06_R3L1_1_L1_ENABLE_C: std_logic_vector(1 downto 1) := "0"; -- enables sending TTC L1 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_06_R3L1_1_R3_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables sending RoI R3 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_06_R3L1_2_FRAME_PHASE_C: std_logic_vector(3 downto 2) := "00"; -- phase of R3L1 frame with respect to TTC BCR signal - constant REG_CR_ITK_R3L1_LINK_06_R3L1_2_L1_ENABLE_C: std_logic_vector(1 downto 1) := "0"; -- enables sending TTC L1 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_06_R3L1_2_R3_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables sending RoI R3 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_06_R3L1_3_FRAME_PHASE_C: std_logic_vector(3 downto 2) := "00"; -- phase of R3L1 frame with respect to TTC BCR signal - constant REG_CR_ITK_R3L1_LINK_06_R3L1_3_L1_ENABLE_C: std_logic_vector(1 downto 1) := "0"; -- enables sending TTC L1 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_06_R3L1_3_R3_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables sending RoI R3 signals to the front-end - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_0_L0A_BCR_DELAY_C: std_logic_vector(49 downto 38) := x"000"; -- TTC BCR signal will be delayed by this many BCs - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_0_L0A_FRAME_DELAY_C: std_logic_vector(37 downto 34) := x"0"; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_0_FRAME_PHASE_C: std_logic_vector(33 downto 32) := "00"; -- phase of LCB frame with respect to TTC BCR signal - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_0_TRICKLE_BC_START_C: std_logic_vector(31 downto 20) := x"000"; -- Determines the start of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_0_TRICKLE_BC_STOP_C: std_logic_vector(19 downto 8) := x"000"; -- Determines the end of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_0_LCB_DESTINATION_MUX_C: std_logic_vector(5 downto 4) := "00"; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_0_TRICKLE_TRIG_RUN_C: std_logic_vector(3 downto 3) := "0"; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_0_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_0_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_0_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_0_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_0_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_0_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_0_VALID_DATA_END_C: std_logic_vector(15 downto 0) := x"0000"; -- Stop address of trickle configuration in trickle memory (last valid byte) - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_0_HCC_MASK_C: std_logic_vector(63 downto 48) := x"0000"; -- HCC* module mask - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_0_ABC_MASK_HCC_E_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_0_ABC_MASK_HCC_D_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_0_ABC_MASK_HCC_C_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_B_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_A_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_9_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_8_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_7_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_6_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_5_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_4_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_3_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_2_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_1_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_0_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_1_L0A_BCR_DELAY_C: std_logic_vector(49 downto 38) := x"000"; -- TTC BCR signal will be delayed by this many BCs - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_1_L0A_FRAME_DELAY_C: std_logic_vector(37 downto 34) := x"0"; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_1_FRAME_PHASE_C: std_logic_vector(33 downto 32) := "00"; -- phase of LCB frame with respect to TTC BCR signal - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_1_TRICKLE_BC_START_C: std_logic_vector(31 downto 20) := x"000"; -- Determines the start of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_1_TRICKLE_BC_STOP_C: std_logic_vector(19 downto 8) := x"000"; -- Determines the end of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_1_LCB_DESTINATION_MUX_C: std_logic_vector(5 downto 4) := "00"; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_1_TRICKLE_TRIG_RUN_C: std_logic_vector(3 downto 3) := "0"; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_1_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_1_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_1_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_1_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_1_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_1_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_1_VALID_DATA_END_C: std_logic_vector(15 downto 0) := x"0000"; -- Stop address of trickle configuration in trickle memory (last valid byte) - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_1_HCC_MASK_C: std_logic_vector(63 downto 48) := x"0000"; -- HCC* module mask - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_1_ABC_MASK_HCC_E_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_1_ABC_MASK_HCC_D_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_1_ABC_MASK_HCC_C_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_B_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_A_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_9_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_8_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_7_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_6_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_5_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_4_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_3_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_2_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_1_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_0_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_2_L0A_BCR_DELAY_C: std_logic_vector(49 downto 38) := x"000"; -- TTC BCR signal will be delayed by this many BCs - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_2_L0A_FRAME_DELAY_C: std_logic_vector(37 downto 34) := x"0"; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_2_FRAME_PHASE_C: std_logic_vector(33 downto 32) := "00"; -- phase of LCB frame with respect to TTC BCR signal - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_2_TRICKLE_BC_START_C: std_logic_vector(31 downto 20) := x"000"; -- Determines the start of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_2_TRICKLE_BC_STOP_C: std_logic_vector(19 downto 8) := x"000"; -- Determines the end of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_2_LCB_DESTINATION_MUX_C: std_logic_vector(5 downto 4) := "00"; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_2_TRICKLE_TRIG_RUN_C: std_logic_vector(3 downto 3) := "0"; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_2_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_2_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_2_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_2_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_2_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_2_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_2_VALID_DATA_END_C: std_logic_vector(15 downto 0) := x"0000"; -- Stop address of trickle configuration in trickle memory (last valid byte) - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_2_HCC_MASK_C: std_logic_vector(63 downto 48) := x"0000"; -- HCC* module mask - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_2_ABC_MASK_HCC_E_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_2_ABC_MASK_HCC_D_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_2_ABC_MASK_HCC_C_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_B_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_A_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_9_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_8_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_7_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_6_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_5_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_4_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_3_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_2_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_1_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_0_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_3_L0A_BCR_DELAY_C: std_logic_vector(49 downto 38) := x"000"; -- TTC BCR signal will be delayed by this many BCs - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_3_L0A_FRAME_DELAY_C: std_logic_vector(37 downto 34) := x"0"; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_3_FRAME_PHASE_C: std_logic_vector(33 downto 32) := "00"; -- phase of LCB frame with respect to TTC BCR signal - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_3_TRICKLE_BC_START_C: std_logic_vector(31 downto 20) := x"000"; -- Determines the start of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_3_TRICKLE_BC_STOP_C: std_logic_vector(19 downto 8) := x"000"; -- Determines the end of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_3_LCB_DESTINATION_MUX_C: std_logic_vector(5 downto 4) := "00"; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_3_TRICKLE_TRIG_RUN_C: std_logic_vector(3 downto 3) := "0"; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_3_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_3_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_LCB_3_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_3_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_3_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_3_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_TRICKLE_MEMORY_CONFIG_3_VALID_DATA_END_C: std_logic_vector(15 downto 0) := x"0000"; -- Stop address of trickle configuration in trickle memory (last valid byte) - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_3_HCC_MASK_C: std_logic_vector(63 downto 48) := x"0000"; -- HCC* module mask - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_3_ABC_MASK_HCC_E_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_3_ABC_MASK_HCC_D_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_MODULE_MASK_F_C_3_ABC_MASK_HCC_C_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_B_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_A_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_9_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_8_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_7_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_6_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_5_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_4_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_3_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_2_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_1_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_07_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_0_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_R3L1_LINK_07_R3L1_0_FRAME_PHASE_C: std_logic_vector(3 downto 2) := "00"; -- phase of R3L1 frame with respect to TTC BCR signal - constant REG_CR_ITK_R3L1_LINK_07_R3L1_0_L1_ENABLE_C: std_logic_vector(1 downto 1) := "0"; -- enables sending TTC L1 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_07_R3L1_0_R3_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables sending RoI R3 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_07_R3L1_1_FRAME_PHASE_C: std_logic_vector(3 downto 2) := "00"; -- phase of R3L1 frame with respect to TTC BCR signal - constant REG_CR_ITK_R3L1_LINK_07_R3L1_1_L1_ENABLE_C: std_logic_vector(1 downto 1) := "0"; -- enables sending TTC L1 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_07_R3L1_1_R3_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables sending RoI R3 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_07_R3L1_2_FRAME_PHASE_C: std_logic_vector(3 downto 2) := "00"; -- phase of R3L1 frame with respect to TTC BCR signal - constant REG_CR_ITK_R3L1_LINK_07_R3L1_2_L1_ENABLE_C: std_logic_vector(1 downto 1) := "0"; -- enables sending TTC L1 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_07_R3L1_2_R3_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables sending RoI R3 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_07_R3L1_3_FRAME_PHASE_C: std_logic_vector(3 downto 2) := "00"; -- phase of R3L1 frame with respect to TTC BCR signal - constant REG_CR_ITK_R3L1_LINK_07_R3L1_3_L1_ENABLE_C: std_logic_vector(1 downto 1) := "0"; -- enables sending TTC L1 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_07_R3L1_3_R3_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables sending RoI R3 signals to the front-end - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_0_L0A_BCR_DELAY_C: std_logic_vector(49 downto 38) := x"000"; -- TTC BCR signal will be delayed by this many BCs - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_0_L0A_FRAME_DELAY_C: std_logic_vector(37 downto 34) := x"0"; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_0_FRAME_PHASE_C: std_logic_vector(33 downto 32) := "00"; -- phase of LCB frame with respect to TTC BCR signal - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_0_TRICKLE_BC_START_C: std_logic_vector(31 downto 20) := x"000"; -- Determines the start of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_0_TRICKLE_BC_STOP_C: std_logic_vector(19 downto 8) := x"000"; -- Determines the end of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_0_LCB_DESTINATION_MUX_C: std_logic_vector(5 downto 4) := "00"; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_0_TRICKLE_TRIG_RUN_C: std_logic_vector(3 downto 3) := "0"; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_0_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_0_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_0_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_0_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_0_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_0_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_0_VALID_DATA_END_C: std_logic_vector(15 downto 0) := x"0000"; -- Stop address of trickle configuration in trickle memory (last valid byte) - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_0_HCC_MASK_C: std_logic_vector(63 downto 48) := x"0000"; -- HCC* module mask - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_0_ABC_MASK_HCC_E_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_0_ABC_MASK_HCC_D_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_0_ABC_MASK_HCC_C_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_B_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_A_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_9_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_8_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_7_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_6_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_5_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_4_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_3_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_2_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_1_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_0_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_1_L0A_BCR_DELAY_C: std_logic_vector(49 downto 38) := x"000"; -- TTC BCR signal will be delayed by this many BCs - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_1_L0A_FRAME_DELAY_C: std_logic_vector(37 downto 34) := x"0"; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_1_FRAME_PHASE_C: std_logic_vector(33 downto 32) := "00"; -- phase of LCB frame with respect to TTC BCR signal - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_1_TRICKLE_BC_START_C: std_logic_vector(31 downto 20) := x"000"; -- Determines the start of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_1_TRICKLE_BC_STOP_C: std_logic_vector(19 downto 8) := x"000"; -- Determines the end of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_1_LCB_DESTINATION_MUX_C: std_logic_vector(5 downto 4) := "00"; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_1_TRICKLE_TRIG_RUN_C: std_logic_vector(3 downto 3) := "0"; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_1_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_1_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_1_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_1_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_1_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_1_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_1_VALID_DATA_END_C: std_logic_vector(15 downto 0) := x"0000"; -- Stop address of trickle configuration in trickle memory (last valid byte) - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_1_HCC_MASK_C: std_logic_vector(63 downto 48) := x"0000"; -- HCC* module mask - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_1_ABC_MASK_HCC_E_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_1_ABC_MASK_HCC_D_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_1_ABC_MASK_HCC_C_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_B_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_A_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_9_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_8_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_7_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_6_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_5_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_4_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_3_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_2_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_1_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_0_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_2_L0A_BCR_DELAY_C: std_logic_vector(49 downto 38) := x"000"; -- TTC BCR signal will be delayed by this many BCs - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_2_L0A_FRAME_DELAY_C: std_logic_vector(37 downto 34) := x"0"; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_2_FRAME_PHASE_C: std_logic_vector(33 downto 32) := "00"; -- phase of LCB frame with respect to TTC BCR signal - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_2_TRICKLE_BC_START_C: std_logic_vector(31 downto 20) := x"000"; -- Determines the start of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_2_TRICKLE_BC_STOP_C: std_logic_vector(19 downto 8) := x"000"; -- Determines the end of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_2_LCB_DESTINATION_MUX_C: std_logic_vector(5 downto 4) := "00"; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_2_TRICKLE_TRIG_RUN_C: std_logic_vector(3 downto 3) := "0"; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_2_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_2_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_2_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_2_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_2_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_2_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_2_VALID_DATA_END_C: std_logic_vector(15 downto 0) := x"0000"; -- Stop address of trickle configuration in trickle memory (last valid byte) - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_2_HCC_MASK_C: std_logic_vector(63 downto 48) := x"0000"; -- HCC* module mask - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_2_ABC_MASK_HCC_E_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_2_ABC_MASK_HCC_D_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_2_ABC_MASK_HCC_C_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_B_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_A_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_9_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_8_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_7_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_6_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_5_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_4_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_3_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_2_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_1_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_0_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_3_L0A_BCR_DELAY_C: std_logic_vector(49 downto 38) := x"000"; -- TTC BCR signal will be delayed by this many BCs - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_3_L0A_FRAME_DELAY_C: std_logic_vector(37 downto 34) := x"0"; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_3_FRAME_PHASE_C: std_logic_vector(33 downto 32) := "00"; -- phase of LCB frame with respect to TTC BCR signal - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_3_TRICKLE_BC_START_C: std_logic_vector(31 downto 20) := x"000"; -- Determines the start of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_3_TRICKLE_BC_STOP_C: std_logic_vector(19 downto 8) := x"000"; -- Determines the end of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_3_LCB_DESTINATION_MUX_C: std_logic_vector(5 downto 4) := "00"; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_3_TRICKLE_TRIG_RUN_C: std_logic_vector(3 downto 3) := "0"; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_3_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_3_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_LCB_3_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_3_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_3_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_3_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_TRICKLE_MEMORY_CONFIG_3_VALID_DATA_END_C: std_logic_vector(15 downto 0) := x"0000"; -- Stop address of trickle configuration in trickle memory (last valid byte) - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_3_HCC_MASK_C: std_logic_vector(63 downto 48) := x"0000"; -- HCC* module mask - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_3_ABC_MASK_HCC_E_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_3_ABC_MASK_HCC_D_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_MODULE_MASK_F_C_3_ABC_MASK_HCC_C_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_B_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_A_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_9_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_8_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_7_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_6_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_5_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_4_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_3_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_2_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_1_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_08_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_0_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_R3L1_LINK_08_R3L1_0_FRAME_PHASE_C: std_logic_vector(3 downto 2) := "00"; -- phase of R3L1 frame with respect to TTC BCR signal - constant REG_CR_ITK_R3L1_LINK_08_R3L1_0_L1_ENABLE_C: std_logic_vector(1 downto 1) := "0"; -- enables sending TTC L1 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_08_R3L1_0_R3_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables sending RoI R3 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_08_R3L1_1_FRAME_PHASE_C: std_logic_vector(3 downto 2) := "00"; -- phase of R3L1 frame with respect to TTC BCR signal - constant REG_CR_ITK_R3L1_LINK_08_R3L1_1_L1_ENABLE_C: std_logic_vector(1 downto 1) := "0"; -- enables sending TTC L1 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_08_R3L1_1_R3_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables sending RoI R3 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_08_R3L1_2_FRAME_PHASE_C: std_logic_vector(3 downto 2) := "00"; -- phase of R3L1 frame with respect to TTC BCR signal - constant REG_CR_ITK_R3L1_LINK_08_R3L1_2_L1_ENABLE_C: std_logic_vector(1 downto 1) := "0"; -- enables sending TTC L1 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_08_R3L1_2_R3_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables sending RoI R3 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_08_R3L1_3_FRAME_PHASE_C: std_logic_vector(3 downto 2) := "00"; -- phase of R3L1 frame with respect to TTC BCR signal - constant REG_CR_ITK_R3L1_LINK_08_R3L1_3_L1_ENABLE_C: std_logic_vector(1 downto 1) := "0"; -- enables sending TTC L1 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_08_R3L1_3_R3_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables sending RoI R3 signals to the front-end - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_0_L0A_BCR_DELAY_C: std_logic_vector(49 downto 38) := x"000"; -- TTC BCR signal will be delayed by this many BCs - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_0_L0A_FRAME_DELAY_C: std_logic_vector(37 downto 34) := x"0"; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_0_FRAME_PHASE_C: std_logic_vector(33 downto 32) := "00"; -- phase of LCB frame with respect to TTC BCR signal - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_0_TRICKLE_BC_START_C: std_logic_vector(31 downto 20) := x"000"; -- Determines the start of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_0_TRICKLE_BC_STOP_C: std_logic_vector(19 downto 8) := x"000"; -- Determines the end of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_0_LCB_DESTINATION_MUX_C: std_logic_vector(5 downto 4) := "00"; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_0_TRICKLE_TRIG_RUN_C: std_logic_vector(3 downto 3) := "0"; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_0_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_0_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_0_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_0_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_0_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_0_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_0_VALID_DATA_END_C: std_logic_vector(15 downto 0) := x"0000"; -- Stop address of trickle configuration in trickle memory (last valid byte) - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_0_HCC_MASK_C: std_logic_vector(63 downto 48) := x"0000"; -- HCC* module mask - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_0_ABC_MASK_HCC_E_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_0_ABC_MASK_HCC_D_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_0_ABC_MASK_HCC_C_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_B_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_A_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_9_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_8_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_7_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_6_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_5_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_4_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_3_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_2_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_1_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_0_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_1_L0A_BCR_DELAY_C: std_logic_vector(49 downto 38) := x"000"; -- TTC BCR signal will be delayed by this many BCs - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_1_L0A_FRAME_DELAY_C: std_logic_vector(37 downto 34) := x"0"; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_1_FRAME_PHASE_C: std_logic_vector(33 downto 32) := "00"; -- phase of LCB frame with respect to TTC BCR signal - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_1_TRICKLE_BC_START_C: std_logic_vector(31 downto 20) := x"000"; -- Determines the start of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_1_TRICKLE_BC_STOP_C: std_logic_vector(19 downto 8) := x"000"; -- Determines the end of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_1_LCB_DESTINATION_MUX_C: std_logic_vector(5 downto 4) := "00"; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_1_TRICKLE_TRIG_RUN_C: std_logic_vector(3 downto 3) := "0"; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_1_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_1_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_1_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_1_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_1_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_1_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_1_VALID_DATA_END_C: std_logic_vector(15 downto 0) := x"0000"; -- Stop address of trickle configuration in trickle memory (last valid byte) - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_1_HCC_MASK_C: std_logic_vector(63 downto 48) := x"0000"; -- HCC* module mask - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_1_ABC_MASK_HCC_E_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_1_ABC_MASK_HCC_D_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_1_ABC_MASK_HCC_C_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_B_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_A_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_9_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_8_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_7_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_6_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_5_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_4_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_3_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_2_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_1_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_0_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_2_L0A_BCR_DELAY_C: std_logic_vector(49 downto 38) := x"000"; -- TTC BCR signal will be delayed by this many BCs - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_2_L0A_FRAME_DELAY_C: std_logic_vector(37 downto 34) := x"0"; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_2_FRAME_PHASE_C: std_logic_vector(33 downto 32) := "00"; -- phase of LCB frame with respect to TTC BCR signal - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_2_TRICKLE_BC_START_C: std_logic_vector(31 downto 20) := x"000"; -- Determines the start of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_2_TRICKLE_BC_STOP_C: std_logic_vector(19 downto 8) := x"000"; -- Determines the end of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_2_LCB_DESTINATION_MUX_C: std_logic_vector(5 downto 4) := "00"; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_2_TRICKLE_TRIG_RUN_C: std_logic_vector(3 downto 3) := "0"; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_2_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_2_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_2_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_2_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_2_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_2_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_2_VALID_DATA_END_C: std_logic_vector(15 downto 0) := x"0000"; -- Stop address of trickle configuration in trickle memory (last valid byte) - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_2_HCC_MASK_C: std_logic_vector(63 downto 48) := x"0000"; -- HCC* module mask - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_2_ABC_MASK_HCC_E_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_2_ABC_MASK_HCC_D_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_2_ABC_MASK_HCC_C_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_B_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_A_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_9_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_8_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_7_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_6_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_5_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_4_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_3_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_2_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_1_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_0_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_3_L0A_BCR_DELAY_C: std_logic_vector(49 downto 38) := x"000"; -- TTC BCR signal will be delayed by this many BCs - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_3_L0A_FRAME_DELAY_C: std_logic_vector(37 downto 34) := x"0"; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_3_FRAME_PHASE_C: std_logic_vector(33 downto 32) := "00"; -- phase of LCB frame with respect to TTC BCR signal - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_3_TRICKLE_BC_START_C: std_logic_vector(31 downto 20) := x"000"; -- Determines the start of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_3_TRICKLE_BC_STOP_C: std_logic_vector(19 downto 8) := x"000"; -- Determines the end of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_3_LCB_DESTINATION_MUX_C: std_logic_vector(5 downto 4) := "00"; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_3_TRICKLE_TRIG_RUN_C: std_logic_vector(3 downto 3) := "0"; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_3_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_3_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_LCB_3_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_3_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_3_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_3_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_TRICKLE_MEMORY_CONFIG_3_VALID_DATA_END_C: std_logic_vector(15 downto 0) := x"0000"; -- Stop address of trickle configuration in trickle memory (last valid byte) - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_3_HCC_MASK_C: std_logic_vector(63 downto 48) := x"0000"; -- HCC* module mask - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_3_ABC_MASK_HCC_E_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_3_ABC_MASK_HCC_D_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_MODULE_MASK_F_C_3_ABC_MASK_HCC_C_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_B_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_A_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_9_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_8_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_7_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_6_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_5_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_4_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_3_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_2_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_1_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_09_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_0_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_R3L1_LINK_09_R3L1_0_FRAME_PHASE_C: std_logic_vector(3 downto 2) := "00"; -- phase of R3L1 frame with respect to TTC BCR signal - constant REG_CR_ITK_R3L1_LINK_09_R3L1_0_L1_ENABLE_C: std_logic_vector(1 downto 1) := "0"; -- enables sending TTC L1 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_09_R3L1_0_R3_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables sending RoI R3 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_09_R3L1_1_FRAME_PHASE_C: std_logic_vector(3 downto 2) := "00"; -- phase of R3L1 frame with respect to TTC BCR signal - constant REG_CR_ITK_R3L1_LINK_09_R3L1_1_L1_ENABLE_C: std_logic_vector(1 downto 1) := "0"; -- enables sending TTC L1 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_09_R3L1_1_R3_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables sending RoI R3 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_09_R3L1_2_FRAME_PHASE_C: std_logic_vector(3 downto 2) := "00"; -- phase of R3L1 frame with respect to TTC BCR signal - constant REG_CR_ITK_R3L1_LINK_09_R3L1_2_L1_ENABLE_C: std_logic_vector(1 downto 1) := "0"; -- enables sending TTC L1 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_09_R3L1_2_R3_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables sending RoI R3 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_09_R3L1_3_FRAME_PHASE_C: std_logic_vector(3 downto 2) := "00"; -- phase of R3L1 frame with respect to TTC BCR signal - constant REG_CR_ITK_R3L1_LINK_09_R3L1_3_L1_ENABLE_C: std_logic_vector(1 downto 1) := "0"; -- enables sending TTC L1 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_09_R3L1_3_R3_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables sending RoI R3 signals to the front-end - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_0_L0A_BCR_DELAY_C: std_logic_vector(49 downto 38) := x"000"; -- TTC BCR signal will be delayed by this many BCs - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_0_L0A_FRAME_DELAY_C: std_logic_vector(37 downto 34) := x"0"; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_0_FRAME_PHASE_C: std_logic_vector(33 downto 32) := "00"; -- phase of LCB frame with respect to TTC BCR signal - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_0_TRICKLE_BC_START_C: std_logic_vector(31 downto 20) := x"000"; -- Determines the start of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_0_TRICKLE_BC_STOP_C: std_logic_vector(19 downto 8) := x"000"; -- Determines the end of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_0_LCB_DESTINATION_MUX_C: std_logic_vector(5 downto 4) := "00"; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_0_TRICKLE_TRIG_RUN_C: std_logic_vector(3 downto 3) := "0"; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_0_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_0_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_0_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_0_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_0_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_0_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_0_VALID_DATA_END_C: std_logic_vector(15 downto 0) := x"0000"; -- Stop address of trickle configuration in trickle memory (last valid byte) - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_0_HCC_MASK_C: std_logic_vector(63 downto 48) := x"0000"; -- HCC* module mask - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_0_ABC_MASK_HCC_E_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_0_ABC_MASK_HCC_D_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_0_ABC_MASK_HCC_C_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_B_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_A_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_9_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_8_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_7_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_6_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_5_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_4_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_3_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_2_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_1_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_0_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_1_L0A_BCR_DELAY_C: std_logic_vector(49 downto 38) := x"000"; -- TTC BCR signal will be delayed by this many BCs - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_1_L0A_FRAME_DELAY_C: std_logic_vector(37 downto 34) := x"0"; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_1_FRAME_PHASE_C: std_logic_vector(33 downto 32) := "00"; -- phase of LCB frame with respect to TTC BCR signal - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_1_TRICKLE_BC_START_C: std_logic_vector(31 downto 20) := x"000"; -- Determines the start of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_1_TRICKLE_BC_STOP_C: std_logic_vector(19 downto 8) := x"000"; -- Determines the end of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_1_LCB_DESTINATION_MUX_C: std_logic_vector(5 downto 4) := "00"; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_1_TRICKLE_TRIG_RUN_C: std_logic_vector(3 downto 3) := "0"; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_1_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_1_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_1_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_1_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_1_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_1_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_1_VALID_DATA_END_C: std_logic_vector(15 downto 0) := x"0000"; -- Stop address of trickle configuration in trickle memory (last valid byte) - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_1_HCC_MASK_C: std_logic_vector(63 downto 48) := x"0000"; -- HCC* module mask - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_1_ABC_MASK_HCC_E_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_1_ABC_MASK_HCC_D_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_1_ABC_MASK_HCC_C_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_B_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_A_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_9_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_8_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_7_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_6_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_5_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_4_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_3_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_2_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_1_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_0_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_2_L0A_BCR_DELAY_C: std_logic_vector(49 downto 38) := x"000"; -- TTC BCR signal will be delayed by this many BCs - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_2_L0A_FRAME_DELAY_C: std_logic_vector(37 downto 34) := x"0"; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_2_FRAME_PHASE_C: std_logic_vector(33 downto 32) := "00"; -- phase of LCB frame with respect to TTC BCR signal - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_2_TRICKLE_BC_START_C: std_logic_vector(31 downto 20) := x"000"; -- Determines the start of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_2_TRICKLE_BC_STOP_C: std_logic_vector(19 downto 8) := x"000"; -- Determines the end of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_2_LCB_DESTINATION_MUX_C: std_logic_vector(5 downto 4) := "00"; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_2_TRICKLE_TRIG_RUN_C: std_logic_vector(3 downto 3) := "0"; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_2_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_2_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_2_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_2_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_2_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_2_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_2_VALID_DATA_END_C: std_logic_vector(15 downto 0) := x"0000"; -- Stop address of trickle configuration in trickle memory (last valid byte) - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_2_HCC_MASK_C: std_logic_vector(63 downto 48) := x"0000"; -- HCC* module mask - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_2_ABC_MASK_HCC_E_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_2_ABC_MASK_HCC_D_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_2_ABC_MASK_HCC_C_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_B_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_A_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_9_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_8_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_7_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_6_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_5_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_4_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_3_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_2_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_1_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_0_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_3_L0A_BCR_DELAY_C: std_logic_vector(49 downto 38) := x"000"; -- TTC BCR signal will be delayed by this many BCs - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_3_L0A_FRAME_DELAY_C: std_logic_vector(37 downto 34) := x"0"; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_3_FRAME_PHASE_C: std_logic_vector(33 downto 32) := "00"; -- phase of LCB frame with respect to TTC BCR signal - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_3_TRICKLE_BC_START_C: std_logic_vector(31 downto 20) := x"000"; -- Determines the start of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_3_TRICKLE_BC_STOP_C: std_logic_vector(19 downto 8) := x"000"; -- Determines the end of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_3_LCB_DESTINATION_MUX_C: std_logic_vector(5 downto 4) := "00"; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_3_TRICKLE_TRIG_RUN_C: std_logic_vector(3 downto 3) := "0"; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_3_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_3_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_LCB_3_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_3_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_3_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_3_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_TRICKLE_MEMORY_CONFIG_3_VALID_DATA_END_C: std_logic_vector(15 downto 0) := x"0000"; -- Stop address of trickle configuration in trickle memory (last valid byte) - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_3_HCC_MASK_C: std_logic_vector(63 downto 48) := x"0000"; -- HCC* module mask - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_3_ABC_MASK_HCC_E_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_3_ABC_MASK_HCC_D_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_MODULE_MASK_F_C_3_ABC_MASK_HCC_C_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_B_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_A_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_9_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_8_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_7_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_6_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_5_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_4_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_3_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_2_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_1_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_10_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_0_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_R3L1_LINK_10_R3L1_0_FRAME_PHASE_C: std_logic_vector(3 downto 2) := "00"; -- phase of R3L1 frame with respect to TTC BCR signal - constant REG_CR_ITK_R3L1_LINK_10_R3L1_0_L1_ENABLE_C: std_logic_vector(1 downto 1) := "0"; -- enables sending TTC L1 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_10_R3L1_0_R3_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables sending RoI R3 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_10_R3L1_1_FRAME_PHASE_C: std_logic_vector(3 downto 2) := "00"; -- phase of R3L1 frame with respect to TTC BCR signal - constant REG_CR_ITK_R3L1_LINK_10_R3L1_1_L1_ENABLE_C: std_logic_vector(1 downto 1) := "0"; -- enables sending TTC L1 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_10_R3L1_1_R3_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables sending RoI R3 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_10_R3L1_2_FRAME_PHASE_C: std_logic_vector(3 downto 2) := "00"; -- phase of R3L1 frame with respect to TTC BCR signal - constant REG_CR_ITK_R3L1_LINK_10_R3L1_2_L1_ENABLE_C: std_logic_vector(1 downto 1) := "0"; -- enables sending TTC L1 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_10_R3L1_2_R3_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables sending RoI R3 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_10_R3L1_3_FRAME_PHASE_C: std_logic_vector(3 downto 2) := "00"; -- phase of R3L1 frame with respect to TTC BCR signal - constant REG_CR_ITK_R3L1_LINK_10_R3L1_3_L1_ENABLE_C: std_logic_vector(1 downto 1) := "0"; -- enables sending TTC L1 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_10_R3L1_3_R3_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables sending RoI R3 signals to the front-end - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_0_L0A_BCR_DELAY_C: std_logic_vector(49 downto 38) := x"000"; -- TTC BCR signal will be delayed by this many BCs - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_0_L0A_FRAME_DELAY_C: std_logic_vector(37 downto 34) := x"0"; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_0_FRAME_PHASE_C: std_logic_vector(33 downto 32) := "00"; -- phase of LCB frame with respect to TTC BCR signal - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_0_TRICKLE_BC_START_C: std_logic_vector(31 downto 20) := x"000"; -- Determines the start of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_0_TRICKLE_BC_STOP_C: std_logic_vector(19 downto 8) := x"000"; -- Determines the end of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_0_LCB_DESTINATION_MUX_C: std_logic_vector(5 downto 4) := "00"; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_0_TRICKLE_TRIG_RUN_C: std_logic_vector(3 downto 3) := "0"; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_0_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_0_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_0_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_0_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_0_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_0_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_0_VALID_DATA_END_C: std_logic_vector(15 downto 0) := x"0000"; -- Stop address of trickle configuration in trickle memory (last valid byte) - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_0_HCC_MASK_C: std_logic_vector(63 downto 48) := x"0000"; -- HCC* module mask - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_0_ABC_MASK_HCC_E_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_0_ABC_MASK_HCC_D_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_0_ABC_MASK_HCC_C_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_B_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_A_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_9_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_0_ABC_MASK_HCC_8_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_7_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_6_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_5_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_0_ABC_MASK_HCC_4_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_3_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_2_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_1_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_0_ABC_MASK_HCC_0_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_1_L0A_BCR_DELAY_C: std_logic_vector(49 downto 38) := x"000"; -- TTC BCR signal will be delayed by this many BCs - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_1_L0A_FRAME_DELAY_C: std_logic_vector(37 downto 34) := x"0"; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_1_FRAME_PHASE_C: std_logic_vector(33 downto 32) := "00"; -- phase of LCB frame with respect to TTC BCR signal - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_1_TRICKLE_BC_START_C: std_logic_vector(31 downto 20) := x"000"; -- Determines the start of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_1_TRICKLE_BC_STOP_C: std_logic_vector(19 downto 8) := x"000"; -- Determines the end of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_1_LCB_DESTINATION_MUX_C: std_logic_vector(5 downto 4) := "00"; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_1_TRICKLE_TRIG_RUN_C: std_logic_vector(3 downto 3) := "0"; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_1_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_1_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_1_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_1_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_1_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_1_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_1_VALID_DATA_END_C: std_logic_vector(15 downto 0) := x"0000"; -- Stop address of trickle configuration in trickle memory (last valid byte) - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_1_HCC_MASK_C: std_logic_vector(63 downto 48) := x"0000"; -- HCC* module mask - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_1_ABC_MASK_HCC_E_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_1_ABC_MASK_HCC_D_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_1_ABC_MASK_HCC_C_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_B_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_A_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_9_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_1_ABC_MASK_HCC_8_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_7_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_6_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_5_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_1_ABC_MASK_HCC_4_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_3_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_2_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_1_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_1_ABC_MASK_HCC_0_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_2_L0A_BCR_DELAY_C: std_logic_vector(49 downto 38) := x"000"; -- TTC BCR signal will be delayed by this many BCs - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_2_L0A_FRAME_DELAY_C: std_logic_vector(37 downto 34) := x"0"; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_2_FRAME_PHASE_C: std_logic_vector(33 downto 32) := "00"; -- phase of LCB frame with respect to TTC BCR signal - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_2_TRICKLE_BC_START_C: std_logic_vector(31 downto 20) := x"000"; -- Determines the start of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_2_TRICKLE_BC_STOP_C: std_logic_vector(19 downto 8) := x"000"; -- Determines the end of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_2_LCB_DESTINATION_MUX_C: std_logic_vector(5 downto 4) := "00"; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_2_TRICKLE_TRIG_RUN_C: std_logic_vector(3 downto 3) := "0"; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_2_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_2_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_2_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_2_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_2_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_2_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_2_VALID_DATA_END_C: std_logic_vector(15 downto 0) := x"0000"; -- Stop address of trickle configuration in trickle memory (last valid byte) - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_2_HCC_MASK_C: std_logic_vector(63 downto 48) := x"0000"; -- HCC* module mask - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_2_ABC_MASK_HCC_E_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_2_ABC_MASK_HCC_D_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_2_ABC_MASK_HCC_C_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_B_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_A_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_9_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_2_ABC_MASK_HCC_8_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_7_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_6_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_5_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_2_ABC_MASK_HCC_4_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_3_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_2_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_1_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_2_ABC_MASK_HCC_0_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_3_L0A_BCR_DELAY_C: std_logic_vector(49 downto 38) := x"000"; -- TTC BCR signal will be delayed by this many BCs - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_3_L0A_FRAME_DELAY_C: std_logic_vector(37 downto 34) := x"0"; -- By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock, - -- and some TTC L0A frames may be lost. Don't adjust this parameter while taking data. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_3_FRAME_PHASE_C: std_logic_vector(33 downto 32) := "00"; -- phase of LCB frame with respect to TTC BCR signal - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_3_TRICKLE_BC_START_C: std_logic_vector(31 downto 20) := x"000"; -- Determines the start of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_3_TRICKLE_BC_STOP_C: std_logic_vector(19 downto 8) := x"000"; -- Determines the end of the allowed BC interval for low-priority LCB frames - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_3_LCB_DESTINATION_MUX_C: std_logic_vector(5 downto 4) := "00"; -- Determines where the elink data is sent to: - -- 00: command decoder (use same command encoding format as trickle configuration) - -- 01: trickle memory (see phase2 documentation for command encoding format) - -- 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames) - -- 11: (invalid, don't use) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_3_TRICKLE_TRIG_RUN_C: std_logic_vector(3 downto 3) := "0"; -- if enabled, trickle configuration is sent out continuously to the front-end - -- (use together with TTC_GENERATE_GATING_EN for sending trickle configuration - -- continuously during a specified BC range. See also BC_START, and BC_STOP fields.) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_3_TTC_L0A_ENABLE_C: std_logic_vector(2 downto 2) := "0"; -- enable generating L0A frames in response to TTC system signals - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_3_TRICKLE_TRIG_PULSE_C: std_logic_vector(1 downto 1) := "0"; -- writing to this register issues a single trickle trigger - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_LCB_3_TTC_GENERATE_GATING_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables generating trickle gating signal in response to TTC BCR. - -- TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. - -- (See also BC_START, and BC_STOP fields) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_3_MOVE_WRITE_PTR_C: std_logic_vector(64 downto 64) := "0"; -- Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - -- The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_3_WRITE_PTR_C: std_logic_vector(47 downto 32) := x"0000"; -- Trickle configuration memory write pointer - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_3_VALID_DATA_START_C: std_logic_vector(31 downto 16) := x"0000"; -- Start address of trickle configuration in trickle memory - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_3_VALID_DATA_END_C: std_logic_vector(15 downto 0) := x"0000"; -- Stop address of trickle configuration in trickle memory (last valid byte) - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_3_HCC_MASK_C: std_logic_vector(63 downto 48) := x"0000"; -- HCC* module mask - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_3_ABC_MASK_HCC_E_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xE - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_3_ABC_MASK_HCC_D_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0xD - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_3_ABC_MASK_HCC_C_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0xC - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_B_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0xB - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_A_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0xA - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_9_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x9 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_3_ABC_MASK_HCC_8_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x8 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_7_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x7 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_6_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x6 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_5_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x5 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_3_ABC_MASK_HCC_4_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x4 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_3_C: std_logic_vector(63 downto 48) := x"0000"; -- Masks register commands with destination hcc_id = 0x3 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_2_C: std_logic_vector(47 downto 32) := x"0000"; -- Masks register commands with destination hcc_id = 0x2 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_1_C: std_logic_vector(31 downto 16) := x"0000"; -- Masks register commands with destination hcc_id = 0x1 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_3_ABC_MASK_HCC_0_C: std_logic_vector(15 downto 0) := x"0000"; -- Masks register commands with destination hcc_id = 0x0 - -- mask(i) <=> (abc_id = i) - - constant REG_CR_ITK_R3L1_LINK_11_R3L1_0_FRAME_PHASE_C: std_logic_vector(3 downto 2) := "00"; -- phase of R3L1 frame with respect to TTC BCR signal - constant REG_CR_ITK_R3L1_LINK_11_R3L1_0_L1_ENABLE_C: std_logic_vector(1 downto 1) := "0"; -- enables sending TTC L1 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_11_R3L1_0_R3_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables sending RoI R3 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_11_R3L1_1_FRAME_PHASE_C: std_logic_vector(3 downto 2) := "00"; -- phase of R3L1 frame with respect to TTC BCR signal - constant REG_CR_ITK_R3L1_LINK_11_R3L1_1_L1_ENABLE_C: std_logic_vector(1 downto 1) := "0"; -- enables sending TTC L1 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_11_R3L1_1_R3_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables sending RoI R3 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_11_R3L1_2_FRAME_PHASE_C: std_logic_vector(3 downto 2) := "00"; -- phase of R3L1 frame with respect to TTC BCR signal - constant REG_CR_ITK_R3L1_LINK_11_R3L1_2_L1_ENABLE_C: std_logic_vector(1 downto 1) := "0"; -- enables sending TTC L1 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_11_R3L1_2_R3_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables sending RoI R3 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_11_R3L1_3_FRAME_PHASE_C: std_logic_vector(3 downto 2) := "00"; -- phase of R3L1 frame with respect to TTC BCR signal - constant REG_CR_ITK_R3L1_LINK_11_R3L1_3_L1_ENABLE_C: std_logic_vector(1 downto 1) := "0"; -- enables sending TTC L1 signals to the front-end - constant REG_CR_ITK_R3L1_LINK_11_R3L1_3_R3_ENABLE_C: std_logic_vector(0 downto 0) := "0"; -- enables sending RoI R3 signals to the front-end + constant REG_STRIPS_R3_TRIGGER_C : std_logic_vector(64 downto 64) := "0"; -- (for tests only) simulate R3 trigger (issues 4-5 sequential triggers) + constant REG_STRIPS_L1_TRIGGER_C : std_logic_vector(64 downto 64) := "0"; -- (for tests only) simulate L1 trigger (issues 4-5 sequential triggers) + constant REG_STRIPS_R3L1_TRIGGER_C : std_logic_vector(64 downto 64) := "0"; -- (for tests only) simulate simultaneous R3 and L1 trigger (issues 4-5 sequential triggers) constant REG_MROD_CTRL_OPTIONS_C : std_logic_vector(15 downto 4) := x"000"; -- Extra options for MROD constant REG_MROD_CTRL_GOLTESTMODE_C : std_logic_vector(3 downto 0) := x"0"; -- GOL Test Mode (emulate CSM): -- 0: Run Data Emulator when 1; 0: stop, load emulator fifo diff --git a/sources/templates/registermap.tex b/sources/templates/registermap.tex index 3c7b597a6..509711904 100644 --- a/sources/templates/registermap.tex +++ b/sources/templates/registermap.tex @@ -352,7 +352,7 @@ BAR2 stores registers for the control and monitor of HDL modules inside the FPGA \cline{3-7} & & & EPATH\_ALMOST\_FULL & 58:51 & R & FIFO full indication \\ & & & REVERSE\_ELINKS & 50:43 & W & enables bit reversing for the elink in the given epath \\ - & & & PATH\_ENCODING & 42:11 & W & Encoding for every EPATH, 4 bits per E-path\newline 0: direct mode\newline 1: 8b10b mode\newline 2: HDLC mode\newline 3: ITk Strips 8b10b\newline 4: ITk Pixel Aurora / RD53B\newline 5: Endeavour\newline 6-15: reserved\newline \\ + & & & PATH\_ENCODING & 42:11 & W & Encoding for every EPATH, 4 bits per E-path\newline 0: direct mode\newline 1: 8b10b mode\newline 2: HDLC mode\newline 3: TTC\newline 4: ITk Strips 8b10b\newline 5: ITk Pixel\newline 6: Endeavour\newline 7-15: reserved\newline \\ & & & EPATH\_WIDTH & 10:8 & W & Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 \\ & & & EPATH\_ENA & 7:0 & W & Enable bits per EPROC \\ \hline @@ -362,7 +362,7 @@ BAR2 stores registers for the control and monitor of HDL modules inside the FPGA \cline{3-7} & & & EPATH\_ALMOST\_FULL & 58:51 & R & FIFO full indication \\ & & & REVERSE\_ELINKS & 50:43 & W & enables bit reversing for the elink in the given epath \\ - & & & PATH\_ENCODING & 42:11 & W & Encoding for every EPATH, 4 bits per E-path\newline 0: direct mode\newline 1: 8b10b mode\newline 2: HDLC mode\newline 3: ITk Strips 8b10b\newline 4: ITk Pixel Aurora / RD53B\newline 5: Endeavour\newline 6-15: reserved\newline \\ + & & & PATH\_ENCODING & 42:11 & W & Encoding for every EPATH, 4 bits per E-path\newline 0: direct mode\newline 1: 8b10b mode\newline 2: HDLC mode\newline 3: TTC\newline 4: ITk Strips 8b10b\newline 5: ITk Pixel\newline 6: Endeavour\newline 7-15: reserved\newline \\ & & & EPATH\_WIDTH & 10:8 & W & Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 \\ & & & EPATH\_ENA & 7:0 & W & Enable bits per EPROC \\ \hline @@ -374,7 +374,7 @@ BAR2 stores registers for the control and monitor of HDL modules inside the FPGA \cline{3-7} & & & EPATH\_ALMOST\_FULL & 58:51 & R & FIFO full indication \\ & & & REVERSE\_ELINKS & 50:43 & W & enables bit reversing for the elink in the given epath \\ - & & & PATH\_ENCODING & 42:11 & W & Encoding for every EPATH, 4 bits per E-path\newline 0: direct mode\newline 1: 8b10b mode\newline 2: HDLC mode\newline 3: ITk Strips 8b10b\newline 4: ITk Pixel Aurora / RD53B\newline 5: Endeavour\newline 6-15: reserved\newline \\ + & & & PATH\_ENCODING & 42:11 & W & Encoding for every EPATH, 4 bits per E-path\newline 0: direct mode\newline 1: 8b10b mode\newline 2: HDLC mode\newline 3: TTC\newline 4: ITk Strips 8b10b\newline 5: ITk Pixel\newline 6: Endeavour\newline 7-15: reserved\newline \\ & & & EPATH\_WIDTH & 10:8 & W & Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 \\ & & & EPATH\_ENA & 7:0 & W & Enable bits per EPROC \\ \hline @@ -384,7 +384,7 @@ BAR2 stores registers for the control and monitor of HDL modules inside the FPGA \cline{3-7} & & & EPATH\_ALMOST\_FULL & 58:51 & R & FIFO full indication \\ & & & REVERSE\_ELINKS & 50:43 & W & enables bit reversing for the elink in the given epath \\ - & & & PATH\_ENCODING & 42:11 & W & Encoding for every EPATH, 4 bits per E-path\newline 0: direct mode\newline 1: 8b10b mode\newline 2: HDLC mode\newline 3: ITk Strips 8b10b\newline 4: ITk Pixel Aurora / RD53B\newline 5: Endeavour\newline 6-15: reserved\newline \\ + & & & PATH\_ENCODING & 42:11 & W & Encoding for every EPATH, 4 bits per E-path\newline 0: direct mode\newline 1: 8b10b mode\newline 2: HDLC mode\newline 3: TTC\newline 4: ITk Strips 8b10b\newline 5: ITk Pixel\newline 6: Endeavour\newline 7-15: reserved\newline \\ & & & EPATH\_WIDTH & 10:8 & W & Width in bits of all EPATHS in an EGROUP 0:2, 1:4, 2:8, 3:16, 4:32 \\ & & & EPATH\_ENA & 7:0 & W & Enable bits per EPROC \\ \hline @@ -453,6 +453,7 @@ BAR2 stores registers for the control and monitor of HDL modules inside the FPGA \hline 0x3010 & 0,1 & \multicolumn{5}{l|}{ENCODING\_LINK00\_EGROUP0\_CTRL} \\ \cline{3-7} + & & & TTC\_OPTION & 62:59 & W & Selects TTC bits sent to the E-link \\ & & & EPATH\_ALMOST\_FULL & 58:51 & R & Indiator that the EPATH FIFO is almost full \\ & & & REVERSE\_ELINKS & 50:43 & W & enables bit reversing for the elink in the given epath \\ & & & EPATH\_WIDTH & 42:40 & W & Width of the Elinks in the egroup\newline 0: 2 bit 80 Mb/s\newline 1: 4 bit 160 Mb/s\newline 2: 8 bit 320 Mb/s\newline \\ @@ -463,6 +464,7 @@ BAR2 stores registers for the control and monitor of HDL modules inside the FPGA \hline 0x3050 & 0,1 & \multicolumn{5}{l|}{ENCODING\_LINK00\_EGROUP4\_CTRL} \\ \cline{3-7} + & & & TTC\_OPTION & 62:59 & W & Selects TTC bits sent to the E-link \\ & & & EPATH\_ALMOST\_FULL & 58:51 & R & Indiator that the EPATH FIFO is almost full \\ & & & REVERSE\_ELINKS & 50:43 & W & enables bit reversing for the elink in the given epath \\ & & & EPATH\_WIDTH & 42:40 & W & Width of the Elinks in the egroup\newline 0: 2 bit 80 Mb/s\newline 1: 4 bit 160 Mb/s\newline 2: 8 bit 320 Mb/s\newline \\ @@ -475,6 +477,7 @@ BAR2 stores registers for the control and monitor of HDL modules inside the FPGA \hline 0x3380 & 0,1 & \multicolumn{5}{l|}{ENCODING\_LINK11\_EGROUP0\_CTRL} \\ \cline{3-7} + & & & TTC\_OPTION & 62:59 & W & Selects TTC bits sent to the E-link \\ & & & EPATH\_ALMOST\_FULL & 58:51 & R & Indiator that the EPATH FIFO is almost full \\ & & & REVERSE\_ELINKS & 50:43 & W & enables bit reversing for the elink in the given epath \\ & & & EPATH\_WIDTH & 42:40 & W & Width of the Elinks in the egroup\newline 0: 2 bit 80 Mb/s\newline 1: 4 bit 160 Mb/s\newline 2: 8 bit 320 Mb/s\newline \\ @@ -485,6 +488,7 @@ BAR2 stores registers for the control and monitor of HDL modules inside the FPGA \hline 0x33C0 & 0,1 & \multicolumn{5}{l|}{ENCODING\_LINK11\_EGROUP4\_CTRL} \\ \cline{3-7} + & & & TTC\_OPTION & 62:59 & W & Selects TTC bits sent to the E-link \\ & & & EPATH\_ALMOST\_FULL & 58:51 & R & Indiator that the EPATH FIFO is almost full \\ & & & REVERSE\_ELINKS & 50:43 & W & enables bit reversing for the elink in the given epath \\ & & & EPATH\_WIDTH & 42:40 & W & Width of the Elinks in the egroup\newline 0: 2 bit 80 Mb/s\newline 1: 4 bit 160 Mb/s\newline 2: 8 bit 320 Mb/s\newline \\ @@ -730,6 +734,7 @@ BAR2 stores registers for the control and monitor of HDL modules inside the FPGA \hline 0x7000 & 0 & \multicolumn{5}{l|}{TTC\_DEC\_CTRL} \\ \cline{3-7} + & & & L1A\_DELAY & 30:27 & W & Number of BC to delay the L1A distribution to the frontends \\ & & & BCID\_ONBCR & 26:15 & W & BCID is set to this value when BCR arrives \\ & & & BUSY\_OUTPUT\_STATUS & 14 & R & Actual status of the BUSY LEMO output signal \\ & & & ECR\_BCR\_SWAP & 13 & W & ECR and BCR signals are swapped at the output of the TTC decoder (needed only for LAr TTC) \\ @@ -1308,14 +1313,18 @@ any & T & Any write to this register resets the TTC Emulator to the default stat \hline 0xD000 & 0,1 & \multicolumn{5}{l|}{GLOBAL\_STRIPS\_CONFIG} \\ \cline{3-7} - & & & TRICKLE\_TRIG\_PULSE & any & T & writing to this register issues a single trickle trigger for every LCB link connected to this FELIX device \\ - & & & TTC\_GENERATE\_GATING\_ENABLE & 0 & W & Global control for gating signal generation. Enables generating trickle gating signal in response to TTC BCR. TRICKLE\_TRIG\_RUN must also be enabled for the trickle configuration to work. (See also BC\_START, and BC\_STOP fields) \\ + & & & TEST\_MODULE\_MASK & 15:11 & W & (for tests only) contains R3 mask for the simulated trigger data \\ + & & & TEST\_R3L1\_TAG & 10:4 & W & (for tests only) contains R3 or L1 tag for the simulated trigger data \\ + & & & TTC\_GENERATE\_GATING\_ENABLE & 1 & W & Global control for gating signal generation. Enables generating trickle gating signal in response to TTC BCR. TRICKLE\_TRIG\_RUN must also be enabled for the trickle configuration to work. (See also BC\_START, and BC\_STOP fields) \\ +\hline +0xD010 & 0,1 & \multicolumn{2}{l|}{GLOBAL\_TRICKLE\_TRIGGER} & +any & T & writing to this register issues a single trickle trigger for every LCB link connected to this FELIX device \\ \hline \multicolumn{7}{|c|}{ITK\_STRIPS\_GBT} \\ \hline \multicolumn{7}{|c|}{ITK\_STRIPS\_LCB\_LINKS} \\ \hline -0xD010 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_00\_LCB\_0} \\ +0xD020 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_00\_LCB\_0} \\ \cline{3-7} & & & L0A\_BCR\_DELAY & 49:38 & W & TTC BCR signal will be delayed by this many BCs \\ & & & L0A\_FRAME\_DELAY & 37:34 & W & By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock,\newline and some TTC L0A frames may be lost. Don't adjust this parameter while taking data.\newline \\ @@ -1325,39 +1334,40 @@ any & T & Any write to this register resets the TTC Emulator to the default stat & & & LCB\_DESTINATION\_MUX & 5:4 & W & Determines where the elink data is sent to:\newline 00: command decoder (use same command encoding format as trickle configuration)\newline 01: trickle memory (see phase2 documentation for command encoding format)\newline 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames)\newline 11: (invalid, don't use)\newline \\ & & & TRICKLE\_TRIG\_RUN & 3 & W & if enabled, trickle configuration is sent out continuously to the front-end\newline (use together with TTC\_GENERATE\_GATING\_EN for sending trickle configuration\newline continuously during a specified BC range. See also BC\_START, and BC\_STOP fields.)\newline \\ & & & TTC\_L0A\_ENABLE & 2 & W & enable generating L0A frames in response to TTC system signals \\ - & & & TRICKLE\_TRIG\_PULSE & 1 & T & writing to this register issues a single trickle trigger \\ & & & TTC\_GENERATE\_GATING\_ENABLE & 0 & W & enables generating trickle gating signal in response to TTC BCR.\newline TRICKLE\_TRIG\_RUN must also be enabled for the trickle configuration to work.\newline (See also BC\_START, and BC\_STOP fields) \newline \\ \hline -0xD020 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_00\_TRICKLE\_MEMORY\_CONFIG\_0} \\ +0xD030 & 0,1 & \multicolumn{2}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_00\_TRICKLE\_TRIGGER\_0} & +any & T & writing to this register issues a single trickle trigger \\ +\hline +0xD040 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_00\_TRICKLE\_MEMORY\_CONFIG\_0} \\ \cline{3-7} - & & & MOVE\_WRITE\_PTR & any & T & Writing to this register moves trickle configuration memory write pointer to WRITE\_PTR address.\newline The memory must not be actively read out when this signal is sent, otherwise it will be ignored.\newline \\ - & & & ACTUAL\_ADDRESS\_WIDTH & 57:48 & R & Actual valid address width of trickle configuration memory \\ + & & & MOVE\_WRITE\_PTR & any & T & Writing to this register moves trickle configuration memory write pointer to WRITE\_PTR address\newline \\ & & & WRITE\_PTR & 47:32 & W & Trickle configuration memory write pointer \\ & & & VALID\_DATA\_START & 31:16 & W & Start address of trickle configuration in trickle memory \\ & & & VALID\_DATA\_END & 15:0 & W & Stop address of trickle configuration in trickle memory (last valid byte) \\ \hline -0xD030 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_00\_MODULE\_MASK\_F\_C\_0} \\ +0xD050 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_00\_MODULE\_MASK\_F\_C\_0} \\ \cline{3-7} & & & HCC\_MASK & 63:48 & W & HCC* module mask \newline \\ & & & ABC\_MASK\_HCC\_E & 47:32 & W & Masks register commands with destination hcc\_id = 0xE\newline mask(i) <=> (abc\_id = i) \newline \\ & & & ABC\_MASK\_HCC\_D & 31:16 & W & Masks register commands with destination hcc\_id = 0xD\newline mask(i) <=> (abc\_id = i) \newline \\ & & & ABC\_MASK\_HCC\_C & 15:0 & W & Masks register commands with destination hcc\_id = 0xC\newline mask(i) <=> (abc\_id = i)\newline \\ \hline -0xD040 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_00\_ABC\_MODULE\_MASK\_B\_8\_0} \\ +0xD060 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_00\_ABC\_MODULE\_MASK\_B\_8\_0} \\ \cline{3-7} & & & ABC\_MASK\_HCC\_B & 63:48 & W & Masks register commands with destination hcc\_id = 0xB \newline mask(i) <=> (abc\_id = i) \newline \\ & & & ABC\_MASK\_HCC\_A & 47:32 & W & Masks register commands with destination hcc\_id = 0xA\newline mask(i) <=> (abc\_id = i) \newline \\ & & & ABC\_MASK\_HCC\_9 & 31:16 & W & Masks register commands with destination hcc\_id = 0x9\newline mask(i) <=> (abc\_id = i) \newline \\ & & & ABC\_MASK\_HCC\_8 & 15:0 & W & Masks register commands with destination hcc\_id = 0x8\newline mask(i) <=> (abc\_id = i)\newline \\ \hline -0xD050 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_00\_ABC\_MODULE\_MASK\_7\_4\_0} \\ +0xD070 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_00\_ABC\_MODULE\_MASK\_7\_4\_0} \\ \cline{3-7} & & & ABC\_MASK\_HCC\_7 & 63:48 & W & Masks register commands with destination hcc\_id = 0x7 \newline mask(i) <=> (abc\_id = i) \newline \\ & & & ABC\_MASK\_HCC\_6 & 47:32 & W & Masks register commands with destination hcc\_id = 0x6\newline mask(i) <=> (abc\_id = i) \newline \\ & & & ABC\_MASK\_HCC\_5 & 31:16 & W & Masks register commands with destination hcc\_id = 0x5\newline mask(i) <=> (abc\_id = i) \newline \\ & & & ABC\_MASK\_HCC\_4 & 15:0 & W & Masks register commands with destination hcc\_id = 0x4\newline mask(i) <=> (abc\_id = i)\newline \\ \hline -0xD060 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_00\_ABC\_MODULE\_MASK\_3\_0\_0} \\ +0xD080 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_00\_ABC\_MODULE\_MASK\_3\_0\_0} \\ \cline{3-7} & & & ABC\_MASK\_HCC\_3 & 63:48 & W & Masks register commands with destination hcc\_id = 0x3 \newline mask(i) <=> (abc\_id = i) \newline \\ & & & ABC\_MASK\_HCC\_2 & 47:32 & W & Masks register commands with destination hcc\_id = 0x2\newline mask(i) <=> (abc\_id = i) \newline \\ @@ -1366,7 +1376,7 @@ any & T & Any write to this register resets the TTC Emulator to the default stat \hline \multicolumn{7}{|c|}{\ldots} \\ \hline -0xD130 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_00\_LCB\_3} \\ +0xD170 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_00\_LCB\_3} \\ \cline{3-7} & & & L0A\_BCR\_DELAY & 49:38 & W & TTC BCR signal will be delayed by this many BCs \\ & & & L0A\_FRAME\_DELAY & 37:34 & W & By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock,\newline and some TTC L0A frames may be lost. Don't adjust this parameter while taking data.\newline \\ @@ -1376,39 +1386,40 @@ any & T & Any write to this register resets the TTC Emulator to the default stat & & & LCB\_DESTINATION\_MUX & 5:4 & W & Determines where the elink data is sent to:\newline 00: command decoder (use same command encoding format as trickle configuration)\newline 01: trickle memory (see phase2 documentation for command encoding format)\newline 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames)\newline 11: (invalid, don't use)\newline \\ & & & TRICKLE\_TRIG\_RUN & 3 & W & if enabled, trickle configuration is sent out continuously to the front-end\newline (use together with TTC\_GENERATE\_GATING\_EN for sending trickle configuration\newline continuously during a specified BC range. See also BC\_START, and BC\_STOP fields.)\newline \\ & & & TTC\_L0A\_ENABLE & 2 & W & enable generating L0A frames in response to TTC system signals \\ - & & & TRICKLE\_TRIG\_PULSE & 1 & T & writing to this register issues a single trickle trigger \\ & & & TTC\_GENERATE\_GATING\_ENABLE & 0 & W & enables generating trickle gating signal in response to TTC BCR.\newline TRICKLE\_TRIG\_RUN must also be enabled for the trickle configuration to work.\newline (See also BC\_START, and BC\_STOP fields) \newline \\ \hline -0xD140 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_00\_TRICKLE\_MEMORY\_CONFIG\_3} \\ +0xD180 & 0,1 & \multicolumn{2}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_00\_TRICKLE\_TRIGGER\_3} & +any & T & writing to this register issues a single trickle trigger \\ +\hline +0xD190 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_00\_TRICKLE\_MEMORY\_CONFIG\_3} \\ \cline{3-7} - & & & MOVE\_WRITE\_PTR & any & T & Writing to this register moves trickle configuration memory write pointer to WRITE\_PTR address.\newline The memory must not be actively read out when this signal is sent, otherwise it will be ignored.\newline \\ - & & & ACTUAL\_ADDRESS\_WIDTH & 57:48 & R & Actual valid address width of trickle configuration memory \\ + & & & MOVE\_WRITE\_PTR & any & T & Writing to this register moves trickle configuration memory write pointer to WRITE\_PTR address\newline \\ & & & WRITE\_PTR & 47:32 & W & Trickle configuration memory write pointer \\ & & & VALID\_DATA\_START & 31:16 & W & Start address of trickle configuration in trickle memory \\ & & & VALID\_DATA\_END & 15:0 & W & Stop address of trickle configuration in trickle memory (last valid byte) \\ \hline -0xD150 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_00\_MODULE\_MASK\_F\_C\_3} \\ +0xD1A0 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_00\_MODULE\_MASK\_F\_C\_3} \\ \cline{3-7} & & & HCC\_MASK & 63:48 & W & HCC* module mask \newline \\ & & & ABC\_MASK\_HCC\_E & 47:32 & W & Masks register commands with destination hcc\_id = 0xE\newline mask(i) <=> (abc\_id = i) \newline \\ & & & ABC\_MASK\_HCC\_D & 31:16 & W & Masks register commands with destination hcc\_id = 0xD\newline mask(i) <=> (abc\_id = i) \newline \\ & & & ABC\_MASK\_HCC\_C & 15:0 & W & Masks register commands with destination hcc\_id = 0xC\newline mask(i) <=> (abc\_id = i)\newline \\ \hline -0xD160 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_00\_ABC\_MODULE\_MASK\_B\_8\_3} \\ +0xD1B0 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_00\_ABC\_MODULE\_MASK\_B\_8\_3} \\ \cline{3-7} & & & ABC\_MASK\_HCC\_B & 63:48 & W & Masks register commands with destination hcc\_id = 0xB \newline mask(i) <=> (abc\_id = i) \newline \\ & & & ABC\_MASK\_HCC\_A & 47:32 & W & Masks register commands with destination hcc\_id = 0xA\newline mask(i) <=> (abc\_id = i) \newline \\ & & & ABC\_MASK\_HCC\_9 & 31:16 & W & Masks register commands with destination hcc\_id = 0x9\newline mask(i) <=> (abc\_id = i) \newline \\ & & & ABC\_MASK\_HCC\_8 & 15:0 & W & Masks register commands with destination hcc\_id = 0x8\newline mask(i) <=> (abc\_id = i)\newline \\ \hline -0xD170 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_00\_ABC\_MODULE\_MASK\_7\_4\_3} \\ +0xD1C0 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_00\_ABC\_MODULE\_MASK\_7\_4\_3} \\ \cline{3-7} & & & ABC\_MASK\_HCC\_7 & 63:48 & W & Masks register commands with destination hcc\_id = 0x7 \newline mask(i) <=> (abc\_id = i) \newline \\ & & & ABC\_MASK\_HCC\_6 & 47:32 & W & Masks register commands with destination hcc\_id = 0x6\newline mask(i) <=> (abc\_id = i) \newline \\ & & & ABC\_MASK\_HCC\_5 & 31:16 & W & Masks register commands with destination hcc\_id = 0x5\newline mask(i) <=> (abc\_id = i) \newline \\ & & & ABC\_MASK\_HCC\_4 & 15:0 & W & Masks register commands with destination hcc\_id = 0x4\newline mask(i) <=> (abc\_id = i)\newline \\ \hline -0xD180 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_00\_ABC\_MODULE\_MASK\_3\_0\_3} \\ +0xD1D0 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_00\_ABC\_MODULE\_MASK\_3\_0\_3} \\ \cline{3-7} & & & ABC\_MASK\_HCC\_3 & 63:48 & W & Masks register commands with destination hcc\_id = 0x3 \newline mask(i) <=> (abc\_id = i) \newline \\ & & & ABC\_MASK\_HCC\_2 & 47:32 & W & Masks register commands with destination hcc\_id = 0x2\newline mask(i) <=> (abc\_id = i) \newline \\ @@ -1417,7 +1428,7 @@ any & T & Any write to this register resets the TTC Emulator to the default stat \hline \multicolumn{7}{|c|}{ITK\_STRIPS\_R3 L1\_LINKS} \\ \hline -0xD190 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_R3L1\_LINK\_00\_R3L1\_0} \\ +0xD1E0 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_R3L1\_LINK\_00\_R3L1\_0} \\ \cline{3-7} & & & FRAME\_PHASE & 3:2 & W & phase of R3L1 frame with respect to TTC BCR signal \\ & & & L1\_ENABLE & 1 & W & enables sending TTC L1 signals to the front-end \\ @@ -1425,7 +1436,7 @@ any & T & Any write to this register resets the TTC Emulator to the default stat \hline \multicolumn{7}{|c|}{\ldots} \\ \hline -0xD1C0 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_R3L1\_LINK\_00\_R3L1\_3} \\ +0xD210 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_R3L1\_LINK\_00\_R3L1\_3} \\ \cline{3-7} & & & FRAME\_PHASE & 3:2 & W & phase of R3L1 frame with respect to TTC BCR signal \\ & & & L1\_ENABLE & 1 & W & enables sending TTC L1 signals to the front-end \\ @@ -1435,7 +1446,7 @@ any & T & Any write to this register resets the TTC Emulator to the default stat \hline \multicolumn{7}{|c|}{ITK\_STRIPS\_LCB\_LINKS} \\ \hline -0xE350 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_11\_LCB\_0} \\ +0xD620 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_03\_LCB\_0} \\ \cline{3-7} & & & L0A\_BCR\_DELAY & 49:38 & W & TTC BCR signal will be delayed by this many BCs \\ & & & L0A\_FRAME\_DELAY & 37:34 & W & By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock,\newline and some TTC L0A frames may be lost. Don't adjust this parameter while taking data.\newline \\ @@ -1445,39 +1456,40 @@ any & T & Any write to this register resets the TTC Emulator to the default stat & & & LCB\_DESTINATION\_MUX & 5:4 & W & Determines where the elink data is sent to:\newline 00: command decoder (use same command encoding format as trickle configuration)\newline 01: trickle memory (see phase2 documentation for command encoding format)\newline 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames)\newline 11: (invalid, don't use)\newline \\ & & & TRICKLE\_TRIG\_RUN & 3 & W & if enabled, trickle configuration is sent out continuously to the front-end\newline (use together with TTC\_GENERATE\_GATING\_EN for sending trickle configuration\newline continuously during a specified BC range. See also BC\_START, and BC\_STOP fields.)\newline \\ & & & TTC\_L0A\_ENABLE & 2 & W & enable generating L0A frames in response to TTC system signals \\ - & & & TRICKLE\_TRIG\_PULSE & 1 & T & writing to this register issues a single trickle trigger \\ & & & TTC\_GENERATE\_GATING\_ENABLE & 0 & W & enables generating trickle gating signal in response to TTC BCR.\newline TRICKLE\_TRIG\_RUN must also be enabled for the trickle configuration to work.\newline (See also BC\_START, and BC\_STOP fields) \newline \\ \hline -0xE360 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_11\_TRICKLE\_MEMORY\_CONFIG\_0} \\ +0xD630 & 0,1 & \multicolumn{2}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_03\_TRICKLE\_TRIGGER\_0} & +any & T & writing to this register issues a single trickle trigger \\ +\hline +0xD640 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_03\_TRICKLE\_MEMORY\_CONFIG\_0} \\ \cline{3-7} - & & & MOVE\_WRITE\_PTR & any & T & Writing to this register moves trickle configuration memory write pointer to WRITE\_PTR address.\newline The memory must not be actively read out when this signal is sent, otherwise it will be ignored.\newline \\ - & & & ACTUAL\_ADDRESS\_WIDTH & 57:48 & R & Actual valid address width of trickle configuration memory \\ + & & & MOVE\_WRITE\_PTR & any & T & Writing to this register moves trickle configuration memory write pointer to WRITE\_PTR address\newline \\ & & & WRITE\_PTR & 47:32 & W & Trickle configuration memory write pointer \\ & & & VALID\_DATA\_START & 31:16 & W & Start address of trickle configuration in trickle memory \\ & & & VALID\_DATA\_END & 15:0 & W & Stop address of trickle configuration in trickle memory (last valid byte) \\ \hline -0xE370 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_11\_MODULE\_MASK\_F\_C\_0} \\ +0xD650 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_03\_MODULE\_MASK\_F\_C\_0} \\ \cline{3-7} & & & HCC\_MASK & 63:48 & W & HCC* module mask \newline \\ & & & ABC\_MASK\_HCC\_E & 47:32 & W & Masks register commands with destination hcc\_id = 0xE\newline mask(i) <=> (abc\_id = i) \newline \\ & & & ABC\_MASK\_HCC\_D & 31:16 & W & Masks register commands with destination hcc\_id = 0xD\newline mask(i) <=> (abc\_id = i) \newline \\ & & & ABC\_MASK\_HCC\_C & 15:0 & W & Masks register commands with destination hcc\_id = 0xC\newline mask(i) <=> (abc\_id = i)\newline \\ \hline -0xE380 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_11\_ABC\_MODULE\_MASK\_B\_8\_0} \\ +0xD660 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_03\_ABC\_MODULE\_MASK\_B\_8\_0} \\ \cline{3-7} & & & ABC\_MASK\_HCC\_B & 63:48 & W & Masks register commands with destination hcc\_id = 0xB \newline mask(i) <=> (abc\_id = i) \newline \\ & & & ABC\_MASK\_HCC\_A & 47:32 & W & Masks register commands with destination hcc\_id = 0xA\newline mask(i) <=> (abc\_id = i) \newline \\ & & & ABC\_MASK\_HCC\_9 & 31:16 & W & Masks register commands with destination hcc\_id = 0x9\newline mask(i) <=> (abc\_id = i) \newline \\ & & & ABC\_MASK\_HCC\_8 & 15:0 & W & Masks register commands with destination hcc\_id = 0x8\newline mask(i) <=> (abc\_id = i)\newline \\ \hline -0xE390 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_11\_ABC\_MODULE\_MASK\_7\_4\_0} \\ +0xD670 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_03\_ABC\_MODULE\_MASK\_7\_4\_0} \\ \cline{3-7} & & & ABC\_MASK\_HCC\_7 & 63:48 & W & Masks register commands with destination hcc\_id = 0x7 \newline mask(i) <=> (abc\_id = i) \newline \\ & & & ABC\_MASK\_HCC\_6 & 47:32 & W & Masks register commands with destination hcc\_id = 0x6\newline mask(i) <=> (abc\_id = i) \newline \\ & & & ABC\_MASK\_HCC\_5 & 31:16 & W & Masks register commands with destination hcc\_id = 0x5\newline mask(i) <=> (abc\_id = i) \newline \\ & & & ABC\_MASK\_HCC\_4 & 15:0 & W & Masks register commands with destination hcc\_id = 0x4\newline mask(i) <=> (abc\_id = i)\newline \\ \hline -0xE3A0 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_11\_ABC\_MODULE\_MASK\_3\_0\_0} \\ +0xD680 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_03\_ABC\_MODULE\_MASK\_3\_0\_0} \\ \cline{3-7} & & & ABC\_MASK\_HCC\_3 & 63:48 & W & Masks register commands with destination hcc\_id = 0x3 \newline mask(i) <=> (abc\_id = i) \newline \\ & & & ABC\_MASK\_HCC\_2 & 47:32 & W & Masks register commands with destination hcc\_id = 0x2\newline mask(i) <=> (abc\_id = i) \newline \\ @@ -1486,7 +1498,7 @@ any & T & Any write to this register resets the TTC Emulator to the default stat \hline \multicolumn{7}{|c|}{\ldots} \\ \hline -0xE470 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_11\_LCB\_3} \\ +0xD770 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_03\_LCB\_3} \\ \cline{3-7} & & & L0A\_BCR\_DELAY & 49:38 & W & TTC BCR signal will be delayed by this many BCs \\ & & & L0A\_FRAME\_DELAY & 37:34 & W & By how many BCs to delay an L0A frame. Updating this register may result in brief loss of LCB lock,\newline and some TTC L0A frames may be lost. Don't adjust this parameter while taking data.\newline \\ @@ -1496,39 +1508,40 @@ any & T & Any write to this register resets the TTC Emulator to the default stat & & & LCB\_DESTINATION\_MUX & 5:4 & W & Determines where the elink data is sent to:\newline 00: command decoder (use same command encoding format as trickle configuration)\newline 01: trickle memory (see phase2 documentation for command encoding format)\newline 10: directly to LCB link (expecting software-encoded HCC*/ABC* frames)\newline 11: (invalid, don't use)\newline \\ & & & TRICKLE\_TRIG\_RUN & 3 & W & if enabled, trickle configuration is sent out continuously to the front-end\newline (use together with TTC\_GENERATE\_GATING\_EN for sending trickle configuration\newline continuously during a specified BC range. See also BC\_START, and BC\_STOP fields.)\newline \\ & & & TTC\_L0A\_ENABLE & 2 & W & enable generating L0A frames in response to TTC system signals \\ - & & & TRICKLE\_TRIG\_PULSE & 1 & T & writing to this register issues a single trickle trigger \\ & & & TTC\_GENERATE\_GATING\_ENABLE & 0 & W & enables generating trickle gating signal in response to TTC BCR.\newline TRICKLE\_TRIG\_RUN must also be enabled for the trickle configuration to work.\newline (See also BC\_START, and BC\_STOP fields) \newline \\ \hline -0xE480 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_11\_TRICKLE\_MEMORY\_CONFIG\_3} \\ +0xD780 & 0,1 & \multicolumn{2}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_03\_TRICKLE\_TRIGGER\_3} & +any & T & writing to this register issues a single trickle trigger \\ +\hline +0xD790 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_03\_TRICKLE\_MEMORY\_CONFIG\_3} \\ \cline{3-7} - & & & MOVE\_WRITE\_PTR & any & T & Writing to this register moves trickle configuration memory write pointer to WRITE\_PTR address.\newline The memory must not be actively read out when this signal is sent, otherwise it will be ignored.\newline \\ - & & & ACTUAL\_ADDRESS\_WIDTH & 57:48 & R & Actual valid address width of trickle configuration memory \\ + & & & MOVE\_WRITE\_PTR & any & T & Writing to this register moves trickle configuration memory write pointer to WRITE\_PTR address\newline \\ & & & WRITE\_PTR & 47:32 & W & Trickle configuration memory write pointer \\ & & & VALID\_DATA\_START & 31:16 & W & Start address of trickle configuration in trickle memory \\ & & & VALID\_DATA\_END & 15:0 & W & Stop address of trickle configuration in trickle memory (last valid byte) \\ \hline -0xE490 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_11\_MODULE\_MASK\_F\_C\_3} \\ +0xD7A0 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_03\_MODULE\_MASK\_F\_C\_3} \\ \cline{3-7} & & & HCC\_MASK & 63:48 & W & HCC* module mask \newline \\ & & & ABC\_MASK\_HCC\_E & 47:32 & W & Masks register commands with destination hcc\_id = 0xE\newline mask(i) <=> (abc\_id = i) \newline \\ & & & ABC\_MASK\_HCC\_D & 31:16 & W & Masks register commands with destination hcc\_id = 0xD\newline mask(i) <=> (abc\_id = i) \newline \\ & & & ABC\_MASK\_HCC\_C & 15:0 & W & Masks register commands with destination hcc\_id = 0xC\newline mask(i) <=> (abc\_id = i)\newline \\ \hline -0xE4A0 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_11\_ABC\_MODULE\_MASK\_B\_8\_3} \\ +0xD7B0 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_03\_ABC\_MODULE\_MASK\_B\_8\_3} \\ \cline{3-7} & & & ABC\_MASK\_HCC\_B & 63:48 & W & Masks register commands with destination hcc\_id = 0xB \newline mask(i) <=> (abc\_id = i) \newline \\ & & & ABC\_MASK\_HCC\_A & 47:32 & W & Masks register commands with destination hcc\_id = 0xA\newline mask(i) <=> (abc\_id = i) \newline \\ & & & ABC\_MASK\_HCC\_9 & 31:16 & W & Masks register commands with destination hcc\_id = 0x9\newline mask(i) <=> (abc\_id = i) \newline \\ & & & ABC\_MASK\_HCC\_8 & 15:0 & W & Masks register commands with destination hcc\_id = 0x8\newline mask(i) <=> (abc\_id = i)\newline \\ \hline -0xE4B0 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_11\_ABC\_MODULE\_MASK\_7\_4\_3} \\ +0xD7C0 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_03\_ABC\_MODULE\_MASK\_7\_4\_3} \\ \cline{3-7} & & & ABC\_MASK\_HCC\_7 & 63:48 & W & Masks register commands with destination hcc\_id = 0x7 \newline mask(i) <=> (abc\_id = i) \newline \\ & & & ABC\_MASK\_HCC\_6 & 47:32 & W & Masks register commands with destination hcc\_id = 0x6\newline mask(i) <=> (abc\_id = i) \newline \\ & & & ABC\_MASK\_HCC\_5 & 31:16 & W & Masks register commands with destination hcc\_id = 0x5\newline mask(i) <=> (abc\_id = i) \newline \\ & & & ABC\_MASK\_HCC\_4 & 15:0 & W & Masks register commands with destination hcc\_id = 0x4\newline mask(i) <=> (abc\_id = i)\newline \\ \hline -0xE4C0 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_11\_ABC\_MODULE\_MASK\_3\_0\_3} \\ +0xD7D0 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_STRIPS\_LCB\_LINKS\_03\_ABC\_MODULE\_MASK\_3\_0\_3} \\ \cline{3-7} & & & ABC\_MASK\_HCC\_3 & 63:48 & W & Masks register commands with destination hcc\_id = 0x3 \newline mask(i) <=> (abc\_id = i) \newline \\ & & & ABC\_MASK\_HCC\_2 & 47:32 & W & Masks register commands with destination hcc\_id = 0x2\newline mask(i) <=> (abc\_id = i) \newline \\ @@ -1537,7 +1550,7 @@ any & T & Any write to this register resets the TTC Emulator to the default stat \hline \multicolumn{7}{|c|}{ITK\_STRIPS\_R3 L1\_LINKS} \\ \hline -0xE4D0 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_R3L1\_LINK\_11\_R3L1\_0} \\ +0xD7E0 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_R3L1\_LINK\_03\_R3L1\_0} \\ \cline{3-7} & & & FRAME\_PHASE & 3:2 & W & phase of R3L1 frame with respect to TTC BCR signal \\ & & & L1\_ENABLE & 1 & W & enables sending TTC L1 signals to the front-end \\ @@ -1545,12 +1558,21 @@ any & T & Any write to this register resets the TTC Emulator to the default stat \hline \multicolumn{7}{|c|}{\ldots} \\ \hline -0xE500 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_R3L1\_LINK\_11\_R3L1\_3} \\ +0xD810 & 0,1 & \multicolumn{5}{l|}{CR\_ITK\_R3L1\_LINK\_03\_R3L1\_3} \\ \cline{3-7} & & & FRAME\_PHASE & 3:2 & W & phase of R3L1 frame with respect to TTC BCR signal \\ & & & L1\_ENABLE & 1 & W & enables sending TTC L1 signals to the front-end \\ & & & R3\_ENABLE & 0 & W & enables sending RoI R3 signals to the front-end \\ \hline +0xD820 & 0,1 & \multicolumn{2}{l|}{STRIPS\_R3\_TRIGGER} & +any & T & (for tests only) simulate R3 trigger (issues 4-5 sequential triggers) \\ +\hline +0xD830 & 0,1 & \multicolumn{2}{l|}{STRIPS\_L1\_TRIGGER} & +any & T & (for tests only) simulate L1 trigger (issues 4-5 sequential triggers) \\ +\hline +0xD840 & 0,1 & \multicolumn{2}{l|}{STRIPS\_R3L1\_TRIGGER} & +any & T & (for tests only) simulate simultaneous R3 and L1 trigger (issues 4-5 sequential triggers) \\ +\hline \multicolumn{7}{|c|}{MRO Dregisters} \\ \hline 0xF000 & 0 & \multicolumn{5}{l|}{MROD\_CTRL} \\ diff --git a/sources/templates/registers-4.10.html b/sources/templates/registers-4.10.html index 436e4dde3..7a309d58b 100644 --- a/sources/templates/registers-4.10.html +++ b/sources/templates/registers-4.10.html @@ -2296,9 +2296,15 @@ th { <td colspan="7" class="group">TTC_DEC_CTRLMON</td> </tr> <tr> - <td rowspan="9">0x8000</td> - <td rowspan="9">0</td> - <td rowspan="9">TTC_DEC_CTRL</td> + <td rowspan="10">0x8000</td> + <td rowspan="10">0</td> + <td rowspan="10">TTC_DEC_CTRL</td> + <td class="name">L1A_DELAY</td> + <td class="range">30..27</td> + <td class="type">W</td> + <td class="desc">Number of BC to delay the L1A distribution to the frontends</td> + </tr> + <tr> <td class="name">BCID_ONBCR</td> <td class="range">26..15</td> <td class="type">W</td> @@ -4270,20 +4276,35 @@ th { <td colspan="7" class="group">ITK_STRIPS_CTRL</td> </tr> <tr> - <td rowspan="2">0xD000</td> - <td rowspan="2">0,1</td> - <td rowspan="2">GLOBAL_STRIPS_CONFIG</td> - <td class="name">TRICKLE_TRIG_PULSE</td> - <td class="range">any</td> - <td class="type">T</td> - <td class="desc">writing to this register issues a single trickle trigger for every LCB link connected to this FELIX device</td> + <td rowspan="3">0xD000</td> + <td rowspan="3">0,1</td> + <td rowspan="3">GLOBAL_STRIPS_CONFIG</td> + <td class="name">TEST_MODULE_MASK</td> + <td class="range">15..11</td> + <td class="type">W</td> + <td class="desc">(for tests only) contains R3 mask for the simulated trigger data</td> + </tr> + <tr> + <td class="name">TEST_R3L1_TAG</td> + <td class="range">10..4</td> + <td class="type">W</td> + <td class="desc">(for tests only) contains R3 or L1 tag for the simulated trigger data</td> </tr> <tr> <td class="name">TTC_GENERATE_GATING_ENABLE</td> - <td class="range">0</td> + <td class="range">1</td> <td class="type">W</td> <td class="desc">Global control for gating signal generation. Enables generating trickle gating signal in response to TTC BCR. TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. (See also BC_START, and BC_STOP fields)</td> </tr> + <tr> + <td rowspan="1">0xD010</td> + <td rowspan="1">0,1</td> + <td rowspan="1">GLOBAL_TRICKLE_TRIGGER</td> + <td class="name"></td> + <td class="range">any</td> + <td class="type">T</td> + <td class="desc">writing to this register issues a single trickle trigger for every LCB link connected to this FELIX device</td> + </tr> <tr> <td colspan="7" class="group">ITK_STRIPS_GBT</td> </tr> @@ -4291,9 +4312,9 @@ th { <td colspan="7" class="group">ITK_STRIPS_LCB_LINKS</td> </tr> <tr> - <td rowspan="10">0xD010</td> - <td rowspan="10">0,1</td> - <td rowspan="10">CR_ITK_STRIPS_LCB_LINKS_00_LCB_0</td> + <td rowspan="9">0xD020</td> + <td rowspan="9">0,1</td> + <td rowspan="9">CR_ITK_STRIPS_LCB_LINKS_00_LCB_0</td> <td class="name">L0A_BCR_DELAY</td> <td class="range">49..38</td> <td class="type">W</td> @@ -4341,12 +4362,6 @@ th { <td class="type">W</td> <td class="desc">enable generating L0A frames in response to TTC system signals</td> </tr> - <tr> - <td class="name">TRICKLE_TRIG_PULSE</td> - <td class="range">1</td> - <td class="type">T</td> - <td class="desc">writing to this register issues a single trickle trigger</td> - </tr> <tr> <td class="name">TTC_GENERATE_GATING_ENABLE</td> <td class="range">0</td> @@ -4354,19 +4369,22 @@ th { <td class="desc">enables generating trickle gating signal in response to TTC BCR.<br/>TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work.<br/>(See also BC_START, and BC_STOP fields) <br/></td> </tr> <tr> - <td rowspan="5">0xD020</td> - <td rowspan="5">0,1</td> - <td rowspan="5">CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_0</td> - <td class="name">MOVE_WRITE_PTR</td> + <td rowspan="1">0xD030</td> + <td rowspan="1">0,1</td> + <td rowspan="1">CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_TRIGGER_0</td> + <td class="name"></td> <td class="range">any</td> <td class="type">T</td> - <td class="desc">Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address.<br/>The memory must not be actively read out when this signal is sent, otherwise it will be ignored.<br/></td> + <td class="desc">writing to this register issues a single trickle trigger</td> </tr> <tr> - <td class="name">ACTUAL_ADDRESS_WIDTH</td> - <td class="range">57..48</td> - <td class="type">R</td> - <td class="desc">Actual valid address width of trickle configuration memory</td> + <td rowspan="4">0xD040</td> + <td rowspan="4">0,1</td> + <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_0</td> + <td class="name">MOVE_WRITE_PTR</td> + <td class="range">any</td> + <td class="type">T</td> + <td class="desc">Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address<br/></td> </tr> <tr> <td class="name">WRITE_PTR</td> @@ -4387,7 +4405,7 @@ th { <td class="desc">Stop address of trickle configuration in trickle memory (last valid byte)</td> </tr> <tr> - <td rowspan="4">0xD030</td> + <td rowspan="4">0xD050</td> <td rowspan="4">0,1</td> <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_00_MODULE_MASK_F_C_0</td> <td class="name">HCC_MASK</td> @@ -4414,7 +4432,7 @@ th { <td class="desc">Masks register commands with destination hcc_id = 0xC<br/>mask(i) <=> (abc_id = i)<br/></td> </tr> <tr> - <td rowspan="4">0xD040</td> + <td rowspan="4">0xD060</td> <td rowspan="4">0,1</td> <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_B_8_0</td> <td class="name">ABC_MASK_HCC_B</td> @@ -4441,7 +4459,7 @@ th { <td class="desc">Masks register commands with destination hcc_id = 0x8<br/>mask(i) <=> (abc_id = i)<br/></td> </tr> <tr> - <td rowspan="4">0xD050</td> + <td rowspan="4">0xD070</td> <td rowspan="4">0,1</td> <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_7_4_0</td> <td class="name">ABC_MASK_HCC_7</td> @@ -4468,7 +4486,7 @@ th { <td class="desc">Masks register commands with destination hcc_id = 0x4<br/>mask(i) <=> (abc_id = i)<br/></td> </tr> <tr> - <td rowspan="4">0xD060</td> + <td rowspan="4">0xD080</td> <td rowspan="4">0,1</td> <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_3_0_0</td> <td class="name">ABC_MASK_HCC_3</td> @@ -4498,9 +4516,9 @@ th { <td colspan="7" class="group">...</td> </tr> <tr> - <td rowspan="10">0xD130</td> - <td rowspan="10">0,1</td> - <td rowspan="10">CR_ITK_STRIPS_LCB_LINKS_00_LCB_3</td> + <td rowspan="9">0xD170</td> + <td rowspan="9">0,1</td> + <td rowspan="9">CR_ITK_STRIPS_LCB_LINKS_00_LCB_3</td> <td class="name">L0A_BCR_DELAY</td> <td class="range">49..38</td> <td class="type">W</td> @@ -4548,12 +4566,6 @@ th { <td class="type">W</td> <td class="desc">enable generating L0A frames in response to TTC system signals</td> </tr> - <tr> - <td class="name">TRICKLE_TRIG_PULSE</td> - <td class="range">1</td> - <td class="type">T</td> - <td class="desc">writing to this register issues a single trickle trigger</td> - </tr> <tr> <td class="name">TTC_GENERATE_GATING_ENABLE</td> <td class="range">0</td> @@ -4561,19 +4573,22 @@ th { <td class="desc">enables generating trickle gating signal in response to TTC BCR.<br/>TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work.<br/>(See also BC_START, and BC_STOP fields) <br/></td> </tr> <tr> - <td rowspan="5">0xD140</td> - <td rowspan="5">0,1</td> - <td rowspan="5">CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_3</td> - <td class="name">MOVE_WRITE_PTR</td> + <td rowspan="1">0xD180</td> + <td rowspan="1">0,1</td> + <td rowspan="1">CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_TRIGGER_3</td> + <td class="name"></td> <td class="range">any</td> <td class="type">T</td> - <td class="desc">Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address.<br/>The memory must not be actively read out when this signal is sent, otherwise it will be ignored.<br/></td> + <td class="desc">writing to this register issues a single trickle trigger</td> </tr> <tr> - <td class="name">ACTUAL_ADDRESS_WIDTH</td> - <td class="range">57..48</td> - <td class="type">R</td> - <td class="desc">Actual valid address width of trickle configuration memory</td> + <td rowspan="4">0xD190</td> + <td rowspan="4">0,1</td> + <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_3</td> + <td class="name">MOVE_WRITE_PTR</td> + <td class="range">any</td> + <td class="type">T</td> + <td class="desc">Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address<br/></td> </tr> <tr> <td class="name">WRITE_PTR</td> @@ -4594,7 +4609,7 @@ th { <td class="desc">Stop address of trickle configuration in trickle memory (last valid byte)</td> </tr> <tr> - <td rowspan="4">0xD150</td> + <td rowspan="4">0xD1A0</td> <td rowspan="4">0,1</td> <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_00_MODULE_MASK_F_C_3</td> <td class="name">HCC_MASK</td> @@ -4621,7 +4636,7 @@ th { <td class="desc">Masks register commands with destination hcc_id = 0xC<br/>mask(i) <=> (abc_id = i)<br/></td> </tr> <tr> - <td rowspan="4">0xD160</td> + <td rowspan="4">0xD1B0</td> <td rowspan="4">0,1</td> <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_B_8_3</td> <td class="name">ABC_MASK_HCC_B</td> @@ -4648,7 +4663,7 @@ th { <td class="desc">Masks register commands with destination hcc_id = 0x8<br/>mask(i) <=> (abc_id = i)<br/></td> </tr> <tr> - <td rowspan="4">0xD170</td> + <td rowspan="4">0xD1C0</td> <td rowspan="4">0,1</td> <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_7_4_3</td> <td class="name">ABC_MASK_HCC_7</td> @@ -4675,7 +4690,7 @@ th { <td class="desc">Masks register commands with destination hcc_id = 0x4<br/>mask(i) <=> (abc_id = i)<br/></td> </tr> <tr> - <td rowspan="4">0xD180</td> + <td rowspan="4">0xD1D0</td> <td rowspan="4">0,1</td> <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_3_0_3</td> <td class="name">ABC_MASK_HCC_3</td> @@ -4705,7 +4720,7 @@ th { <td colspan="7" class="group">ITK_STRIPS_R3 L1_LINKS</td> </tr> <tr> - <td rowspan="3">0xD190</td> + <td rowspan="3">0xD1E0</td> <td rowspan="3">0,1</td> <td rowspan="3">CR_ITK_R3L1_LINK_00_R3L1_0</td> <td class="name">FRAME_PHASE</td> @@ -4729,7 +4744,7 @@ th { <td colspan="7" class="group">...</td> </tr> <tr> - <td rowspan="3">0xD1C0</td> + <td rowspan="3">0xD210</td> <td rowspan="3">0,1</td> <td rowspan="3">CR_ITK_R3L1_LINK_00_R3L1_3</td> <td class="name">FRAME_PHASE</td> @@ -4756,9 +4771,9 @@ th { <td colspan="7" class="group">ITK_STRIPS_LCB_LINKS</td> </tr> <tr> - <td rowspan="10">0xE350</td> - <td rowspan="10">0,1</td> - <td rowspan="10">CR_ITK_STRIPS_LCB_LINKS_11_LCB_0</td> + <td rowspan="9">0xD620</td> + <td rowspan="9">0,1</td> + <td rowspan="9">CR_ITK_STRIPS_LCB_LINKS_03_LCB_0</td> <td class="name">L0A_BCR_DELAY</td> <td class="range">49..38</td> <td class="type">W</td> @@ -4806,12 +4821,6 @@ th { <td class="type">W</td> <td class="desc">enable generating L0A frames in response to TTC system signals</td> </tr> - <tr> - <td class="name">TRICKLE_TRIG_PULSE</td> - <td class="range">1</td> - <td class="type">T</td> - <td class="desc">writing to this register issues a single trickle trigger</td> - </tr> <tr> <td class="name">TTC_GENERATE_GATING_ENABLE</td> <td class="range">0</td> @@ -4819,19 +4828,22 @@ th { <td class="desc">enables generating trickle gating signal in response to TTC BCR.<br/>TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work.<br/>(See also BC_START, and BC_STOP fields) <br/></td> </tr> <tr> - <td rowspan="5">0xE360</td> - <td rowspan="5">0,1</td> - <td rowspan="5">CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_0</td> - <td class="name">MOVE_WRITE_PTR</td> + <td rowspan="1">0xD630</td> + <td rowspan="1">0,1</td> + <td rowspan="1">CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_TRIGGER_0</td> + <td class="name"></td> <td class="range">any</td> <td class="type">T</td> - <td class="desc">Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address.<br/>The memory must not be actively read out when this signal is sent, otherwise it will be ignored.<br/></td> + <td class="desc">writing to this register issues a single trickle trigger</td> </tr> <tr> - <td class="name">ACTUAL_ADDRESS_WIDTH</td> - <td class="range">57..48</td> - <td class="type">R</td> - <td class="desc">Actual valid address width of trickle configuration memory</td> + <td rowspan="4">0xD640</td> + <td rowspan="4">0,1</td> + <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_0</td> + <td class="name">MOVE_WRITE_PTR</td> + <td class="range">any</td> + <td class="type">T</td> + <td class="desc">Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address<br/></td> </tr> <tr> <td class="name">WRITE_PTR</td> @@ -4852,9 +4864,9 @@ th { <td class="desc">Stop address of trickle configuration in trickle memory (last valid byte)</td> </tr> <tr> - <td rowspan="4">0xE370</td> + <td rowspan="4">0xD650</td> <td rowspan="4">0,1</td> - <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_0</td> + <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_03_MODULE_MASK_F_C_0</td> <td class="name">HCC_MASK</td> <td class="range">63..48</td> <td class="type">W</td> @@ -4879,9 +4891,9 @@ th { <td class="desc">Masks register commands with destination hcc_id = 0xC<br/>mask(i) <=> (abc_id = i)<br/></td> </tr> <tr> - <td rowspan="4">0xE380</td> + <td rowspan="4">0xD660</td> <td rowspan="4">0,1</td> - <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_0</td> + <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_B_8_0</td> <td class="name">ABC_MASK_HCC_B</td> <td class="range">63..48</td> <td class="type">W</td> @@ -4906,9 +4918,9 @@ th { <td class="desc">Masks register commands with destination hcc_id = 0x8<br/>mask(i) <=> (abc_id = i)<br/></td> </tr> <tr> - <td rowspan="4">0xE390</td> + <td rowspan="4">0xD670</td> <td rowspan="4">0,1</td> - <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_0</td> + <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_7_4_0</td> <td class="name">ABC_MASK_HCC_7</td> <td class="range">63..48</td> <td class="type">W</td> @@ -4933,9 +4945,9 @@ th { <td class="desc">Masks register commands with destination hcc_id = 0x4<br/>mask(i) <=> (abc_id = i)<br/></td> </tr> <tr> - <td rowspan="4">0xE3A0</td> + <td rowspan="4">0xD680</td> <td rowspan="4">0,1</td> - <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_0</td> + <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_3_0_0</td> <td class="name">ABC_MASK_HCC_3</td> <td class="range">63..48</td> <td class="type">W</td> @@ -4963,9 +4975,9 @@ th { <td colspan="7" class="group">...</td> </tr> <tr> - <td rowspan="10">0xE470</td> - <td rowspan="10">0,1</td> - <td rowspan="10">CR_ITK_STRIPS_LCB_LINKS_11_LCB_3</td> + <td rowspan="9">0xD770</td> + <td rowspan="9">0,1</td> + <td rowspan="9">CR_ITK_STRIPS_LCB_LINKS_03_LCB_3</td> <td class="name">L0A_BCR_DELAY</td> <td class="range">49..38</td> <td class="type">W</td> @@ -5013,12 +5025,6 @@ th { <td class="type">W</td> <td class="desc">enable generating L0A frames in response to TTC system signals</td> </tr> - <tr> - <td class="name">TRICKLE_TRIG_PULSE</td> - <td class="range">1</td> - <td class="type">T</td> - <td class="desc">writing to this register issues a single trickle trigger</td> - </tr> <tr> <td class="name">TTC_GENERATE_GATING_ENABLE</td> <td class="range">0</td> @@ -5026,19 +5032,22 @@ th { <td class="desc">enables generating trickle gating signal in response to TTC BCR.<br/>TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work.<br/>(See also BC_START, and BC_STOP fields) <br/></td> </tr> <tr> - <td rowspan="5">0xE480</td> - <td rowspan="5">0,1</td> - <td rowspan="5">CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_3</td> - <td class="name">MOVE_WRITE_PTR</td> + <td rowspan="1">0xD780</td> + <td rowspan="1">0,1</td> + <td rowspan="1">CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_TRIGGER_3</td> + <td class="name"></td> <td class="range">any</td> <td class="type">T</td> - <td class="desc">Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address.<br/>The memory must not be actively read out when this signal is sent, otherwise it will be ignored.<br/></td> + <td class="desc">writing to this register issues a single trickle trigger</td> </tr> <tr> - <td class="name">ACTUAL_ADDRESS_WIDTH</td> - <td class="range">57..48</td> - <td class="type">R</td> - <td class="desc">Actual valid address width of trickle configuration memory</td> + <td rowspan="4">0xD790</td> + <td rowspan="4">0,1</td> + <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_3</td> + <td class="name">MOVE_WRITE_PTR</td> + <td class="range">any</td> + <td class="type">T</td> + <td class="desc">Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address<br/></td> </tr> <tr> <td class="name">WRITE_PTR</td> @@ -5059,9 +5068,9 @@ th { <td class="desc">Stop address of trickle configuration in trickle memory (last valid byte)</td> </tr> <tr> - <td rowspan="4">0xE490</td> + <td rowspan="4">0xD7A0</td> <td rowspan="4">0,1</td> - <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_3</td> + <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_03_MODULE_MASK_F_C_3</td> <td class="name">HCC_MASK</td> <td class="range">63..48</td> <td class="type">W</td> @@ -5086,9 +5095,9 @@ th { <td class="desc">Masks register commands with destination hcc_id = 0xC<br/>mask(i) <=> (abc_id = i)<br/></td> </tr> <tr> - <td rowspan="4">0xE4A0</td> + <td rowspan="4">0xD7B0</td> <td rowspan="4">0,1</td> - <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_3</td> + <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_B_8_3</td> <td class="name">ABC_MASK_HCC_B</td> <td class="range">63..48</td> <td class="type">W</td> @@ -5113,9 +5122,9 @@ th { <td class="desc">Masks register commands with destination hcc_id = 0x8<br/>mask(i) <=> (abc_id = i)<br/></td> </tr> <tr> - <td rowspan="4">0xE4B0</td> + <td rowspan="4">0xD7C0</td> <td rowspan="4">0,1</td> - <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_3</td> + <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_7_4_3</td> <td class="name">ABC_MASK_HCC_7</td> <td class="range">63..48</td> <td class="type">W</td> @@ -5140,9 +5149,9 @@ th { <td class="desc">Masks register commands with destination hcc_id = 0x4<br/>mask(i) <=> (abc_id = i)<br/></td> </tr> <tr> - <td rowspan="4">0xE4C0</td> + <td rowspan="4">0xD7D0</td> <td rowspan="4">0,1</td> - <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_3</td> + <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_3_0_3</td> <td class="name">ABC_MASK_HCC_3</td> <td class="range">63..48</td> <td class="type">W</td> @@ -5170,9 +5179,9 @@ th { <td colspan="7" class="group">ITK_STRIPS_R3 L1_LINKS</td> </tr> <tr> - <td rowspan="3">0xE4D0</td> + <td rowspan="3">0xD7E0</td> <td rowspan="3">0,1</td> - <td rowspan="3">CR_ITK_R3L1_LINK_11_R3L1_0</td> + <td rowspan="3">CR_ITK_R3L1_LINK_03_R3L1_0</td> <td class="name">FRAME_PHASE</td> <td class="range">3..2</td> <td class="type">W</td> @@ -5194,9 +5203,9 @@ th { <td colspan="7" class="group">...</td> </tr> <tr> - <td rowspan="3">0xE500</td> + <td rowspan="3">0xD810</td> <td rowspan="3">0,1</td> - <td rowspan="3">CR_ITK_R3L1_LINK_11_R3L1_3</td> + <td rowspan="3">CR_ITK_R3L1_LINK_03_R3L1_3</td> <td class="name">FRAME_PHASE</td> <td class="range">3..2</td> <td class="type">W</td> @@ -5214,6 +5223,33 @@ th { <td class="type">W</td> <td class="desc">enables sending RoI R3 signals to the front-end</td> </tr> + <tr> + <td rowspan="1">0xD820</td> + <td rowspan="1">0,1</td> + <td rowspan="1">STRIPS_R3_TRIGGER</td> + <td class="name"></td> + <td class="range">any</td> + <td class="type">T</td> + <td class="desc">(for tests only) simulate R3 trigger (issues 4-5 sequential triggers)</td> + </tr> + <tr> + <td rowspan="1">0xD830</td> + <td rowspan="1">0,1</td> + <td rowspan="1">STRIPS_L1_TRIGGER</td> + <td class="name"></td> + <td class="range">any</td> + <td class="type">T</td> + <td class="desc">(for tests only) simulate L1 trigger (issues 4-5 sequential triggers)</td> + </tr> + <tr> + <td rowspan="1">0xD840</td> + <td rowspan="1">0,1</td> + <td rowspan="1">STRIPS_R3L1_TRIGGER</td> + <td class="name"></td> + <td class="range">any</td> + <td class="type">T</td> + <td class="desc">(for tests only) simulate simultaneous R3 and L1 trigger (issues 4-5 sequential triggers)</td> + </tr> <tr> <td colspan="7" class="group">MRO Dregisters</td> </tr> diff --git a/sources/templates/registers-4.10.yaml b/sources/templates/registers-4.10.yaml index 086b0ae78..08d8eaf6c 100644 --- a/sources/templates/registers-4.10.yaml +++ b/sources/templates/registers-4.10.yaml @@ -796,41 +796,59 @@ EGROUP_FROMHOST: # ----------------------- ITk strips link configuration start ----------------------- -# Global trickle trigger (all LCB links on this device) - -# Maximum LCB links count: - -# x24 lpGBT links -# x4 LCB links per stave -# x4 R3L1 links per stave -# => 96 LCB links -# => 96 R3L1 links - - - ITK_STRIPS_CTRL: - entries: + entries: - name: GLOBAL_STRIPS_CONFIG desc: Synchronous trigger for all LCB links on device type: W bitfield: - - range: any - type: T - name: TRICKLE_TRIG_PULSE - desc: writing to this register issues a single trickle trigger for every LCB link connected to this FELIX device - value: 1 - - range: 0 + - range: 15..11 + type: W + name: TEST_MODULE_MASK + desc: (for tests only) contains R3 mask for the simulated trigger data + default: 0x0 + - range: 10..4 + type: W + name: TEST_R3L1_TAG + desc: (for tests only) contains R3 or L1 tag for the simulated trigger data + default: 0x0 + - range: 1 type: W name: TTC_GENERATE_GATING_ENABLE desc: Global control for gating signal generation. Enables generating trickle gating signal in response to TTC BCR. TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. (See also BC_START, and BC_STOP fields) - default: 0x0 - + default: 0x0 + - name: GLOBAL_TRICKLE_TRIGGER + type: T + bitfield: + - range: any + value: 1 + desc: writing to this register issues a single trickle trigger for every LCB link connected to this FELIX device + - ref: ITK_STRIPS_GBT + - name: STRIPS_R3_TRIGGER + type: T + bitfield: + - range: any + value: 1 + desc: (for tests only) simulate R3 trigger (issues 4-5 sequential triggers) + - name: STRIPS_L1_TRIGGER + type: T + bitfield: + - range: any + desc: (for tests only) simulate L1 trigger (issues 4-5 sequential triggers) + value: 1 + - name: STRIPS_R3L1_TRIGGER + type: T + bitfield: + - range: any + desc: (for tests only) simulate simultaneous R3 and L1 trigger (issues 4-5 sequential triggers) + value: 1 + ITK_STRIPS_GBT: - number: 12 + number: 4 format_name: STRIPS generate: (GBT_NUM > {index:1} and FIRMWARE_MODE = 5) entries: @@ -898,11 +916,6 @@ ITK_STRIPS_LCB_LINKS: name: TTC_L0A_ENABLE default: 0x0 desc: enable generating L0A frames in response to TTC system signals - - range: 1 - type: T - name: TRICKLE_TRIG_PULSE - value: 1 - desc: writing to this register issues a single trickle trigger - range: 0 type: W name: TTC_GENERATE_GATING_ENABLE @@ -911,6 +924,14 @@ ITK_STRIPS_LCB_LINKS: enables generating trickle gating signal in response to TTC BCR. TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. (See also BC_START, and BC_STOP fields) + - name: TRICKLE_TRIGGER + format_name: CR_{parent}_{name}_{index} + type_name: TRICKLE_TRIGGER + type: T + bitfield: + - range: any + desc: writing to this register issues a single trickle trigger + value: 1 - name: TRICKLE_MEMORY_CONFIG format_name: CR_{parent}_{name}_{index} type_name: LCB_TRICKLE_CONFIG @@ -922,13 +943,7 @@ ITK_STRIPS_LCB_LINKS: name: MOVE_WRITE_PTR value: 1 desc: | - Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - range: 57..48 - type: R - name: ACTUAL_ADDRESS_WIDTH - value: std_logic_vector(to_unsigned(18,10)) - desc: Actual valid address width of trickle configuration memory + Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address - range: 47..32 type: W name: WRITE_PTR @@ -1095,45 +1110,7 @@ ITK_STRIPS_LCB_LINKS: desc: | Masks register commands with destination hcc_id = 0x0 mask(i) <=> (abc_id = i) - # - name: LINK_STATS - # format_name: CR_{parent}_{name} - # type_name: LCB_STATS - # desc: LCB link statistics - # type: R - # bitfield: - # - range: 48..32 - # type: R - # name: TTC_FRAME_RECEIVED_COUNT - # default: 0x0 - # desc: The number of received BCR and L0 frames from TTC system since last reset - # - range: 31..16 - # type: R - # name: TTC_FRAME_SENT_COUNT - # default: 0x0 - # desc: The number of TTC BCR and L0 frames forwarded to the front-end since last reset - # - range: 15..0 - # type: R - # name: CMD_DECODER_ERROR_COUNT - # default: 0x0 - # desc: The number of errors encountered by LCB command decoder since last reset - # - name: ELINK_RECENT_DATA - # format_name: CR_{parent}_{name} - # desc: Most recent data sent into this elink from host (MSB = oldest) - # type: R - # bitfield: - # - range: any - # type: R - # name: value - # default: 0x0 - # - name: ELINK_BYTE_COUNT - # format_name: CR_{parent}_{name} - # desc: The number of bytes written to the elink since last reset - # type: R - # bitfield: - # - range: any - # type: R - # name: value - # default: 0x0 + ITK_STRIPS_R3L1_LINKS: number: 4 @@ -1161,66 +1138,7 @@ ITK_STRIPS_R3L1_LINKS: name: R3_ENABLE default: 0x0 desc: enables sending RoI R3 signals to the front-end - # - name: LINK_STATUS - # format_name: CR_{parent}_{name}_{index} - # type_name: R3L1_STATUS - # desc: R3L1 link status - # type: R - # bitfield: - # - range: 1 - # type: R - # name: L1_FIFO_OVERFLOW - # default: 0x0 - # desc: Whether overflow condition occured in L1 frame FIFO - # - range: 0 - # type: R - # name: R3_FIFO_OVERFLOW - # default: 0x0 - # desc: Whether overflow condition occured in R3 frame FIFO - # - name: LINK_STATS - # format_name: CR_{parent}_{name}_{index} - # type_name: R3L1_STATS - # desc: R3L1 link statistics - # type: R - # bitfield: - # - range: 63..48 - # type: R - # name: L1_RECEIVED_COUNT - # default: 0x0 - # desc: The number of L1 frames received from TTC system since last reset - # - range: 47..32 - # type: R - # name: R3_RECEIVED_COUNT - # default: 0x0 - # desc: The number of R3 frames received from RoI system since last reset - # - range: 31..16 - # type: R - # name: L1_SENT_COUNT - # default: 0x0 - # desc: The number of L1 frames sent to front-end since last reset - # - range: 15..0 - # type: R - # name: R3_SENT_COUNT - # default: 0x0 - # desc: The number of R3 frames sent to front-end since last reset - # - name: ELINK_RECENT_DATA - # format_name: CR_{parent}_{name}_{index} - # desc: Most recent data sent into this elink from host (MSB = oldest) - # type: R - # bitfield: - # - range: any - # type: R - # name: value - # default: 0x0 - # - name: ELINK_BYTE_COUNT - # format_name: CR_{parent}_{name}_{index} - # desc: The number of bytes written to the elink since last reset - # type: R - # bitfield: - # - range: any - # type: R - # name: value - # default: 0x0 + # ----------------------- ITk strips link configuration end ----------------------- @@ -2092,6 +2010,10 @@ TTC_DEC_CTRLMON: type_name: TTC_DEC_CTRLS type: W bitfield: + - range: 30..27 + name: L1A_DELAY + type: W + desc: Number of BC to delay the L1A distribution to the frontends - range: 26..15 name: BCID_ONBCR type: W diff --git a/sources/templates/registers-5.0.html b/sources/templates/registers-5.0.html index 553333bc5..67f3dc5a4 100644 --- a/sources/templates/registers-5.0.html +++ b/sources/templates/registers-5.0.html @@ -2278,9 +2278,15 @@ th { <td colspan="7" class="group">TTC_DEC_CTRLMON</td> </tr> <tr> - <td rowspan="9">0x7000</td> - <td rowspan="9">0</td> - <td rowspan="9">TTC_DEC_CTRL</td> + <td rowspan="10">0x7000</td> + <td rowspan="10">0</td> + <td rowspan="10">TTC_DEC_CTRL</td> + <td class="name">L1A_DELAY</td> + <td class="range">30..27</td> + <td class="type">W</td> + <td class="desc">Number of BC to delay the L1A distribution to the frontends</td> + </tr> + <tr> <td class="name">BCID_ONBCR</td> <td class="range">26..15</td> <td class="type">W</td> @@ -4252,20 +4258,35 @@ th { <td colspan="7" class="group">ITK_STRIPS_CTRL</td> </tr> <tr> - <td rowspan="2">0xD000</td> - <td rowspan="2">0,1</td> - <td rowspan="2">GLOBAL_STRIPS_CONFIG</td> - <td class="name">TRICKLE_TRIG_PULSE</td> - <td class="range">any</td> - <td class="type">T</td> - <td class="desc">writing to this register issues a single trickle trigger for every LCB link connected to this FELIX device</td> + <td rowspan="3">0xD000</td> + <td rowspan="3">0,1</td> + <td rowspan="3">GLOBAL_STRIPS_CONFIG</td> + <td class="name">TEST_MODULE_MASK</td> + <td class="range">15..11</td> + <td class="type">W</td> + <td class="desc">(for tests only) contains R3 mask for the simulated trigger data</td> + </tr> + <tr> + <td class="name">TEST_R3L1_TAG</td> + <td class="range">10..4</td> + <td class="type">W</td> + <td class="desc">(for tests only) contains R3 or L1 tag for the simulated trigger data</td> </tr> <tr> <td class="name">TTC_GENERATE_GATING_ENABLE</td> - <td class="range">0</td> + <td class="range">1</td> <td class="type">W</td> <td class="desc">Global control for gating signal generation. Enables generating trickle gating signal in response to TTC BCR. TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. (See also BC_START, and BC_STOP fields)</td> </tr> + <tr> + <td rowspan="1">0xD010</td> + <td rowspan="1">0,1</td> + <td rowspan="1">GLOBAL_TRICKLE_TRIGGER</td> + <td class="name"></td> + <td class="range">any</td> + <td class="type">T</td> + <td class="desc">writing to this register issues a single trickle trigger for every LCB link connected to this FELIX device</td> + </tr> <tr> <td colspan="7" class="group">ITK_STRIPS_GBT</td> </tr> @@ -4273,9 +4294,9 @@ th { <td colspan="7" class="group">ITK_STRIPS_LCB_LINKS</td> </tr> <tr> - <td rowspan="10">0xD010</td> - <td rowspan="10">0,1</td> - <td rowspan="10">CR_ITK_STRIPS_LCB_LINKS_00_LCB_0</td> + <td rowspan="9">0xD020</td> + <td rowspan="9">0,1</td> + <td rowspan="9">CR_ITK_STRIPS_LCB_LINKS_00_LCB_0</td> <td class="name">L0A_BCR_DELAY</td> <td class="range">49..38</td> <td class="type">W</td> @@ -4323,12 +4344,6 @@ th { <td class="type">W</td> <td class="desc">enable generating L0A frames in response to TTC system signals</td> </tr> - <tr> - <td class="name">TRICKLE_TRIG_PULSE</td> - <td class="range">1</td> - <td class="type">T</td> - <td class="desc">writing to this register issues a single trickle trigger</td> - </tr> <tr> <td class="name">TTC_GENERATE_GATING_ENABLE</td> <td class="range">0</td> @@ -4336,19 +4351,22 @@ th { <td class="desc">enables generating trickle gating signal in response to TTC BCR.<br/>TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work.<br/>(See also BC_START, and BC_STOP fields) <br/></td> </tr> <tr> - <td rowspan="5">0xD020</td> - <td rowspan="5">0,1</td> - <td rowspan="5">CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_0</td> - <td class="name">MOVE_WRITE_PTR</td> + <td rowspan="1">0xD030</td> + <td rowspan="1">0,1</td> + <td rowspan="1">CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_TRIGGER_0</td> + <td class="name"></td> <td class="range">any</td> <td class="type">T</td> - <td class="desc">Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address.<br/>The memory must not be actively read out when this signal is sent, otherwise it will be ignored.<br/></td> + <td class="desc">writing to this register issues a single trickle trigger</td> </tr> <tr> - <td class="name">ACTUAL_ADDRESS_WIDTH</td> - <td class="range">57..48</td> - <td class="type">R</td> - <td class="desc">Actual valid address width of trickle configuration memory</td> + <td rowspan="4">0xD040</td> + <td rowspan="4">0,1</td> + <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_0</td> + <td class="name">MOVE_WRITE_PTR</td> + <td class="range">any</td> + <td class="type">T</td> + <td class="desc">Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address<br/></td> </tr> <tr> <td class="name">WRITE_PTR</td> @@ -4369,7 +4387,7 @@ th { <td class="desc">Stop address of trickle configuration in trickle memory (last valid byte)</td> </tr> <tr> - <td rowspan="4">0xD030</td> + <td rowspan="4">0xD050</td> <td rowspan="4">0,1</td> <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_00_MODULE_MASK_F_C_0</td> <td class="name">HCC_MASK</td> @@ -4396,7 +4414,7 @@ th { <td class="desc">Masks register commands with destination hcc_id = 0xC<br/>mask(i) <=> (abc_id = i)<br/></td> </tr> <tr> - <td rowspan="4">0xD040</td> + <td rowspan="4">0xD060</td> <td rowspan="4">0,1</td> <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_B_8_0</td> <td class="name">ABC_MASK_HCC_B</td> @@ -4423,7 +4441,7 @@ th { <td class="desc">Masks register commands with destination hcc_id = 0x8<br/>mask(i) <=> (abc_id = i)<br/></td> </tr> <tr> - <td rowspan="4">0xD050</td> + <td rowspan="4">0xD070</td> <td rowspan="4">0,1</td> <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_7_4_0</td> <td class="name">ABC_MASK_HCC_7</td> @@ -4450,7 +4468,7 @@ th { <td class="desc">Masks register commands with destination hcc_id = 0x4<br/>mask(i) <=> (abc_id = i)<br/></td> </tr> <tr> - <td rowspan="4">0xD060</td> + <td rowspan="4">0xD080</td> <td rowspan="4">0,1</td> <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_3_0_0</td> <td class="name">ABC_MASK_HCC_3</td> @@ -4480,9 +4498,9 @@ th { <td colspan="7" class="group">...</td> </tr> <tr> - <td rowspan="10">0xD130</td> - <td rowspan="10">0,1</td> - <td rowspan="10">CR_ITK_STRIPS_LCB_LINKS_00_LCB_3</td> + <td rowspan="9">0xD170</td> + <td rowspan="9">0,1</td> + <td rowspan="9">CR_ITK_STRIPS_LCB_LINKS_00_LCB_3</td> <td class="name">L0A_BCR_DELAY</td> <td class="range">49..38</td> <td class="type">W</td> @@ -4530,12 +4548,6 @@ th { <td class="type">W</td> <td class="desc">enable generating L0A frames in response to TTC system signals</td> </tr> - <tr> - <td class="name">TRICKLE_TRIG_PULSE</td> - <td class="range">1</td> - <td class="type">T</td> - <td class="desc">writing to this register issues a single trickle trigger</td> - </tr> <tr> <td class="name">TTC_GENERATE_GATING_ENABLE</td> <td class="range">0</td> @@ -4543,19 +4555,22 @@ th { <td class="desc">enables generating trickle gating signal in response to TTC BCR.<br/>TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work.<br/>(See also BC_START, and BC_STOP fields) <br/></td> </tr> <tr> - <td rowspan="5">0xD140</td> - <td rowspan="5">0,1</td> - <td rowspan="5">CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_3</td> - <td class="name">MOVE_WRITE_PTR</td> + <td rowspan="1">0xD180</td> + <td rowspan="1">0,1</td> + <td rowspan="1">CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_TRIGGER_3</td> + <td class="name"></td> <td class="range">any</td> <td class="type">T</td> - <td class="desc">Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address.<br/>The memory must not be actively read out when this signal is sent, otherwise it will be ignored.<br/></td> + <td class="desc">writing to this register issues a single trickle trigger</td> </tr> <tr> - <td class="name">ACTUAL_ADDRESS_WIDTH</td> - <td class="range">57..48</td> - <td class="type">R</td> - <td class="desc">Actual valid address width of trickle configuration memory</td> + <td rowspan="4">0xD190</td> + <td rowspan="4">0,1</td> + <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_00_TRICKLE_MEMORY_CONFIG_3</td> + <td class="name">MOVE_WRITE_PTR</td> + <td class="range">any</td> + <td class="type">T</td> + <td class="desc">Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address<br/></td> </tr> <tr> <td class="name">WRITE_PTR</td> @@ -4576,7 +4591,7 @@ th { <td class="desc">Stop address of trickle configuration in trickle memory (last valid byte)</td> </tr> <tr> - <td rowspan="4">0xD150</td> + <td rowspan="4">0xD1A0</td> <td rowspan="4">0,1</td> <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_00_MODULE_MASK_F_C_3</td> <td class="name">HCC_MASK</td> @@ -4603,7 +4618,7 @@ th { <td class="desc">Masks register commands with destination hcc_id = 0xC<br/>mask(i) <=> (abc_id = i)<br/></td> </tr> <tr> - <td rowspan="4">0xD160</td> + <td rowspan="4">0xD1B0</td> <td rowspan="4">0,1</td> <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_B_8_3</td> <td class="name">ABC_MASK_HCC_B</td> @@ -4630,7 +4645,7 @@ th { <td class="desc">Masks register commands with destination hcc_id = 0x8<br/>mask(i) <=> (abc_id = i)<br/></td> </tr> <tr> - <td rowspan="4">0xD170</td> + <td rowspan="4">0xD1C0</td> <td rowspan="4">0,1</td> <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_7_4_3</td> <td class="name">ABC_MASK_HCC_7</td> @@ -4657,7 +4672,7 @@ th { <td class="desc">Masks register commands with destination hcc_id = 0x4<br/>mask(i) <=> (abc_id = i)<br/></td> </tr> <tr> - <td rowspan="4">0xD180</td> + <td rowspan="4">0xD1D0</td> <td rowspan="4">0,1</td> <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_00_ABC_MODULE_MASK_3_0_3</td> <td class="name">ABC_MASK_HCC_3</td> @@ -4687,7 +4702,7 @@ th { <td colspan="7" class="group">ITK_STRIPS_R3 L1_LINKS</td> </tr> <tr> - <td rowspan="3">0xD190</td> + <td rowspan="3">0xD1E0</td> <td rowspan="3">0,1</td> <td rowspan="3">CR_ITK_R3L1_LINK_00_R3L1_0</td> <td class="name">FRAME_PHASE</td> @@ -4711,7 +4726,7 @@ th { <td colspan="7" class="group">...</td> </tr> <tr> - <td rowspan="3">0xD1C0</td> + <td rowspan="3">0xD210</td> <td rowspan="3">0,1</td> <td rowspan="3">CR_ITK_R3L1_LINK_00_R3L1_3</td> <td class="name">FRAME_PHASE</td> @@ -4738,9 +4753,9 @@ th { <td colspan="7" class="group">ITK_STRIPS_LCB_LINKS</td> </tr> <tr> - <td rowspan="10">0xE350</td> - <td rowspan="10">0,1</td> - <td rowspan="10">CR_ITK_STRIPS_LCB_LINKS_11_LCB_0</td> + <td rowspan="9">0xD620</td> + <td rowspan="9">0,1</td> + <td rowspan="9">CR_ITK_STRIPS_LCB_LINKS_03_LCB_0</td> <td class="name">L0A_BCR_DELAY</td> <td class="range">49..38</td> <td class="type">W</td> @@ -4788,12 +4803,6 @@ th { <td class="type">W</td> <td class="desc">enable generating L0A frames in response to TTC system signals</td> </tr> - <tr> - <td class="name">TRICKLE_TRIG_PULSE</td> - <td class="range">1</td> - <td class="type">T</td> - <td class="desc">writing to this register issues a single trickle trigger</td> - </tr> <tr> <td class="name">TTC_GENERATE_GATING_ENABLE</td> <td class="range">0</td> @@ -4801,19 +4810,22 @@ th { <td class="desc">enables generating trickle gating signal in response to TTC BCR.<br/>TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work.<br/>(See also BC_START, and BC_STOP fields) <br/></td> </tr> <tr> - <td rowspan="5">0xE360</td> - <td rowspan="5">0,1</td> - <td rowspan="5">CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_0</td> - <td class="name">MOVE_WRITE_PTR</td> + <td rowspan="1">0xD630</td> + <td rowspan="1">0,1</td> + <td rowspan="1">CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_TRIGGER_0</td> + <td class="name"></td> <td class="range">any</td> <td class="type">T</td> - <td class="desc">Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address.<br/>The memory must not be actively read out when this signal is sent, otherwise it will be ignored.<br/></td> + <td class="desc">writing to this register issues a single trickle trigger</td> </tr> <tr> - <td class="name">ACTUAL_ADDRESS_WIDTH</td> - <td class="range">57..48</td> - <td class="type">R</td> - <td class="desc">Actual valid address width of trickle configuration memory</td> + <td rowspan="4">0xD640</td> + <td rowspan="4">0,1</td> + <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_0</td> + <td class="name">MOVE_WRITE_PTR</td> + <td class="range">any</td> + <td class="type">T</td> + <td class="desc">Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address<br/></td> </tr> <tr> <td class="name">WRITE_PTR</td> @@ -4834,9 +4846,9 @@ th { <td class="desc">Stop address of trickle configuration in trickle memory (last valid byte)</td> </tr> <tr> - <td rowspan="4">0xE370</td> + <td rowspan="4">0xD650</td> <td rowspan="4">0,1</td> - <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_0</td> + <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_03_MODULE_MASK_F_C_0</td> <td class="name">HCC_MASK</td> <td class="range">63..48</td> <td class="type">W</td> @@ -4861,9 +4873,9 @@ th { <td class="desc">Masks register commands with destination hcc_id = 0xC<br/>mask(i) <=> (abc_id = i)<br/></td> </tr> <tr> - <td rowspan="4">0xE380</td> + <td rowspan="4">0xD660</td> <td rowspan="4">0,1</td> - <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_0</td> + <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_B_8_0</td> <td class="name">ABC_MASK_HCC_B</td> <td class="range">63..48</td> <td class="type">W</td> @@ -4888,9 +4900,9 @@ th { <td class="desc">Masks register commands with destination hcc_id = 0x8<br/>mask(i) <=> (abc_id = i)<br/></td> </tr> <tr> - <td rowspan="4">0xE390</td> + <td rowspan="4">0xD670</td> <td rowspan="4">0,1</td> - <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_0</td> + <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_7_4_0</td> <td class="name">ABC_MASK_HCC_7</td> <td class="range">63..48</td> <td class="type">W</td> @@ -4915,9 +4927,9 @@ th { <td class="desc">Masks register commands with destination hcc_id = 0x4<br/>mask(i) <=> (abc_id = i)<br/></td> </tr> <tr> - <td rowspan="4">0xE3A0</td> + <td rowspan="4">0xD680</td> <td rowspan="4">0,1</td> - <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_0</td> + <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_3_0_0</td> <td class="name">ABC_MASK_HCC_3</td> <td class="range">63..48</td> <td class="type">W</td> @@ -4945,9 +4957,9 @@ th { <td colspan="7" class="group">...</td> </tr> <tr> - <td rowspan="10">0xE470</td> - <td rowspan="10">0,1</td> - <td rowspan="10">CR_ITK_STRIPS_LCB_LINKS_11_LCB_3</td> + <td rowspan="9">0xD770</td> + <td rowspan="9">0,1</td> + <td rowspan="9">CR_ITK_STRIPS_LCB_LINKS_03_LCB_3</td> <td class="name">L0A_BCR_DELAY</td> <td class="range">49..38</td> <td class="type">W</td> @@ -4995,12 +5007,6 @@ th { <td class="type">W</td> <td class="desc">enable generating L0A frames in response to TTC system signals</td> </tr> - <tr> - <td class="name">TRICKLE_TRIG_PULSE</td> - <td class="range">1</td> - <td class="type">T</td> - <td class="desc">writing to this register issues a single trickle trigger</td> - </tr> <tr> <td class="name">TTC_GENERATE_GATING_ENABLE</td> <td class="range">0</td> @@ -5008,19 +5014,22 @@ th { <td class="desc">enables generating trickle gating signal in response to TTC BCR.<br/>TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work.<br/>(See also BC_START, and BC_STOP fields) <br/></td> </tr> <tr> - <td rowspan="5">0xE480</td> - <td rowspan="5">0,1</td> - <td rowspan="5">CR_ITK_STRIPS_LCB_LINKS_11_TRICKLE_MEMORY_CONFIG_3</td> - <td class="name">MOVE_WRITE_PTR</td> + <td rowspan="1">0xD780</td> + <td rowspan="1">0,1</td> + <td rowspan="1">CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_TRIGGER_3</td> + <td class="name"></td> <td class="range">any</td> <td class="type">T</td> - <td class="desc">Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address.<br/>The memory must not be actively read out when this signal is sent, otherwise it will be ignored.<br/></td> + <td class="desc">writing to this register issues a single trickle trigger</td> </tr> <tr> - <td class="name">ACTUAL_ADDRESS_WIDTH</td> - <td class="range">57..48</td> - <td class="type">R</td> - <td class="desc">Actual valid address width of trickle configuration memory</td> + <td rowspan="4">0xD790</td> + <td rowspan="4">0,1</td> + <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_03_TRICKLE_MEMORY_CONFIG_3</td> + <td class="name">MOVE_WRITE_PTR</td> + <td class="range">any</td> + <td class="type">T</td> + <td class="desc">Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address<br/></td> </tr> <tr> <td class="name">WRITE_PTR</td> @@ -5041,9 +5050,9 @@ th { <td class="desc">Stop address of trickle configuration in trickle memory (last valid byte)</td> </tr> <tr> - <td rowspan="4">0xE490</td> + <td rowspan="4">0xD7A0</td> <td rowspan="4">0,1</td> - <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_11_MODULE_MASK_F_C_3</td> + <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_03_MODULE_MASK_F_C_3</td> <td class="name">HCC_MASK</td> <td class="range">63..48</td> <td class="type">W</td> @@ -5068,9 +5077,9 @@ th { <td class="desc">Masks register commands with destination hcc_id = 0xC<br/>mask(i) <=> (abc_id = i)<br/></td> </tr> <tr> - <td rowspan="4">0xE4A0</td> + <td rowspan="4">0xD7B0</td> <td rowspan="4">0,1</td> - <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_B_8_3</td> + <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_B_8_3</td> <td class="name">ABC_MASK_HCC_B</td> <td class="range">63..48</td> <td class="type">W</td> @@ -5095,9 +5104,9 @@ th { <td class="desc">Masks register commands with destination hcc_id = 0x8<br/>mask(i) <=> (abc_id = i)<br/></td> </tr> <tr> - <td rowspan="4">0xE4B0</td> + <td rowspan="4">0xD7C0</td> <td rowspan="4">0,1</td> - <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_7_4_3</td> + <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_7_4_3</td> <td class="name">ABC_MASK_HCC_7</td> <td class="range">63..48</td> <td class="type">W</td> @@ -5122,9 +5131,9 @@ th { <td class="desc">Masks register commands with destination hcc_id = 0x4<br/>mask(i) <=> (abc_id = i)<br/></td> </tr> <tr> - <td rowspan="4">0xE4C0</td> + <td rowspan="4">0xD7D0</td> <td rowspan="4">0,1</td> - <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_11_ABC_MODULE_MASK_3_0_3</td> + <td rowspan="4">CR_ITK_STRIPS_LCB_LINKS_03_ABC_MODULE_MASK_3_0_3</td> <td class="name">ABC_MASK_HCC_3</td> <td class="range">63..48</td> <td class="type">W</td> @@ -5152,9 +5161,9 @@ th { <td colspan="7" class="group">ITK_STRIPS_R3 L1_LINKS</td> </tr> <tr> - <td rowspan="3">0xE4D0</td> + <td rowspan="3">0xD7E0</td> <td rowspan="3">0,1</td> - <td rowspan="3">CR_ITK_R3L1_LINK_11_R3L1_0</td> + <td rowspan="3">CR_ITK_R3L1_LINK_03_R3L1_0</td> <td class="name">FRAME_PHASE</td> <td class="range">3..2</td> <td class="type">W</td> @@ -5176,9 +5185,9 @@ th { <td colspan="7" class="group">...</td> </tr> <tr> - <td rowspan="3">0xE500</td> + <td rowspan="3">0xD810</td> <td rowspan="3">0,1</td> - <td rowspan="3">CR_ITK_R3L1_LINK_11_R3L1_3</td> + <td rowspan="3">CR_ITK_R3L1_LINK_03_R3L1_3</td> <td class="name">FRAME_PHASE</td> <td class="range">3..2</td> <td class="type">W</td> @@ -5196,6 +5205,33 @@ th { <td class="type">W</td> <td class="desc">enables sending RoI R3 signals to the front-end</td> </tr> + <tr> + <td rowspan="1">0xD820</td> + <td rowspan="1">0,1</td> + <td rowspan="1">STRIPS_R3_TRIGGER</td> + <td class="name"></td> + <td class="range">any</td> + <td class="type">T</td> + <td class="desc">(for tests only) simulate R3 trigger (issues 4-5 sequential triggers)</td> + </tr> + <tr> + <td rowspan="1">0xD830</td> + <td rowspan="1">0,1</td> + <td rowspan="1">STRIPS_L1_TRIGGER</td> + <td class="name"></td> + <td class="range">any</td> + <td class="type">T</td> + <td class="desc">(for tests only) simulate L1 trigger (issues 4-5 sequential triggers)</td> + </tr> + <tr> + <td rowspan="1">0xD840</td> + <td rowspan="1">0,1</td> + <td rowspan="1">STRIPS_R3L1_TRIGGER</td> + <td class="name"></td> + <td class="range">any</td> + <td class="type">T</td> + <td class="desc">(for tests only) simulate simultaneous R3 and L1 trigger (issues 4-5 sequential triggers)</td> + </tr> <tr> <td colspan="7" class="group">MRO Dregisters</td> </tr> diff --git a/sources/templates/registers-5.0.yaml b/sources/templates/registers-5.0.yaml index ea4371d54..c3e5c2239 100644 --- a/sources/templates/registers-5.0.yaml +++ b/sources/templates/registers-5.0.yaml @@ -1487,6 +1487,10 @@ TTC_DEC_CTRLMON: type_name: TTC_DEC_CTRLS type: W bitfield: + - range: 30..27 + name: L1A_DELAY + type: W + desc: Number of BC to delay the L1A distribution to the frontends - range: 26..15 name: BCID_ONBCR type: W @@ -2630,38 +2634,59 @@ Wishbone: # ----------------------- ITk strips link configuration start ----------------------- -# Global trickle trigger (all LCB links on this device) - -# Maximum LCB links count: - -# x24 lpGBT links -# x4 LCB links per stave -# x4 R3L1 links per stave -# => 96 LCB links -# => 96 R3L1 links ITK_STRIPS_CTRL: - entries: + entries: - name: GLOBAL_STRIPS_CONFIG desc: Synchronous trigger for all LCB links on device type: W bitfield: - - range: any - type: T - name: TRICKLE_TRIG_PULSE - desc: writing to this register issues a single trickle trigger for every LCB link connected to this FELIX device - value: 1 - - range: 0 + - range: 15..11 + type: W + name: TEST_MODULE_MASK + desc: (for tests only) contains R3 mask for the simulated trigger data + default: 0x0 + - range: 10..4 + type: W + name: TEST_R3L1_TAG + desc: (for tests only) contains R3 or L1 tag for the simulated trigger data + default: 0x0 + - range: 1 type: W name: TTC_GENERATE_GATING_ENABLE desc: Global control for gating signal generation. Enables generating trickle gating signal in response to TTC BCR. TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. (See also BC_START, and BC_STOP fields) - default: 0x0 - + default: 0x0 + - name: GLOBAL_TRICKLE_TRIGGER + type: T + bitfield: + - range: any + value: 1 + desc: writing to this register issues a single trickle trigger for every LCB link connected to this FELIX device + - ref: ITK_STRIPS_GBT + - name: STRIPS_R3_TRIGGER + type: T + bitfield: + - range: any + value: 1 + desc: (for tests only) simulate R3 trigger (issues 4-5 sequential triggers) + - name: STRIPS_L1_TRIGGER + type: T + bitfield: + - range: any + desc: (for tests only) simulate L1 trigger (issues 4-5 sequential triggers) + value: 1 + - name: STRIPS_R3L1_TRIGGER + type: T + bitfield: + - range: any + desc: (for tests only) simulate simultaneous R3 and L1 trigger (issues 4-5 sequential triggers) + value: 1 + ITK_STRIPS_GBT: - number: 12 + number: 4 format_name: STRIPS generate: (GBT_NUM > {index:1} and FIRMWARE_MODE = 5) entries: @@ -2729,11 +2754,6 @@ ITK_STRIPS_LCB_LINKS: name: TTC_L0A_ENABLE default: 0x0 desc: enable generating L0A frames in response to TTC system signals - - range: 1 - type: T - name: TRICKLE_TRIG_PULSE - value: 1 - desc: writing to this register issues a single trickle trigger - range: 0 type: W name: TTC_GENERATE_GATING_ENABLE @@ -2742,6 +2762,14 @@ ITK_STRIPS_LCB_LINKS: enables generating trickle gating signal in response to TTC BCR. TRICKLE_TRIG_RUN must also be enabled for the trickle configuration to work. (See also BC_START, and BC_STOP fields) + - name: TRICKLE_TRIGGER + format_name: CR_{parent}_{name}_{index} + type_name: TRICKLE_TRIGGER + type: T + bitfield: + - range: any + desc: writing to this register issues a single trickle trigger + value: 1 - name: TRICKLE_MEMORY_CONFIG format_name: CR_{parent}_{name}_{index} type_name: LCB_TRICKLE_CONFIG @@ -2753,13 +2781,7 @@ ITK_STRIPS_LCB_LINKS: name: MOVE_WRITE_PTR value: 1 desc: | - Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address. - The memory must not be actively read out when this signal is sent, otherwise it will be ignored. - - range: 57..48 - type: R - name: ACTUAL_ADDRESS_WIDTH - value: std_logic_vector(to_unsigned(18,10)) - desc: Actual valid address width of trickle configuration memory + Writing to this register moves trickle configuration memory write pointer to WRITE_PTR address - range: 47..32 type: W name: WRITE_PTR @@ -2926,45 +2948,7 @@ ITK_STRIPS_LCB_LINKS: desc: | Masks register commands with destination hcc_id = 0x0 mask(i) <=> (abc_id = i) - # - name: LINK_STATS - # format_name: CR_{parent}_{name} - # type_name: LCB_STATS - # desc: LCB link statistics - # type: R - # bitfield: - # - range: 48..32 - # type: R - # name: TTC_FRAME_RECEIVED_COUNT - # default: 0x0 - # desc: The number of received BCR and L0 frames from TTC system since last reset - # - range: 31..16 - # type: R - # name: TTC_FRAME_SENT_COUNT - # default: 0x0 - # desc: The number of TTC BCR and L0 frames forwarded to the front-end since last reset - # - range: 15..0 - # type: R - # name: CMD_DECODER_ERROR_COUNT - # default: 0x0 - # desc: The number of errors encountered by LCB command decoder since last reset - # - name: ELINK_RECENT_DATA - # format_name: CR_{parent}_{name} - # desc: Most recent data sent into this elink from host (MSB = oldest) - # type: R - # bitfield: - # - range: any - # type: R - # name: value - # default: 0x0 - # - name: ELINK_BYTE_COUNT - # format_name: CR_{parent}_{name} - # desc: The number of bytes written to the elink since last reset - # type: R - # bitfield: - # - range: any - # type: R - # name: value - # default: 0x0 + ITK_STRIPS_R3L1_LINKS: number: 4 @@ -2992,67 +2976,8 @@ ITK_STRIPS_R3L1_LINKS: name: R3_ENABLE default: 0x0 desc: enables sending RoI R3 signals to the front-end - # - name: LINK_STATUS - # format_name: CR_{parent}_{name}_{index} - # type_name: R3L1_STATUS - # desc: R3L1 link status - # type: R - # bitfield: - # - range: 1 - # type: R - # name: L1_FIFO_OVERFLOW - # default: 0x0 - # desc: Whether overflow condition occured in L1 frame FIFO - # - range: 0 - # type: R - # name: R3_FIFO_OVERFLOW - # default: 0x0 - # desc: Whether overflow condition occured in R3 frame FIFO - # - name: LINK_STATS - # format_name: CR_{parent}_{name}_{index} - # type_name: R3L1_STATS - # desc: R3L1 link statistics - # type: R - # bitfield: - # - range: 63..48 - # type: R - # name: L1_RECEIVED_COUNT - # default: 0x0 - # desc: The number of L1 frames received from TTC system since last reset - # - range: 47..32 - # type: R - # name: R3_RECEIVED_COUNT - # default: 0x0 - # desc: The number of R3 frames received from RoI system since last reset - # - range: 31..16 - # type: R - # name: L1_SENT_COUNT - # default: 0x0 - # desc: The number of L1 frames sent to front-end since last reset - # - range: 15..0 - # type: R - # name: R3_SENT_COUNT - # default: 0x0 - # desc: The number of R3 frames sent to front-end since last reset - # - name: ELINK_RECENT_DATA - # format_name: CR_{parent}_{name}_{index} - # desc: Most recent data sent into this elink from host (MSB = oldest) - # type: R - # bitfield: - # - range: any - # type: R - # name: value - # default: 0x0 - # - name: ELINK_BYTE_COUNT - # format_name: CR_{parent}_{name}_{index} - # desc: The number of bytes written to the elink since last reset - # type: R - # bitfield: - # - range: any - # type: R - # name: value - # default: 0x0 - + + # ----------------------- ITk strips link configuration end ----------------------- diff --git a/sources/templates/registers-diff-4.10-5.0.html b/sources/templates/registers-diff-4.10-5.0.html index 37222d709..1e43cab2d 100644 --- a/sources/templates/registers-diff-4.10-5.0.html +++ b/sources/templates/registers-diff-4.10-5.0.html @@ -42463,15 +42463,23 @@ th { <td colspan="10" class="group"></td> </tr> <tr> - <td class="sequence" rowspan="10">807*</td> - <td class="state changedChanged" rowspan="10">Changed</td> - <td class="address changedNone" rowspan="10">0x8000</td> - <td class="endpoints changedNone" rowspan="10">0</td> + <td class="sequence" rowspan="11">807*</td> + <td class="state changedChanged" rowspan="11">Changed</td> + <td class="address changedNone" rowspan="11">0x8000</td> + <td class="endpoints changedNone" rowspan="11">0</td> <td class="name changedNone" colspan="7">TTC_DEC_CTRL</td> </tr> <tr> - <td rowspan="9"></td> + <td rowspan="10"></td> + <td class="state changed"></td> + <td class="field changedNone">L1A_DELAY</td> + <td class="range changedNone">30..27</td> + <td class="type changedNone">W</td> + <td class="desc changedNone">Number of BC to delay the L1A distribution to the frontends</td> + <td class="value changedNone">None</td> + </tr> + <tr> <td class="state changed"></td> <td class="field changedNone">BCID_ONBCR</td> <td class="range changedNone">26..15</td> @@ -42545,15 +42553,23 @@ th { </tr> <tr> - <td class="sequence" rowspan="10">807*</td> - <td class="state changedInto" rowspan="10">Into</td> - <td class="address changedTrue" rowspan="10">0x7000</td> - <td class="endpoints changedFalse" rowspan="10">0</td> + <td class="sequence" rowspan="11">807*</td> + <td class="state changedInto" rowspan="11">Into</td> + <td class="address changedTrue" rowspan="11">0x7000</td> + <td class="endpoints changedFalse" rowspan="11">0</td> <td class="name changedNone" colspan="7">TTC_DEC_CTRL</td> </tr> <tr> - <td rowspan="9"></td> + <td rowspan="10"></td> + <td class="state changed"></td> + <td class="field changedNone">L1A_DELAY</td> + <td class="range changedFalse">30..27</td> + <td class="type changedFalse">W</td> + <td class="desc changedFalse">Number of BC to delay the L1A distribution to the frontends</td> + <td class="value changedFalse">None</td> + </tr> + <tr> <td class="state changed"></td> <td class="field changedNone">BCID_ONBCR</td> <td class="range changedFalse">26..15</td> diff --git a/sources/templates/registers.pdf b/sources/templates/registers.pdf index d1dbb1685db768a4132c3f4b51a0e9d3f276995d..9fbb837fb77de55f7a5596161095b8df244c4ffa 100644 GIT binary patch delta 225475 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%0AgV_MWo&uCJPo{`N=qp84$=n9;m_2j7kfL6v+7 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 QBNZ+HTth<o4vBI7KZy)>XaE2J delta 229505 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 z%0ASQh9mK=9b$)<pR^j`=#ncz$?N4x%CWaho|{JmwKFOemUlGEo>!wmy8*6`+u0Ax z8FG92FHucZ8HrIz!O!mK>ZnX4cQTrxH~EpU)t(X0tF+T&MD%F>`XKO``LU`5rocm> zg!f~O9vbhNJgO&pLi{LpP4W8&3O%+LZA?VS{g=S4zUB4@X`q|cM2AjM${Q04TbW&D z?<k0JhNgcUXdy?Pu>eb~4;?_dh9j&(RMYGdG7!QN75^v@bPt>EYV}^|o`Pp`B%t{9 zySg_2bp`%Qr4=6f9@LQO$v?Ae|Kx;f<rD7D!+QTiK{rKIF5_iTnDYubO0vWawyPl= z$VqSxx&=nNETOua(U2?M7CCzV>iqWj-mIpv+<CsRUYqU7KAI}ZlQ`g|;!o}<L_Psm z5HIaSLoN``64$&vSNOn1NFdW;J|neXSTA-iBUU+>Y4}7=v`iSw_#w~Fc%De=z@9rI zQH{p4LZa9QLm3M>B$fIXdp=PvEP84&w#j6sbqtl<BUNE-Kf|yrbtUr8H<*e3E~+~z zh7mEdSXftGf9=J1c>w@%gI}tjR!Rkh(j~>+oh^OXH?%+p{)hRgstqZ?ho0G#o=V<{ zg0`dfnUS_-Zajr1Ne@V!=pk0LrEAhpX*AOV;dH^ZWbt%G??RJ*IU(jfv!S|g{YD|N za8Ae;Flv_5r3z(bZ=1gYIru>Syc@yXDd6cx-VMuY;_wHvz!#96$%W>&S{_8ga9Rkq zpYPN)`JI|cjpq6JMHmbfQscArrWE)8RMCqiiZ=&+xsy2IZrU$-8oLl9G$P|pKYy7g zqWDSbVCFT;l7ZwYSD!Oi;fb7|j9jDxjfu#{Cw2+o736SvQoDFu`QStFjFB|~`^mV4 zzw0w)EDh@=#{rCcl1bCE3Hfy`8mF~z-g(l?Ov}kule$H?Mg(f7zc|0YSq8Os`R7YD z9@Io#M0J;>7@eaESNy`j;i^QZ2d3UKsw#@(j1egXqGJ{BdH3B`&5U36so8?&dH7+? z5}ub&L_~YZo|3^?V1=N(b~rW@jpD^6n?xY|_{(NYtN>$cNUMV;**+=;JgIxFAe7$I zz`^Li=jw^2Fb4~(KUS1>4u@g*V}%=J&2Vpa0DC9o-5nor;adCqEJA>N!g{@Q#zs0m z-eJ$xC`-!*(Gd24bx-ymE3IHlp;T_mQAlsNDtAjXbHpb$NjpuP!ZrSkD3}+x|L)YA zW|rFr5XGJ~DtQvc;dE)HkDsHIwRv__7**5Hr`nL<8xl|ei!*eN++0Y+Hc`VDV&{H` zhc`CjNftt#+K~ez8YqBPne1^S^0j0=Ig;l;oChA>7eyn8C{V0K2I=o(x#Bn^3q-Zq zmy)fb+2i(z-UX!#YmYv=O@TZevFc|ROAon#POWcAIsU}&KH)NxloR*kCL22BQsJoN z4sz~czk9-SzBG;^7Ew+M(p4D+xnl}eU8FCWEI)z^D5qozdk`4HA0;X}`~@K-DS_zE z;r9p1m4Jv43_n_nVe}7_5w3y<975}1RbY-lW>;e=U0bfi%EQjk3u!GXzk5bm2x<jj zCD7g4uu(<30BoK3M~rpoAEMwO$(#`oMQtV!OG4NDvzlgN(C4u9*<om>zfeJ59)0{I zNHp|BY%LOr(`iy9)R&is%8bEvKkfoUU=#d)JY8()v^!0RYb&HiPr4VzBVRyeekGac zgSj5|b7T6Ap_$=OvL=SO^eU$Jk1Lu3(A5L#IR^rLLUfya2dkEZ^ry}4uR@wct1H_B zic-ayL_6qi#nTKG1a<g%2=hN|)N7)!ZP84`@TtMC5g_No-xXF-?yW6mz=EHL%`IAX zShoZdyayvZRI68`MS`Jzc&?f2-(mcW{xa#|)O=#nzfac8#A@7Z;GR<FjBAPn#ESnD z+q)9(mU}|3hjC+8`947#O(yyT*$QK^mLzMF3tMAi*i7{WWw%oE=Mbm^BY@Pb<7+IS ziY1d&-hPB87@-AdqhY>F@&B}RtM^0wUnQHGL`t@?Qu0>y!Y1G;#Lq~{HG8=uCe(~D z%l@hwcKG-GYw=Jg6dAcH8_)pQ(9Mp!KiiA0b-h!BF0Svha_3^}BK1S}_tD%O^>z=_ z0f@*JCr#e<k5+$Npq;B=w0|aocY84tDEx7QI1V#NA%^jJfKUCv(!H#Y9RFZZ6FZaq zm7MNC>%i|gYNxEHX<mlnA_TL~B9oL0tBjRevei)P#8ow`s|5lwhDQg`sc$mkr9&Yi zn@{KEPtL8rUbV6UYC2EIic*xmK!ZG{lP?J<*^`DNds!3Nh>E)+Ib2Sm^MQo=dm`YE z?1tDQg=P#hu*`Jz4)|k@fN$@3smwM~=%cf#gw>xWSe{qtcprNcJjW<r-(JZXa*fAG zC^ZoX!r#|S>7jCZ+^+&m3_R(au=Kw@x6$vaI!#lj>#jQ2{&C;jU#$qpAD&$B5hlTS zCE!6&yUwt@Hq^M`7>Ymr7S<8etIuR8V#7R-mvv%hh%KigiRN99X#JiQOe-vni}8*s zkR7Htnlj1<ClXRT?d1jm@}ky=S{}Gz)6PptM+<mpPO7CmwLJjTh3@SRjD^5U?uiy* znwCjS<?m??Y#BTert&eUGjS6*)KIMvXq1fUTD(KbTDt3=ZAP`6Jvm5&%fw6ffL4DY zdme#;s(#3n)3U$>rzHEef(eb5uc-q*Zv}J@jRTsYIydFJ{EL1zA8&@7P_3ZrAC*-b z#{<_lFEo;uJw8D8b$3VAMG>0!uG))&N1`Ep1SYe2jq{_r0BT|7@_8D(uU@9k(Kc2I zC7ttEf-PqkGs3@dnSIEcq~~GYKkI*;4&Gg!m}B0-rgu#6Jbw$BR=uqlLacVZs!Tjj z<ydb~Sj)J?cy=^?4|r{vcrAifBFYEy67e0x=Gc>$WB34hS6%5VbSIhTgfJU>LL!2r zr{Z?=H?76YHKj*UYfe+9J`-z3dPrqn;r7EKXYwj(nFk2zu~<PfCd7#B*vulxpQrBy zeDZ^NVm%++E5Bu-yApb8VOP!D+sw19wt~rsgRhc4FaF2`KYZ9c(34u>7rc(kCxO8_ zDBD`fm16@;686UB6ZSA-(<?3t>!ImCrb*c^gnSdh3ZFB&#Hk#wFT_cN@NVJEwVHG` zm^Le<J8CrsE{Cfp!KMmCbSFD;<n7ZS$8{?~@zr$8hu2uD>QHLCptreEf^EF{Y#UpY zUjEs=th9IDq3hTSJOkIfZ`Rk|&Rl`E9Bp?#)n5P>v4k_c`A36d5NcQ1Wk4EO;VkoU zdGbXFHPZ0!r*^8}OFIp47mVmgUJGd1XTQQAH}?Cxk#c{9rUmw0%^5~*6j)#2nM<3v z{k;z#ZA6Hfu#>j?E$>jp@i-BlrQ*X2iOTsl;~7WHxIq8hqqq2`j9)(8u@S-mgfTtU zE!zMrwV}Y;`BdB&(lk0%O~;kb4mTkDi({(Fj+%r2_g(}8Lb~>Q2~<M(*N)^<0I3=h z?hMb41pLtGU(Ma6I)v7_ExwC3km3Z!v&iyoLBYMeH6D!iIJi?Lx^Al0Eeu{kYvnGB zq3O6^<t|k#o+y%T-R$>|)b8Zi;Z!#s+_}{Nj!)H<r39S(=_YfKI$Afs-lWNHTF{8; zwqipx128Ob18W@b>-4$N=|)ae%LZN@A;!ql`E>au#y}zoiJo<D?hgeKOy2wGrN=Fu zS3BtV`cqD)webiY`&eU%f-jvOBKYbOOlFs*q;uTUS~_|NhZ=_+?N?#{0;7;$OyOw& zT0GLp0vN~>`&~124{9gZ?__kEz4YZz)u+KLGV1P~15KxPRF%}-P7N76j79)H=BZj` z06g<S#|6cl45Lm!WsowY2J$KB_;W%0Bq(bKfzn<UyFJ?46OaiZ$pc^JaNB>9FZ;)! zdzXNNbgh|aJO#Mq!R5%n!NOs7>L38;ifXac;qqco{ENj71n+rZ&9XZr`qE#%%Rf^T zg6r3H7e$#}y{J~lZ|EHc;j7*f<@WEkF~M*L_pADa5f;bp^Pb3WM}6L1_eKUQRPCo7 zd>uN>z<7W)q7L&0OAoq;f}|k8y*YPiU%ST+9C4k|sv&>iV07h?ST?3VWeZ>kmZ4=5 z86Ibji3q-X(<hNB2!@<GcvtV@YhmtT@6kgG{Db~m?s0Kkp;DHd;ehgg7Cv;qVgqAQ z43i>~Yu<k2DA^tmPu@ss1F=W(y8ZN%OYX?BRR3jJ<7zr{KhII)^s8YTb2rvVp-oge ziY{Vu9vl^Igd40NwjmQ5K&iB8v5*>t3&L3hPf@<83>9)5vb)yt9}Hw}G*7j^Cs~SV z*7nisvf4U&V<bl=y2buB7v>oFjE=bN$SGww{+qJam9QKBWhHovn3r7FUm~rOPd7dV zOaa*nA|zvB<}0%8%l17foPFlNxDfYDPo_UoMC5Nhgc(w3>^&oTfK^#5?p||XM(J)R zAAmi>Dm8U#(!`h}Fm;PM!;>)n-c!i?K?h<=$A4SZp^8sTd%OU_Q`)LcC<0JQ<8wZ> z1B=LVTp+@pmPmKe#E#7+19)N8cnsyCHO=Krh^0-#{zdR9ZZW@kGF53$!CLAaFj<I* z?k;H7OAk2;C!9_KU`1CYXPwWbNfT1!w8fyt2hPM0Q6wNVwv(n({iJD1>+le=Nbh6! zWwmlhnkG6DafRq*4`7XqIh7UR%w?4$Maq<lPMX%W(AYK+5Gf;hh26gC8nj?DgZ0du zCW9K3ehOuz2eIV-dfsPc(=GezwP-cVo+(7Lipo4<^((spq=Bcx<eV~fsR+1mA0YrD z8ro@@GS8|XB{=3IAyEX0`st;l>B;WeKSUFpBXxQJl=Cg8HUmY-g}Eu26dyoK++I<# zd&nrTm+TNil{|#;yMPK+`G|+3CDbedO7q9D15l;D(7P;wYg-~@=*xqI#>V7@q^4gg z=?#6c^dVGw%f!WS`HSgjvW1QZ3OzCrmXo$T0V&fe+@Azo#7-~!idNR6GRAjWR$x}Q zV%+>%Z7R0QZUVk;&j1$mra%8btrlh`4k9KZ2V-j(c6Ju_6jBpVQGo7xJl+tpPtJ|R zq)81pyIapc_{kxzo1dDvctM0gKfppU{MCu>pQqb%&Q1wt7An#5f@cH0tQ%+*)XWaY zCa<aqpKXu4F+LB!2sbabJ{K-?Hm+7a$F4^3{{l9SzX&!jw!0`mdycJ>$HP7zIXhfQ zw_O~}M~1e%n7xGn?SNGuZXaLrhl{pM-*&HF^Ql5~_g7*)SPI!z40m<;_S5rOx~e99 zg_#-xNh9;4p$8&1*sG@Z=f@l=Zb~)Vr^)+Vy|-2D5~#jM6X0{~Rf4lRP!{l4n{9sK zk+5c^GI4QXQ$hpr-(*lN4;5Vh*7zwu%8u~2Oba7&2$OpFDIkj|?+E1e18Ttgc=Exg zRb88DznIdMQbk{Ks^nUDTbTQtC$2ISm)8f?du}rJp@DYS9OKnHdtsKV81WZ~ns25d z?e#cR{~@MR)Rqn|<?+Y)CM7R3@3#@_`SWf}aeVR8WtB@Z#y|6twxkBCo}4Rz^|Cap z`09A^kVU9`Wk8&>noht?xN^))dPY~#|BAFQE6>M^meH^8d0ksL1SwhS#$3p;bho76 z&}K)SXK{HANqTv`|MUDel=Zw}p|Yn7C9oM{BVp*;#W9)AW1y?atONZ&8Z892iem)! zY?73X2?97|Rl(0j?5nnxtey!*tk?X#1wG#qEdYHh>`;sM%B;)X4|XbxVaI}>m!$oa zSwQ#p@Z3U#43Oi;ORjBgsgf~kk%sxkgzm`wydxGI3;LYwrKJ%KH%rrduV$utAQNA$ zVYK>-ui-TX>+TxOuV<2|S(ooEs4y}ROSM{ZZ<tm2%~1sfc0~XBX{u}Zj3{(ceWB&0 zr2+kfo%x086x`FsKTGm`^5hnhjT|Eq<ZgoHI#X<gwX0=YzOjq>0!O<s&-9bAv&N&g zBL+CAV%`>9TpvR=lB*($6fMZoB3CvwrrtF$@XD*OrzczX_JR%PW96Z^Z&xWaE?%hw z$3J^7O3UKlg;OaM+2lGqK>4pC8KW*XYe0RK8mGzbW&GlV$g?_e-~eur?&dnofxO49 zs+`BYc|m*RweaS09JLi{tMgdv(%b~l7Mm7_Y=-K$<E}fV9}<~@&eZuD3&<F18|$J- z#KF{<21}L*%mkL!i=eTgA>Mqm634Rf5ymg*t5PvNkO;5TpY!~sC}NV_AM`(Q*Z?XF zZN7O_>MZl2M$?uPEz|{qP%vRgStPFg1_AQOJad6E6=q?&#e(F&4xH?aJ@>5$XlGYq zmaXc4ib*pKa)8tv(7_}484IkrrNH&-oEg^r+=4~MN8BCd)nF5efE9Z>5f&{*M>y~U zJBP5!<Z2b9`T0#5JEQ*une49jrUmS>J4T~P%%Q{Bo={1&e$E6emx~*=3q>a_b3FAm za5>iF=NP-^vqgMRSN>)0Kn>qQ3yzwU-3}NWK=V$pXx_~F{lUKR#`Y}fdwOfc8Lu>c zN5T+RkG6U&N+AleU1;W<35-Z(r6QR=rf2o<=+;}tPfm1kc1}$4>FoIYF7aliT=1Jq zhX-BMZWnU(V#DMs)1)K~w#s{o6YnlbBC(9EA=MJ1_~<$1ezxx=Wd<uZl1Wat9m18# zu7uQ=Ymo%PiZz}v8aa+fG{qjXwsM8{(HiGI2n{CnY9Q4h|5n+=@=<l$bx`H+-PYC0 zXFRyxa0UgC77~9}=h6TW0|Djl(YXTf<NO+p<o<U8k+?I`&L%6F7Rp%W$$wOq8*XQI zoW<L<awlVcsodyy=GATt{h+)I1dp-u!#Ry2i9jn*hp)_t?59`boSn(N66L5~js}H` zA7ES^Qu%yG`C~Hvw_f3=;Hw)0%ADD;UYXit-bq~__{yf;S>SN!Rx7~eQ2~eWh?jle zx&1Qkhm#y9U6$7jiw=+dEu<^lO|uj|+_I+|Oz<H;UD%NWQv$v*Q^e7dxJ@eK0Kbiv zv(l{Bd@wi{Yxut;(<P7D=AE8VJ%(f(6V*~Hd*WeG_T@`ZUA-2GU0oCsl*Zn+qVM<C zKPmdbR`Y9$j66UEs{~+fV)e6%Hz)njYC)G6TnkZ{VWShmGbtnEYIv!jot4|8eTLGa zeRDEZ=Qza4`U>RmL{Fs|W_3~`b}GoZ+i;Q=91ovvn$tEw$C_z>r4(G)$jcUs#<pmM zQ0N!pVB%rYGny%9vEa^C`&RTMWJ<?D#3mHOI6A1V$&->Rw+7&1wrW!5@U|Q`)ko1| z3}<;soyzzkx)GWBK2}IJr9}v3T*qORi^`ZK?;R&7Z7&N|BKU6ul+Y{KUX;o!gHGY^ zuh~B*ALoT&gbPwtF`LS-N8~(D8_prBPER40Y9{95%B0Ayj~^jNI%W4hJv>v-8lAlm zB36=4@3g-)@BsjojZ#BNr`y-k-@WI!V&}HAm&eJl?*hX8iEt6Yv<yOydFDl+C`FbF zBn*C{{6R@4#9hK32G2Tr<|_$SX;zz4lYvkL=nt)R&N3}^Sl0pNvo%s;an@~8g{+q( z%C>ZoxyTsEIWR+Fh3`M&SW7Z*wV2O@?zOzU6)7MXA-_r4(=CO?m83JYoQf_qjcJO> z1_MO2;UuGRXk7c$f+L{lTcW=tP<IO3KJk`xweB6e0!DrT2k{_YY{_vKN=yS+AfGl5 zeGK&Yi3pmNpBJZ&+gK`)h*b3uQFSEgjD8#1(kC@#Xx)%X7S!RJgyrB$<Vl);+!TUV z43t8LI41xKi)Ja8A`~i-wmEF{D-aD2xu(8!cJ=S_m+XgGi>QQs@8k0&vEOd#J}lEj z<7e^JrTTlL6*u>TN*rmQK5u9`QHN|bSOx6_ZByQrZar~tCA&&2$`2%X_E>xt^=O5< z_IQPEDGqWefORO&NMS^@#E||_^*}C2tC=wo(>1`Cg->Vb5PvRdDGE3{J$0$Ss60+d zF2cT;CmxZA7Y=0s!de_zHTBhsRc0j5&~s>HZ{DU0i?qIM_U*wP{BDr}A-4Zqw-<+X zcHurHouuW^K!Me0hV%rsa`5U8rGOEQe#!BmM3+wIJn|O?&KqegU4k-Qw$W&B3F4H! zAsoO#)85aM>Oz4^-epFf&EsXpMzTOBf-}r-(GuTV0MQUnZx2yW*frGgGoAV#1aTBm z%}>SPn*|a^KWYBS0DAQ+_67FzpN;tIbh(Kfk~D*=tuM~7_5u-&wypONEu@|{i(<)g z{|{OJ6eU^Hw$Z|6+qP}nwr$(avTfV$GP`WM%dRfl>Rr$K{r^7MCz)fdqZ~0p88Pp9 z!FULzOnN}6%xL7O#Zw4Zi{%orW0@ptE=&Tp?XyaN>4pC?&Ei;)%m&Fo3eoJJaFwGN zl9Zc{#FzJk=MGKU#(H-+z0i$bmek)$lu*n8Ij<s0r)m5i5x9?w;{d>N+z2;L9ACh4 z<otv^)EJa4qQOp3HL7*inO2dsl-9+UR?i2w^2Aq*z%JrcP?h0_$($(E5TTz0{~85A zSBrWp<ChxiI<0Z3y6?rSiBzAHyT(1JRlI-SE~oeX9%FOw8$WA@`MM~sI#5mT3421A zeE7V)rSDz*8D$h)XG5l*ewT78Z9VtQ8t6$osC{rfQ<e(V(Larx^wY@I<2XmH)ljGP zVuH22n&LlgtSNr#k!0{SC!Vy$1Ta871L}oM8uEF<F*r};Lwlql5k9-4V-ym@SCTUE z5xXGA@_QoKWg9+_@+p&%aqQlJGP~C$N2LO8-Pe({hY7#nV!wqA$AzI>eHrqHPs_Jh znL%W)VMrsu4pxgx%U@jNMw4caRozpPxxo_UtU9hACBiAi_&_YNO8hw~1+ZgC$V#dm z-n7jxIi-giXOhQDWP-XA2&w6e5+9#p6XVl9u>IVOX?a2yAZlI(h|dK=n$}$(_Fc2a zFA1zk5pvt{zO&)C4WA@e9do5KTfmLwkEEEkq-?*W((aQ57$iBeEE2|&^~_v-FuEBX z7?4HXMyYeY;Sy>Zo!r`Y09NMf(YZ0>@XtN0H_B`>h|w_3AnvuO;(Z$or`O)47w{zy zu=*H44>ggJFj4)V?mQo4WF5rfQCH_fU5+}O4ELv|e~xNQdq=C27KC858>Gx7K&j1o zi#nQJa*1>@o)u)p;VF}MkftY{p&p8LkOM_Q@I*CF5f<>NG1#~90l)}n^==VeH;B7+ zm^eFLgSPqq)&@OaqK@Nx@E;^l4IX6i!5IYLNT>;Z&)8NOT62q5CsrWy<OX_zx>fsA zp~m*&7}I?@j-zhiy#bI<^kL4r+}=WlwI_8G*64HAcydpWyOPhGqMeZRzPJP9%9WEx z-2Tk}B`P^V1!-|50W9MzN}8jn&RND?BV_17?hh@xrv`Lwkx#VS`#&1|)@=T&g26pU z^mGed^jCl^2UrEHU}Xz)m{x|HhtfF~n+;9UTS}Rmk{18kuUW)plVWBK5FSX8i>3H` zYHL*A+6HC*bziu*PP8`fg5^T(RWFRdv?DXsKp)WMs{{cq1|W~cmrR{1#4qlNaMv7| z++2k!pKMhJnGc)K{FqP4GWSuW%e^<YnUa!c(<(b#AV&H_rUez3vJf~dQ|XBb6je6A zEDG8bK%zM$oWrJe4J28p=7EgBLNu^-9xC=Xx^*0JkcCH48NI{AsdF;Ihq`}>18a!< zwxtZeFED~!8Nk;GXE-3hS5MA!NJmgz>!g>J)(re7S);(A1Bl~^Nw%4(`I?C<TgtXJ zS3r;}zuA5?ITZe8B-NGPLNPzj3b;7gCr)%S3PVVTJF(Wf7J995G}R!hHLp#sfg`vf zE@B*uYNvcGORpPsP^k3QM`vxy3JUF&RYH#9@mqL;1u)1xg`4L<@ER<Fn>dB)N{Ioj zM-q$LG{(zURaeL}T_1ocwZ`lCd0^C*>hH1xPQUwCc%ciVEcFjv_*^5r;B1BF#fUdM zcg%wd!(23V)J)extr-Sm`;VU*qCL-mA-UP@UC8rQ2$2E?i@#UQzT;N$p~MsCNmE}U z_p({=1F-k(L94#w)eB5{S@#<UN#bE;-)(On{_YZA%VpZvX|oXHb;E*mfXCNx?5*fX zwY3x-v1B~<z-o{QoC_)<2R8($v+EbiX>w{lIKh&VPOzGQK~MgfP^uYNF1-OxJhwz& z0!113ySVH$jv<{>D*jPPvlw2f(<(JdD5T!PHz4~#V{#@*%Q_DaTV_i}L@TSHg+_69 z6=Jhg%MszPj-erUHnnOzXDQLtyoq3}Zelv=?<moI1@Fbtto?k?Cc%hVyB3YK=_u}` zxp^W8cNt|f-2D;MBkh!`sk@15z$l?P^8fdLIP?FXykdptW@h<+(JSWvL$7W;fT;lM z$>i<M{*G^?@4q$%sErLjC2UyHn^rZH5Ec-ZW4X#hhKkDR<KA9ohkcaVuaE83IL(>q z_-_#)!0~{h_$W~;v-`H9)puaN0dF@`oScH6_8tCTPNWWoyPwAr<$XQ$|GeK$o=beI zksQmkTb<9JzaMfw3wzQQ>V&Ix30D9(=wB;2If4uYTh!eWRT+Idy+}1b)K#Bf9)Pw8 z@1I5hyKuzuoL+73%L2pAwSm>K2J%m)V@z7C#=o(zxhhv_{V4Wms!mVbwY^|su$P9) zzPVHGI?a;p`-|lm^z`iSg*>geyY%dj*XuC7FqIvb2t96}-p@=LDf6ni<6QvCf6&!b zgx*js+&d+-L@aT~G3~c~EeZo&!<n>k@uCKUq0{Ch7-2X~8R6OIy|>K>jAZNXPE{j} z!;SuR_~@@sG#aCfzVSwRICrqm2Sn>1OF{v~U&<HGzD{LZsP-G{uK*8GRcTdRhact& z<8>x3&7h(B`)w*`cRN#E3sAjn!!uJepx#<ED^I&WsksW{(z>|qlMRJ~x?)4FpsSOt zc9Cl@?TfqiBT2B*3%dM~BwYMR5?FB8BCH=Jl&+3fYCJzFu}xBcWhSS}OdJORAVEww z9VvTkAIQ@*Yu13;)8vNI>_Q|GoKl1#%tPWQh^*;Nj#kiWN@mdX0YUU8u|Nsm@!?^& zHWPe&n3}ksP&XM{olXioHCF!zT}|bH$>{EYaWx3aJ=n(~q}Qg$gp}nyisK-nuPuPx z9N(MM`n#`%OK>=9B9hjCFM*ocK2pSkeo*B^wd??O{X0RHppL83*q`X<;c&G6fv#GT zz1>>iQ@6B6z5x3FL040pm;V_OF8^mpaK^ypO1Xr!FHVySVNJFZaj-iWTc>Er7=^!p zR&DD!+Re|ckj<}^x6QJ}_7Y;+F57xL0!=}lsHE?l<`AlJFRTg%ZbQK`a+Pdp*K}OK zPfMn3P{+$6t!S2rtB<3KrP#k8o{FiDgOJK$R0Q;lw-L1(en$k*5Vo?)o|YBk##{>e zo<;dyBo6G$i#S}{L$VCL5<O%+A@t{Yu?a2vZ_yQ>FCZ-tUQ6j%nP(W1ldv-<^U8wJ zrl}4t?+!l(GU$k>Ptt>rik+GiqO8eK%!{|_a~6vdX}fw6w_NctwCXhLqY*8K>X~u@ zg#vU6e}y5BCnP_394%)6W>CfRXFc(B=5HbKvXk%!g&|7C{^TK{`WuUH+$WbVD|%y# zK33P3s7r(*%w<d26Y*WFW5xG32gG@R-U!UaxeV^}(f1wi9<Ap_YX6cJkG6l)H^Fxl zwOW$VX?f@(S?}Ztth0VP3j%Gd3QNnqg#zFf1;D9&H+P>*zi9L-Iq#O_)l#-wot(^+ zo?o+lgZE#({*vhntW<rZE0r0?M-iuc`N!U5cZ2NZ*)%rY<lqQuBZ=|N0iR1pbpjO( zl}>_;Ld(ZFnsTHFCu=KS*yw?xMWG}7YZbKHP__l<cHm#=vy9k*w5!P-=KT1@G6#U# zwz5A)*hdJ;gx}oJP|8J8<9Pf+P7#U|8cOsa$73E;gNHR<GfQIp%Oq}&wo?xePh5Dx z%v!}~n5N*kBT8!p@!@mjkDM=t(jDGyhjsVv&cB0`?}C3FpQx;Ea0?@NyXbvS9EvW9 zO$xO{$J73$$_qB2|LFSWwzbb2!F>Tb4|8bqI(cDU=%$XUTXrQ1OKkCZBokP(nJQs( zQ|SwRyT1a#9?6L|uz&?MPn2M<&NIcLr1Vn<5ugH;MC`HCU;aQcykxA~;ln>EvUT-; zWwm7!Bk&9G?Y$SK1*sdM=awP9)3hFwaVk+9DO!4nS!=-_P-@)^4zc+||49502=6}= z6Y%Bk#~l<^%VtdOKb@9!)j~-Ibj~Q}Yh8g-H6k9LV+6ugWrg6l)<$lFOOR|bmkyd* zC-)yMbkW|*hVs8jFc7=nr?6<PVI1?y{?W`CtR?1f)ThaL>5Il@>lFG+#={;<Z1^#` z;zuqeZ?S+B?Rly1Lm^4N)3ySDgpAt%MOREeTz{29ilU|eVYdQ9Ay2~_K&H02a~W0! zi%(oFHmL%sFfX0VEegAW#;b|q;2$i<VrVMQ47XQpV~B4I;s>VA#v`HcvxZ$>NDMpq zEI=W_@k9ync#o)TSpdZ0R$*96Ks%e#dyCcK=)<78`oJH^%aRHr>GJ^O?|k4d2vPN` zFN&uiun%UW$Jx8KLOvr;n@G>^PUwnJ^bsNv#50a`lRd5$%;~cd7$Du&Br@=&;u!u0 zEuXpoxtwqJNZd$#?rGE@M;3WpBI8Na&)V62R}Hl%E&yK&@owM+$@{8j&O8b`86@K1 z0D%pLNQy2qWnONNf8+y3J?%3d107vbmR}tL5qC^UmM`{vZaHJ>Lw!KI1WG8YR(3c; zgHrt03LPCoC}_SqE-INf2Lfj2b%M9VqN2{dOWd^yARIYlx>jDp=khBbnsHi&4NCHN z#I##mdmEX~gyLb59eM6Z{M&mNk*m2kKL<LH%K|81WzCWfncV@>`>ybqZaf)VS)76H z)ddCA8+a>H&9d{9GYmPiNTbbW5P8Zn1j;p5h`413qJx~3ikCJCM_u-8xqe<fI18Fp zNeI}F6J$r#63;}24H7`gYn08A(Ky&h_$s8!DrV<5Hl^v)HA%qRtv02gRW@b>QtG6j zi4%5I$aNHkk*@%&B5DeO;5n=F#rW5Jtui&jg&D+8DON!i=`rkp>Jj)5!AkNF!NPxa zt3iU5bro&r7<R2~IZcn5?cxos>r_=3ITadOHR(cilCxcjHOR{#f6?UlkhO_4jq?Sk zwdw7x-;Jq-hFPq29aipY@3EuGP*!9tW~HPO!r)Z`U-kj`_Ufc**s&+N2(HnS7pyw4 z<&-T1orp}ZhuWw(Q`C&2JO{JiUt*WQr8+DLRgt~GsMCv48y9))$!D_{!te8Ml$ZIY zjTT58nb6?)p~+zEgBLEi()sfKrXh&h(^jq;vc1>$(A|DqGlk_xC*8?zWHH^TLv_dc zglGIgZVG_zfKgU+Fzy4-uX}V0QbxBif4Pc~E@iDM>Fi|XSC^>?t^1WrBH4*hWi1tf zOOJ6{E!XT<-t}o}SV+@>(5=MwNtV3OPj>5zh$UK#?Z<XAW-fo}>;+o4_s`r-t}hMS zLg04i_g;*}z@H}rSnGa#m-nNKU@rIfgqYfa3xI8tql>>;R~BcQ#ma%sMC_X7%7H{> ziow4wG@$}3vWO~g2fe^O`L)RaL2w{x5LW?QAg&~qlR%ANp+d|i;NF`c=JI!k&p>~` zToZ6kN}=s+<^%lt4F#c4eUt^;F(}!aJFgt6#08KA>Xs|%)(*PC3!Ac&KxZNf+MI_2 zKY-`kVhI$zW8p5P_e_0XzWp7K=i9(m7X0+JXf+&W{!X+G9v#o=lLWGCS6rs`aF^>3 z=r`Ivp-dG>N1QJIo*42rIOWF2PS*;k0@}wn0nfrUYyCsfo56&jo5EA~WT}VimXFwU zk_vsNjZ{=>aLt99pv-J26zFFqwAs)GK482U=V!yCn0ppX)}1JRmDrtA5T@5$>6_Rv zR}4}tLA?|ygW)dZMinDNZ=GM3FJ4Ffp#39GZq;5!D78@jnF8p}fxx((Ez1|-cY57m zzm#2Y(1Gsl37yT#E5p=PTDscfug;ar-9sV!6rp;4gd~sJq&1espdF@QI|J-8fC33k zD7^VAJ-`*e2T8%zul&$!ZPm%K!Uu~JBVT1_-?hfKcSjfW;<uR35-vRM&d@3}*Q3@d zHk+Y|2fX)JJsg)E^bDKbXWszL-4HoV;jrFo3IfelG~ZZFt*IdTqXUcKsk6&c?=M{v z8q=+g+o$ka)j47?oHekI*U%#ez`4it!fKMj4&9aYrY*yyKoa#Q%fB6d-t&(>+KS)* zav&BZG}zU}l&F8^&f?ft5(;f18}i@WTtf)*G|DlHIb*WqzG-Ubk=<U|Vq2+;2nQEw zC_pwF))-3YGEk?PN(Uv1H_B9L$)F<83u$1TWco_-yvL$b%m!V#-^iak0RG3#$zXvp zc}lriD^>8ww?rBsJ9*0K;F{vXkWFOp-XR853SPTxBTMkN$iuBVH@9-Efp$;bqeHKo z1xL(6Ux9y3BNHQ3<)A0eiW!eR=*m_qQ!U8B<XDcnVtGp#JKe61z`5R*Mxtez0INR1 z-V4hpO9KUA2eB^yz>EkBKudosWAA*mmhYD=Blf(P$!J+_SqBZX+EvL3kx;Xpnl-+Q zf6Y+m-zjK*_1P2StHYg%`NQwmb2pne{Blv~{2Qi*ZGBZurWtm1Vv)4v#3t&WdYvkj z5r}pPB^tGe!+TH_ao*Nyrlb|;HR-fytd=RV0~+;bBtemCHX;3Pz%&SriaF3S>r*Bh zwGNRO46kq@lc83?PGaW?DU?N`1`DYY-EIIjbI~i608?ZDJ2AP&ckkL6G@7^>Haw78 z^i9D8C{Pu6z=#W2q!0_|TWP^FLV+g)(^iEQZZiYh<#OBn69SI<!8oF)J~eh*-r{oE zuzv>bm}r%Owdsc!fC4;C!grXIx>8Nnr>ql|+8%_yG~nRFGTZP{hSTTbt67Hy@Xt=@ zUF>D<J#;mA{jFBg40JN;!ZNTjT~3q+#wXD2>{<J!J8k+|e{LlFH}mDX#oQ}~ZR6Aj zZGG85_sEBLl`Ui0T}<P77K=5mK5M~Vl~f&0y;+e`*DDJ>z~IkDr+@lvdXcf$zm>bG zYBRL;rQ44Nw8JJ_I&#*VK8bXvtwEYcZkYQ)huPn-;M%WvX?F@{e>e8LzXKPL-Ada- zaToX}R=7_5Ne}^(V)jG!9njno;8Ppm+~I_{jy+E@pck>2JB27svtGOKG{hHpo!1f% z&DC6D%Te<A06OwT<`P3e7gxJLzkL?0$5@2Vaeby!AIkj&Uc8>?Bv>QfDOa}ryQ_ka zQ$`-d0$3_So-L0D&DXCGFmj|}M}Kk{yj!f7lLWCpv`+c*{hxIa!ju^)@Tgyz<5lZ! zx`Oc7?BLgdFcFboM6Q=7tdFxuAMMh!GY3QQ5LF75fXzR9m7}oQGTJT~5L+rf)13>9 ztvVqU)veX0=dJVVD>^HzPdcYHTd9?FKdhJwCa>cOiRyv;s%v}mY%UAs?@|F0`zpW5 zX~PXWa@UG!;`VtbMM!77XRpvPhUqubTd4GLdN!{)AM1`yFqMH+X|=V4KTqIuyS@?( znHOChfPl;QLGZSnr+ye!eNB}9`WjRX2edyky}1)_{L2r$_8Kjgu!iyVO;!AAe+-9) zMF06g)Rqp3?&Tfn-?j7N-9B|rhNM7V@+x>})Z@T}@MCAFlK^DG`-BqzalPPU7Z7AD zR{|#I%GKsF0)|$%KbWG3n#oz|Oq-I+WyaT;0SkvUatTA3O6b=;3@HJJg+{eGnJ3@? zYl_S}ouS#Nkd9C820EBo92CBHVQEQU|EQ3uh=P^-v+e*yv>d<fc;lUlIX2jjE06C+ zfP&NH!%PC)^vx(<hFiQJ+;11v0@31|*0$vYF~nAm|KBGd@bv8)%X>0~kuP5l&^ue2 zK)qoNY(yREvDIo||4u{(K3`fRGcf%^L>({-|2QD`<M>Zj9N_H{@)hd>y#<+o_!ab0 z`?yPQUIK|QFBq)(_l>Y?hbkEKGr`{w38?p`j*N>4sL@dg$P4~r`t8Pv!$%oc>s;pB zPz7?Ro5}S62=7MNnTWIi3t}D;&}wEtq6AyBsQ7N)3LP~ssi8jjIbN-VCGq@EWZ$L; z$mCh4X#Q(Pg9lDT7-bvUua$`3@|X%ur%sq>Sx24fQHKiOrj7>9hdvddY&BOYadqMS z#t-KGEeyncW=%+ldO6v<iV4nAgGQ~*ektyemwhwM9@2|9;vvr7cWt~6;OdXrhX4M1 zxUKFc2vG4}Z^!%ig*e-`S$iR@;15Hx0>-E>YbB;5gMd_}Q3HE^BVTH77AI99xf+Qk z`OGG!(`TpW=nY@GAu#dG=H|&B)oRZ-pN-$=J^9ZjHQ6hLhM#imu+6}>kexffU6{U< zotvQJzc25j;kaU^Zx_I5b9rkO;t1jNrS+8#OTntd7UV>=B5l*!axF&_h#Mw@u;|>l zfvdh|eQ-UalKPDgQA1TduDbBr5x$m|7$so=HU%lkA=BKP<mAGr`@2-vOB6_#6+5)^ zQIQVIoajP5Nq8SC{8NxRPBx)d88P0UmyED?1bi=PhwrC~@qYlBmD>ivG?aSvZ}Z;g zH@RbtioJrB8t{zO;2vz<uCxxcod)JUDTVzy2uD#^;wgu;mR_(vmY3k0_q%RGiZ~7M zpD<|$PhZOrsa<yK<KSr-YH864W_4->TdNi*Ws51*XvJB<S>AlU#J_;?AjYE(w|~_0 z)4XN4D3nVzmS%)OEoRa<vO|PoCysBWWthU9AY@+-7k4>1|G=-ji1jk$B7yNhxj2|J zY$Jgs0O@3$=-ZfnVhkl*Zdwoh2(j34%u0BBSQzEFIYl-6Xn$^B_+~Vj%`9oE`<Kqd zEvpP<G@~m%>J6l-6&37GDF5SE3U+sU?rc5ZZ}-FV1bW_%!p98r?*Vf+ih>=apn!w_ z0G6d~NY1mE&*9!Id`!xVkxTHe^Y4@1GfzOf$Xx!^nPL0fpW3XJK?TB!xnO8i0a#vI z%I(JtrT-Bu1v>&MgVWP7XWCR4Tefc%-37{rx!ESomiZB@tp$0`(MVgph0i+`H`3g+ z*5#h2wAt3x?=!j_wC3#UFH4)2eikBH_&9K*KL|^NS$|kLM}?sn)}R)7`3)p2fE{w) zQ5<WB*Rou5zj-kjo6}!v*K88D>g};zsa<KdYnH5iC@xPRven9B{Jli?hhaJYU}G2k z$_xO5_;a)g-F9F9NaXkFe_8UfIy&Heaebo6Y2tDH$j#qJxI3@3INz1xKD!9|yKiA@ zQaiQ4aOd+xVn!~-y_JoHFV2VtfX-fTBhB=Ce)3M+)wPKYX_>OAnq0!hhit)SuDwIx zZ5`JbjVFT?kP=%^OYs>^`S(5Gve(3nzt`)|`ZbF8rgN@-xD(0G2dV%+XyK{Zcy;;i zU@&@JCQw&4eE)tgMCRG4M3ko}?{R_nOxuevpCSidp2CsE?xYve>yh^y@P8uF*n-w( z{vJ<}!)YvsmO^i_*HYCDg%{-1Wn+}Rj^D^*y0m9(-u6@;*%phtCV<M0$5HL6ij3CB z5&J8gx1N0Z#~+WVC!JS``tO@Rh{-ul_UMHlmZwF3^{Nig)A4GJo3l?CeZ=X1!iJWF zZo@RUe)5ClelvYhCIV7ZLj@a)OI0Yi<NxDW07Z(+$^UUIinn2kpG<F|EqYnk-h+wq zb3>N0N7f`ME5<XXGy11Lm5B_T94<y~|8XpnwfM^_JUBF`M)W}l8a&0F{JL>&sj>vy z)ks;(L1jrBRG|w*xrAN;=^K?HY;TMG%}20$8)v(Z%31)%xNJRI^BHZsk3TYNj~c|F z`|u+5k8Qx*{jUzumK)hojzlz{D@g3|xZ-M9@W>-tlVQkm$CVCe72!kRZOHq)3@r*= zxhu_gt!6-wZ#4?+Y<Nk5v47>d&)StSvBn~`0jN<EHh+g7BP^CkxS5$2Xn@eR=INXu zfmGm27cl@pyRnb<k*gI2Vl%=jQR`@itk<4}c!GUtqnT_nX;dgJk;nn*IKD<wzoeZ@ zA;ZzktBan1BJQtOlOURYfj&w*7gf@UV1#GYNfM<U+1^)uL%XScrTDE*^J!6I@_>aV z$tE(zzPNbc8;5R`$+#b5uh({I>(<`W0n_G6k4yq=k#!(z^nx`s5x5VVP1Hc6yp6Xf ztv6C60pr)Ab?;|u`>YFn#&M9LWXFn7RT}J)yF^LCAXR8^d!>Jjwm~QZH=iTyZw#wb zIr7EJ;1Dg<si7Xe$d1{?ds@62+4#1^)e}zvW%58O3lxW$(Hz2ZOfs}r3pfoMrX6?H z{EYx-vjRS%7NZt6B4_pyDUSexV+ei*9Z)juB0f@gnFEH#-X;OY-&XeGghh`fN-`H} zI<!J(hDF%5*TgHrq|C-K0BNy7I_`xC=Gmk}O``0Drk5f~lxcQ<;2LPsDQ<X}hl=iY z$Lrq@JCEEP-ze3-*nvusi!4?3TU^;hl`jCtp^fY$gO3(^GtVE$kv6g=5qyCsRJ%M& z^qY=YZs<UK0mP*3=q&bvPA#OkxjY??3-(uyJp1(G>6)U8jr3n>hPb*EJyv@beQ9D* z7^1pG>7sA%D@bR%hk0oW{<mQoqZaCgutYv`8!9MSb88~B)EoDrLLK@LQB0WZ6%qiK zTT!7leejSM71Qh-+7==Vp7D&_ld3s)ILt(4=vs0Tme5Qo4o?37R^S4iStMA>Vgsot z{*HJhRstNpS1a{XALNwFLiCD`<C@cg69dS&SI24K2~k5^vADf2w%}-q_}a5%9Ki6Y z7K5VoiH}_86!N}v_Go0*46uW24F{M_mS(+T@`*$4hU=~*+tU#%Tf28II&^P|DmrMc zL{DY$$MQmNg7!I)NFz^DAI!+YSr`KI=G9s{i2HL#knxXjM2>zxV>>Yn*}~;{$Ah$O z!5M|Q4fjoRb9=<84H@qx{E-;GYPp;Fo!bp->aGf~s<CNxPr|>QXx+nrRt|V{kH_u{ z9e+^x=s_TJZ=(~H#gvL{7(6)tjYw~UELE+Jsk2Oy$VLnI-%~bvIEFh_qLmAQCtW<+ zPTg%{R>ZtI34~jJlS@tn=OSa84K7FNA+uAMAMh6Ub)CGY9pAFsv4Pb)?m53=Zx$y* zsX<eEsU~CT4!OeKgrwOafXN_U$i6PhZ0_S<uuftGCl~iKfo|B?9g5B*tU#Yu>aior z&D$Ng>?ueI@~HcUcLHt6HmXOS34U0OK)apSq<^cLGIi%*wGuxn8yUz%!IF;bJ1Dl5 zD9He?w?D*&erk|IqOKiIm>$c#ZX)BH5NI(DWCZdtoLj`{eW1hz0DnA3#mn6lN-*|w zvMep91VvRA0%$RMas&s+NFjz*q6r$6A?p`@yZ$+*hQs8v2vC1V`r$W_P&F~b7m}fh zTsFqt7tq1t_cmMLtlg&DI<4?mPOHe4M(CR>7$-NYVXQ5MuQ=Og+;M`4#HcrIqa}P^ zMgT%kZ_&e%Mnu0iK(wh4G6L36?@A;YL-Y4(Z6dFBicy|?9LA;{&6`WpfiMqH?=ea# zr+pr|iG)uH5;yCP^`-?l-cs#-E<_E-O^&)olaYE0y;hvH?$wCgc0eu}wED@QQ5%^w zHMU~18_<5zAud5F_~nqrB7k~gvl2sEfUi<K*)x-I$`2?SK=OOc*z69TseE^P=c{*Z zt8S#aGeVax+xO6TWSCrrYMCK(M2sJN5KmsIlOJtHTns$ev&b&P#W`zzM^&Zr;C)1N zd9rQIo3I7^Q77((>a`cH9~4J;DN{%?Okb?NjXPsj(-BBU2Va~iTZk4BF(y^S+ETo1 z#y?Q6=0hzRpvH!k3o4y{<4&esm)^3TWY(-RZy}jHV<VgcDYe+KUh_27Wf%_JJ}Q%K zK&w;5g~8_<sPSVn%y^eq55CLx!kGm}$0y2%aEtM>iIJt@5#r-jq;fDK+tpb5tL|uO zV0#0;{tZH_K=HdfR*<Xi&}6P?08&1?uJbrXCLYKKkYLT^+n9uNnhYBWn!;2jzPsNa z1hh<e6RWP!rd55jX^eh`54}+jS$EA2t6^wxZ!#9#;!$)=-DLEde=6OG<K9B$gJ35y z9$j3~ZxLF`^;liaR0!wDqMmI?H4cCYeK_3gdb^%x2n$EZasksj76*f@9c%Z#lY>EP zB<4o|1kvjK>9=<_wr?~YOM;+9ci^j*a_6!SLQBkqk?abn(pMjdCjQRq+j~MqDfT>I zkA)h(LoXQ~eKN$5s3q9`nZAX{NU=HaThKjzh5?OgmCMeo0ZAuIHVCOru^Dz+g+}df zfvHo*NfwUb{x8!=*<@$fyJKkypyh*UqQYE&=_L^U46};4@fzL{mh6OA{4Y>1wy{4z z>3D}+{kf)>xBTky$WDLp4uQ9*$NuaKq?>}dQIB~6=}j_w?B$z?I^;<AN0?KjeUe~f z6ScmYj#-U1t{*<vsL-E}ShOCYqs1DvW?oie4OFKFu4J02#Sf;nB=n$W*r1b-WVRgu z(v$CcJMb4Nw<A_YJJH|}U6K3nUxV<wfT~hsO((P4huj<@9Bg~i;W!N*9oJsh>?0gf zVhjV}yZBjGC3}x1<KMZgnG$frPks6DfUYVVbbzrrYDC;-s*{YHX~foQaj-RNgwL14 zCB_JK=wXZ8;et0#wa4Nr2G5YdTn8cnO-{_iq+OB$3lauGK{`Y>Q=f8E&7h6;e6rhz z5Eu?0(L8yfn^Z{8wvpKvWK6b@WQfVC1gAhNLdmMn_+A@as(D@D`N9SD&JY6y6O^J$ z^n<Z&`UlW${ua2}wzweEMw{%pMw{MwL}(*%uCh)=mgScN<Q;{9qFn)=&;;}Vs>*_G z2b}ntaWB0<3c>Y9UkT4P?v)mphMcrUYp||pI%=WImY0IWcubCK%po#phj!XGSULUu z>mGJT42W}3qWZYT`b)v5=ir`QdQ~ubL37J^TodEj^3E|n_cDqZ1ZilwO1hU(eY6~9 zn8&2{S(wNXca2mo+PuhN&%S8D2$pxw3JZqm5qOO_-RL;1MvRsp(S6gNdjgtw)`Qp- zlDF%C*O9oJBDy#3Ig0m~amIK|M*-b^xztLJ3G$SLXvW39W9d(QdT=@Bz@^aXVB1`1 z{pvGIW?VSKQoFzPDGVb~T)@Gl^G5yD+m6RJY>E7v4VJvlBeTRZ`QsTt8yalCE3ZMB zOotiZT5V2unrWyV9OFni^}=(~pfRO2&kShR84iwr%UL18h-K|-X~})Db?)ty6otY; zupi1e)wOmu*Bg&aPezXCY?ftbBT7)XmzdrlayYCKBN(vfLvFux7G$5$gw$&Metj<u z0i2*Svh@~zIVaz22uK3%Td&Bk5*ie{+WOAPe%2d4koJbGV4u9qgBX#673=ht_#2st z=(H=ZvsRJ+)|q*LUf~|DdQ~KT1R7agK0PU8S~>=vO=}EhI1oCI!}XW<>sG-!B{zd5 zAq{%aNECP;sb=%f-n7z{%~=o8?X{6m(?TOq(Z#m%9rU#l0^mdT0qX6?>-JRt{+I)~ zT49J!P4=7qU74oi4+U?!(;y_hbHc1-pk#PuPj5!B4)ei#`wN$YrNJ)ev^q4rDZ|Z8 zJCkE?RYY6NZyZP7zUrHe*_<|Rc#%8I?VmEmSt(=OloVgge3q5-p)8>6+}N1F#?)AA zK4T0iL_CdoG(aPg5tk3cG;-i0oC%Ww;_<KbsOwI0n`9pw1LdRTMpZTLF#ZMj&`uvk z{6N}ZTReSaJ^1a>@~%~rH0>dJjjXW4I|n70<nHe)eQ&|?;T?5g-3ZYVqBqHPN{Vtp zg#`)LIkSp=4luap_d(Wfr;GK@xHd}$rEzXqzOr9RX@EaDKAQ)Gj#KH@zq;2D5<Y&P zh>hD&8tp9dyU4vK=LIA3=1{yKw4|bSwD^0pUyCGQp0o7&YnZy%i_Ym8x<cT!++`~i z#~h&tr_Dmp<B+=a?SH<f32|ssM{ytu>n?k1nSp30U7i%8%1oeZh%3x%h0064P%%X! zMW7YE+yO=q<8Y-PdJ2rnmDwNnYIXeR<T?mKVW7jyM5?!&>FA;xeLIg}Y8H>t7@U#l zP(^*CV@gr7111=^k)S12U)OKd(bdKEWF?R>g<HeCRFzuGWhb1Lv=!au1+()}!UM}c zsGIX?$Paz0MSav1f%|JK5P+tAY)q*T&#PukRROg8>UqUzvF~C@s``@g6IJ1Lsc<1v zHZcA6RaF~C^w{=|kyQ?Czduc?!M7cUmo>%Y{FTwv@_dOXhYy&-_5z%7W&i7zRNyW< z>&61%wN^d|y_!nSBV<@#izl%wH-~1Ji|#ilPB~nD;qd$W?`?sZ;X|XL1&9J8wiA&( zfRtu9cA_5Jwop^3o4$5?&^6!uP2rt<A$n`YLV;<o_3*KXEZO?TNyJQwFgZ?dHcF^Z zzI&D8(~;W<jnJdD3vuTp1G~f;1H5oOutSU^zhH|)u_qZxkkVq(F=BJ#b>T@?$qY`Y z9aPoBr#qzXTc9|o3gt?QGzArLcI<o~00TC!5UC10yuN@Rii7I<=1O1M7~+^^E`-<J zYb+|{-pC<qRX9XLZ`5Teeb0v97oOyx$XDm&Joc~Ulo{^me7xs45~}X&EP7?%szNX) zai#c@spuwA&yz4K+ishw{kE8n%Z(jhVi>W|!I~vUtdg6DR!==l?F#>PaYV*zK+i#N zXPqsFk8v1_MZ>{Ego^1L2SS-ocQU|*W3(>VZH%1_)TBRtXn$E_<XQ#V`?P70@;BeD zx~_O6gtBAJYQ$#T^!X0@_7~<wZz7`aMb=1OqjcwuA@Sz+4}Y)Q*11+Hnd2)inuyK_ zxse=BMXsr3uD{<z(gS%VjE>g{Kun~?eC9M{WIGZUDIs=PG(~b=!N!ejn8yyRq)AW~ z6Sp8LHf0eF`)i_Xag+?o0=i&qClRP!BfDcB()PU(V|Hg{ElOj?W#<D_DMg!v@b{m# zBO7HEh}pbk^;Z85ell)g9ZaIKlej%m2dhm9`}X6Q(UQ8|;|_Muy!#6&z=&*X(%$Nh zEto`~th7Kv;Ibxd#&1!WAGzyS1LY#Wv#uqjVF{^5g#NeX3yR@SmiU*$0gG_bq12y3 zKLfdIJ?aD@&c$>MFuX^;Fza@L7bJ|XPU!O{eZ?vF>I@0#D{n<pH>Ot&KMaNNC3)!p zdWOxArB2)o_c6;z?uFhrKsd)=M{r(%zGweI&-uC5?h)Ymch;4yEyv<~hU|o!&P8Ra z-SEb+Ir(Zaavn4Y%nLz!vQgSUGP_=5oy>KpSKr36Jv?>QOqiW|ZkE>8eUlESMn4OU z^uw4U+Tcu`usN}V{qXEzsZK5m=2WxUhf>neMwL>aI=%&f+q6@U48teAib;TvjD*=3 zMU|K$DIf15A=~Yp4PkMYOFOV-xbMz-00vF-om!g=YbJNL$=ys7d#F?rP3-M~;g|VL zxj>xZ_9rHai7#x%b~Z5XPiPP;OU7q5u;`D1Y%`hchlC^iAU*jtRz$xau%9C}!D64q zQRXg%Tudm&(3##@qVHlRy}ZU7G<a;rUfqs60!=%;2WtCkJq=Rm;Ao)kIp_akgJ^$Z zgYK@!`ruv~3a*F0F1j7B&Az8T?)w-CZUp_LA?^&a#c?aH4FlZUzm;~TPSc41E4>Le zQPJP$ch~I|hJsYxVpWR&eu9DMG^`pv&$i!de+*>W|1*#omYe*~Kz20*`#%F&uhhtY z2C|1^!4y~N`e79D)QRpmS*HP{;Eaax-J4TS9Y%@nr9MkW4K1H1NkkLoQC*+yF+|2A zlGJ++Zn@EgizUSgApni6fa1SwW2(P#JYQtmndCv=+TqBiP}h$Uk9I#aT&}?qV_1}o zuJ^mYPdm#1q=m|-)L%uz<94n6@%O6`m>8*>4-a?IC$2A2timb7+8-RQ72@oUvorn& zhr|7A$#^5s`=5dgQ2zb#hR;sUZr|}j>~+33#!K64p!W3u$murR&Jx#Za!6OG*pVvV zNOWD2Nxn<d5N6Qm@>PTvb|<OPIA|$jn9%V3MSkV4SFAc~<OCkgNq^Ma9=bcu-Vu;& z>j<X(6B+c*@g*IOWlmQ_R;F_Qn413+8FaM{eWT+meY|qO-fvI7<YXQ#T*AGD_g`d? zDT35_43;XuF?wXdD7wBMgIOX_5+J!E;?-(KkRKBRpFi|L#*H~EZHXR7I#?0%>-#ZN z*g6LSxa}gr)mOJ9q^weYWMEP1-M{_^huiqU;m+h~{h#KmC72yCe*kgtC3M+^Q~4wG z4<~q3>t0|tfE;_Q3XW>YplYDI-Ol3cNTn6|!zsWDi>fm!Is-9@NtG`5w=7v1`@Ujr zWtEy$RNbHcEIdOj)H<^t2N@cw3o5FhzUhyH4DUkGs%Z)HY#r6RYuc<%TUK`}kp^r= ze==_lFEd0+!aj;c7yJj?$cCZ$^RwZLi?_04+#&hF;cm98QLvSVi`i6g%l-=t`Y$gC zfUBMevAc0=5(i%Ob;kHu`Cnj=2%|c`mK*@>>MnN&$Bd{)dOU6iA`vx~5ZHVixKzdn zUxl($TPkf4Y0;5jJV@jD(UChP8!KwgB|L4C+W4Hc%tz>_9#2W$5e6EyC?-fok2XsP zQ}vc7{<=gid&7I=_DfO&fdR_r+l(GSd2%O)_NL9fFQcovf$Qc)zOdSnXF<8y_KT+2 zv$xwF@CoD-5L)MA1-a(!fuV1%F7`4NN-9IT#cj>8D^!y58`rw{CIgY!nh7Py(G^xI z*(udQWe7{L_{y`!YAIOkJcopd`q*MbDpY3DRekFC4VnAZHF+xNdo=yg=0|}ONka4_ z@{X(*(E2-Purd}DWiTYDuoh-Bi0D|PWbgZ!@!H^f$T6!z(42#1)ENkhp!&V#V3FtI z6D${E8|xKQ>D}<QZBa)oFyDK?((f?mUcwf6d@ru^t6RFR4fWURhkbsI7A|(jz1^8& zZGp>qNs)|CDnDt5rfmjPvYaA-8$O##O8(d6-bdf%Ljp^4)N+)sBVbTa=s3e&3F7Q0 zDb>CN*u?=Co}PAb%W5GLZ7sOQ-X<MQgmKn*CpG#pya3A=?LbY?gxrTb?1AUGvYKtC zc$7J3Y*OYg{5+9x3Y%1&i^zB?YmrCU5k!rO`Qq9Uvj{1d%4bXh<ZuWe#yZ}v9u2X7 z`<v!&p13{PdR(0^mS~rV07!-Y$NM!58sa9!H=iSy45!ccbEkFJKYu(?3L9_1e!&B* z8~}BZ`X?!y!sa#OX?@U4h59fO2RL6PUuGHD>k$H^n5(BHzc_R?=^`sX9h$l|CTWt% z_<`B&d*fOI8#xn6MfVu+vtoZf?p1;>{Zbx5tl1&H1Ks=KQM*V2u)1ImDn1;@mwwm0 z8vkBfVQsKl97dr>QkM49keV5pk$5Vdt|;@*XVbfyTS53dzK$6~30{E<{X@9gC58j1 z>z%Hm*r8Bxe6k1A@SE$EzYesO04jIwOTAL!ncd)7VkzDd$rcyDoyxy3E#)4WuHMso zbGF}uC>YT<rm){Pr4Xs+FmJ*`zqd`(Kg%Xb7*+=+VXTg7Mqb0By&^{6IZ#anha0&= zFM}Xkk}>)KJYkGR{L(HP@050A71<4uCBB6=26P7>T|#PuVuquPju&~FxyKZ3g8ekA z<0Rxj#4)`9<(LP!@S(4{PaF(y(=IaB6p87O+IFTvfsDzGs9H3$LJj*jR$T%vrApj< zw;%?&dYyQB`X?JE3qq3}GPt{tJNtq`#6q8QV!+hZruSIe@@0;Mq%C_ynX;uUdfmLh zUpwji7bC3-!{fqsJ@Iqe+HQKa)(SBAq`FD*5mMc1-bfuFad`LZOb*7<tD)^GXVpLX zrA6paVK?oGu%f`Ttg)F3>r?+aNa&ZDkYiACD3^DRL3w%$d<=ec-YZ0PFX!I8g=J}~ zhRdTDwL%nLvGGkH!7Iwv4ZH%>T~Pk@o$p2RjxzRoWb4JGLajPsa#C?VxWAUHLt{0~ zVy2(L9<n>Yd_$L?h_p^ICmNN7#ek9&*9<8=C9x*{$2})5=^>@BJu5;Zk}S+aMs_Ce zfsCALMxT|D47VL*zs`zUmZ2EU5a9@8|@R!0(BBuFvH)4?!hv4D;~I<K!{Ji~d~ zB)zL1&b<3iv8|V=>Z|a%*9Yf=*v|K90cfHnE<7E84nM<MI#{bE^Yf#!k~i`~IZhNz zhqs(TU<_>VOv-DOo_M~$p`{+|D=02&DmEGyhpvHa<@^FX8I0z-uH2z{iD7^7;^>_I z^9$87X1kDUlvr6K>#&T0eI3Nn+F1>=ByQPuO>hUIdc&iLvzrj&&nu8P*M~A*?rIDJ zt;z<79|r6F*O|g2-O|G;Amlfm*(7JNwbO_U`7F_VtFWqSV}fghe}+L~&K`~s0Zq+y zclz{4{UnTk2D3$&d&w0$Hr$iSy-W~FQ#g!4`Jqj#8HglLwJqKlFi!O;sWce$g<c7I zN6Qi;eW2>%yO`?3-YL8oMRdr}3Y!-D1t4<{Qsbgs1LRA>{|qCm&Z?3%pPt-q914AD zm;ZpsB}OZ&cf_nYxZ_HL-KR@Eq0u1?ty#lLUAF&x6oMRqiKKTai3{q_W|r2A24zel zb1A0Q$3MQWRJGLLFfB!TIb$KT0?LFl{TP*2BM?@1iTPwxiFJbmmE@M{Jrxy(J;0xd zRhkXml-1xf40{@a1$YZf`6SP^R<j+?mDBB)vo%D<f4(KtIb#|uSHGxTYw1t;wcbER zRxDw4!pW-%@Fj8*JB)dFPQlq||Fj6gOx@x9J-bomi6-uXx?sewAe{^*qR>~M|BKk~ zmby`Q$RsRR%+~*mXJm`F`i|~Z{{*l#r$j9-CX4V>4~XzvscVA^_XF3!g%JG>QUf0{ z^N<#G7BIza_{697Kwc&_sv(8olz6<P;Fi}_xwh0s&ApWB!Qv^N)W%~w0p~s9b{3?$ zr|DgOWDf<y44-UMRIyWv3zGAf7UFa;8>C~0=?|Y_&<(Jmdx9>+&s&X6Xu$7tVr6Js z0Wum>X1Q@KM<eDRN3r(BaYO@AJ3K{=x6Oxq1s4%3J?2d#%IvXe2qcZL9O;mSk$^vU z{Rp=E6T?n2_N?)^44s#HF`AyeD)qc>PD6#e0$fo&|D3!_Wb@MTz$PX4eYLcL=+>Jz zhI8IwEK<S=*S0(9m-U)?G+;>2kb8vrExRI&T7f>R;D8BFvYZQFFYjPFq(&7F0s$3^ zfln{<uqEKawDv_e?;z9dL*}4bh~D^c1m#S+$6w807EP3O1B@OOZaXppa|w34GTp62 zx^r(ajm9<K-uc=jLiWmOb0R+hMSQxe7U7_)pv)?gk-06oGlk-;5daJdKM3*H43kX6 zc0`A1Gg6+IhyWl=>^9eGw&9Krb^1P7F6y~0^E1npH7>z2#d!s%4c!IF>RHfDZ3}Rv zAN5^VfJ0mqT0#N^sCnS$Zs*Jw&fRP{3?8c@@iyRG0-HGp2_AnO&6L(>=I__SJ~omE z&%{82`u!`y<Ii_B1i*&C<C4@^W8R}(Cq3k<#IAOslk${dH3Xrv=(p0aL1;+1+njUh zm~)ie|J3+r&QP@)MA=Vk$RIG`21^un47)v)R&p|`?5SOFOo|pZqJIoDI?rVyArW)V z3RkQBA%;JZ*(NO+rcQ_hh9t&_TyNV9imPbEYhQ=JO<&7>1>o3$FIdIJQaG=jC4_mF z?Bt1~BOv5_%{RQ6SvT{4fPuBOlSVmqdwEDMFKtt&FP;=8<U11^bezFvJi!txhb>uF zT=qv(v2B`<@*)$~1uRx52I@NlWZ~AInj^mNefs5oBR-7(O1I<0JFGBP?O`Y%vcgO- zc11@PwTYx71lY~elCb1Df3goLqaC!4E*p#Fy=1)SoH3r3HtrhI5qfACVXNHb!R28Y z9!wg2=ehF{bI_)f)TqlxZo{aWwN^v_(lw55QC%C95m`>R;8qqe6d{8Qh{8cJq0dr` zgky7i){eG?59fBQ?zM?Ft)Jl<iHjFpL0dyMUd#zm1E}B$;gofpB$4-0C$Nvi1yiV^ zoe*$!)_jmArqNg6TX|&|$&R@?OW&2OkZ1+$p(Y$0JnR(jsLB_VR==$Nk<j*X>UT{z z4)kl}7oaOhUrbuUR$`&^7CwWVC(20~gJ18;w{E%Z@qUg!3w9e{B5prL^4#4~R9o@; zIe+WT2VDNCiq0|G#;A;qpf}W8Fwyt&<~uYV?V7Qf8j5xAUI~xDzVN7lM<g`TPs=uL z%)9ITRgdD}jH2D1if5z`7FR>#-{maPUw6e3>lYY^9M;v}vi%h9i^ydE!fyl$0 zndyN<6_JS%Wn%dw7gsDL7-<-LdwZAT$u~bf1I&F5p2Xin5@J%2TH4h}LJBy?fzO!) z{1y$k@;PNdCO!T=rs~i;XY9~=w;bS`b*s~3M~wun=uN2dDBuFKoQ-VIZi1#&2h$sb zu42?m^Z3(YgM4Iup%1DikqmwOCFOGw5&?d#N1I;44}rtQ1?ML>n22BKH<?a{@Qop1 z1Sqgul?jJm4|-!e#SL@)?VcxkC73sQ8IN?HG%XuYe*J8;a{9aV@vyj8C)vfgsGk5U z5tt3|mz*fX_<U9P&N{A{o{3y2IF6a#hFYJyXFqWWJ+e%oW2Vgz!2QTo`@1L~AE~D) zgOIpQa9Wd|tV>I>E6;9H!a3}^?<M~d3-IIo+tsA&$#2qrp181`Iwau`(k3Y8a5I^= z{2=<dj&dz~tzTu<?mJ1i+S>IM1F?BLEFf>;NNYQxe9>F=cjReFmKOXh26SJ?F>M$d z(IDTZVXEpT%jWM$C~R(rwlzM3ohj0u$k~`VChMOpj$=E$!_0-|V@=C(snR+17r+BT z>(91$@-VnE=!y{KCX}3@Gq+l7qx~r2ww^}<?C%aE9_e|a??G0W-W+lqQNk>8&`tVW zxqn88*z`*pWYj4qnBJgp@ei$;7`fm7z}@k1Cp`uU87UUOfDjFpBPPxV6ur|3HpDES zOL+dZBB^!L;1d{G>((^_AzGHY2T)2%>i7DDGY$B#uq@L3<+XiD7l<ygYGDanTa5rx z!;Md7O44k(rA-8xbVK*E0mmN}+VzX9<TOPWS*p_tLjrX(&WEh8LCJp6Pepnqpenll zC0%5lpbisfa*~MV^ADQrDAxxpDr!3qw%xED{g!r?FmFNJkxzmsXXN^^4gd&vEBuZ} z7H-~90VNG~Xf1+}0Nb_^g@=p`Y?OV9<wJ@bL_Z8taS4P3df17|8NjFEGt=ZQYCR1n zLvR8K>}KKwnZr%y5`vz2ibT#HqL;)o3Vqo7xkJG5{Eg7~GK1|WvHvf=k3x~|=&afC z1HLM+Vdc^<=WN4zWv2o<5fHNTloHY&FcApQs8Gllh2$vk5Fi5{xh(#8JH8^|)r}sm zg3!LZfGOLv$&o41*bv{#gE*6`{3kNIWhSQMJCp~(pB<!^9qTrp_hL!BHZcx$Z^Z)g zTbCp2S)YP*nlt+H*IxaI%7B}Yk^#n>`jbFVqrmoF4LPgyRC(6C0DzBAH?-Yca_S#_ zs_w^=)6JD8C8SxIsymU3EHtdX^-x#yRB+ZV!>I(F-|H0!(_p|!J8b{|mN<SP)~N;L zyO(X*&^a^SU!jlrK2bttfYPz{WN15@ZB{tE&6$hB-d{EYcDk)<30@4jv>^Xm)#RVH zpQzS2BkIgnjRCSxTAEyK8JMGX0);*p^jSEwC1tf{b{q=Bw|U~D&^ULOZ-Zuin)z|J zt@p=-Ubcil8V=4d-|p=?PE|#fhpN@>D4P=><n^A<k*I8!vM87nO&gMrRN@;AK1EBO zyY@Wz*<3Q<gp-0Td;0GldOG^{$H6#C)Y9sP83HoS@uJ=(;*l=)re!@0UE5;kZJ)v- zb(Q$`T@V;nEnNS>at{)?Pw?hnndx+8&`0F{o+PLhP?O4P?SEJ23wFL3XA|03Gk(|p z$I5ZDXKdI07@zdllYeMA|C>G1^Pkev(pE+=Bxa6GCal{<i}3y*r+=IF*3Jg(w{QJ( z37xt}hKn6V@NI}I8_jmgV((u9`l`3{evAO4{l3qCmhGAizb_C9cJzM@RcIRO-@Rr; zeD+zkN31zi1`9g1N|_JupQO}0iU#cM(8b4uJek}De*?~+&mG4o*F+ferw-eHsN3Qn zVve9s?muEKKTJP0<@(i`Dt%R_A;Hj4FnN$}I_9uMiLPVq{)V%U@-X-RVd@{lD{I;= zTsZ02>^L2CY}>YN+eRldPCB-2r(-7_+qUhFy>mbBxA*b=xmMNsIgeGds>Zs;IAv-F zn5P0=FEGtBiNV>YMm9t5xG6D7CvGk*M44q}yL~4xiYki_H#>a$G0B1!dJIa>t9U*_ zs2uV}4sT+<LZ1M&-+Oxs!nB}w_CMjTvY3aa`u^*fbAL<p9ZAGgy4~X!Ui(UYYNJ{~ zWPf;)v=L<%ZtQNsurti-tVzK3irK?e0F~`Z`Y-kgH)yEj2EVhJ&27@&zIwA2HNrXc z%JR+ET~t?6_Y857QyT1-cTsCn1O@PMe%eXh$ROKj4aolNvj{3zigQ$z7CL}hbow>3 zjz{AP-ifyGU&|a$yv7%N+tKGbg1wi*g--l~44Yp=_UXI)<UL1Mr;*C*)7$gXj{Lgk zl#d(fWbpP-`}H|=Wc5^trt)h995n_ts2y!u$XFl})k<F!;z^L(taxZ)?KNK{nKnE` z0y{PvaJvb{^TO>#8>B9ExP#qoVeah#zz(J{u3HE?{;y^3hy72AGGSzc?k=3y|F30^ z_$24Xr?jObsy>;3zoKZW=By%a>TIAlBPrkn6K>NY=}P~+ai2^_8{)VN#{QU7z1$<1 z6v}$JviM1~ru0imqksq3_Z*mL1jxtt;f4slNlHpSfl*6QnZ_H_t2t1;V7`dZra_i) zJcH{$_uI$ION=F*45GE2Khf}L6U(EeRk~SUT3`0U3A!IS8UKV5Bj44t${&9T(2^3@ zg`n4v-iDyYSG1v5`-y)L4`*c>&a}u8jzB^yC3ojlt7aIY2De<WFbWFW2xuWUYw5v_ zGHXz$7*y2<4vPm;VCkb5V3gKV#Lf{G2bp0P@I@zD@|drZ9_HB{BvyZ60!L%Vn?#6d z^ef?_T0uS@q^2E05vfVhKuouJH^6?OVL|$l^s*$rr*d}@+?F{;Vx5pJ80ws{rZi02 z>@%&TBuOKeTQI)B2~1eu05JX_U;df;SXh6;LU%C4sqf6>Z__ql#xkqbZwwB!@jP4- zHMycBKQF!u>v&E`Jo{w#BT%MSbMbZmm<wf53o@dV>}7C%bH*{dvK+q3F1lGtY?D5V z{HGvAvodS0kUgV8Ppjy|P(%Y$T-utL4;xoDJSD*w<h%DP@0feN18{Y{mAaRpw88Ke zaVdmOaGIFf>UFMHSY;Yd8H}HDKy~UdM{g~<se|RByt&W2L(*i8uXsP_Iu<yJ;{PD$ znbpQldeTq~RnX_PH;~&3K>`&(cb%#+SEboMa0_H*Yj6wg?iK9&XMPPI7-Ia4a>o_@ zI5fd8S0@1nHcZV54^Z7&kBrp&KaX8~{WsmX*qUqnp=O-~$8~7msMczb{TxMPIt5N4 zw+Amta98=T+>-6Y?CSW`3eWs)*K5`zg6-=99gn=<*%S)Sp!Cbyi91F3Z|om<Ujn5> zNCchX&WEM&i=&awzCkvPjx@cS7oG_Bre=+fRlVE)4FNy}ga0bfF<)-ZnBtwd8q(r| zo9gKiqqP$gR9n0Xf#YWv6#7rgt*q0D#Rcn20a8gc5`7g*rTC)#0Igu-AoF*UG^@D7 zESMH1Nw#oewtWHzE4g(Tyi4seoA~09R7Dz<-ilaU%1I$Qv;&m=Nw>Tivv#G6FM~1M zrH#4y{3_tm#+eXbr^G6g9U&@mF5*Hw+mauz#Q-`&?ZoAaG25A#wirqA%!Rqs@YN=_ zhDKb~sgdT|ghm~=$?TWJmT@9gHP-|emw!P^T-AizIJsIa!i81#*F+*xbOa^_?-?nV z*kqL+ZZ2fSF-a*6=&ZNo{W-Ps&qb2icKW5D-vfx(1RAPP_`G<EROVIF;;NXbrHYky zQQM0ky{)RUwuYNreMw~nnaAwn^`z)ZlYX;+pBW)2RX7+%c_B4AiBFo+m8jhiTG__p zu1pG5&vW_l<g5MB9dTQA%TsH37t1I6nR=?yb5(s-r=*qbu<6f2YK!-ly-NIhbdC!K zAr$x$4?@g!p__jYAXELb`H4=bu0b;Ms}^q>MsU+?9nodJx7QfXk4}Cj=)}QA5|+z# z;>p&*8a5SwZS*ND8c7tKF3x5j97MgopQSAx4S7RM&Z0>>Iki#O`P-^5tW8vfJta4D zjZBu~BP_=6d$y{+Vh<Q?GZ8nX#{_eYX%3+I#s3tuLYTQ^WgBD3?=_NTT%WvxHsA=K zu2TV3LfgP|g;907<J=EI+<(hBd_2P<nMIBawW739miRZX?jkAS{qCsJLsZ*V@+v;f z-g+pmq9E1aO{fZd1xXk02ajt)T?*TfIBib!0oVrhDUuR80iH4G1kagT8DC5E!5v^t z7Tpay70tQla&mg<{)|-i??5;upLKF<-QO(43C2_3vM<nW7y_-fe4@7s7NK7hb{GV+ zMdI7hFgA;Ub9!dq<=?}*T_rFCT)G+1a5;-EgvlGJBgmLY$!~{>_osh!t3wef*Y>`_ z<!zU2drphEMX;RLG&y}Ih~n70JCp(7D2xWCAFy+O1zoaW>DdV6EG+UXu2(Ie4#5dd zx~AR>!5_xs3rcJkZPOD&<F=s&-yTb05w~GthxB}(63=U4haKA4X9J7RSJ+tU1^f1o zC7mu@fjtrzptEcLZK7;rYqf%|okpxgTgw5e+^^&$Sj7~FPMpaU@S9{Ie|ZgHj8PGb zmoFPTio0%Mjj0SXG~*0yk@+be7CJX<)+S3sE_<YDV(xWBqZE7#*4s-{mpDE}%>Ap~ zEDk|8O?0w=x_%gOL%+8z3cXI74}6ff`8!hmR6?04{x#cDChiqe{W<bgh9;YhZ8awh zojeV<gErcj6;5%wbMaV59kUOx(($i-keVU5&u5w0n>?p!HBd7@4-s1y&5*sx`r;Cl zdHR-iC-OF<Fqx%jtx;ZFobTR}=LmI4+J4qVnoG4Iu|Y1&tVvGF^d+y<4eTXuGI}5Z zHq>YYqL6%`Am0O(xK5rf4MjeHrhK|L|B3I$1pk>T-+A9@@lx<8z`F(bu@N1YZ(bIx zCMo(mcR{o!U$0f&)o*nryL`PODv~3Klyy_EG|{8ROIQJlBiQR_ijD%cbu1wprnzEL ztoEh$rdnoyOlB<UsbF29AY>jBOzUYp=zbg>=$dTV_$pm5xb4+<GMx|@aM%Q$I^k5p zE}!1Q{EA)^9Nq6^VV8V>;XjTKUglzMm?xLNjhev?H+Ed6PAwI5f`8jxVEnA5Ofhs( z$inP|Q(4vsRmp7CO#_<r5lv^4g+8E0gPht6(jI)C>9`wF2g;0%<%PkVc0R}xNM}9u z7G2_LC`oVYNbpb|xR<^rpe~xp=K?9FlA(59soR;W(q)obrGbFd%vlj?xu`Lnpk3nE zPW@f6SJMLmnN-C(hB$8t_Lo;H@eGnO$#;5-L|!M8Aa@G!^c^yV2aCALYdKmW+h9)= zi#R2w8d0ua?F|yb>J7s@ZTX^HE{~QdJbqxYj7vRDZ@(GJer_d>{!pD2+$xd6sVi1~ zkcdZIO(rP|5iA7GzaULJDMB%sEAl`YhLm0fb`?AZIX3G*Yw7U(b6W(F(N>?*EGkhf zG%OqyDY}(Br65hW%MY`-*}vc8n2@T&&_Nz|hb|9PXp&$A`YQKf;joL)h+Dt52hB|A zlHUyAqu&q9=H3wpgsz%7;zcp3F>VP5W(m~?m=IdSl2L&DI1A7<(T4H0$+n{UPW5Jn ze?ROMn)l;9H)eON#mn0_;!vy)_BY!qO<qraP{VW!gUkJ-mwN)KCVBI8;XHCbW^?kb z*LD7AxQKt?Uc1U66M=Qu^5K2@P9inl^882h$rqx6Kh%r?rRJZlBGi-eQz9ZWD;_&& z<BjCxigqZl!-l~_ChvhhX!}!{6HBZZnP#DGC!$vD&;NF~kUp9CJ#hvV>8n?0F^%+N zzStnc`xnEb23&*O1IfQhLGmC-lr5Teg*?`+3J&#=uiew%Wi40)<bMAl6^!>2v5;t3 zS5)WFlO_Y<lokx|$cD!%e6hUv0_d)OpXW8(sRb|~0tJ!ANwc7&Of4|Nf23*;#qfWz z8-H#O<tSLQT0Gs5&r^{qSYPhRqmX2wq#za%mbG{g_}XEhJ!FADGTJ7`!$^pX^waSc zl2gd;Aio|z_{Z~GvwxjK^~#^ohz=xE)T+&33|k{o97*yyCejg<DAR^i>d1_6@S934 z>j9h^(z!wFRgpao<G&pb!cxB@597A>g3uFmfN@4WOOcoj|LZ4Ri<bN&8MD5_OC{WS zH1m?b3@3xk$L=Libkc366)_(~_PsHaokYvrSywf(g_zSj`8jq@`dvk?8@yl+e$_PM z4(<;FH$k7bv)PkJ8l>uLkGMJ<0UJZFxInsP3y6PCRF#Xg{Lw=F68IKMBeb?`%NagE zt|~v@s3yKqq?UJ}23OWTPt~w)MdUh0sYWA$zjQ!9*_u=uj7SdWSEAg5m@X!u$xrpK z+OFC471qCZs<Az`r^KrQl`SCf$1E;$M#wi!Z$z;ji=bN8`m!eO+3Y%9O0R7OT%gjQ z8Km-EOheR(ugW2*Pu>IZ2iVK_0#%8>_Es~T>B<-3X*|8KuT5dn`4*?RQ4MpnNDXFA z4Nkaqp2~35%8)|73UdB0>5m1gT(j%r*(c>ri~+;Mu;WtNjO5ZF78PQvk?~Hc9Rtp* zYr(?p=mGtm=W+4iXE}(AOb(c<RiF&(O4&!N&pT4nR>U35|AsF#U&LM1@t2d&ZH=mg zdZ2EsJa#2fR5kkUEO*r;Y|LE0jb^Oc4w{wd&6`h$O#BH+?f!26O~F%C6DTG36C!Ex zS&uB%MN~V(<9owz?-R@w2-gpMNY{!+L}z%b(ni?-tGCa&hnpb@-hgK?{W)|9E-8UN zcl<yiB&C#2i%No+d4mmcP!b%H{YkHA^hr7kRT+eHbD`ws4vxs5`Td`PSBgU55rWr+ z9=7-`;m6M)Vwt;}_Y%t~EJwn42Gs$+eEqnSf?@1|XSq2@H=DJmc6({<mV7jr_N}kN z>>(UOcK~Y7Meriy1|a&!n3yJQ{eiK{g`nr_@y<y-qO4mP%A{zK258epTC%zhsQfm- z9Dm**I#-#NNA7Jk;0r=o4rb(OQ(+i#xDbLrE&EZ)7%A{9VeBq=&PLqq-=~o+tWMmV zhZ}6yxD0WdIDpgEDgKUCJH~F*+@**)QQo~Bgu6GlB&5r-2KdsgTe;5IytXpT_gXZ) z>tI<KvaIns8`|}mZnu^QdhWX1-mo6!)%V7YVh9V{PV`*~7qD%NkOYJ#Oj40D=T%~e z>287YI>&;uK~Gh>?&8`VpD)f~-74ej3gg|Zy~f{uVc0~lPMl+<bl4>dTB<SHC35OC z_Pn-jZ!TMUfP*~7;W<yjqR9U5jFq6xKU}8*i`omDpq$z}t;9i_a)g~}Da;r)Z>QQk z=#v(~r-Qw#8p1#6R;`OvpRS<YY%zYyUGnsUa7I;L!ZH(4BtR|A3>F;-g?pknxzeS= zIQ;O&tKE6v%Z9|Mnuu_y$@vaVsk345_CrQXIqynv0;uLdho#(W-A%<$3^-;(#9<ku zW?B)%pSTO-3h!Y}IX8&*KdVLz&KiStU^z{RBcw><_UHcSmec8Bkv+{3*lY1{zdZF{ zFLbWv4sxA+d2(7`Rko(;wS99C=4J)SDE;4Sw7w9od5tJS@sZBUEMJH1wRIQH_3y#j zJJKtV*(GR4!VTAI^B6-I!}iwWc5rFA=GoU>@AI6@ufEUZn6A?FCOvYO41`j=b~`9V zF$uWNuQE@hXip`+1LfauAvjFwPBP;Mv=L`0ozHZwsu~xwXATzCtXV^JoopMWVCK`u zt66SXz1-A)hjODg2H6%VF?H7jg%NH9%J>4yjDCySMFws4R+rx_&`Ll+6e+(N37l{Q zR=L2ZZI<FK*H}CKFFu=@L2QjX)~klv<~}_xK6OvQzAo$^8K;x)5#a96DqTCLpzWR< zWgOif3gKg|zt$J~sskU}WGM<ghTC~8<ZF-jmFueM+KcTA4aGb5b{%`7Q)T7*s?-4S z@!}H0(%^m@FPso9iE%R|gjWYrh8(_-14^#c`M-TdCfT9f5^GDLgMb}GBN>fqwPox5 zkAHV6N8hzBW9?{|11wGUIoHwv?loNQw+XkQVdW;c&*;oU(TnR6&=jH3j|`&y#)c$| zafXwmR9pJZ0axFfH~OhY?exANm=9p3Rq4-yWMT>!k#)3>$;Iy80G6GhT5?qJ^=z-E z7r*O!7_~V6c=Ou9?$fFi(~+l^4E)*Kb27?7+1_pQ;?8&}v^Ka%p4h&&YAZv?kh69s zq*&^3vJSM-^f7j3Fr06D+g9*kZ_*+YA*^t3Cd0`dwl#Dd*FSLjkG+7(g)&(D_sInS zG{v{~Z_3OpDBAb`Hw%u1la1~Fi-Jq&kwi<G>;$C*bQ4G$<9x1`2^_bYyuQG+KGLs{ z9|pCIdbt;lK^IU4AoVi0j8VK~z5JV$Wh7ZDs=8a+3z0Wm9^27m6--I-lOr;ctXrAI zikZbvTW_B+1a`h}UHm=|9?V&M?azl|h21<8pRZ3lcZa+%K?&0ZvufFw{GB66;R(=g zcS6~KPONe4ojMYGH$nD>6f<OA2>;fmY(ZLLg549>XL3TrO|whE!zfZtzu7@1oSBEG zcS#|B31MjaGL0z1Y0P6c;X#0ktZ`~U*s3g6=Y2X&3n2HxS9p|&(^%K{Nk(hNba$Gw zE?2NPIeoU-)rq!8QpBuih>j?Sz)uQFgm41j`6i9WE?RPSppf2SMSW;8{RF?dxHf&O zips1c_zD6d$1h|udgAHQwz}d$OS^|Y3z47G9ygJEsn9+dqU^ddRTF;4@<ses`Y+3- z39;*r@Z(MQ)EIh_^yuyU%e;%r=>>R+?maFdw8rb4$xnKVgS|Nz2PqfO0KSg5JyF09 za^WxjW;q9r;+G0gZ7q%7r7#*X1MTg!4}FRzxqwjtk02Spny%fO*^5=#fJ2^A@?1>j z=oE6kL@Zy;u5@)TGTV21M8B64gd`Z`Nd-exg!N<3UVbq3Wle5U4S+e>KSod0)^^LF z-o={_&&VJvOc|_*B_oLvg?3~qnE_^vVBOffVTt@a@7(8US!x>2*{4EgJccH`*{O0W zzb{H?iJRp7TW#4P!Y-200Y6?MAO~=(I`TAeGdlB<?mSPCSW`AVj{2|joA|n`bPG7` z#h`ep5!$&i%nRoH-Ond@WP==WDqq<i7@+f9)4oTOY1B_(Yjtx_TaEdiSpe7)GZW#j zYXWR@I#^v1ghl8p1d57^XNBNiwKyenZ@rv~+HSZd5EC#n6Tfo~IrB27lcUI6Y@Rqi z+`zwB!kVsU=hi#Mp?^1=+g)M6=15Qlu>;0e1q%|%)diuf;avXoqEubXU<Vbn9>A7; zQydj}6P+e@%D*Hn3x`*QodyadlOR?LSBdSEdL(wS6TdQB8#%*_Y>^L0#CQkXU*a&F ze)KmRf{w8b`Nl6+*2%G*A}6P^_7C~6Jo;-{xIunB+EkHSDdZuB1mcZR$+GPbee>P~ zuYY~^sFqs%DCg@XZnPIBn0|`9i^wJ=eN+ayuGO3;-97HgwtD#@^+4&)pk4y3RIcQe zICsGGc4XUrg`Hn;RvR^R<v0OpR@PBWZf?+_d~|jY{o+DuFh+1P(QQ2f%L^Z|B)lUT z?D)TJ`LABJKD_SI<u_ZU0{mds>5ibFRb7zZs~c_0Ne_;cJw`d&)nEB8gb<<)--!H= zy;Qu_grkfL$(~eJdVt%0)KLT=s>@MOlQ(GbbS)@z(U;CR&B{r*vXg8{!)(B$xZOZ! zPS??)`4Y7>*RH?bomomD(H_o7VR_c(-(nOUpL_zDAwNXee7^M<V#Y75tgE*fmnmw$ zfWi@Yg2LZ2@8rb#U=3Ws6;rD$_IyA2R~1PpwajSFv$Y-ClmNmqv7e4@llJ0})=KZ0 zf{<Wkb}n%}0_6-?5*H>6f=$$Y9k{yce?n5J64SOJNOkNt7PrBDCmlp6=W&82?`F>F zf7PwMjgnh@z?+8zq-A1q^(qBST%8)}Bg3YuK$~{U1}m`Xv>7B8cQB3G9V96#JWu(P zD6y3GiAah@{{SduOA_hGClb-jxg=zSBj6-<6YywcqR9sKnl<}pMTVcbtK{^Ta!R_5 zSss>X_&EFSrUHen$<Sr3obpPU3L{s-x<4~>vI?`{@NTcn9PgMt{ga1JKC&`iKVROj z!+iYcT-Zo=T`Ix;wp<;=!S}R4R5!$($Au7yk?;mG+5?`^L}E#&j6p<V38xJIS55eh zH0&+os`@)@cc!|edJeyVmrLSPokM||#kFyjf=6(vEXRNv%wC^Ae0;VA>$5&6`~h~D z$+x|9GF}CDU_a4le(IpcXlkA8@Dm3>64)5jc*g}#kQj9mRplU)biGt8<6sI2xI9Zo zbO8)Z14}zhP)TErQ4hbskapnANDF5~NoU~Ye_yv{;YO!LM9?iq#9q16lEtuzOY4Ju zJM6i~<^8%A$-PiiY1@NG+YZ4k)JzGEd3cvtZVcj_j@u?M6uYbP>m@Jt^BB}9z`X=H z%Mp=UY<OMQC)4yy(W)0~+8U`|k1N<uH3Lf=;iacU>R}z<i&Tb3MXABQXxPP3Z%7xv zKu5dUi)7>>j4o<rPe@Nx(a$WAox3%h@M#Zyi@p}KP>Pa>hv+v|uEkp<ld$AjIQENS z<N;A^BWCO;pOO($VI5{qT4C@FTC3#>?@8peOSRSXF=<LJqY>heTr8S~^*q%9G61)E zNJ2O)gA{2V*&@AtwT|2@4{EL-w8A`r<wkJhlIU)bYBch6(3|s3{t_V=lJ+uzDoBx{ zA&Com@QOhdP2%zP2HV7N>|Q+-Q_Tc_Gk$#a80^Hsbb_{}4*rHn5vRKH$!&mmj;!CT z*~p&~dWS`Yh7KYRHH9rN%h2-ICa~B)l)zr~<!Nn8PLZ@+$C|B>sSc4o**F%qT`|-% zS$_*L+pMqJ$3eSJR(d3Ixz&Tod*rGSo3_ZZ{Cn6`V8)OyGSOZ|A?RFhL~3CNYdzhe zZWxuelDjU2<70nkmRSq0u)crWG(O&~-*|1D@h2{_8@!heg=Ip{14&A!ADH3M5!BiA zRgE5}MQSH#A2yPU;SYXJZ(3v}9im@@<on=tyLU{>o4ccT^TqF^r@ehwuW-bd+I~%o zNqbZmYMK}HIBDf5k>v^L2nQ=wA~G84`=*2)pjP%n89Rur3{eF;<g2Pa29`P|qIuk) z6H3*<7A%3}7n$;hG2P|@>mUo_U6@L4-5AhXK1+h9zR;#kph2t5$g7pd0<Qca0oc}9 zTC5MHZ3H5kLyY)(TNb@$A#BdIg6R`1=yOj=GUlc}M=Ci#d>Z}tQXfFqa}AGRBetL( z^y3MP?V6)3xJ(r=l|Yh*xovzq3#U6?g%5+;V!e_Dl%{)zn4Kg5*jr}_SlRLt7!rus zQ;TnspoLuN90IV3aSCkei0UYm#~Rb(g}N)Zafy>r2{H0#zd~fCMkOfNsc5}D1ftlw z^E49^6sQYz*1E&*rsF%Zq0-yAj5z*+S>Rs#tsH{>$u|xG<Cz}U*zqr}HUAp^!An%Z z-bTii&zs#<X^900_$>uyjAhGOjqrCgF-ioC2XRPQ0uZ{4`FLkg<dwU=xyNXe+S!Qj z)01)o)%h)pC?W<S;egeEOC^FY7HAwsj)7nEez3DkZJbu7EOEa~p%W*3|MDO_K+O$d zmRe3j5W+<;*<+QF!aL2R(YPN1W5~+8bWy-c3E8m0hXY6uO}o8X5C#i)TM)>4Z?V}_ zhp6JmU_b>e%+?X8rHNJ)m3+%szz-`3eYj4w^ONoD%7Q{Yh5y6Gjbep#aqgdI{a1^X zsg$>&en_VtSL4&w0V?;YS+O>L)cz7J{}5G#o4sRod8%yfO)XR3dGRl!!IcGx#c|gC zO(imdT`Evo#CDFg=CRJ)Y0zLblGaiWDUQ53GDwZt=Cf*Xn)OphaW>}?)?+9FXSdFy zX+j%vpcqW=WEaLBeDj$TvO~2z)CjUewmk6v>Mqz{X?oaI-W@Z)#2c0xw(v|;6irct zCYJL*iApeOdLYU9*b3JiXzOZQu77+$ie>=9zXqO=ff?WNsR;gVn+@VXsz>pD4Gqpc z;6mA?@bvfl7q07-og)jI$|0d6aN9Qt-;F}t2FeE<>hjlu<a&D%0FRZ2SMT$hQ^17| zClW=ECxNpz%N@MXCU{YemIoOsz~B|rVBM$RFn!^M(AodBxh|S8ds1_DuwXHT6R7Ag z4vwe0*+SJjOFRcn={X~zsOZ6Q@{I1WPCEUXTPK`?{9k<p>43$2cfS1gO)rQ+k)PN2 zA1yR<c<g7(6>QK*3_F~f9HaQ%=Bk^vpT)gGXgQPs`UDvAcXNRT&6%E4P-I)PN`H%m z<-V`sK=dc1+WIJGdSe1mVtr8rE@=?KDyB1qiJsF;HOWt9F8ZCC!+v`jV4LUBX5B1z zbWwCEqx^+wjW-)Qpx8B=Q0w~ZH;*fxH;vG~;-<W3eTZS)uK7v^dLQw?R9zst(SI{R z*jfpE&avtMtSVmbdrN<wyU3i!7xQaM+Si-V6~_rS)#g?VOCT=)gIy_Gh>@zoeixsv z<zsqJ{g(OLDjhrKo6!c?8<%rGMx}trn)zU)zQG`@FKZP1jGHCRQzKh7BdzvIfs{dD z?9AjW-{l(S-cu9G5zl^ol#(9C5$$xoXVgyU?$L5m+BLGb7sWN61BT%+ipMt%5oES+ zQy<~bMq(WCF90Q`eU>g}#x%2;3N&)-4hUcF_dh<M&qt_K!<hcMqnbv+vcJzz{tSPJ z9WNhThNCYlmhJ~LOE6~m{jHq}`Gz(T!kRjKie+`Kq|Ru>*;JNa-xw1sWlbf~$y0#m z&av;?;?bsi=UY=K%9J7$FZcSAQk;#_yNh2PqXAPl0s!zm8<<tu?k69JZgf`!11k6v zTkCZ|TvR<v=#(p&W`D=EE1wrVLJdsixps-;3Pn}*P?j|MR6@GH*LE2h@9~fyq1~Z! z#rL`h@IV*HZPjlmSv&4Y0s{OXTQKT(uGg|%r0zd`r)Z%-@GdkuUs}`zWSW%)Ut~et z{Cs(;K>?6|V>GtC#G+MtV(9!JtIM1qwg6;91w_~`6hnL3pO6(%T(BFk*iJlIQcJ?a z0nW6M`hn-L5z`IlWgfLV$u7UWK(ofmsyk<hCPr~HcM%IzA~E8jaa^Iv+p1G~4jTs+ zD350r_puf@FIU=1eb-x?h=Js!q4|p>rXDld8bDW4h*<-PDoxKh5BA+B`2myLiaI#z zX`(3R&{<(jSj%A`2}#fNz<#fu4Z~NzXv#p=Y_YQgQb&dUxsZlKj6s4t{v*U5{=ocO zK_c0JBpHJiD5V&SzapFjV;v0Cu_z=fY*lqWrk9wb*VixaBzVO?k9(2coe`20?B<YI z3$RtqTo$iv3O{F9KV|p-z(_ufnHJcspRlz}#a_9<KIpX{m)mY;cE|q<JLu6qp2~^% z^)7EIj;r7N5fyy2SiF$`7A_8EhFD8=ho?kw)!Uw_syt%t5#~K}pe<5Dm-{I=V`avb zFK10>+(w$rkAHN~NAQoQ=YZ#yDI@~d71%k!LNtzBz8!SA7aM()w6RTcEQiZnCu0SQ zB4)A<zSocq98dns$CM!2(A0bUMp?-1U3e$@BwgUEdlHe|GwSiO2dX6u7rnk|aVeO* ze2^stYk?cvo3@5)05RLo#|%r!!n`PvXJx`tD{V{~oFv%VRs0?k)7i^O!cCBa3?%o^ z2;t}z+iTHPuq}*EJfGpni=b<Fd3N1+4Ti)7Q?vcHm;C<O1wK>zadsHq_JrlFp{I@} zMt%-x{DE@%0%)#)wSFt)dJw1vDU0TPa1Ms9&8Mo_h4m7PRs+*bOn#5-Ip^@OY<n&< zj(acc83&u?a9#kbJhm|5xAeoN1`20b9$4yfSe{yRJng;W;E!*M>Pz-w>T$t8yEXFr zMgjd^2Br4|=mOe~Y#}T|XzRU$V<<VI>@8DErAQ&3?y+x5693IWDGQN-eY%KgF3>*J zpgdLtsDGk%90HgY1FA=M+vL!nY;YwAI6Pv|tZcDjzc1E{JPAB4Q*Hrj1jA<kkUMM~ zD>XvK3+94p1!m)@ka96GnRXU69IeT=yGG+T#I<(pm<H!x{6>3q?8)8RTq79UIu4oF zW2`b(;$;=zuRAF%f^)jw;V;a0L!KbkCP-{*YvL&%U6q7Jw0#NNDW1hjzi-jMEx}Ad z_uS&L>dC+e5MTuPU2g$}UP1y-P-W4`$RC2`KZC%o`BxZA&)DR^5!Ol__6i&D2tgW* zvq0D$cBe8y>=Dlh-$0BCviz3KtC<46<A)FkoSO~88nH+5ehqETIi@WhH6x!3P|yB4 z^ej;<cAt4qEd5wmg(<nO33w|A+=n5PhQ1nCF2)=PxS;p!rvq$!(Ep)KDca&$emZR^ zzTZExn)xC1R>uqthKjH3RJ=c}72C%QJHAYQdMLlYnRMWh?C9H3AsiKRRqb)8NB&K_ zq`-`}pEqd|CdrRg9_K@!4X50Ums-lJR15;037+N7zi~<5(nPybhq1`9yV~uB65$(5 z!8keuH%dHtAr$y0SCM!lx4gD;&~UBuhEWx77Wuh3{a#fPY*tjBy!_^=AgGtj=Ba;t z-2P;rT3E*KNh~|(t1jQ|e(T;nhmP@|$b}2e!p_E?ay|P$L#K8M$&jLNjy_`yFP=T; z6=qIfpb5670el@4_|Rd`xmI1=VzQeF{q7Q4Tv7^seT7$By&J;U`Nr}<%-q-WH$5G; z>ia~e#(wAa=fAC#nk(O@2#3#sxvZAY-OCK_w2vFUFSfzUN1r%q*yAkCDu?Um)APoQ zs3(1ac7O`-$X8BE^-{9r-p%Fnkb90=#P@!(6Rc4=t@k{)bY@PPxHmOQPj>9^Ld$M_ z<<n5Yjzr(!6cKiM7m)EE++b~QYj!(61XUVc@!v5UT@QpX^bh?RkM6uH%TBBdxzALw z+Fqq4eqZDW#!V&n9G;HY2!&DYAF;s&OC>Q90#tysarOsakHRFb>x&=hcyBHcZ_tkw z!2Ryek6RH0S3-ZB(JN9^#q*y1sz&xS{d?cB@U~=1nO=<}{$uaU&$<1vS=l$uBL{$e z<Jg~4TP6!(0{eKPxBSn~iE%_8<DRowMjG_m+yD@4%_z;zhIkVMlpy%}m=`TYP<?(b z02}mI<HR(Q>XId%>>4V#IP3Em7+p$K!vj+8SC&K;awMwSnN1C(l2%tXlHLR<UvvYH zmTy`Aub=bY!6(+t9$fOv&*|0oNiH18bXf2|KWBf=m!I>#9&K~sK7O=fz}in+yLd;6 zFHr2!Va^|Z6cT^Vzpyhb&K*#uiB6<!gV*lI0{!uhD+{-il<et2N5}T`V{^*WVJFi? zE$#;jAAaP0$r4OrQzdvyHNVW+e|Q5qT6QSu^t)FU0xP<Dn9Z>{^~U=J;Vhgi&vuVg zP0Q45tQ;|WBmP>XC1c_$cE3yQY{SIaR3|DP{68TR+OzsR-y2PT-~(m;@qJ|;zrupj zCVNk~$tbH}`0MkF)$&NIjUdctpL>}VwTpYOCC!Bp&36m#Wi05U&K}T`&+p>-y@};h zQY-1K^}hH9LVwm<H=g_bPmsU(28w1`xeHv=N<HA#a58^pQBEFqX=fGfS_P?;6C?ax zx_{C#$+2{jsHWygf&$(wWtF*v3yCd~q7}oFxhi&oWgD`I+8L!mI+3|QENUg<{K>vz z>_beB5|QJYoZm}b?@ILlfZIl+IkIvo#m#WOGf_r26H&bJoZ4pyC?89{sRAh7mR@<Q zLj<6-Ba7#!L(Hm>nX;|s{uruu0wYVFZ!voOYhk&y2|v}|*MYTFbx8zPPSvij?(g_t z1a%1&u(-3lJM!}K6-#+GZqgEcB%X95w2Xxr_UX6vGojbLwe15Rp)p)hBfA0Pf_95S z=K3di7+2AWa9K~ULpd9~9}6{d_KvarC}glqto`%wlTWF<lun7nefzY9f$7WfglJ$Z zh<Fd70(ty+kN}s+xM@-Y*ZWHYmn$)BR*Vs9a|M8DF%E><A5K=qwndf&$CQ*1R8~|i zoCaSr#U3WPKB2kXxPGRYOP=yhG9lPOqxcYSWxVB780`PXZhANmoWnUkzkN3A1PAAa zgBpw62)I-CJEvZT;VC*%(foIVARDd_ANaAsWxQk345;zT@rAi%vz_MI&Zo&*O2McV zQ<*k`WtY-O`~f@g&cZKMDlk1h7f8UN5jKZPpEtlhyzqlFtYyUzPX7dF`CuHt7UNtU z7yG2m-Cj^j=DvM<WNqZIQfxH+mg~mSb`I*>KmKzi<8#~JOb%)mx#=%x6zj07IYuen zhC%!xEua7ee;%>XB(NK>Vz~_|%wq2bvXQ(}_A@%fV)NYP>}IO+x0a$oluXQNWO$ln zMu(=#$CNs)TXnO}G7*DB^jX2;^2^Ymhq_iwFZEI6qU#ujg0!<&hLDS4Gd8Lte-#hu z2=eC(g0~u@2xj{U&wDjHz)QWri|YyNqY*!g2W+wvG<^ZbRiDOT(u>4HZbOp$WisPY zv$@SN3U<Au>f|JtT0cjqg$7eJc$yafoGjaxDv>V1VnchNI>F2|6S^B?j@lWsYvtf` z4{dEM8+3mdlI~-Tu)aROtiYZv?jy@)btyyh)J_c{nG@xsMmu}41Q;s|Wy%gZpma5j z16WBdVJ;3Jt|2DFjpdwFN=hy=jFC?#T)4zSNDrigqE`J<8(>c`r6C%IJTWV8*#5Os zt;CBykPDTsGTv7hX@z*4Sfxg-Maqn_Av#(rwd>wTA}VD!neK8T2{>N?$RaFdv)_~w z<bsNHqga0rBx`!C**a>kHdVNMqr}>_2j=uFHdWbPdKZ&nM8e?*SA~ULJhdZ)6_$!v zWay>uk&(eYpl?>NSalpQa3*J&kQzAP)+$_+Wvz^tl22+Y*8GgkiJ?tK<PG4o`=6VF zNIvc`Af~gsgSNNbD}LQ|6^KQW(qV6Jg8tR8W_|1(o7}ttk3O0hfjI5U4?yeI0EDHT z2p9^5#bMVNk5}ESxl&9{`o^;lPW56smTpqwlOsv~VFL1L+1=$TLl&cVZwrO7GvO+R z6=cDY#b%W@2lS%4tL~OH=r`*7z8kyooko!}3(097!|`LsUX_1sVv}AQIH3^Y8-Hnr z#M<O03&+}QM@k~W#D`QQ7$u?P0UVSaGTJC6JL_$&!=uXH+LBm3paU;(=xYjuCzCxC z=<S`hN9fu^mlEz)=Tfz}#<v$lOhfDfaKaXg|NOTO!^R&`R^+_QC6MmVl}c7_WV6i< zP<Q%vx!gv!&X$X$qJGWQN+;kv6&t6Jv0hJrx)D+DQZ{%UofBIE1tM-E04>xqM6EA$ z?uX^ZI3dNhfZwMV(UH=U)AS|SXykSE_z63DpcjFHS&*Y-+Szi!*YGfE?ygck;a5cI zrn?jm!k$Wsju?~YOSRbZQKZ6>)jqTdI4;HPKSXT*?jzSBXxZ|;Fyb$RY+>xraFs<M zRw(*fc}CI<9QW(;yYdVO;`;iME<w;rDaMMD$9c`-*)l;XjFVXR!9!f{T-M4SX|I(N zVaw2J&AcNn=l!Dg6OK<6PN6h3m!6`?i`t0mpI;6}ZL9qhXRcx2{I*-PJBgrBPCIfB zK}$SGN|G^J*u;B0OnxOe66f?CvAGdk?u&<AKAnu2`3b&COxX>L7p_SYFL?EJ^<Df{ z@lhpiB(f{y`rWdx*o<s{plEnJI$tk*#A3zH(ng>9voXUO-1De$+)synje&Wi8Z7ql zR2f6{pRTnnrvd4MKn?u)$WL)KJ9Zb`u5>b2uBE`XX<6n|p%fl6n7D-qkH5~+?tja^ z(g~0_-0fcSQ^^(peC9dK0YCI?=>I-cEJ4dgzPp=D2~}r;T;YMOEdDaPrOKaWKqy`1 z0l({*XpdzBcPKLbp<C-2b{RiW@qde8Vr_+r0bir5&UU@+$}y?7v34xaC(SnLiYeh3 zWNoq5?knc9Z$9SeMSZDgPGW8eTO$EAyHslt?VJyQwo}Trku9fCO0XJTEDR@REi1NB zwNh$?_ax=gQ>mh@rYct<Vl~YWQE`Ps30}(@4k;~LrYX!<fIf*ATBsEqARDTNZLAk$ zr<~7D{#Bbrgu|oK^}}7Qn?Sch8gf-VrP9k;jQWF}!L9WGvMj%-_Y8u5N-~UEC+6vw zj@cftaKV?;I(bAL=C4AAqMl<9c2hj19%?7U%I$LV>~M_Nz$H$n93DfnS^U|sksD}k z{&Qe=JxVhoU}P!cD|vwyZJI(M!Ws!-HM~!<sEve^!^PZ01EV5tZ(mE5PDEg8OGPh# zAiU~kpQfcZ9QqQKIyujuj6Afuu!Zq1l~Ww}vV(*h_v<<x6J<J<63zDg#i8c_+A)}d zhmk;LU=TOkJE>Nq;%E4DYV>icrJDa3gKSQCANk(MQoH($a*EN)JWkY~%0B!#uNotA zla^<+j~ZY!Sono2olmJ*JEl^soeNg2vwyIwm$cNnK^ck)ugIIYkPFQux>+DNLdy<F zm{J=PW6BwY%)=V>Gb9*LxrGXCiYn50*KgFSuVg{CYUXPW4_w;_ZZh#OxUq`P8JmyI zMP+FUL)b2c-ek8b2zoLgIJkY<T?`CXCl1on*`nL7Xh{ms$WS0S2ea5<x3z8`EZnP4 z9qcz3*^SO5x9#IfjQ-iMDCuZ$DOm^NmB8<+zgUdutYtT)h6><HeR+R#p$nzpBqkt4 zbyR;?Z8jA;G2A1qMc*&Kn#v%US*D6<W`c>p{H}!?fdo<1I#e{F2T{~<__jLTXzF#m z3$Z<&(-5E538mhKLoiNuzCYDY{h+qhVEh~+w@i6GBfB!vdB^?DtC)^(0&WQaJ<1^H z+m0Bbr6<1MBE4|*>#PXc$POWwj{ihHSCAWs_^bTsT(9H3MDjEsjnS3W5_iniYb3Pr zG;i>%C$6DtRrn|RPx`!oA-*ANnSU=La&jJwl_y4vK$?)aKGw92I*9IYNfQkGx|`o9 zGQUIGR<tu)4d~=b^$y<C704REnu{A_-+&^%$}Qm3!jkIWns>=?VhH1q--R`HETYXx zM*wYcb@G?o1asbJURB|Oh>r4I-&eyn&}Oca^xF!hvsQwJ2~FjOC-eaWQt}aP&EBh{ zT?@duhaa#a<tbic*O^UwP)PF?iF!XA-SL~I%-8{Llenk`Vc}Y})OZ5O!|H+|vP5jW zmWAfLRiNbYbZChB$CYDe(h&}YeXRiF1qF31vzfVUxg7g|n3UzdP50#DdK~?UsG8+2 z+#EETJ?ALvy6>!qOo=`_PjI?`YC<6YnZ){wz0bEZ2Wln9U4y$T*{(ynm&Ra{qQK63 zh^SaTJQn%rH=zy<ExQEp{Q-vTADBW-T+DH%%!YSxB3J<**aSTk(gkIu?&ouw7LT>i zjxTj29TIU!c5cq(R>I67<e2u6+7cyJw?yDsqPATumGx1p5{k9nlP%+z%|&~jB9C<l z@06%bTY~Q2j{CO^WjrE>8b@B-QO!PkL`qsT0ep3>wI3%JqApZ`)S_Du214WU&*}WU zRFTK&ZGm2#fRfE|5NwYwTI<+`yLn<Hf&3pBOJD)1Mpq}G>rc1hcv&IMG0VTWaLu|L z)k7Jy<%cSuI^Q#KyO<Aj@GG4B0x%9ry$&HfB}&b#`xcl)uWTk^*%r{d_M?uNdRJ?c zN2IZLI;eVM%_*9IZ)MVyJFu;6GQxD&JG8^v*gI@4mZ=0><U#Fux6iIpsg*8Tvon<A zrXz43ha<YX@pq{tt`!t!(jV3?CmM&zX%!<aEsdd&t^uvk{7a<l7E%yaoPLp9xx#B; z?b*#wy57%c5XjHKNJXZ&iKP3|51c~xQ5~w-;ul0#6qs({=oI9X0`sId`-e@L$U$*F zYE)OcRAN8xl<7=XOp-Pi-Rv8VK(I+7SBy`XdXbk<m`~(VA=gHfPwdkF7OAM`KF*xk zu`9x(ozu3-uD5EP5`??8tWSo-*A+}02C3b%A=H9Fss9>zRD#ar6V%)?4Jut&6r?Q< z$@=GFGH`+-9kfh4p~nZmTUf#>R*)q*HDbHbbj2flTeqG%mPH=9rpzq-4eGK;-vB|# zivTrF#)nhVTYqG8O)^B>Um1kbI_=#Yx7G~CYwVtv?~z}H6wcE2k+VX~%MNCgYP+tB z6qMK&nmc=S@P0#x%!%Ts^;rLp1bRHpD9fy0o`5OBCF5>j*ltZLXV`YYK%KvIjAC=a zN`j?6pKOy1-4j*Wzs6|vi0R>Yd~&rse-dt~N+B@u9|j_@6UJpj8?D#^`6BHtu6b4X z1VpEc!=(Lpzm!!n1!!oQ6-n?@=D`GlH#QzfrkDN_zgCem!_lW4;D^0}$p17k*b#oj zKmZN})}bugcGmMxn6`)4pfqqWA#+03XAC;J-dlK^UEY=D-g;F_&3wqBm^XROUAz9( z$J<?|e^ZXf4n80*qMtju@2sF-oSBVyf6yxmW%iSN;2i3Ibfiuhp`3hx?Xs$WsBWXz z#hfo-`bSY$yxUyAN~fRFwfGt@TTVW^nF4^9MSnd_)Iu&Q-d$<b9h%j2X{10QLmoDL z3KUxbZaJ=9YBvshuZ*aTBf`HcwX-PtD1LUa3b?f;ML)ZYnpw8IF;?42JXdcbC8rRw z1by9kyP9l3+A#D+rRm9Z&&=*EODgYVyUZ3qm&}fKov!f9`!du$yYhX`#Q!*k0f27n z%>}S=aJ*8FXjl8-!ynttUbW*ZVK;>wGd1wtwY<`tiCe!J+N8jVoWs&Pq4DuB;7mV5 zWaeSgRs)k!_gDM%!@+vL;TEe^l$RIt($F_1u|xPjRtMe|3+eL~N7Lp0^9KLFim1Vw zPAJ-NgjD0Zcv*~oB;IH|1Y`n4fmy%ggspV7$p(+ua|?eMyam!TS)MU#EP)N8@A#Lo zOySJIso(iIGt@vuT7tD1%B+PIc=8&^I9eV?o&11;x6<R>lfE--);){gRa7tXK>qs| zmiMLuC`i@&c%QV{jm3S*P9JLGSJx14Flga7hZ-*?_jq_~H2+Z+2VBl(xT+1s0-k%* zE9W$7b5}DVt{7v?6*~~d&wA#y<?|MOToDU}khqJQm1L~Te>@{d!OYP%-X>C(e%*?0 zU}@bX)}qcU;hLeUWs05oH)@e~nD)K~-!GMQAh($qL1eAN)f#D!_iRpNG$a0#^Yb90 z0v8Fi%wRVGu^fwC08qr|*zAWxd|tD~gT48Y|M6_Z<PmpAIZc%ZEk>$9qtiB#`u<r( z|9ST#=Zd$d78CS*eoVJ;&TCXG;Nmzj*#ZU&r0^=(U#>z${EuPo99b|pE+m(&lEj}K z<Seef?l|`kx#KGKMVrqq5pnCalvlaiFR$}J4ZX=EtD>`nBA`WfjT<eX69XJ+xp&7m zS5d^D&j+Z<i3)H#_7-jD5(y<|1*&i~3a;+Xa~TcQDgRWH8~Bpb9Z$L2lXUg3-)P-; z;306PMcwSHeosLl#x_59BXd?xIj->v>0iNhz)Wpn*>rr^9*KvrT?%L4)SMN<8ks+y z_ooY7_l8&X108BE9otgeoblnn-QIZIo#9+uWpQ4)yg8qc{!a>4exZn(BdV{B>N|76 z6ZRJqAwWN-HmFQohcm9Pav)panURTWBA$z76P^IhKZ{-{cs{vEuzXJWz@6yyPUY1w zjJjwvk@VAzW^*7RaVO*G*-DafVz;BKNz3Wg=|HFvFzM6LE@n(|8lfH6K8R;<vrHr4 zUXpe*?r!&zJY`E%Z>_wKFEZ`Ys|)1Pr(elE@EY+nY1OL(bMx*b0U5oIheH1P3USuE zECqbNRqr3jsSf>0UdXAbPc>RnLAe}AjA|AIL;?wVa#-V95yUfvhm)qvka(+mBxL&h zFbo!e;5VP!iG|>&@*7gXiU}vTyTKb+2^e9E+YOSRD&X4Th;dhCfZ>R+=0j>|IYc-P zvECG`tbV==TVNe3dImHZR^o|1;Z8|~8{Y7k=B1O9pS?x|_;jbQ8ujY3#^YqL-98Rp zUYOm&okg$f?~8V3(ItO-)(j8!z;~7?mWcyQ82OI8eJcAUxJvh!CKAUHR*h1voD*xY zrcq8=?B@Qr+QF7HCU<X>1XWL+At#-k4MuXNNrX9rGi7hGTJ&6$l%iq}3j4gty(1Ld zEBwype4QjSl@SyHql)?NLBrEr<Q~xv0qadv%9t;6?VpfTOhmN*e+1qncyQ>H>O)Xy za8`B(wv@I*P*FfT1+Njsck4@#uIFr-dGE!2j73H@aF#&4j@>qZ)`MaQy1r5_T0Bse zfAmoAWLrLb>ZxyBm@QE%>x!3}d)*L}`A7Jq|M3}d7NO1$8wwRe-@nr{;Eu`k{xA0P zb@%0Z@H=IHAWH(99Da3IM=C)g6!r#sA=guBap|%85+;!IgTGb9EnJBJ=;$CPqi#_D zc)EDgggJPs|Ca#6h4(q|zhuFu_XFOlb&`CpP2<}5nbWD74}mP{Qz;omk&(_d4hT$m zqLw!K_xHf;IWMMF{Lgr=FClu)UN3wE%f77jk?v|llH!2YeRy={Y)`w8FsX<y29RP% zycNR-^vw~N8IPOMBC&)WhQ!}iG)Q$g_;Shrmn-;|zV@FEUAFIAcsoR|Os&Q-`!Q7n zo3Q=RmD8T*h_?j_asKZeyXkjcq#yqWZ4{%}Rf6MYSKHIIkSr0NZ~n9QV}OigF#^<= z3=PxO^=I}>GAV~Z@7FIwGDFGsFUD?t4^Y0Ua8xX%@f@NhD5usING?2`Dp4Vo*~CIB zX+73l$lFiJbpX$$P6*5i{pcWl6Puj8_rmE!DfH<8KD|Hw3l$u%{!fH{O6C7z?4FsE zcT_xliO?foA~b2A1L<q-4Db5>|3U?wB+?_WJlO{JEf_^p3?s09{w>&=`AYBAi;L`Y zcC71pyyn}U40fK?6g>;OJ~61|*CSV0{YNa&-j#m-p9bBL{FNyv^}-bu+HcCz<L&uN zqv(<TY<l?UV&Bk2l!1rg;Xeub54#zA+#;^PBUlWBl%>oKtUTi4A5ZBs%+7qN!I>E* z1*e_w>M3yyUxyOlkgy0~-8m{Pm85DAp;mJsd;T&)C&7Oac7F-c{o1WsA^#%my57Q& zar^e<@IuI^5NonpH#NfZ5Hh$YbLSWtI1ytv7R72pSu`S=P+=J){ROe+$ZzEJjM$-& zw#!o$N;Kl?O%+`iDUg<8Wk4ql!<Q|inJS-Gb5IUfLmBZ?Lh%D;55Y$pVN`_V#1!C6 zD75--!MoBhiVGmT-+YYFhy{0I0NL~XfZY3c(BaS2Vlu5TekpF&IDUnCe{n}yR3i`k zaubm9=!A4_3kA47OJ1}b6_H=~ZSM3HpSlx92SI)QSwYE0n;2G*RoXw{gxG8cULI~( zp;Oy_tG;{Sm{0-Z7_MTD$yjp^N~mu4SEAb#_(CMu=YIwfSjM?;!IfaYkC_xtF$`Tz zsLhUYr!RA&%*i0($*>fKWG8S=evw{mE<+3Lcu09UhxWFg2v-t$NR_*Y%rH6m$D&MH zi?+sRe&Yozg;WhHE14y_l#Zj39f(NZIoy8?EL`zr8S4R;7u3fW;!l~13dp~Q><Ps- zGrZ?|hte=*(M8JemGD5}QT=>bk0M#(Yx1JR>sh>9-;PKp7!T@Ys7J*w;Q6Anc(V^% zp=U$qkact*jGSDPP)V}poc`&Sv-5{2)>G2%Qi#baobLT!J&rD=v|JK;4cqS`sO8OP zVQB@B!};WX>{%X?gcG6D_R06H3>Dz-KpBo==<Iqufg-fy`+}Ge#JUCLggBGFH6UVw zT8cjj_H|tEKxy}86YL>P)6hByBM#$^^G{vk6x>Va@>CL%ibj)7_6)#|P&z9)3YOS< z8{p5~=djhWpm62dB3}UMSjGp<*Uw38tp5*F?;IUz6SaF!GO=yjwrwX9+cqcY$;7s8 z+qP}nwkOHg&-<S5tn)`#-PN^v_3B=A?^U($>)Jm)fHOgjrD7KZYRId_1a`Rp>J~di zt>r^V<f1Y~Sm=FeV$*~&{Ylh*ndDCsxL^oEJH!ae#V}2Cwdxq8t&>V|E7*Uex9|=` zRLTh5FEO^!yOykrYlL2w1MG9C@5B_t(B-5emrule(6E<_RT`<bb+$mqNQUh)$;{s! z9*%@V0Ja23M$w4nz~-FR(m7PMCAxr(_Nb$H1(NoHNce=dN#rqIPQX!=?lA+dWx9aX z2i*`Q$a-Bh>4lRsBdN4&65OLAGWRrn<JV3qCx*)EtepVT%1*{Kbe#GJQ3FC+36m8h zqUStcob(Vjg&kL%&d48g8t_~jHEr+9QMb|&Kz~t|)o`0DEf}4;7d-Zk;dOhqieR?R z$~XbxOJXNR9a1j|6<z+#0wpjxy@^lxZ1ezbI)bZ0GLNA!9;SngF42%yXm=SgKB&ym zd=@KsVjDX%=<a2zsOt91V=zg>&4_$r<W+=J@#rMBBz-x)Ew)6+rcZZNHMhyI8lR6G zFgn<m^i$HAc?|Ns#sEUVLnW9))87VXc@pvqHkjyr88t*&*q?vURY076oCb?KdtbDH zV3oHs10nmLLo_<DRO7gWvI^Ch8!2O8Gj=D@41WW!?XYg`CW4CSD6V%uE3U9mBT*y% z;}TKTtj2|tv?cFpMNSK*5ACZNEa@9EfYt%yFa>B+nycT~jh`LFf*}@*aEsC~r(hOw z7;<T39lot<B#ha%PkrKK)PY!K$kdjugIxG}%+w8BC|?5CY=bJ1hy7Uz92EzFs9!^u zEQe6z7|29ZBY15DE#Snp&o~wa8Nnm$>P)gn$Ja{vinE}F=%TXUkk%Xi=-LD5g<Q-X z9RHYYD)L5AuHa`LL`Z88TSS;0-rk)I{()o^i64+iN+YBlQQ9=ZFpTh|Nn&jgXo0TW zbJggTFfEOdX?~CmS}$Y!=C`Ke7%eH!C7J<iNmA0dJV<GWq223C@C?Iesm-M`=feQ+ ziJGm8M>WPJu>}vuIZ=8c1tSNrXh}5^paO0Wn+80pMvI&a_cvIm-PGoT7Z&G2mKN*g zMfF(ljSk6G&qoT6jzKNU2r<X#8)52Bdo5$FE6LIwMe`OEqOC?p$DXue^0HQcAJWOP z6~R|kuak6YL|=|a1&=Yi&^X}l(9y($<Yp`8ib6ipwW8_fC}kG|UBiGFp{Co;LH8d; z7@?EDbCsk<;D6+c792pCKk!uHSQhv?=-FlNSm;?B-NRn|T`-Y{J^gg0SDOi3Qs!^? z-S(W<Bdbi-GE0-Ks48F;VI%DA+=Sduvocs|{9)cd{z%s(_*E0sVT&v5#Yk`sEQ11R zC2%!nRtM286D*uEVQd4)WiBaAGrj1L8vdB(>}&6CAmtT5Of;z?3rIw_uF|=?Vepwn z*uEPQso=7ZezPO<r}+z#%dEh_{zJ$^60s<i@J9&=hOsQdK_LVMItJGbn<rA&`*icT zYUjF%j<w;v>;?y<?!yocUO8j)k9nWCe+i|GR?^*~VE#n1Oh{M&NwDfW6k#j;7Xx{l zHVmh4aP5d+0UwOBG{6_mCO}%DYd<Vt-}J%GguF4j`@krYzhZ*{f76uRV{dJ+^Co|@ zU%gN2UdYzSBnC&Ze%1i@@@TjMyWX}l_)3#gKNPB3*)G%Ce>m+YL$6k|$$`*>dnJh8 zT67b^g}ZI*NIL*ubm1S#Q`*MWp*jwo`1z9P)AIP)wata2-31zu&KmE$x;|xlX~^+x zVA<gQr`f?<lOecju{68YMC|PK`tEYu!$h#{h~H53HFP}``)0^)D@Z5pIDr>7=J>B7 z+WYGo^O<I!;N~OT!qU6R{rn7rDlV8xsZL^9GX=J}xf!6hz^^N_8?=`60wW^%aci#j zumPhJR4@C&velYCtgT?LxQXaEIyhtbZ|aEEs%AJpF#y(zoV2n3xCUx2c`@uuT|@u_ zeO{Z$U_A|b0A4jXwOYnf6h(`ibSyvb&#cKOSl@IcZN5|J*=E#<`2;w74673`BDx>2 zspZJy(E?C8GhyusER27&4-YntkaGg3Ez(mW!vOum*EIr*TTl}oNL_G>pHS!(W)p=* zn5-1hDV$XCMwWuSXrfnX*(J?f*U;c~gGq)T?Az<DU-iO97fW5Zh*R?@aUP0&7TDF* zcjPC;17}E9SzM-Ee$(gCd+F*UUgES5*p|d60Q9O!i`<}0i;!q#*a7J7JG|r7fQ?3Y z3U8DRHx0DY5viUMg~r1KnQiO!)PC3GNPIPyf2V(L3Omd-4||9^)Z0ZpaXY412O&aZ z&xeW7jcsDpL#v)vmA8~)l2&J-W<cuf0v(k6B+y#CAoHeFFoE2#BvKcAk<?26gnE)T zK#)4L%XS;Jaa>qqC=jg5U;tCx)Heizem|vzQ{{?g-=*b4H*vTKfv(&jBd!K{l6CYT zkENTuDN+Hqs*H6(!f#bKa#>1mi4(xiSxqm*<MV~!bd(j|CKJq@GT)DL+%ymRs7H3- zdonMw^0JkLQL2@5ot-!@f)Sa5!ISF&P}eTylC?6zvY@7S<;sz<$}^fS3UZokYn(N* z-w6y_a>Ai2XB2rY?beimEj&6wv5xwwH9rJGEdNatzSw>t3oBot6HyH;Ac|3qvyy@# zR3Rl~LwB(7Z^`FQO%`@BD6K~1a9#xYzi(S?VWejh#ptWWmknMaZm*aJ-K7J>JLPiU z{LHoSGPtUf3HGM*GO$QLA-dTB<brJMrc^f1-ftQdH{R+9?=|K+HUy*@7}@247ex2y z<;2j^vIiL+?)}5NcU;hBVZCRvq))~6!fM2r<eMI#86TS{QPRl`J|L@WRw5f{3PQM; z9!LhRK+YIdC&-&>YuG<7!qb2QH8>%S($=R|vJ)qoYq<v%r8^f59j*kyf9mF?3FQW@ zETTHsvhNq8(F9qYkoB}PZl)Sd$&V{>dJEdK29oabHo^ej(dZVZd+HQyGy`vSO>?UF zI~Gw$AI67Y0}Q2(kPpP28!6a7=KempJL(2B4m$yt`Nh>P7hAteuM?o>i$ye}$gH-1 z!DXK1fjrsSTK&IxDlC8AXk5d5TV{0{u`-P0?ksjjS#g==n<8H9prcgbr*Z}#yj|#^ zgEltWRxG{Kd>Xsmm!kD*HV~=?o8oDPN8Qwm?1@S((yuDwV={4GfxWjuH%w|ON`UoA zFgjeq2;&wD**!7O2S8Pqyqi2fjNj3X^jL^E#L!;5vl=uC_nef|PL40bKcXPFe3IZ+ zvRAR-lqKJ=Ottx9j%-WJSZ1n8%E-NmUy6LmnvmDq@zAi(H-BrAP;#J&zx%5S`7{lq z0B=>s6-7!<UP52^5fG9ud<z1Z`#kP!W&vq^Z_?3t^LEp42xzS4HXVBi{;WIpg4!P& z3TCAy{6kB<!_^*t&+bY~ZE#Un>@&c>oakWYE3lF1aKVLUpdYv~T;<VN9L00z_IQGT zFQY+w0`76geh0!!rzrng6^knguR}Q)<6uK;dwSVXX@5IklEf`b{bA>nxv|GN6JnbG z+iwg;DnbPx5}+j<2fUXK5vJF<2maXhv&=;rtQaXIYDej>SjG0zp{wBQ|JK9vJLr-E z9%zCq^V8(P&EpcVsjZU1!keEH5blbh6Sd&yPEbn!_nrf@hJUaIU3zDTzw34ZU3&8M zfJS4tImsv__XqwnVC4b7EuhszwNXl)fbXn}0Dc4KbElyf5f-`q&y{j|np9Cr&tt`z zE@R03&xI~!b8%Wpuq9Jasf1dRg_Z~^Oj}3dg{rD%QmFl{+xi{e7FHt)bEH9k@e|gE zoxicuDk-O6HXKzF{dfLi0k>LkJGYsnkjOWX$0M^)HYajw-IEo=F&-rkeyuHprws*Y zECeq*$&v;0FmV5L_X*(+AhTyha0#Yci(@5HdyQa0Vy+tx5{q1DzenLIq6X9wDA9_( z1+eofx%i7=ZxnR*Wf}O?5q3`@K4}C4ABejlY0lJlc+#eY*ba)Pk+)Kb9+va@K@ziH zy?fAbRM}g#er1K{1_24j9yEW|lXC&fn(%5c&H~CiRpJYB2<1Eg%eO=8_~OiLx|RZp zxNYSLkVy9gah5;wb&{_HxLkMdyivF4(TxO1$Z-z$+fHJ^ftmY6BwXb=1{1}4o1RyP zEGf3ETFzs8VU=xUA}%)2SIcgsEm`WI)A8!jKk2Q^ezwP}Hxt-sb8ni+)6N0d-t4@E z8BxTkq>?r2a65h#PjcGx(T7!a2s_fcJ@EVMtc?$34y;|Hx0c??|DG~R{dU!B|B3o^ zhO(z-MIN)>S`b0%&nr+;^KIvVR021bn$daZ!Op2ZqKIltm^kHKyBMX{qy6u7i6SI# zKaixzSARob@6WL*KCLO`1i%c?SZI0p>k;=AwLsi)n%IipS-^q(z2F5;tl$4e5CyrB zNW{}@8%fETIEd#f<y(r5xIR6eu{j?`;E<I5#+C>j+F97-myF6`nrb4Q0!XMX(_kjp zE$+}#W`3&F#K1$2)>321v0$W^8}_S>kBkPHeK)hLc_Fk^jZQL!5@R-+Iqh2!)HuHH zhc5l+-q1G)6f5LH5(pS790w5-k%O@{3>zm4Ys$hah<HkEC<p{#Mq{#W#3;FzvD>P} zR;&5YNeUqdk;O{6o@-fzzPM*QtrYaOzP+3~fIx;LATJ=@P<@X$&XchYy{Ahpp<C_W z&i!`?CuWUrA_Jjdmr_a$V|Ul=5hG*DH-BfF&p|reeUW>DTc55zz>it5l+g`Ab^e&e zoYhPe;O267ws!!aJt(QX+6$=w#*lFdRK%Uho+uW7Kn7Qv>B1hNuB}Pr8ew<GZ$tT1 zHI5KSU0c`ZXNQ%Zf^qg=Ma7l%$Lqe?DpJu%x`O%d0tF|PS()%5f=Sw)_mAhCHH(M3 zkB{vy)dZ)~*r@y(qr=?m13IR;Q6)Tx04gTA&}lq<3s?XrFj)l~nW+jB0=RQHiGn%1 zP0dzgz`c0dll5zHqNXsaUn~&i^U>el|3!3BQzMs-)^pR*hGRXlhtJeYvy)@gk!cP4 zdO}$g#XX{#`SAQS6oP3kb9PU8-s8bInsm7Cime*H*vE;fFUgzsenN=}=ypuFH{GHO zINCN;y#SOtugI*vCaX&;>W557MdxzF{i20lR!u>x=vtlsVo~G<7Lsp88Or$e&hoqe z<`GY~CS{pdd^toiru#tfEU{r)mdeU5Qh@JhC#?7NnYR=xy{9qEJRD=UIo_x>-DFk^ zx&_RXMPN-AH2$5$;#!^^97m3uuJ+e7_U_z{asvQKpB_5|^ZrmZ5tyzT{{_Y4DS8lk zyLRZqw~3~-{6Hks)2;sRDoZ{)KRF_yB<|773W&g1F2s7;lcx1`T}qc=zA1sCuK*u_ zKd_8sm<aA-4hegn18Ki$3(~SVu~rj<sg0)pjnjjLUS*1h5C5}3L)pnU37U1Ne-Aq$ zu?Y~Eqcx{eR*%!Q+S`WmKLiY{%mp;m-{`0gQ_MyM?!u3ht(Uj407;S=rPRtcx4R~V zO(Mq^6$0bEUKBAN9mT{ooYN}#LmEp%T7L)*p8Ps~@fg>}#LYhIyi#CNS_dRb%UZv# zd~&wx4}bd-i%?%V;=X-S7jc$wMG;sPz@1mw!7X3;w{!Tm&~&~(T&HN$?2pv7VBN9< zx^Q(!oXJ8`vi`>n{4cJH7$+Jx@jPTf@(Bm|&2U^AC$)JPh(8zrQ)smFY&WHZ(IGm& z?>4w&%PhS|W!!m59Pxjptio=`Y;5IJ$4Kt3YADlv_|&+mJGEE4M;<VX!Q2U<02!^G z<Ie4~EHKEAPA3A9`Yc(W?>F3B=dB364=*vmp9a)@s#zHTKGjjk%6DSsvJF@=Ze^Vl zPW$lzBaDI8xB#ZGi<ktB^Z2k<YW}2Sv{(x3(<zECS_(Z4HM?zGDpgZOoaT6nlG^%< zzQ-8%I4dz)*lOuu7IL^;RHD)ZV0cQXl30##Qp-Zg&s;YJ9h#Gsvt@o22bAs4{oaa; zsU|C>1foc$GfBFy5NVF4l|pq7qXdJ>ewYB??+$X(`8QJ78cPx-w0`lUUntuEu5Wc^ z@XAwYzIWT;Y$|!b_ZYhe?Vhclurp4gZC=7h6BjRx)qp4JG3AF*#9O3Jzy&UqewyP@ zoS`2AUPohcg4*1=gNJ^=)H`Nkfk(F9oM$ar_omGyQVxQk5oP9e$-a!IhuhDW`^zBT zl_Uz4{P)%mXxgv1a4V!%!xea=)XZW4hoWX>J~WQRsNhM9(*1RiU^ZxS1~+z^m-~$J zR`$kFRUbp|`5m<-;`2NiKr%>5o<~u*e%`aZ2sPSb0B1hz9#39VoM*05?5}c_HP2iX zQ(vh%d)BFXsv(`a$(dLvSw>-@Z2x-U^DXjsab<Kc($ugFf-pW**w9S`-ti%uDJp{# zgd}6rCC4-cNm8mhOT5A$^&9$Zi>F@|_ql$LjJb27Fw*PbgUQV?V9aDx`^}YXdMc=N zS(Ko1pYD(UWBN&W12^$BKIQlm)~t9Y$Z0ZH3y_zJxTHCx)d~TQA>PCQK&tCmfjrvV zG6N3@-|4bWNVsTQlwGHrppV8hQZLli@GNv94YYGdW(2WWtU&jbir0%56?KUv9j0xU zKfimafDBCg>Yw5QaJxRlJ^!-#@$#gbKFOfSAcw_z1Of=TrxZF73X-R#7E6ZM-7w!t z-wo2ScYF?A{0Q883(JSrdzsqQKIjta>e~TlXTxN-EICn7@rtk(zLr(v++SwPQbI1< zG^6$EO#9KGBfY;>xX_*iw=K_8vf*;NF)!8NM_>eN#(RGWpv(eA1f=n2qeZ1>abxg> zbsAVE&mTCxUO>y(*`4F@&KC}stdbeZe(DM=QNA_?T*C1N*2h~(wuu*4@#L<=o#Q0r ztLihK(NcWAr8NezIaZ*vofj1J8O2Gw5x)zvShb*RYFA;LgV7eQSU1&DY7!4Hs0SpL zbAdfMN&LeDC_IIcoTaM5#)0-sXO>&$d;eAS?ua!FNnf%=&j2qh%a*OM&QS-UM7hG6 z1yZ$7AsU`>z*i8KR!7nG9>R4E;x1+ss`-H^I0ogd*Q9h#tHYJ|%-t39CUf1snl0<0 z*1rZFOW{r<Z%dGzYe*LYj5TyvwAkocn9DXFJON{X&J}qFWBbEj5GIs3qq2RYBtO~h z{e(v#3gH|5LiECAj;F$C-3cjO{8=4XJq3g}@aMuuN33v(?B?7noa7G=8tF5cgf`X{ z!wP-GH+T|BDOwKfa0<3NF#9*6Iax$eN{!y$Ql}k+$9ZMD5Bl92x3|Zz*W4}o@Ns&? z7fZMR&qkQR>@}PjQ=dVdD}f6i2+<?Y3OfWI;0yp#9?uI4euvcr9BfLRdv_I;^-!IN z$XK+YHLB~dl#|F!)EjjXQ(y;4i-t}5GS~+rKAhP=snA-2b?vRV`Jk2l!+XEU&__}C zM;E8B6@hpkwzK5|=3rX$6M5EbN;DL@1sp(SDFwkw)<8Q-#3|U?_WiGd=UNGPt!ntg z-!8o-!f5R3*{6i$X9u`}{WQ)F-ee=G%zq<ob<x=!wET)HsN|5%rAU>QhY|!`!6I;o ztji~{KRcGv(c^yhSr3Je`WrSG4>=*YCZbf-UN()U+O$1RTSFW!QOD`L=`HqqeJcP| z!|cgP7e`FX$-6)DyRS#lF{4#;da+x|7_U_ciL~SPxSl`?;m<GFtH&HO-vd$g-Oo4l zk+Chhr_=}LhzWilvBl4Mn01f_Uu5+h^YuBhNvGi<>3U5{NINb`G3m3H|67iXy)9QR zYB3M=u?V3!PTHb+$lqgvBr|pPq(B7h*L{Q8KLov<$!EWO+oxXf5t3Ar|2!RC(wB97 zk+53|lX4Rku$>HM8sKOMLY-XxLA(@2Tt2vrY=^8<rNp$Q6cn{G3(m+}v*j(r8N-X4 zKY4xFO6%eJ@A$5DkFQ$%Z*CVk3QoygBRy;~ZH(EN^OVfJelpui71*8Gn9COMv7LcH z$SK~;dP<c3rc?b0X+p44YU7E;>mreAI)a+9_Sg@E^hYpX(2?P={df)>|9}Mv7Yqai z+$k8yY?2*KMuz?H@Y;rAxRFt>C_18BtkS{kpL`GmRw%F27{rlyRN!8`MTqpTfrgQT z`lwKWoi5G)2F;0xP~w@v%4oy@A&o^yRT5>`r0g7FT>L*^@4A-(<9W=iMa%nO-0?Tg z7fMMV%va<dg0XOKyW!_K*PWPeSW6}0@%8cP%DS~aCrmHW@Ag|{(EJgye5OUa5Q=XH zRbSopUD44E%)5Y!*UFDkqT>m&z*TIVoas=Xyv<*01cR-ct1e)<xE3$~UR*mVQrN9n z2<4rnc;xo5gtVR6I8ZV!SYCslg~eXzc_6-c50iaAd1MilM>GASw}sN&5>Nl^#Lgn) zx4-in=B$<Vr6a6kvx<XVNrew+<%WUCY5GeD+UF$mB79)P`Vu|<u{Elq2J;yl)t9+8 z{Pk0RZS*6TlZy)Kd33WFpg-XTmey+e+~5C|KHm>WfdyF$cHh?K#w6lTWwc;m$RI5I zy2P~5{#p`hi8q>ka=yl}Osq^^dTO^B^W2)4(oudv8SSIeV7#?-mcq~54vBijD9mFm zavguL;pbP5pTc|9pvV4`{(yGO=~`-1*q2gLymkP~Hx5yD2<OTNsNir%_j-}RQ8P;I z6rJ^-=KxlBz&DmAZy|M{g~Fw6Bmz6O6qfRrruMD7e+nJ#{~-&_B9tc@09M<HcOo=p z$q(iPvlyjr0&XF+RjTl(*U}c$wBg9tv~{OTzfhgp(b~RY;gT%-X|^y(rCFPW<suJq z0=T__YTJ2c8W=?cWIBT)h>mV*aZx=6Jai}^VGkci4l5grBZKAYrhmBLB_1?Ik_q#B zNHk>EG%A%XB<)F+Eui~DE;n30Pl6|&4Gv`>G)x-}J2ALm^|mpGSfMvlPdWy<!I0uT z$Zm&SDQn&gMoSuXq0-`T{-$(q(tbWyxcnZ<T6Lxwf5;jDXrveeo@MKzN|vo6qy*J& zABOK}h>_1ES+&W@NIp*`SpFMu#zT)`pM?}1CVgA8pYbXPzLKgZ-U`3hC1%F?86LIB z3-Uy#`$Zm<o<Z(o$q4e40tW%*XOMr}z2E0V#E(fW3JF6Y<0G=Xtuu12xD*6=<kDh+ zA9c+H=$uJbI41o!uys|F#=WlX)I7BmJ^e>Nio=MS3$e&rXJycE7^c=uY$(?m(CjY1 zw(-^fY{U)vS;ttFJ66Cz>#^Bh35ihIeK5DU@m7|#S%vbrpx+%>^=)jW5Gna0@j71Z zy3x}ye|;HYY@$B)>+H!VBVl$|a1_Id`w&nl)?C+!BA+OAU}f)cH)!WY2OV}PA;Ojr zE5#%-CnrME2PN)esq7OcHDD0Hc5S(2=~7=EMlVe-AHC@>PH!R9WGY5ax`ag*9W|7L z(sXl+J&;(i#(gf^5T1&hUC=V(h`^V=H+V?S_XSm?ynNi+;Kl?P=@;`o*EYP7Qv)=` zbyt#52>lgnI|*M6ixT=1R?iXWg3R38Mr_<ALTn?NqpvL{$92r%a@wKaV2QijqX%Wp z&1T$GK?t8j+rOW;q^Yyj)vJSKkWy0{4;r#0-vWXB<QyO_E826u-oV<?U1H-WlDjS$ z>%K+Xhc|KCmDAwGQv&|4Za|gaJ`~`x8F3c!E<7Cd#<$$!5_ZhZdaW|nz)g~b*x%!( zjT_}i``f~bj8Q9hOk+b);3B{KMa0SZH1XLT2FaREP{#(XM#TSdxg_vey`TvT_R3Cz zmKkGxBU0ViC-}L2w2Zjg@5)vLvwQd|?#Nr7KtRZ*QUz5ui8QzDGC*^JupVGXP73Kk z<vb5Vt*|1r1J*6D!yn&uK9U5NP3#SIeI3%to13(sMeK+_m)yGqvl8wR+?xk$PwMDx z6Pr}Xn#Om*n$mT|S7{aEaHpJ!`B@?s=cJ%dv$Ox{YtNAuMs=egp%J-4@EJ~cl-26^ zTIRE*<5jj=MIN&nucC$%;Rx{cv#3I^h;?E8a&Kq37lHdbV6Uxu5O$FB;<E6Kz#Rbd z`(xlox#ANCW6-vr$|o8wd3AjMS#ipV4M-IH@_vYRNg0IziFbpFpch`Vj`Ul?h*6)+ zX$~I(th&gL8E%9MD<W}{)sL<<X@{vry-#xsdaRx`>Ob4ZHY2<#KNSGJS6GIO2D}2m zEq#-TKQ5C$OU+U1OT+Ami$XRGnnzFikI+Do9G81EB0DJO8fBSBZc4=<)L}--%T2c5 zcN?zkX@XsIo}H~)<=d^V`p<I8--K5}G#`JBV9d1=sh<8pbUuJ?bjzh$XDFDH%xG2X zD&D%Q#*I8>I(g1D*mnW0W`2e4$$)Xb4TY@ZU9M%0DoR1ht)60sj(6xQ3%nyl(Hf+X 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 a^2CUQ#FYt=Q997hc|p{%wDg?erSm_R3@#i1 -- GitLab