43 use IEEE.STD_LOGIC_1164.
all;
44 use ieee.numeric_std.
all;
49 use ipbus_lib.ipbus.
all;
58 clk_ipb : in std_logic;
61 ipb_out : out ipb_rbus;
64 BCNIn : in std_logic_vector(11 downto 0);
65 SpyBCNIn : in std_logic := '0';
69 we : in std_logic := '0';
78 component AlgoOutputRAM
82 wea :
in std_logic_vector(
0 downto 0);
83 addra :
in std_logic_vector(
9 downto 0);
84 dina :
in std_logic_vector(
31 downto 0);
85 douta :
out std_logic_vector(
31 downto 0);
88 web :
in std_logic_vector(
0 downto 0);
89 addrb :
in std_logic_vector(
6 downto 0);
90 dinb :
in std_logic_vector(
255 downto 0);
91 doutb :
out std_logic_vector(
255 downto 0)
97 signal din : std_logic_vector(255 downto 0);
98 signal q : std_logic_vector(255 downto 0);
99 signal counter : std_logic_vector(6 downto 0) := "0000000";
100 signal BC_counter : std_logic_vector(3 downto 0) := "0000";
101 signal S1 : std_logic := '0';
106 signal ack : std_logic;
107 signal ack2 : std_logic;
108 signal ipbus_write : std_logic_vector(0 downto 0);
109 signal write_enable : std_logic_vector(0 downto 0);
112 IPBUS_RAM :
process(clk_ipb)
114 if rising_edge(clk_ipb) then
115 if ipb_in.ipb_strobe = '1' and ipb_in.ipb_write = '1' then
116 ipbus_write(0) <= '1';
118 ipbus_write(0) <= '0';
120 ack2 <= ipb_in.ipb_strobe and (not ack2) and (not ack);
126 ipb_out.ipb_ack <= ack;
127 ipb_out.ipb_err <= '0';
128 write_enable(0) <= we;
131 COUNTER_PROC :
process(rclk)
133 if rising_edge(rclk) then
136 BC_counter <= std_logic_vector(unsigned(BC_counter) + 1);
139 if BC_Counter = "0000" and S1 = '1' then
140 counter <= (others => '0');
142 counter <= std_logic_vector(unsigned(counter) + 1);
147 AlgoOut1 <= AlgoOut2;
148 AlgoOut2 <= AlgoOut3;
153 ALGO_OUTPUT_RAM : AlgoOutputRAM
156 ena => ipb_in.ipb_strobe,
158 addra => ipb_in.ipb_addr
(9 downto 0),
159 dina => ipb_in.ipb_wdata,
160 douta => ipb_out.ipb_rdata,
170 AlgoOut3 <= to_AlgoTriggerObjects(to_AlgoOutput(q));
172 din <= to_LogicVector(AlgoIn) when spyBCNIn = '0' else to_LogicVector(AlgoIn)(din'high - 32 downto 0) & x"f" & x"0" & BCNIn & x"fff";
External data-types and functions.
( OUTPUT_TOBS- 1 downto 0) AlgoTriggerObject AlgoOutput
Algorithm OUTPUT port.
array(natural range <> ) of AlgoTriggerObject AlgoTriggerObjects
Algorithm OUTPUT port.
IPBus wrapper for output spy/playback RAM for Algorithm module.
IPBus wrapper for output spy/playback RAM for Algorithm module.