diff --git a/dependencies.yml b/dependencies.yml index ce05070077fe7a8f2eb206a6deb74ae7877692f4..05eb5617fbda121a77f880bc588051a209315275 100644 --- a/dependencies.yml +++ b/dependencies.yml @@ -37,7 +37,7 @@ sources: url: https://gitlab.cern.ch/gbtsc-fpga-support/gbt-sc.git dtc: - branch: master + branch: fe_monitoring url: https://gitlab.cern.ch/cms-tracker-phase2-data-processing/BE_firmware/dtc.git dtc-stub-processing: diff --git a/top/addr_table/emp_payload.xml b/top/addr_table/emp_payload.xml index 12acae9558aaac50caa6c976eeff9b581fec48ed..b167d2470ca24018b5ef85bad6c4d29f35d23592 100644 --- a/top/addr_table/emp_payload.xml +++ b/top/addr_table/emp_payload.xml @@ -13,12 +13,12 @@ <node id="histogram1" address="0x3"/> </node> - <node id="fe_chan" address="0x040" description="FE channel control and status" module="file://dtc_link_interface.xml" fwinfo="endpoint;width=6"/> + <node id="fe_chan" address="0x200" description="FE channel control and status" module="file://dtc_link_interface.xml" fwinfo="endpoint;width=9"/> - <node id="mproc_ctrl" address="0x1ff" description="MProcessor channel control" fwinfo="endpoint;width=0"> + <node id="mproc_ctrl" address="0x7ff" description="MProcessor channel control" fwinfo="endpoint;width=0"> <node id="chan_sel" mask="0x7f"/> </node> - <node id="mprocessor" address="0x200" description="MProcessor control and status" module="file://mprocessor.xml" fwinfo="endpoint;width=7"/> + <node id="mprocessor" address="0x800" description="MProcessor control and status" module="file://mprocessor.xml" fwinfo="endpoint;width=7"/> <node id="be_daq" address="0x40000000" module="file://dtc_data_aggregator.xml" fwinfo="endpoint;width=30"/> diff --git a/top/firmware/hdl/emp_payload.vhd b/top/firmware/hdl/emp_payload.vhd index d156d95d35240bc95a0cf350e2f9c224bb39ca86..983d4fefef12849754d9785e9b6a2b61786e72cb 100644 --- a/top/firmware/hdl/emp_payload.vhd +++ b/top/firmware/hdl/emp_payload.vhd @@ -134,8 +134,8 @@ generic map( port map( clk => clk, reset => rst, - ipbus_in => ipb_to_slaves(N_SLV_FE_CTRL), - ipbus_out => ipb_from_slaves(N_SLV_FE_CTRL), + ipbus_in => ipb_to_slaves(N_SLV_FE), + ipbus_out => ipb_from_slaves(N_SLV_F), q => channel_sel, qmask => (0 => X"0000007f") ); @@ -305,7 +305,7 @@ pHistogram: process(clk_p) begin if rising_edge(clk_p) then if stubs(histogram_sel).valid = '1' and histogram_enable = '1' then - if stubs(histogram_sel).data(46) = '0' then + if stubs(histogram_sel).data(50) = '0' then hist0_stub <= stubs(histogram_sel); hist1_stub <= LWORD_NULL; else diff --git a/top/firmware/hdl/ipbus_decode_emp_payload.vhd b/top/firmware/hdl/ipbus_decode_emp_payload.vhd index 65092e3b64596d93dcd94d8e93b647f11dbbffac..34ddc33b88015a781276dd564511d566b7ae8bc9 100644 --- a/top/firmware/hdl/ipbus_decode_emp_payload.vhd +++ b/top/firmware/hdl/ipbus_decode_emp_payload.vhd @@ -17,8 +17,8 @@ package ipbus_decode_emp_payload is subtype ipbus_sel_t is std_logic_vector(IPBUS_SEL_WIDTH - 1 downto 0); function ipbus_sel_emp_payload(addr : in std_logic_vector(31 downto 0)) return ipbus_sel_t; --- START automatically generated VHDL (Wed Sep 7 13:15:33 2022) - constant N_SLV_FE_CTRL: integer := 0; +-- START automatically generated VHDL (Thu Sep 15 13:10:42 2022) + constant N_SLV_FE: integer := 0; constant N_SLV_CSR: integer := 1; constant N_SLV_FE_CHAN: integer := 2; constant N_SLV_MPROC_CTRL: integer := 3; @@ -38,21 +38,21 @@ package body ipbus_decode_emp_payload is variable sel: ipbus_sel_t; begin --- START automatically generated VHDL (Wed Sep 7 13:15:33 2022) - if std_match(addr, "-0----------------00--0000000000") then - sel := ipbus_sel_t(to_unsigned(N_SLV_FE_CTRL, IPBUS_SEL_WIDTH)); -- fe_ctrl / base 0x00000000 / mask 0x400033ff - elsif std_match(addr, "-0----------------00--00000001--") then - sel := ipbus_sel_t(to_unsigned(N_SLV_CSR, IPBUS_SEL_WIDTH)); -- csr / base 0x00000004 / mask 0x400033fc - elsif std_match(addr, "-0----------------00--0001------") then - sel := ipbus_sel_t(to_unsigned(N_SLV_FE_CHAN, IPBUS_SEL_WIDTH)); -- fe_chan / base 0x00000040 / mask 0x400033c0 - elsif std_match(addr, "-0----------------00--0111111111") then - sel := ipbus_sel_t(to_unsigned(N_SLV_MPROC_CTRL, IPBUS_SEL_WIDTH)); -- mproc_ctrl / base 0x000001ff / mask 0x400033ff - elsif std_match(addr, "-0----------------00--100-------") then - sel := ipbus_sel_t(to_unsigned(N_SLV_MPROCESSOR, IPBUS_SEL_WIDTH)); -- mprocessor / base 0x00000200 / mask 0x40003380 - elsif std_match(addr, "-0----------------01--0---------") then - sel := ipbus_sel_t(to_unsigned(N_SLV_MEM1, IPBUS_SEL_WIDTH)); -- mem1 / base 0x00001000 / mask 0x40003200 - elsif std_match(addr, "-0----------------10--0---------") then - sel := ipbus_sel_t(to_unsigned(N_SLV_MEM2, IPBUS_SEL_WIDTH)); -- mem2 / base 0x00002000 / mask 0x40003200 +-- START automatically generated VHDL (Thu Sep 15 13:10:42 2022) + if std_match(addr, "-0----------------00000000000000") then + sel := ipbus_sel_t(to_unsigned(N_SLV_FE, IPBUS_SEL_WIDTH)); -- fe / base 0x00000000 / mask 0x40003fff + elsif std_match(addr, "-0----------------000000000001--") then + sel := ipbus_sel_t(to_unsigned(N_SLV_CSR, IPBUS_SEL_WIDTH)); -- csr / base 0x00000004 / mask 0x40003ffc + elsif std_match(addr, "-0----------------00001---------") then + sel := ipbus_sel_t(to_unsigned(N_SLV_FE_CHAN, IPBUS_SEL_WIDTH)); -- fe_chan / base 0x00000200 / mask 0x40003e00 + elsif std_match(addr, "-0----------------00011111111111") then + sel := ipbus_sel_t(to_unsigned(N_SLV_MPROC_CTRL, IPBUS_SEL_WIDTH)); -- mproc_ctrl / base 0x000007ff / mask 0x40003fff + elsif std_match(addr, "-0----------------0010000-------") then + sel := ipbus_sel_t(to_unsigned(N_SLV_MPROCESSOR, IPBUS_SEL_WIDTH)); -- mprocessor / base 0x00000800 / mask 0x40003f80 + elsif std_match(addr, "-0----------------01000---------") then + sel := ipbus_sel_t(to_unsigned(N_SLV_MEM1, IPBUS_SEL_WIDTH)); -- mem1 / base 0x00001000 / mask 0x40003e00 + elsif std_match(addr, "-0----------------10000---------") then + sel := ipbus_sel_t(to_unsigned(N_SLV_MEM2, IPBUS_SEL_WIDTH)); -- mem2 / base 0x00002000 / mask 0x40003e00 elsif std_match(addr, "-1------------------------------") then sel := ipbus_sel_t(to_unsigned(N_SLV_BE_DAQ, IPBUS_SEL_WIDTH)); -- be_daq / base 0x40000000 / mask 0x40000000 -- END automatically generated VHDL