x393  1.0
FPGAcodeforElphelNC393camera
histogram_saxi.v
Go to the documentation of this file.
1 
39 `timescale 1ns/1ps
40 // Number of histograms per sensor is now statically defined by NUM_FRAME_BITS
41 // It may be modified to both reduce this number (by masking) or increase ( by
42 // keeping pointer locally)
43 
45  parameter HIST_SAXI_ADDR = 'h380, // 16 locations to write 20 bits of a 4KB page for the histogram
46  parameter HIST_SAXI_ADDR_MASK = 'h7f0,
47  parameter HIST_SAXI_MODE_ADDR = 'h390,
48  parameter HIST_SAXI_MODE_WIDTH = 8,
49  parameter HIST_SAXI_EN = 0,
50  parameter HIST_SAXI_NRESET = 1,
51  parameter HIST_CONFIRM_WRITE = 2, // wait write confirmation for each block
52  parameter HIST_SAXI_AWCACHE = 4, // Write 4'h3 there, //..7 cache mode (4 bits, default 4'h3)
53 
54  parameter HIST_SAXI_MODE_ADDR_MASK = 'h7ff,
55 // parameter HIST_SAXI_STATUS_REG = 'h34,
56  parameter NUM_FRAME_BITS = 4 // number of bits use for frame number
57  `ifdef DEBUG_RING
58  ,parameter DEBUG_CMD_LATENCY = 2
59  `endif
60 )(
61 // input rst,
62  input mclk, // for command/status
63  input aclk, // global clock to run s_axi (@150MHz?)
64  input mrst, // @posedge mclk, sync reset
65  input arst, // @posedge aclk, sync reset
66 
67  // sensor 0, data valid @posedge mclk
68  input [NUM_FRAME_BITS-1:0] frame0, // frame number for which the histogram is provided
69  input hist_request0, // request to transfer a burst
70  output hist_grant0, // request to transfer over S_AXI granted
71  input [1:0] hist_chn0, // histogram (sub) channel, valid with request and transfer
72  input hist_dvalid0, // output data valid - active when sending a burst
73  input [31:0] hist_data0, // output[31:0] histogram data
74 
75  // sensor 1, data valid @posedge mclk
76  input [NUM_FRAME_BITS-1:0] frame1, // frame number for which the histogram is provided
77  input hist_request1, // request to transfer a burst
78  output hist_grant1, // request to transfer over S_AXI granted
79  input [1:0] hist_chn1, // histogram (sub) channel, valid with request and transfer
80  input hist_dvalid1, // output data valid - active when sending a burst
81  input [31:0] hist_data1, // output[31:0] histogram data
82 
83  // sensor 2, data valid @posedge mclk
84  input [NUM_FRAME_BITS-1:0] frame2, // frame number for which the histogram is provided
85  input hist_request2, // request to transfer a burst
86  output hist_grant2, // request to transfer over S_AXI granted
87  input [1:0] hist_chn2, // histogram (sub) channel, valid with request and transfer
88  input hist_dvalid2, // output data valid - active when sending a burst
89  input [31:0] hist_data2, // output[31:0] histogram data
90 
91  // sensor 3, data valid @posedge mclk
92  input [NUM_FRAME_BITS-1:0] frame3, // frame number for which the histogram is provided
93  input hist_request3, // request to transfer a burst
94  output hist_grant3, // request to transfer over S_AXI granted
95  input [1:0] hist_chn3, // histogram (sub) channel, valid with request and transfer
96  input hist_dvalid3, // output data valid - active when sending a burst
97  input [31:0] hist_data3, // output[31:0] histogram data
98 
99  // command interface
100  input [7:0] cmd_ad, // byte-serial command address/data (up to 6 bytes: AL-AH-D0-D1-D2-D3
101  input cmd_stb, // strobe (with first byte) for the command a/d
102  // S_AXI inerface w/o read channel
103  // write address
104  output [31:0] saxi_awaddr, // AXI PS Slave GP0 AWADDR[31:0], input
105  output saxi_awvalid, // AXI PS Slave GP0 AWVALID, input
106  input saxi_awready, // AXI PS Slave GP0 AWREADY, output
107  output [5:0] saxi_awid, // AXI PS Slave GP0 AWID[5:0], input
108  output [1:0] saxi_awlock, // AXI PS Slave GP0 AWLOCK[1:0], input
109  output [ 3:0] saxi_awcache, // AXI PS Slave GP0 AWCACHE[3:0], input
110  output [ 2:0] saxi_awprot, // AXI PS Slave GP0 AWPROT[2:0], input
111  output [ 3:0] saxi_awlen, // AXI PS Slave GP0 AWLEN[3:0], input
112  output [ 1:0] saxi_awsize, // AXI PS Slave GP0 AWSIZE[1:0], input
113  output [ 1:0] saxi_awburst, // AXI PS Slave GP0 AWBURST[1:0], input
114  output [ 3:0] saxi_awqos, // AXI PS Slave GP0 AWQOS[3:0], input
115  // write data
116  output [31:0] saxi_wdata, // AXI PS Slave GP0 WDATA[31:0], input
117  output saxi_wvalid, // AXI PS Slave GP0 WVALID, input
118  input saxi_wready, // AXI PS Slave GP0 WREADY, output
119  output [ 5:0] saxi_wid, // AXI PS Slave GP0 WID[5:0], input
120  output saxi_wlast, // AXI PS Slave GP0 WLAST, input
121  output [ 3:0] saxi_wstrb, // AXI PS Slave GP0 WSTRB[3:0], input
122  // write response
123  input saxi_bvalid, // AXI PS Slave GP0 BVALID, output
124  output saxi_bready, // AXI PS Slave GP0 BREADY, input
125  input [ 5:0] saxi_bid, // AXI PS Slave GP0 BID[5:0], output //TODO: Update range !!! // @SuppressThisWarning VEditor unused
126  input [ 1:0] saxi_bresp // AXI PS Slave GP0 BRESP[1:0], output // @SuppressThisWarning VEditor unused
127  `ifdef DEBUG_RING
128  ,output debug_do, // output to the debug ring
129  input debug_sl, // 0 - idle, (1,0) - shift, (1,1) - load
130  input debug_di // input from the debug ring
131 `endif
132 );
133 /*
134 `ifdef DEBUG_RING
135  localparam DEBUG_RING_LENGTH = 1; // for now - just connect the histogram(s) module(s)
136  wire [DEBUG_RING_LENGTH:0] debug_ring; // TODO: adjust number of bits
137  assign debug_do = debug_ring[0];
138  assign debug_ring[DEBUG_RING_LENGTH] = debug_di;
139 `endif
140 */
141  localparam ATTRIB_WIDTH = NUM_FRAME_BITS + 4 +2;
144  reg [3:0] awcache_mode;
147  wire we_mode;
148  wire we_addr;
149  wire [31:0] cmd_data;
150  wire [3:0] cmd_wa;
151  reg [19:0] hist_start_page[0:15]; // start page (4KB) of the per-sensor histogram system memory
152 
153  reg [2:0] burst;
154  wire [3:0] pri_rq;
155  reg [2:0] enc_rq;
156  wire busy_w;
157  reg busy_r;
158  reg [1:0] mux_sel;
159  wire start_w;
160  reg started;
161  reg [4*ATTRIB_WIDTH -1:0] attrib; // to hold frame number, sensor number and burst (color) for the histograms in the buffer
162  wire page_sent_mclk; // page sent over saxi - pulse in mclk domain
163  reg [1:0] page_wr; // page number being written
164  reg [7:0] page_wa; // 32-bit word address in page being written
165  reg [2:0] pages_in_buf_wr; // pages in buffer (as seen from write side), 0..4
167  wire dav;
168  reg dav_r;
170  reg grant;
171 
172  wire [31:0] din;
173  reg [31:0] din_r;
174  wire rq_in;
175  wire [1:0] sub_chn_w;
176  reg [1:0] sub_chn_r;
177  wire [NUM_FRAME_BITS-1:0] frame_w; // frame number for which the histogram is provided
178  reg [NUM_FRAME_BITS-1:0] frame_r; //
179  reg wr_attr; // in the beginning of the burst - write attributes to FIFO
180  wire [3:0] chn_sel;
181  reg [3:0] chn_grant;
182 
183 
184 
185  // aclk domain
186  wire page_sent_aclk; // page sent over saxi
188  reg en_aclk;
192  reg [2:0] pages_in_buf_rd; // pages in buffer (as seen from read side), 0..4
193  reg [1:0] page_rd; // page number being read
194  reg [7:0] page_ra; // 32-bit word address in page being read
196 
197  reg [3:0] block_run; // TODO: adjust width
199  reg [3:0] block_start_r;
200  wire block_end;
201  reg [NUM_FRAME_BITS + 4 +2 -1:0] attrib_r;
202  wire [3:0] attrib_chn;
203  wire [NUM_FRAME_BITS-1:0] attrib_frame;
204  wire [1:0] attrib_color;
205  reg [19:0] hist_start_page_r;
206  reg [31:10] hist_start_addr; // higher bits of the system memory address of the histogram (1024 bytes) start
207  reg [31: 6] start_addr_r; // higher bits of the system memory address of the saxi burst start address
208 
211  wire [31:0] inter_buf_data; // data between bram buffer and a small FIFO
212  reg [3:0] wburst_cntr; // count words in output data burst (using max==16)
213  reg [4:0] num_bursts_in_buf; // number of 16-word bursts written no buffer but not yet sent to SAXI
214  reg [4:0] num_bursts_pending; // number of 16-word bursts written no buffer but not yet confirmed from SAXI
217  reg [2:0] buf_re; // {fifo_we, buf_regen, buf_re}
218  wire buf_re_w;
219  wire fifo_re;
221  reg page_read_run; // reading buffer page until page_ra reads 'hff
222 
223 // reg [9:0] buf_raddr; // nuffer read address {page[1:0], addr [7:0]}
224 
225 `ifdef DEBUG_RING
226  reg [7:0] extra_wa;
227  reg [7:0] extra_ra;
228  reg [15:0] num_addr_saxi;
229  reg [15:0] num_data_saxi;
230  always @ (posedge mclk) begin
231 
232  if (!en) extra_wa <= 0;
233  else if (burst_done_w) extra_wa <= extra_wa + 1;
234 
235 
236  end
237  always @ (posedge aclk) begin
238 
239  if (!en_aclk) extra_ra <= 0;
240  else if (page_sent_aclk) extra_ra <= extra_ra + 1;
241 
242  if (!nreset_aclk) num_addr_saxi <= 0;
244 
245  if (!nreset_aclk) num_data_saxi <= 0;
247  end
248 
250  .SHIFT_WIDTH (160),
251  .READ_WIDTH (160),
252  .WRITE_WIDTH (32),
253  .DEBUG_CMD_LATENCY (DEBUG_CMD_LATENCY)
254  ) debug_slave_i (
255  .mclk (mclk), // input
256  .mrst (mrst), // input
257  .debug_di (debug_di), // input
258  .debug_sl (debug_sl), // input
259  .debug_do (debug_do), // output
260  .rd_data ({
261  num_addr_saxi[15:0],
262  num_data_saxi[15:0],
263 
264  extra_wa[7:0],page_wa[7:0],
265  extra_ra[7:0],page_ra[7:0],
266 // 16'b0,
267 
268  3'b0,num_bursts_in_buf,
269  3'b0,num_bursts_pending,
270 
271  page_wr[1:0],page_rd[1:0],3'b0, saxi_wlast,
273 
275  saxi_awlock[1:0], saxi_awid[5:0],
276  saxi_awcache[3:0], 1'b0,saxi_awprot[2:0],
277  saxi_awlen[3:0], saxi_awburst[1:0], saxi_awsize[1:0],
278 
279  2'b0 ,hist_chn0[1:0],frame0[3:0],
280  chn_grant[3:0],
281  1'b0, busy_w, busy_r, started,
282  1'b0, burst[2:0], 1'b0,pages_in_buf_wr[2:0],
283  start_w, enc_rq[2:0], pri_rq[3:0]
284  }), // input[31:0]
285  .wr_data (), // output[31:0] - not used
286  .stb () // output - not used
287  );
288 
289 `endif
290 
294  hist_request0};
295  assign busy_w = |burst;
296  assign start_w = enc_rq[2] && !busy_r && !started;
297  assign chn_sel = {mux_sel[1] & mux_sel[0], mux_sel[1] & ~mux_sel[0], ~mux_sel[1] & mux_sel[0], ~mux_sel[1] & ~mux_sel[0]};
298  assign dav = mux_sel[1] ? (mux_sel[0] ? hist_dvalid3 : hist_dvalid2) : (mux_sel[0] ? hist_dvalid1 : hist_dvalid0);
299  assign din = mux_sel[1] ? (mux_sel[0] ? hist_data3 : hist_data2) : (mux_sel[0] ? hist_data1 : hist_data0);
301  assign sub_chn_w = mux_sel[1] ? (mux_sel[0] ? hist_chn3 : hist_chn2) : (mux_sel[0] ? hist_chn1 : hist_chn0);
302  assign frame_w = mux_sel[1] ? (mux_sel[0] ? frame3 : frame2) : (mux_sel[0] ? frame1 : frame0);
303  assign burst_done_w = dav_r && !dav && en;
304  assign hist_grant0 = chn_grant[0];
305  assign hist_grant1 = chn_grant[1];
306  assign hist_grant2 = chn_grant[2];
307  assign hist_grant3 = chn_grant[3];
308 
309  assign block_start_w = !(|block_run[2:0]) && !buf_empty && en_aclk ; // make it finish all started transactions
310 
311  assign attrib_chn = attrib_r[NUM_FRAME_BITS+2+:4];
312  assign attrib_frame = attrib_r[2+:NUM_FRAME_BITS];
313  assign attrib_color = attrib_r[1:0];
314 
316 
317  assign saxi_awaddr = {start_addr_r[31:6],6'b0};
318 
319  assign saxi_awvalid = (|start_addr_r[9:6]) || first_burst;
320 //{enc_rq[1:0], sub_chn_r, frame_r, burst[1:0]}
321 
322  // assign block_end= ???;
323  assign saxi_awid[5:0] = {attrib_chn,attrib_color};
324  // TODO: assign static values:
325  assign saxi_awlock= 2'h0; // AXI PS Slave GP0 AWLOCK[1:0], input
326  assign saxi_awcache= awcache_mode; // 4'h3; // AXI PS Slave GP0 AWCACHE[3:0], input
327  assign saxi_awprot= 3'h0; // AXI PS Slave GP0 AWPROT[2:0], input
328  assign saxi_awlen= 4'hf; // 16 words AXI PS Slave GP0 AWLEN[3:0], input
329  assign saxi_awsize= 2'h2; // 4 bytes; AXI PS Slave GP0 AWSIZE[1:0], input
330  assign saxi_awburst= 2'h1; // Increment address bursts AXI PS Slave GP0 AWBURST[1:0], input
331  assign saxi_awqos= 4'h0; // AXI PS Slave GP0 AWQOS[3:0], input
332 
333 // assign saxi_wvalid = en_aclk && fifo_nempty && (|num_bursts_in_buf);
334  assign saxi_wvalid = en_aclk && fifo_nempty; // && (|num_bursts_in_buf); - not needed, buffer read will stop at address 'hff
335 
336  assign saxi_bready = 1'b1; // always ready
337  assign saxi_wlast = &wburst_cntr;
338  assign saxi_wid[5:0] = {attrib_chn,attrib_color}; // TODO: Verify they match FIFO output (otherwise save them in FIFO too) block_start waits for FIFO?
339  assign saxi_wstrb = 4'hf; // All bytes
340 
341 
342  // TODO: Maybe reduce pause between 16-burst pages? Allow some overlap?
343  assign buf_re_w = en_aclk && (|pages_in_buf_rd) && !fifo_half_full && !(&page_ra) && page_read_run; // will stay off until next page
344  assign fifo_re= saxi_wvalid && saxi_wready;
345  // currently waiting for SAXI to get confirmnation of all data in the current page before proceeding to the next
346  //
347 // assign confirm_write
349 // assign block_end = !(|block_start_r) && !(|num_bursts_pending);
350  assign page_sent_aclk = block_run[1] && !block_run[0];
351 
352  // command interface
353  always @(posedge mclk) begin
354  if (mrst) mode <= 0;
355  else if (we_mode) mode <= cmd_data[HIST_SAXI_MODE_WIDTH-1:0];
356  end
357  always @(posedge mclk) begin
358  if (we_addr) hist_start_page[cmd_wa] <= cmd_data[19:0];
359 // en_aclk <= en;
360  end
361 
362  // mclk (write) port of the buffer
363  // once started, will read full histogram from the same sensor
364 
365  // Buffer write logic
366  always @(posedge mclk) begin
367  enc_rq <= {|pri_rq, pri_rq[3] | pri_rq[2], pri_rq[3] | pri_rq[1]};
368  busy_r <= busy_w;
369  if (!en || busy_r) started <= 0;
370  else if (enc_rq[2]) started <= 1;
371 
372  if (start_w) mux_sel <= enc_rq[1:0];
373 
374  if (!en) dav_r <= 0;
375  else dav_r <= dav;
376  din_r <= din;
377 
379  frame_r <= frame_w;
380  if (!en) burst <= 0;
381  else if (start_w) burst <= 4;
382  else if (burst_done_w) burst <= burst + 1;
383 
384  if (!en) page_wr <= 0;
385  else if (burst_done_w) page_wr <= page_wr + 1;
386 
387  if (!en) pages_in_buf_wr <= 0;
390 
391 // grant <= en && rq_in && !buf_full && (!started || busy_r); // delay grant until chn_sel is set (first cycle of started)
392  grant <= en && rq_in && !buf_full && (grant || busy_r); // delay grant until chn_sel is set (first cycle of started)
393 
394 
395  if (!en) chn_grant <= 0;
396  else chn_grant <= {4{grant}} & chn_sel;
397 
398  wr_attr <= en && !dav_r && dav;
399 
401 
402  if (!dav_r) page_wa <= 0;
403  else page_wa <= page_wa + 1;
404  end
405 
406  // Buffer read, SAXI send logic
407  always @(posedge aclk) begin
408  preen_aclk <= en;
409  en_aclk <= preen_aclk && en;
410 
413 
414  if (!en_aclk) page_rd <= 0;
415  else if (page_sent_aclk) page_rd <= page_rd + 1;
416 
417  if (!en_aclk || block_start_r[0]) page_ra <= 0;
418  else if (buf_re[0]) page_ra <= page_ra + 1;
419 
420  if (!en_aclk) page_read_run <= 0;
421  else page_read_run <= block_start_r[1] || (page_read_run && !(&page_ra)); // until page_ra is 8'hff
422 
423  if (!en_aclk) pages_in_buf_rd <= 0;
426 
427  if (!nreset_aclk) block_run <= 0;
428  else block_run <= {block_run[2:0],block_start_w | (block_run[0] & ~ block_end)};
429 
430  if (!nreset_aclk) block_start_r <= 0;
431 // else block_start_r <= {block_run[2:0], block_start_w};
432  else block_start_r <= {block_start_r[2:0], block_start_w};
433 
435 
438  if (block_start_r[2]) hist_start_addr[11:10] <= attrib_color;
439 
440  if (arst || block_start_r[3]) start_addr_r[31:6] <= {hist_start_addr[31:10], 4'b0};
441  else if (saxi_start_burst_w) start_addr_r[31:6] <= start_addr_r[31:6] + 1;
442 
443  if (!nreset_aclk) first_burst <= 0;
444  else if (block_start_r[3]) first_burst <= 1; // block_start_r[3] - same as start_addr_r set
445  else if (saxi_start_burst_w) first_burst <= 0;
446 
449 
450 
451  // wdata channel
453  buf_re <= {buf_re[1:0],buf_re_w};
454 
455  if (!nreset_aclk) wburst_cntr <= 0;
456  else if (fifo_re) wburst_cntr <= wburst_cntr +1;
457 
458  if (block_start_r[0]) num_bursts_in_buf <= 5'h10; // change [2]?
460 
461  if (block_start_r[0]) num_bursts_pending <= 5'h10; // change [2]?
463 
464 
465  end
466 
467 
468  pulse_cross_clock pulse_cross_clock_page_sent_i (
469  .rst (arst), // input
470  .src_clk (aclk), // input
471  .dst_clk (mclk), // input
472  .in_pulse (page_sent_aclk), // input
473  .out_pulse (page_sent_mclk), // output
474  .busy() // output
475  );
476  pulse_cross_clock pulse_cross_clock_page_written_aclk_i (
477  .rst (mrst), // input
478  .src_clk (mclk), // input
479  .dst_clk (aclk), // input
480  .in_pulse (burst_done_w), // input
481  .out_pulse (page_written_aclk), // output
482  .busy() // output
483  );
484 //burst_done_w
486  .ADDR (HIST_SAXI_ADDR),
487  .ADDR_MASK (HIST_SAXI_ADDR_MASK),
488  .NUM_CYCLES (6),
489  .ADDR_WIDTH (4),
490  .DATA_WIDTH (32),
491  .ADDR1 (HIST_SAXI_MODE_ADDR),
492  .ADDR_MASK1 (HIST_SAXI_MODE_ADDR_MASK),
493  .ADDR2 (0),
494  .ADDR_MASK2 (0)
495  ) cmd_deser_histogram_saxi_i (
496  .rst (1'b0), // input
497  .clk (mclk), // input
498  .srst (mrst), // input
499  .ad (cmd_ad), // input[7:0]
500  .stb (cmd_stb), // input
501  .addr (cmd_wa), // output[3:0]
502  .data (cmd_data), // output[31:0]
503  .we ({we_mode,we_addr}) // output
504  );
505 
507  .REGISTERS(1),
508  .LOG2WIDTH_WR(5),
509  .LOG2WIDTH_RD(5),
510  .DUMMY(0)
511  ) ram_var_w_var_r_i (
512  .rclk (aclk), // input
513  .raddr ({page_rd[1:0],page_ra[7:0]}), // input[9:0]
514  .ren (buf_re[0]), // input
515  .regen (buf_re[1]), // input
516  .data_out (inter_buf_data), // output[31:0]
517  .wclk (mclk), // input
518  .waddr ({page_wr[1:0], page_wa[7:0]}), // input[9:0]
519  .we (dav_r), // input
520  .web (8'hff), // input[7:0]
521  .data_in (din_r) // input[31:0]
522  );
523  // Small extra FIFO to tolerate ram_var_w_var_r latency
525  .DATA_WIDTH(32),
526  .DATA_DEPTH(4)
527  ) fifo_same_clock_i (
528  .rst (1'b0), // input
529  .clk (aclk), // input
530  .sync_rst (!en_aclk), // input
531  .we (buf_re[2]), // input
532  .re (fifo_re), // input
533  .data_in (inter_buf_data), // input[31:0]
534  .data_out (saxi_wdata), // output[31:0]
535  .nempty (fifo_nempty), // output
536  .half_full (fifo_half_full) // output reg
537  );
538 endmodule
539 
540 
[DATA_WIDTH-1:0] 10430data_in
465sub_chn_wwire[1:0]
369HIST_SAXI_ADDR_MASK'h7f0
[31:0] 388hist_data0
[ 3:0] 416saxi_awlen
[1 << LOG2WIDTH_WR-1:0] 11872data_in
[WRITE_WIDTH - 1 : 0] 10318wr_data
Definition: debug_slave.v:56
434modereg[HIST_SAXI_MODE_WIDTH-1:0]
[ 5:0] 428saxi_bid
441cmd_datawire[31:0]
[14-LOG2WIDTH_WR:0] 11869waddr
[NUM_FRAME_BITS-1:0] 389frame1
433ATTRIB_WIDTHNUM_FRAME_BITS + 4 +2
[1:0] 392hist_chn1
455page_wareg[7:0]
452attribreg[4*ATTRIB_WIDTH-1:0]
[NUM_FRAME_BITS-1:0] 383frame0
466sub_chn_rreg[1:0]
[0:15] 443hist_start_pagereg[19:0]
442cmd_wawire[3:0]
454page_wrreg[1:0]
492start_addr_rreg[31:6]
[ 3:0] 425saxi_wstrb
[31:0] 394hist_data1
484block_start_rreg[3:0]
495inter_buf_datawire[31:0]
[1:0] 404hist_chn3
[ADDR_MASK2!=0?2:ADDR_MASK1!=0?1:0:0] 9935we
Definition: cmd_deser.v:60
486attrib_rreg[NUM_FRAME_BITS+4+2-1:0]
497num_bursts_in_bufreg[4:0]
507extra_rareg[7:0]
436awcache_modereg[3:0]
468frame_rreg[NUM_FRAME_BITS-1:0]
[ 1:0] 418saxi_awburst
491hist_start_addrreg[31:10]
482block_runreg[3:0]
pulse_cross_clock_page_written_aclk_i pulse_cross_clock
490hist_start_page_rreg[19:0]
[ 2:0] 415saxi_awprot
478pages_in_buf_rdreg[2:0]
[READ_WIDTH - 1 : 0] 10317rd_data
Definition: debug_slave.v:55
[ 3:0] 419saxi_awqos
445pri_rqwire[3:0]
[31:0] 400hist_data2
[1 << LOG2WIDTH_RD-1:0] 11867data_out
[ 1:0] 429saxi_bresp
456pages_in_buf_wrreg[2:0]
462dinwire[31:0]
[DATA_WIDTH-1:0] 9934data
Definition: cmd_deser.v:59
376HIST_SAXI_MODE_ADDR_MASK'h7ff
487attrib_chnwire[3:0]
509num_data_saxireg[15:0]
508num_addr_saxireg[15:0]
[31:0] 420saxi_wdata
[14-LOG2WIDTH_RD:0] 11864raddr
[DATA_WIDTH-1:0] 10431data_out
fifo_same_clock_i fifo_same_clock
470chn_selwire[3:0]
[31:0] 406hist_data3
[ 3:0] 414saxi_awcache
[7:0] 9931ad
Definition: cmd_deser.v:56
489attrib_colorwire[1:0]
[ADDR_WIDTH-1:0] 9933addr
Definition: cmd_deser.v:58
479page_rdreg[1:0]
488attrib_framewire[NUM_FRAME_BITS-1:0]
463din_rreg[31:0]
[1:0] 386hist_chn0
498num_bursts_pendingreg[4:0]
debug_slave_i debug_slave
[31:0] 409saxi_awaddr
[NUM_FRAME_BITS-1:0] 395frame2
370HIST_SAXI_MODE_ADDR'h390
cmd_deser_histogram_saxi_i cmd_deser
[1:0] 398hist_chn2
467frame_wwire[NUM_FRAME_BITS-1:0]
[ 1:0] 417saxi_awsize
496wburst_cntrreg[3:0]
[1:0] 413saxi_awlock
471chn_grantreg[3:0]
[NUM_FRAME_BITS-1:0] 401frame3
[ 5:0] 423saxi_wid
ram_var_w_var_r_i ram_var_w_var_r
506extra_wareg[7:0]
368HIST_SAXI_ADDR'h380
449mux_selreg[1:0]
480page_rareg[7:0]