x393  1.0
FPGAcodeforElphelNC393camera
stuffer393.v
Go to the documentation of this file.
1 
40 
42 // 08.27.2005 - modified "rdy" - moved register to make it faster.
43 // 01.22.2004 - fixed bug if flush comes with !rdy (required mod of huffman.v to extend "flush" until ready)
44 // 02.05.2004 - modified data length output. It is 24 it ow, in bytes and is output as last 4 bytes in the
45 // data block that is 32-byte DMA page aligned
46 
47 // running on v8.2i - does not meet constraints with enabled global USE_SYNC_SET yes/auto because set input is slower. Trying to selectively disable it
48 
49 // s ynthesis attribute use_sync_set of stuffer is no;
50 // s ynthesis attribute use_sync_reset of stuffer is no;
51 // s ynthesis attribute use_clock_enable of stuffer is no;
52 // TODO:
53 // 1: Add FIFO buffer - with hclk on the read side
54 // 2: Get rid of imgptr - read addresses from the AFI module
55 // 3 Add multi-word status transmitter or just status transmit module for each compressor channel (29 bits are OK to read in multiple of 32-byte blocks
56 // Or make FIFO outside of the stuffer?
57 
58 module stuffer393 (
59 // input rst, // global reset
60  input mclk,
61  input mrst, // @posedge mclk, sync reset
62  input xrst, // @posedge xclk, sync reset
63  input last_block, // use it to copy timestamp from fifo
64 
65 
66 // time stamping - will copy time at the end of color_first (later than the first hact after vact in the current frame, but before the next one
67 // and before the data is needed for output
68  input ts_pre_stb, // @mclk - 1 cycle before receiving 8 bytes of timestamp data
69  input [7:0] ts_data, // timestamp data (s0,s1,s2,s3,us0,us1,us2,us3==0)
70  input color_first, // @fradv_clk only used for timestamp
71  input fradv_clk, // clock to synchronize color_first (leading edge to advance timestamp data for the output)
72 
73  input clk, // 2x pixel clock
74  input en_in, // enable, 0- reset (other clock domain, needs re-sync)
75  input flush, // flush output data (fill byte with 0, long word with 0
76  input abort, // @ any, extracts 0->1 and flushes
77  input stb, // input data strobe
78  input [3:0] dl, // [3:0] number of bits to send (0 - 16) ??
79  input [15:0] d, // [15:0] input data to shift (only lower bits are valid)
80 // input [31:0] sec, // [31:0] number of seconds
81 // input [19:0] usec, // [19:0] number of microseconds
82  output rdy, // enable huffman encoder to proceed. Used as CE for many huffman encoder registers
83  // outputs @ negedge clk
84  output reg [15:0] q, // [15:0] output data
85  output reg qv, // output data valid
86  output done, // reset by !en, goes high after some delay after flushing
87 /// output reg [23:0] imgptr, // [23:0]image pointer in 32-byte chunks
88  output reg flushing,
89  output reg running // from registering timestamp until done
90 `ifdef DEBUG_RING
91 , output reg [3:0] dbg_etrax_dma
92  ,output dbg_ts_rstb
93  ,output [7:0] dbg_ts_dout
94 
95 `endif
96 
97 `ifdef debug_stuffer
98 , output reg [3:0] etrax_dma_r // [3:0] just for testing
99 , output reg [3:0] test_cntr,
100  output reg [7:0] test_cntr1
101 
102 `endif
103 );
104 
105 `ifdef DEBUG_RING
106  assign dbg_ts_rstb = ts_rstb;
107  assign dbg_ts_dout = ts_dout;
108 `endif
110 //etrax_dma[3:0]
111 `ifdef debug_stuffer
112  reg en_d;
113 `endif
114  reg en; // re-clock en_in to match this clock
115  reg [2:0] abort_r;
117 
118 
119 
120  reg [23:1] stage1; // stage 1 register (after right-shifting input data by 0..7 - actually left by 7..0)
121  wire [2:0] shift1; // shift amount for stage 1
122  reg [4:0] stage1_bits; // number of topmost invalid bits in stage1 register - 2 MSBs, use lower 3 stage2_bits
123  reg [4:0] stage1_length; // number of bits (1..16) in stage 1 register
125  wire flush_end;
127  wire [7:0] byteMask;
128  wire [31:1] longMask;
129  wire [31:1] dflt_stage2;
130  wire [ 2:0] sel;
131  wire [ 1:0] st2m;
132  wire [31:1] st2_d;
133  reg [31:1] stage2;
134  reg [ 4:0] stage2_bits;
135  wire send8h;
136  wire send8l;
137  wire send8;
138  reg flush_end_delayed; // update: fixed delay some delay after flush_end to ensure combining with output FIFO empty
139  wire pre_flush_end_delayed; // some delay after flush_end to ensure combining with output FIFO empty
140  reg [23:0] size_count; //(now will be byte count)
141 
142 // to make it faster - split in parts
144  reg [ 2:0] size_out;
145  reg size_out_over;// only needed with extra 32 bytes of zeroes added.
146  reg busy_eob; // flushing and sending length
147  reg trailer; // sending out data length and 32 bytes for ETRAX
148  reg was_trailer; // sending out data length and 32 bytes for ETRAX
149  reg last_block_d; // last_block delayed by one clock
150  reg [ 3:0] etrax_dma; // count words to make total size multiple of 32 bytes.
151  // Last 4 bytes of data will have actual length in bytes
152  // There will always be at least 4 more bytes (0-es) before length - needed for software
153  reg will_flush; // next dv will be flushing byte/word
154  wire flush_now;
155  wire start_sizeout; //delay by 2 cycles
157  reg send8h_r;
158  reg send8l_r;
159 
160  wire pre_stage2_bits_3; // what will be registered to stage2_bits[3];
161  wire [4:3] willbe_stage1_bits;
162  wire [3:0] sum_lengths;
163  reg [1:0] st2m_r;
164 
165 // reg [2:0] stb_time;
166  reg [31:0] sec_r;
167  reg [19:0] usec_r;
168  reg time_out;
169  reg time_size_out;
170  wire start_time_out;
171 
172 // stb_time[2] - single-cycle pulse after color_first goes low
173  reg [19:0] imgsz32; // current image size in multiples of 32-bytes
175  // re-clock enable to this clock
176 
177  wire ts_rstb; // one cycle before getting timestamp data from FIFO
178  wire [7:0] ts_dout; // timestamp data, byte at a time
179 // reg [7:0] ts_cycles; // 1-hot we for the portions of the 'old" timestamp registers
180  reg [6:0] ts_cycles; // 1-hot we for the portions of the 'old" timestamp registers
181 
182  reg color_first_r; // registered with the same clock as color_first to extract leading edge
183  wire stb_start; // re-clocked color_first
184 
185 
186 // assign ts_rstb = trailer && !was_trailer; // enough time to have timestamp data
187  assign ts_rstb = last_block && !last_block_d; // enough time to have timestamp data
188  always @ (negedge clk) begin
190  ts_cycles <= {ts_cycles[5:0],ts_rstb};
191  if (ts_cycles[0]) sec_r[ 7: 0] <= ts_dout;
192  else if (start_sizeout) sec_r[ 7: 0] <= size_count[ 7:0];
193  else if (time_size_out) sec_r[ 7: 0] <= sec_r[23:16];
194 
195  if (ts_cycles[1]) sec_r[15: 8] <= ts_dout;
196  else if (start_sizeout) sec_r[15: 8] <= size_count[15:8];
197  else if (time_size_out) sec_r[15: 8] <= sec_r[31:24];
198 
199  if (ts_cycles[2]) sec_r[23:16] <= ts_dout;
200  else if (start_sizeout) sec_r[23:16] <= size_count[23:16];
201  else if (time_size_out) sec_r[23:16] <= usec_r[ 7: 0];
202 
203  if (ts_cycles[3]) sec_r[31:24] <= ts_dout;
204  else if (start_sizeout) sec_r[31:24] <= 8'hff;
205  else if (time_size_out) sec_r[31:24] <= usec_r[15: 8];
206 
207  if (ts_cycles[4]) usec_r[ 7: 0] <= ts_dout;
208  else if (time_out) usec_r[ 7: 0] <= {4'h0, usec_r[19:16]};
209 
210  if (ts_cycles[5]) usec_r[15: 8] <= ts_dout;
211  else if (time_out) usec_r[15: 8] <= 8'h0;
212 
213  if (ts_cycles[6]) usec_r[19:16] <= ts_dout[3:0];
214  else if (time_out) usec_r[19:16] <= 4'h0;
215 
216 /*
217  stb_time[2:0] <= {stb_time[1] & ~stb_time[0], stb_time[0],color_first};
218  if (stb_time[2]) sec_r[31:0] <= sec[31:0];
219  else if (start_sizeout) sec_r[31:0] <= {8'hff, size_count[23:0]};
220  else if (time_size_out) sec_r[31:0] <= {usec_r[15:0],sec_r[31:16]};
221  if (stb_time[2]) usec_r[19:0] <= usec[19:0];
222  else if (time_out) usec_r[19:0] <= {16'h0,usec_r[19:16]};
223 */
224  end
225 
226  always @ (negedge clk) begin
227  en <= en_in;
228  // re-clock abort, extract leading edge
229  abort_r <= {abort_r[0] & ~abort_r[1], abort_r[0], abort};
230  if (!en) force_flush <= 0;
231  else if (abort_r) force_flush <= 1;
232  else if (flush_end) force_flush <= 0;
233 
234  if (!en) running <= 0;
235 // else if (stb_time[2]) running <= 1;
236  else if (stb_start) running <= 1;
237  else if (flush_end) running <= 0;
238 
239  end
240 
241  always @ (negedge clk) begin
242  flushing <= en && !flush_end && (((flush || force_flush) && rdy) || flushing);
243  end
244 
245  wire [4:0] pre_stage1_bits;
246  assign pre_stage1_bits[4:0]={2'b00,stage1_bits[2:0]} + {(dl[3:0]==4'b0),dl[3:0]};
247 
248  always @ (negedge clk) begin
249  if (!en || flush_end) stage1_bits[4:0] <= 5'b0;
250  else if (stb && rdy) stage1_bits <= {(2'b10-pre_stage1_bits[4:3]),pre_stage1_bits[2:0]};
251  end
252 
253  assign shift1[2:0]= stage1_bits[2:0] + dl[2:0];
254  always @ (negedge clk) if (stb && rdy) begin
255  case (shift1[2:0])
256  0: stage1[23:1] <= { d[15:0],7'b0};
257  1: stage1[23:1] <= {1'b0,d[15:0],6'b0};
258  2: stage1[23:1] <= {2'b0,d[15:0],5'b0};
259  3: stage1[23:1] <= {3'b0,d[15:0],4'b0};
260  4: stage1[23:1] <= {4'b0,d[15:0],3'b0};
261  5: stage1[23:1] <= {5'b0,d[15:0],2'b0};
262  6: stage1[23:1] <= {6'b0,d[15:0],1'b0};
263  7: stage1[23:1] <= {7'b0,d[15:0] };
264  endcase
265  stage1_length[4:0] <= {(dl[3:0]==4'b0),dl[3:0]};
266  end
267 
268 
269 //*****************************
270  always @ (negedge clk) begin
271  if (!en) stage2_bits <= 5'b0;
272  else if (send8) stage2_bits[4:0] <= stage2_bits[4:0] - 8;
273  else if (flushing && !stage1_full && !stage2_bits[4] && (stage2_bits[3:0]!=4'b0)) stage2_bits[4:0]<=5'h10; // actual flushing to word size
274  else stage2_bits[4:0] <= (rdy && stage1_full)? {1'b0,stage2_bits[3:0]}+stage1_length[4:0]:{1'b0,stage2_bits[3:0]};
275  end
276 
277  assign sum_lengths=stage2_bits[3:0]+stage1_length[3:0];
278  assign pre_stage2_bits_3= en &&
279  (send8? (~stage2_bits[3]): (
280  !(flushing && !stage1_full && !stage2_bits[4] && (stage2_bits[3:0]!=4'b0)) && // not flushing
282  ));
283  assign willbe_stage1_bits[4:3]={2{en && !flush_end}} & ((stb && rdy)?(2'b10-pre_stage1_bits[4:3]):stage1_bits[4:3]);
284 
285 
286 // accelerating rdy calculation - making it a register
287  wire pre_busy_eob=en && !flush_end_delayed && (busy_eob || (flush && rdy));
288  wire [4:3] pre_stage2_bits_4_interm1=stage2_bits[4:3]-2'h1;
289  wire [4:0] pre_stage2_bits_4_interm2={1'b0,stage2_bits[3:0]}+stage1_length[4:0];
290  wire pre_stage2_bits_4=en && (send8?
292  ((flushing && !stage1_full && !stage2_bits[4] && (stage2_bits[3:0]!=4'b0))?
293  (1'b1):
294  (((rdy && stage1_full))?
296  (1'b0)
297  )
298  )
299  );
300  wire pre_send8h_r= (( send8h_r && stage2_bits[4])?
301  (&stage2[23:16]):
302  ((!send8l_r || !stage2_bits[4])?
303  (&((longMask[31:24] & st2_d[31:24]) | (~longMask[31:24] & dflt_stage2[31:24]))):
304  (send8h_r)
305  )
306  );
307 
308  wire pre_send8l_r= ((( send8h_r || send8l_r) && stage2_bits[4] )?
309  (&stage2[15:8]):
310  (&((longMask[23:16] & st2_d[23:16]) | (~longMask[23:16] & dflt_stage2[23:16])))
311  );
312 
313 //Trying to delay rdy to make more room before it
314  reg rdy_rega;
315  reg rdy_regb;
316  reg rdy_regc;
317  reg rdy_regd;
318 // s ynthesis attribute use_sync_set of {module_name|signal_name|instance_name} [is] no;
319 
320  always @ (negedge clk) begin
326 //**********************************
329  end
330  assign rdy = (rdy_rega || (rdy_regb && rdy_regc)) && rdy_regd;
331 
332  assign send8h= send8h_r && stage2_bits[4];
333  assign send8l= send8l_r && stage2_bits[4];
334  assign send8=stage2_bits[4] && (send8h_r || send8l_r);
335 
336  always @ (negedge clk) begin
337  if (!en) stage1_full <= 1'b0;
338 /* TODO: MAke sure it is OK !! 05/12/2010 **/
339  else if (flushing) stage1_full <= 1'b0; //force flush does not turn off stb, in normal operation flushing is after last stb
340  else if (rdy) stage1_full <=stb; //force flush does not turn off stb, in normal operation flushing is after last stb
341 
342  end
343  assign sel[2:0]=stage2_bits[2:0];
344  assign byteMask[7:0]= {!sel[2] && !sel[1] && !sel[0],
345  !sel[2] && !sel[1],
346  !sel[2] && (!sel[1] || !sel[0]),
347  !sel[2],
348  !sel[2] || (!sel[1] && !sel[0]),
349  !sel[2] || !sel[1],
350  !sel[2] || !sel[1] || !sel[0],
351  1'b1
352  };
353 
354 //TODO: Try to move stage1_full up here, this is the time-limiting path 05.26.2010
355  assign longMask[31:1]={{8{(flushing || stage1_full) && !stage2_bits[3]}} & byteMask[7:0],
356  {8{flushing || stage1_full}} & ({8{!stage2_bits[3]}} | byteMask[7:0]),
357  {8{stage1_full}},
358  {7{stage1_full}}};
359 
360  always @ (negedge clk) st2m_r[1:0]<=willbe_stage1_bits[4:3]-{1'b0,pre_stage2_bits_3};
361 
362  assign st2m[1:0]=st2m_r[1:0];
363  assign st2_d[31:1]= {{8{!flushing || stage1_full}} & (st2m[1]?{stage1[7:1],1'b0}:(st2m[0]? stage1[15:8]: stage1[23:16])),
364  {8{!flushing || stage1_full}} & (st2m[1]? stage1[23:16]: (st2m[0]?{stage1[7:1],1'b0}:stage1[15: 8])),
365  st2m[1]? stage1[15: 8]: {stage1[7:1],1'b0},
366  {stage1[7:1]}};
367  assign dflt_stage2=stage2_bits[4]?{stage2[15:1],16'b0}:{stage2[31:1]};
368 
369 
370 always @ (negedge clk) begin
371  if (send8h) stage2[31:24] <= stage2[23:16];
372  else if (send8l) stage2[31:24] <= 8'h00;
373  else stage2[31:24] <= (longMask[31:24] & st2_d[31:24]) | (~longMask[31:24] & dflt_stage2[31:24]);
374  if (send8) stage2[23:16] <= stage2[15:8];
375  else stage2[23:16] <= (longMask[23:16] & st2_d[23:16]) | (~longMask[23:16] & dflt_stage2[23:16]);
376 
377  if (send8) stage2[15: 8] <= {stage2[7:1],1'b0};
378  else stage2[15: 8] <= (longMask[15: 8] & st2_d[15: 8]) | (~longMask[15: 8] & dflt_stage2[15: 8]);
379 
380  if (send8) stage2[7: 1] <= 7'b0;
381  else stage2[7: 1] <= (longMask[7: 1] & st2_d[7: 1]) | (~longMask[7: 1] & dflt_stage2[7: 1]);
382 end
384 // output stage
385  assign flush_end= !stage2_bits[4] && flushing && !stage1_full && (stage2_bits[3:0]==4'b0);
386  assign flush_now= en && (!send8) && (flushing && !stage1_full && !stage2_bits[4]) && !will_flush;
387 `ifdef debug_stuffer
388  reg [3:0] tst_done_dly;
389 `endif
390 
391  always @ (negedge clk) begin
392  //reset_data_counters; // reset data transfer counters (only when DMA and compressor are disabled)
393 // if (reset_data_counters ) etrax_dma[3:0] <= 0; // not needed to be reset after frame, and that was wrong (to early)
394  if (!en ) etrax_dma[3:0] <= 0; // Now en here waits for flashing to end, so it should not be too early
395  else if (qv) etrax_dma[3:0] <= etrax_dma[3:0] + 1;
396 
397 // just for testing
398 `ifdef DEBUG_RING
399  dbg_etrax_dma <= etrax_dma[3:0];
400 `endif
401 
402 `ifdef debug_stuffer
403  en_d<= en;
404  if (en) etrax_dma_r[3:0] <= etrax_dma[3:0];
405  if (done) test_cntr1[7:0] <= 0;
406  else if (qv) test_cntr1[7:0] <= test_cntr1[7:0] +1 ; // normally should be one (done 1 ahead of end of qv)
407  tst_done_dly[3:0] <= {tst_done_dly[2:0],done};
408  if (tst_done_dly[1]) test_cntr[3:0] <= 0;
409  else if (qv) test_cntr[3:0] <= test_cntr[3:0] +1 ;
410 `endif
411 
412 
414 
415  size_out[2:0]<={size_out[1:0],start_sizeout};
416  time_out <= en && (start_time_out || (time_out && !(etrax_dma[3:2]== 2'h3)));
417  time_size_out <= en && (start_time_out || (time_size_out && !(etrax_dma[3:1]== 3'h7)));
418 
421  will_flush <= en && (will_flush?(!qv):(flush_now && (stage2_bits[3:0]!=4'b0)));
422  if (flush_now) size_count[0] <= stage2_bits[3] ^ (|stage2_bits[2:0]); // odd number of bytes
423  if (!en || size_out[2]) size_count[15:1] <= 0;
424  else if (!trailer && !was_trailer && qv && (!will_flush || !size_count[0])) size_count[15:1] <= size_count[15:1]+1;
425  inc_size_count2316 <= (!trailer && !was_trailer && qv && (!will_flush || !size_count[0])) && (&size_count[15:1]);
426 //reset_data_counters instead of !en here?
427  if (!en || size_out[2]) size_count[23:16] <= 0;
428  else if (inc_size_count2316) size_count[23:16] <= size_count[23:16]+1;
429 
430  qv <= en && (stage2_bits[4] || trailer);
431 // to make it faster (if needed) use a single register as a source for q[15:0] in two following lines
432  if (time_size_out) q[15:0] <= {sec_r[7:0],sec_r[15:8]};
433  else q[15:0] <= {(stage2_bits[4]?stage2[31:24]:8'b0),
434  ((stage2_bits[4] && !send8h)? stage2[23:16]:8'b0)};
435  inc_imgsz32 <= (etrax_dma[3:0]== 4'h0) && qv;
436 //reset_data_counters instead of !en here?
437 // if (reset_data_counters || done) imgsz32[19:0] <= 0;
438  if (!en || done) imgsz32[19:0] <= 0; // now en is just for stuffer, waits for flushing to end
439  else if (inc_imgsz32) imgsz32[19:0]<=imgsz32[19:0]+1;
440 
441 /// if (reset_data_counters) imgptr[23:0] <= 0;
442 /// else if (done) imgptr[23:0] <= imgptr[23:0]+ imgsz32[19:0];
443 
444  flush_end_delayed <= en & pre_flush_end_delayed; // en just to prevent optimizing pre_flush_end_delayed+flush_end_delayed into a single SRL16
445  end
446 //start_sizeout
447  assign start_time_out= qv && trailer && (etrax_dma[3:0]== 4'h8) && !size_out_over;
448  assign start_sizeout= time_out && (etrax_dma[3:0]== 4'hc);
449 // SRL16_1 i_pre_flush_end_delayed (.D(size_out[1]),.Q(pre_flush_end_delayed), .A0(1'b0), .A1(1'b1), .A2(1'b1), .A3(1'b1), .CLK(clk)); // dly=3+1 // rather arbitrary?
450  dly_16 #(.WIDTH(1)) i_pre_flush_end_delayed(.clk(~clk),.rst(1'b0), .dly(4'd14), .din(size_out[1]), .dout(pre_flush_end_delayed)); // dly=14+1 // rather arbitrary?
451  assign done = flush_end_delayed;
452 
453  // extract strart of frame run from different clock, re-clock from the source
454  always @ (posedge fradv_clk) color_first_r <= color_first;
456 
457  reg rst_nclk;
458  always @ (negedge clk) rst_nclk <= xrst;
459  timestamp_fifo timestamp_fifo_i (
460 // .rst (rst), // input
461  .sclk (mclk), // input
462  .srst (mrst), // input
463  .pre_stb (ts_pre_stb), // input
464  .din (ts_data), // input[7:0]
465  // may use stb_start @ negedge clk
466  .aclk (~clk), //fradv_clk), // input
467  .arst (rst_nclk), //fradv_clk), // input
468 
469  .advance (stb_start), // color_first), // input
470  .rclk (~clk), // input
471  .rrst (rst_nclk), //fradv_clk), // input
472  .rstb (ts_rstb), // input
473  .dout (ts_dout) // output[7:0] reg
474  );
475 
476 endmodule
477 
3056was_trailerreg
Definition: stuffer393.v:142
10332clk
Definition: dly_16.v:44
3034stage1_lengthreg[4:0]
Definition: stuffer393.v:117
3075ts_rstbwire
Definition: stuffer393.v:171
3084pre_stage2_bits_4wire
Definition: stuffer393.v:284
3077ts_cyclesreg[6:0]
Definition: stuffer393.v:174
3035flush_endwire
Definition: stuffer393.v:119
3076ts_doutwire[7:0]
Definition: stuffer393.v:172
3059will_flushreg
Definition: stuffer393.v:147
3049pre_flush_end_delayedwire
Definition: stuffer393.v:133
3046send8lwire
Definition: stuffer393.v:130
3080pre_stage1_bitswire[4:0]
Definition: stuffer393.v:239
[3:0] 3017dl
Definition: stuffer393.v:78
3081pre_busy_eobwire
Definition: stuffer393.v:281
reg 3021qv
Definition: stuffer393.v:85
3079stb_startwire
Definition: stuffer393.v:177
[7:0] 3009ts_data
Definition: stuffer393.v:69
[7:0] 3027dbg_ts_dout
Definition: stuffer393.v:93
reg [3:0] 3025dbg_etrax_dma
Definition: stuffer393.v:91
3040selwire[2:0]
Definition: stuffer393.v:124
reg 3024running
Definition: stuffer393.v:89
3061start_sizeoutwire
Definition: stuffer393.v:149
3078color_first_rreg
Definition: stuffer393.v:176
3045send8hwire
Definition: stuffer393.v:129
3067st2m_rreg[1:0]
Definition: stuffer393.v:157
3047send8wire
Definition: stuffer393.v:131
3031stage1reg[23:1]
Definition: stuffer393.v:114
3054busy_eobreg
Definition: stuffer393.v:140
3069usec_rreg[19:0]
Definition: stuffer393.v:161
[WIDTH-1:0] 10336dout
Definition: dly_16.v:48
[15:0] 3018d
Definition: stuffer393.v:79
3085pre_send8h_rwire
Definition: stuffer393.v:294
3090rdy_regdreg
Definition: stuffer393.v:311
3083pre_stage2_bits_4_interm2wire[4:0]
Definition: stuffer393.v:283
3074inc_imgsz32reg
Definition: stuffer393.v:168
3072start_time_outwire
Definition: stuffer393.v:164
3066sum_lengthswire[3:0]
Definition: stuffer393.v:156
3064pre_stage2_bits_3wire
Definition: stuffer393.v:154
3029abort_rreg[2:0]
Definition: stuffer393.v:109
3036stage1_fullreg
Definition: stuffer393.v:120
3068sec_rreg[31:0]
Definition: stuffer393.v:160
3048flush_end_delayedreg
Definition: stuffer393.v:132
3088rdy_regbreg
Definition: stuffer393.v:309
3053size_out_overreg
Definition: stuffer393.v:139
3082pre_stage2_bits_4_interm1wire[4:3]
Definition: stuffer393.v:282
3063send8l_rreg
Definition: stuffer393.v:152
3039dflt_stage2wire[31:1]
Definition: stuffer393.v:123
[WIDTH-1:0] 10335din
Definition: dly_16.v:47
3050size_countreg[23:0]
Definition: stuffer393.v:134
3030force_flushreg
Definition: stuffer393.v:110
3055trailerreg
Definition: stuffer393.v:141
reg [15:0] 3020q
Definition: stuffer393.v:84
3044stage2_bitsreg[4:0]
Definition: stuffer393.v:128
3057last_block_dreg
Definition: stuffer393.v:143
3070time_outreg
Definition: stuffer393.v:162
3065willbe_stage1_bitswire[4:3]
Definition: stuffer393.v:155
3042st2_dwire[31:1]
Definition: stuffer393.v:126
3089rdy_regcreg
Definition: stuffer393.v:310
3062send8h_rreg
Definition: stuffer393.v:151
3051inc_size_count2316reg
Definition: stuffer393.v:137
reg 3023flushing
Definition: stuffer393.v:88
3038longMaskwire[31:1]
Definition: stuffer393.v:122
stb_start_i pulse_cross_clock
Definition: stuffer393.v:439
3043stage2reg[31:1]
Definition: stuffer393.v:127
3073imgsz32reg[19:0]
Definition: stuffer393.v:167
3086pre_send8l_rwire
Definition: stuffer393.v:302
reg [ 7:0] 9614dout
3052size_outreg[2:0]
Definition: stuffer393.v:138
3041st2mwire[1:0]
Definition: stuffer393.v:125
3033stage1_bitsreg[4:0]
Definition: stuffer393.v:116
3032shift1wire[2:0]
Definition: stuffer393.v:115
3058etrax_dmareg[3:0]
Definition: stuffer393.v:144
3091rst_nclkreg
Definition: stuffer393.v:441
3087rdy_regareg
Definition: stuffer393.v:308
3037byteMaskwire[7:0]
Definition: stuffer393.v:121
timestamp_fifo_i timestamp_fifo
Definition: stuffer393.v:443
10333rst
Definition: dly_16.v:45
i_pre_flush_end_delayed dly_16
Definition: stuffer393.v:434
3071time_size_outreg
Definition: stuffer393.v:163
3060flush_nowwire
Definition: stuffer393.v:148
[3:0] 10334dly
Definition: dly_16.v:46