24 use IEEE.STD_LOGIC_1164.
ALL;
37 m_aclk : IN STD_LOGIC;
38 s_aclk : IN STD_LOGIC;
39 s_aresetn : IN STD_LOGIC;
40 s_axis_tvalid : IN STD_LOGIC;
41 s_axis_tready : OUT STD_LOGIC;
42 s_axis_tdata : IN STD_LOGIC_VECTOR(63 DOWNTO 0);
43 s_axis_tlast : IN STD_LOGIC;
44 s_axis_tuser : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
45 m_axis_tvalid : OUT STD_LOGIC;
46 m_axis_tready : IN STD_LOGIC;
47 m_axis_tdata : OUT STD_LOGIC_VECTOR(63 DOWNTO 0);
48 m_axis_tlast : OUT STD_LOGIC;
49 m_axis_tuser : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
50 axis_wr_data_count : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
51 axis_rd_data_count : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
52 timeout_err : in std_logic
65 COMPONENT aurora_in_fifo
67 wr_rst_busy :
OUT STD_LOGIC;
68 rd_rst_busy :
OUT STD_LOGIC;
69 m_aclk :
IN STD_LOGIC;
70 s_aclk :
IN STD_LOGIC;
71 s_aresetn :
IN STD_LOGIC;
72 s_axis_tvalid :
IN STD_LOGIC;
73 s_axis_tready :
OUT STD_LOGIC;
74 s_axis_tdata :
IN STD_LOGIC_VECTOR(
63 DOWNTO 0);
75 s_axis_tlast :
IN STD_LOGIC;
76 s_axis_tuser :
IN STD_LOGIC_VECTOR(
3 DOWNTO 0);
77 m_axis_tvalid :
OUT STD_LOGIC;
78 m_axis_tready :
IN STD_LOGIC;
79 m_axis_tdata :
OUT STD_LOGIC_VECTOR(
63 DOWNTO 0);
80 m_axis_tlast :
OUT STD_LOGIC;
81 m_axis_tuser :
OUT STD_LOGIC_VECTOR(
3 DOWNTO 0);
82 axis_wr_data_count :
OUT STD_LOGIC_VECTOR(
8 DOWNTO 0);
83 axis_rd_data_count :
OUT STD_LOGIC_VECTOR(
8 DOWNTO 0)
87 COMPONENT processor_in_fifo
89 wr_rst_busy :
OUT STD_LOGIC;
90 rd_rst_busy :
OUT STD_LOGIC;
91 s_aclk :
IN STD_LOGIC;
92 s_aresetn :
IN STD_LOGIC;
93 s_axis_tvalid :
IN STD_LOGIC;
94 s_axis_tready :
OUT STD_LOGIC;
95 s_axis_tdata :
IN STD_LOGIC_VECTOR(
63 DOWNTO 0);
96 s_axis_tlast :
IN STD_LOGIC;
97 s_axis_tuser :
IN STD_LOGIC_VECTOR(
3 DOWNTO 0);
98 m_axis_tvalid :
OUT STD_LOGIC;
99 m_axis_tready :
IN STD_LOGIC;
100 m_axis_tdata :
OUT STD_LOGIC_VECTOR(
63 DOWNTO 0);
101 m_axis_tlast :
OUT STD_LOGIC;
102 m_axis_tuser :
OUT STD_LOGIC_VECTOR(
3 DOWNTO 0);
103 axis_data_count :
OUT STD_LOGIC_VECTOR(
11 DOWNTO 0)
127 COMPONENT ila_input_fifo
130 probe0 :
IN STD_LOGIC_VECTOR(
31 DOWNTO 0);
131 probe1 :
IN STD_LOGIC_VECTOR(
9 DOWNTO 0);
132 probe2 :
IN STD_LOGIC_VECTOR(
0 DOWNTO 0);
133 probe3 :
IN STD_LOGIC_VECTOR(
3 DOWNTO 0);
134 probe4 :
IN STD_LOGIC_VECTOR(
0 DOWNTO 0);
135 probe5 :
IN STD_LOGIC_VECTOR(
0 DOWNTO 0);
136 probe6 :
IN STD_LOGIC_VECTOR(
0 DOWNTO 0);
137 probe7 :
IN STD_LOGIC_VECTOR(
0 DOWNTO 0);
138 probe8 :
IN STD_LOGIC_VECTOR(
0 DOWNTO 0);
139 probe9 :
IN STD_LOGIC_VECTOR(
0 DOWNTO 0);
140 probe10 :
IN STD_LOGIC_VECTOR(
0 DOWNTO 0);
141 probe11 :
IN STD_LOGIC_VECTOR(
0 DOWNTO 0);
142 probe12 :
IN STD_LOGIC_VECTOR(
0 DOWNTO 0);
143 probe13 :
IN STD_LOGIC_VECTOR(
0 DOWNTO 0);
144 probe14 :
IN STD_LOGIC_VECTOR(
0 DOWNTO 0);
145 probe15 :
IN STD_LOGIC_VECTOR(
7 DOWNTO 0);
146 probe16 :
IN STD_LOGIC_VECTOR(
0 DOWNTO 0);
147 probe17 :
IN STD_LOGIC_VECTOR(
0 DOWNTO 0);
148 probe18 :
IN STD_LOGIC_VECTOR(
0 DOWNTO 0)
154 COMPONENT ila_clk_cross_fifo
157 probe0 :
IN STD_LOGIC_VECTOR(
63 DOWNTO 0);
158 probe1 :
IN STD_LOGIC_VECTOR(
9 DOWNTO 0);
159 probe2 :
IN STD_LOGIC_VECTOR(
0 DOWNTO 0);
160 probe3 :
IN STD_LOGIC_VECTOR(
3 DOWNTO 0);
161 probe4 :
IN STD_LOGIC_VECTOR(
0 DOWNTO 0);
162 probe5 :
IN STD_LOGIC_VECTOR(
0 DOWNTO 0);
163 probe6 :
IN STD_LOGIC_VECTOR(
0 DOWNTO 0);
164 probe7 :
IN STD_LOGIC_VECTOR(
0 DOWNTO 0);
165 probe8 :
IN STD_LOGIC_VECTOR(
0 DOWNTO 0);
166 probe9 :
IN STD_LOGIC_VECTOR(
0 DOWNTO 0);
167 probe10 :
IN STD_LOGIC_VECTOR(
0 DOWNTO 0);
168 probe11 :
IN STD_LOGIC_VECTOR(
0 DOWNTO 0);
169 probe12 :
IN STD_LOGIC_VECTOR(
7 DOWNTO 0);
170 probe13 :
IN STD_LOGIC_VECTOR(
0 DOWNTO 0);
171 probe14 :
IN STD_LOGIC_VECTOR(
0 DOWNTO 0);
172 probe15 :
IN STD_LOGIC_VECTOR(
0 DOWNTO 0)
178 signal mid_fifo_tvalid : std_logic;
179 signal mid_fifo_tready : std_logic;
180 signal mid_fifo_tdata : std_logic_vector(63 downto 0);
181 signal mid_fifo_tlast : std_logic;
182 signal mid_fifo_tuser : std_logic_vector(3 downto 0);
183 signal axis_data_count_i : std_logic_vector(31 downto 0);
184 signal axis_data_count : std_logic_vector(31 downto 0);
185 signal s_areset : std_logic;
186 signal timer : std_logic_vector(31 downto 0);
187 signal mid_fifo_wr_data_count : std_logic_vector(9 downto 0);
188 signal mid_fifo_rd_data_count : std_logic_vector(9 downto 0);
189 signal s_axis_tready_i : std_logic;
190 signal start_timer : STD_LOGIC;
191 signal stop_timer : STD_LOGIC;
192 signal run_timer : STD_LOGIC;
193 signal packet_count : STD_LOGIC_VECTOR (7 downto 0);
194 signal m_axis_tvalid_i : STD_LOGIC;
195 signal m_axis_tlast_i : STD_LOGIC;
196 signal m_axis_tdata_i : STD_LOGIC_VECTOR (63 downto 0);
197 signal m_axis_tuser_i : STD_LOGIC_VECTOR (3 downto 0);
198 signal timeout_err_reg : STD_LOGIC;
199 signal s_axis_tvalid_safe : STD_LOGIC;
200 signal mid_fifo_tvalid_safe : STD_LOGIC;
201 signal m_axis_tready_safe : STD_LOGIC;
202 signal clk_cross_wr_rst_busy : STD_LOGIC;
203 signal input_wr_rst_busy : STD_LOGIC;
208 clk_cross_fifo : aurora_in_fifo
210 wr_rst_busy => clk_cross_wr_rst_busy,
214 s_aresetn => s_aresetn,
215 s_axis_tvalid => s_axis_tvalid_safe,
216 s_axis_tready => s_axis_tready_i,
217 s_axis_tdata => s_axis_tdata,
218 s_axis_tlast => s_axis_tlast,
219 s_axis_tuser => s_axis_tuser,
224 m_axis_tvalid => mid_fifo_tvalid,
225 m_axis_tready => '1',
226 m_axis_tdata => mid_fifo_tdata,
227 m_axis_tlast => mid_fifo_tlast,
228 m_axis_tuser => mid_fifo_tuser,
229 axis_wr_data_count =>
open,
230 axis_rd_data_count =>
open
233 s_axis_tvalid_safe <= s_axis_tvalid and not clk_cross_wr_rst_busy;
234 s_axis_tready <= '1';
236 input_fifo :
processor_in_fifo
238 wr_rst_busy => input_wr_rst_busy,
241 s_aresetn => s_aresetn,
242 s_axis_tvalid => mid_fifo_tvalid_safe,
243 s_axis_tready =>
open,
244 s_axis_tdata => mid_fifo_tdata,
245 s_axis_tlast => mid_fifo_tlast,
246 s_axis_tuser => mid_fifo_tuser,
247 m_axis_tvalid => m_axis_tvalid_i,
248 m_axis_tready => m_axis_tready_safe,
249 m_axis_tdata => m_axis_tdata_i,
250 m_axis_tlast => m_axis_tlast_i,
251 m_axis_tuser => m_axis_tuser_i,
252 axis_data_count => axis_data_count_i
(11 downto 0)
254 mid_fifo_tvalid_safe <= mid_fifo_tvalid and not input_wr_rst_busy;
255 m_axis_tready_safe <= m_axis_tready or input_wr_rst_busy;
256 axis_data_count <= x"0000" & "0000" & axis_data_count_i(11 downto 0);
258 axis_rd_data_count <= axis_data_count;
259 axis_wr_data_count <= axis_data_count;
282 s_areset <= not (s_aresetn);
284 clk_cross_fifo_ila : ila_clk_cross_fifo
287 probe0 => mid_fifo_tdata,
288 probe1 => mid_fifo_rd_data_count,
289 probe2
(0) => timeout_err_reg,
290 probe3 => mid_fifo_tuser,
291 probe4
(0) => s_aresetn,
294 probe7
(0) => mid_fifo_tvalid,
295 probe8
(0) => mid_fifo_tlast,
297 probe10
(0) => m_axis_tready,
299 probe12 => m_axis_tdata_i
(63 downto 56),
300 probe13
(0) => m_axis_tvalid_i,
301 probe14
(0) => m_axis_tlast_i,
302 probe15
(0) => m_axis_tuser_i
(0)
306 m_axis_tuser <= m_axis_tuser_i;
307 m_axis_tdata <= m_axis_tdata_i;
308 m_axis_tvalid <= m_axis_tvalid_i;
309 m_axis_tlast <= m_axis_tlast_i;
311 process (m_aclk)
begin
312 if rising_edge (m_aclk) then
313 timeout_err_reg <= timeout_err;