Skip to content

Commit 5d16c66

Browse files
committed
afc_ref_fofb_ctrl_gen.vhd: instantiate sys id acq/trig mux cores
1 parent 074affb commit 5d16c66

File tree

1 file changed

+43
-7
lines changed

1 file changed

+43
-7
lines changed

hdl/top/afc_ref_design_gen/afc_ref_fofb_ctrl_gen.vhd

Lines changed: 43 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -433,6 +433,9 @@ architecture top of afc_ref_fofb_ctrl_gen is
433433
-- FOFB CC
434434
constant c_NUM_FOFC_CC_CORES : natural := 2;
435435

436+
-- SYS ID
437+
constant c_NUM_SYS_ID_CORES : natural := 1;
438+
436439
constant c_BPMS : integer := 1;
437440
constant c_FAI_DW : integer := 16;
438441
constant c_DMUX : integer := 2;
@@ -478,6 +481,15 @@ architecture top of afc_ref_fofb_ctrl_gen is
478481
signal acq_dcc_fmc_packet : t_fofb_cc_packet;
479482
signal acq_dcc_fmc_valid : std_logic := '0';
480483

484+
-----------------------------------------------------------------------------
485+
-- FOFB system identification signals
486+
-----------------------------------------------------------------------------
487+
488+
signal bpm_pos_flat_x : t_bpm_pos_arr(c_MAX_NUM_P2P_BPM_POS/2-1 downto 0);
489+
signal bpm_pos_flat_x_rcvd : std_logic_vector(c_MAX_NUM_P2P_BPM_POS/2-1 downto 0);
490+
signal bpm_pos_flat_y : t_bpm_pos_arr(c_MAX_NUM_P2P_BPM_POS/2-1 downto 0);
491+
signal bpm_pos_flat_y_rcvd : std_logic_vector(c_MAX_NUM_P2P_BPM_POS/2-1 downto 0);
492+
481493
-----------------------------------------------------------------------------
482494
-- RTM signals
483495
-----------------------------------------------------------------------------
@@ -684,13 +696,14 @@ architecture top of afc_ref_fofb_ctrl_gen is
684696

685697
constant c_ACQ_FIFO_SIZE : natural := 256;
686698

687-
-- Number of acquisition cores. Same as the number of DCC
688-
constant c_ACQ_NUM_CORES : natural := c_NUM_FOFC_CC_CORES + c_RTM_LAMP_NUM_CORES;
699+
-- Number of acquisition cores
700+
constant c_ACQ_NUM_CORES : natural := c_NUM_FOFC_CC_CORES + c_RTM_LAMP_NUM_CORES + c_NUM_SYS_ID_CORES;
689701

690702
-- Acquisition core IDs
691703
constant c_ACQ_CORE_RTM_LAMP_ID : natural := 0;
692704
constant c_ACQ_CORE_CC_FMC_OR_RTM_ID : natural := 1;
693705
constant c_ACQ_CORE_CC_P2P_ID : natural := 2;
706+
constant c_ACQ_CORE_SYS_ID_ID : natural := 3;
694707

695708
-- Type of DDR3 core interface
696709
constant c_DDR_INTERFACE_TYPE : string := "AXIS";
@@ -767,6 +780,7 @@ architecture top of afc_ref_fofb_ctrl_gen is
767780
constant c_TRIG_MUX_RTM_LAMP_ID : natural := c_ACQ_CORE_RTM_LAMP_ID;
768781
constant c_TRIG_MUX_CC_FMC_ID : natural := c_ACQ_CORE_CC_FMC_OR_RTM_ID;
769782
constant c_TRIG_MUX_CC_P2P_ID : natural := c_ACQ_CORE_CC_P2P_ID;
783+
constant c_TRIG_MUX_SYS_ID_ID : natural := c_ACQ_CORE_SYS_ID_ID;
770784

771785
constant c_TRIG_MUX_NUM_CORES : natural := c_ACQ_NUM_CORES;
772786

@@ -1804,11 +1818,10 @@ begin
18041818
bpm_pos_index_i => fofb_proc_bpm_pos_index,
18051819
bpm_pos_valid_i => fofb_proc_bpm_pos_valid,
18061820
bpm_pos_flat_clear_i => or fofb_sp_valid_arr,
1807-
-- TODO: connect on acq channel
1808-
bpm_pos_flat_x_o => open,
1809-
bpm_pos_flat_x_rcvd_o => open,
1810-
bpm_pos_flat_y_o => open,
1811-
bpm_pos_flat_y_rcvd_o => open,
1821+
bpm_pos_flat_x_o => bpm_pos_flat_x,
1822+
bpm_pos_flat_x_rcvd_o => bpm_pos_flat_x_rcvd,
1823+
bpm_pos_flat_y_o => bpm_pos_flat_y,
1824+
bpm_pos_flat_y_rcvd_o => bpm_pos_flat_y_rcvd,
18121825
wb_slv_i => user_wb_out(c_FOFB_SYS_ID_ID),
18131826
wb_slv_o => user_wb_in(c_FOFB_SYS_ID_ID)
18141827
);
@@ -2133,6 +2146,9 @@ begin
21332146
fs_clk_array(c_ACQ_CORE_RTM_LAMP_ID) <= clk_sys;
21342147
fs_rst_n_array(c_ACQ_CORE_RTM_LAMP_ID) <= clk_sys_rstn;
21352148

2149+
fs_clk_array(c_ACQ_CORE_SYS_ID_ID) <= clk_sys;
2150+
fs_rst_n_array(c_ACQ_CORE_SYS_ID_ID) <= clk_sys_rstn;
2151+
21362152
gen_acq_clks : for i in 0 to c_ACQ_NUM_CORES-1 generate
21372153

21382154
fs_ce_array(i) <= '1';
@@ -2200,6 +2216,26 @@ begin
22002216
acq_chan_array(c_ACQ_CORE_CC_P2P_ID, c_ACQ_DCC_ID).dvalid <= fofb_fod_dat_val(c_FOFB_CC_P2P_ID)(0);
22012217
acq_chan_array(c_ACQ_CORE_CC_P2P_ID, c_ACQ_DCC_ID).trig <= trig_pulse_rcv(c_TRIG_MUX_CC_P2P_ID, c_ACQ_DCC_ID).pulse;
22022218

2219+
--------------------
2220+
-- ACQ Core 4
2221+
--------------------
2222+
2223+
-- SYS ID
2224+
acq_chan_array(c_ACQ_CORE_SYS_ID_ID, c_ACQ_SYS_ID_ID).val(to_integer(c_FACQ_CHANNELS(c_ACQ_SYS_ID_ID).width)-1 downto 0) <=
2225+
std_logic_vector(bpm_pos_flat_x(7)) & std_logic_vector(bpm_pos_flat_x(6)) & std_logic_vector(bpm_pos_flat_x(5)) & std_logic_vector(bpm_pos_flat_x(4)) & -- BPM x positions (767 downto 512, 8x32)
2226+
std_logic_vector(bpm_pos_flat_x(3)) & std_logic_vector(bpm_pos_flat_x(2)) & std_logic_vector(bpm_pos_flat_x(1)) & std_logic_vector(bpm_pos_flat_x(0)) &
2227+
std_logic_vector(bpm_pos_flat_y(7)) & std_logic_vector(bpm_pos_flat_y(6)) & std_logic_vector(bpm_pos_flat_y(5)) & std_logic_vector(bpm_pos_flat_y(4)) & -- BPM y positions (511 downto 256, 8x32)
2228+
std_logic_vector(bpm_pos_flat_y(3)) & std_logic_vector(bpm_pos_flat_y(2)) & std_logic_vector(bpm_pos_flat_y(1)) & std_logic_vector(bpm_pos_flat_y(0)) &
2229+
-- TODO: These bits should be filled with channels 11-8, but they aren't instantiated yet
2230+
std_logic_vector(to_unsigned(0, 64)) & -- FOFB setpoints (255 downto 64, 12x16)
2231+
std_logic_vector(fofb_sp_arr(7)) & std_logic_vector(fofb_sp_arr(6)) & std_logic_vector(fofb_sp_arr(5)) & std_logic_vector(fofb_sp_arr(4)) &
2232+
std_logic_vector(fofb_sp_arr(3)) & std_logic_vector(fofb_sp_arr(2)) & std_logic_vector(fofb_sp_arr(1)) & std_logic_vector(fofb_sp_arr(0)) &
2233+
bpm_pos_flat_x_rcvd & bpm_pos_flat_y_rcvd & -- [DEBUG] Flatenizers' 'received' flag (64 downto 49, 2x8)
2234+
f_fofb_cc_packet_to_slv(acq_dcc_fmc_packet)(def_PacketTimeframeCntr16MSB downto def_PacketTimeframeCntr16LSB) & -- [DEBUG] Timeframe counter (49 downto 33, 1x16)
2235+
std_logic_vector(to_unsigned(0, 32));
2236+
acq_chan_array(c_ACQ_CORE_SYS_ID_ID, c_ACQ_SYS_ID_ID).dvalid <= or fofb_sp_valid_arr;
2237+
acq_chan_array(c_ACQ_CORE_SYS_ID_ID, c_ACQ_SYS_ID_ID).trig <= trig_pulse_rcv(c_TRIG_MUX_SYS_ID_ID, c_ACQ_SYS_ID_ID).pulse;
2238+
22032239
----------------------------------------------------------------------
22042240
-- Trigger --
22052241
----------------------------------------------------------------------

0 commit comments

Comments
 (0)