what is meant by " data burst size "
New data is sent on each clock in a contiguous uninterrupted block. These bursts are interspersed with gaps of no new data on each clock.
does number of idle cycles between data burst matter ?
Yes, this will effectively change the rate at which data is written to the FIFO. e.g. 100 MHz input clock with data+idle, results in an effective write rate of 50 MHz, so if the reads are done continuously at 80 MHz you will underflow the FIFO eventually.
so if i have:
a fifo which clocks data in at 100mhz and clocks data out at 80mhz. On the input there is only 80 data in any order during each 100 clocks. In other words, a 100 input clock will carry only 80 data and the other twenty clocks carry no data (data is scattered in any order).
This case does not matter. You would never design to some arbitrary random write/read scheme. You design for worst case if you want the FIFO to be big enough to never overflow.
will have the same depth of:
a fifo which clocks data in at 100mhz and clocks data out at 80mhz. On the input there is only 80 data in any order during each 81 clocks. In other words, a 81 input clock will carry only 80 data and the other clock cycle does not carry data (data is scattered in any order).
?
Now this is almost worst case.
Using your 100 MHz write clock with 80 MHz read.
Given the following situation:
1. Reads are continuous on every clock cycle at 80 MHz
2. Writes are done in bursts with an aggregate rate equal to writing at 80 MHz continuously.
If we allow the burst transfers in the 100 clocks to have arbitrary alignment then the worst case alignment would be 160 writes at 100 MHz (over an interval of 200 100 MHz clock cycles). So the ordering of the idles and data for 200 100 MHz clock cycles would look like: 20i-80d-80d-20i (where i=idles, d=data).
This means that we could potentially write for 160 100 MHz clock cycles...i.e. write continuously for 1.6 us. During this time we read data at 80 MHz so we can read 128 (1.6 us /12.5 ns) words of data from the FIFO during those 160 100 MHz clock cycles. As we wrote 160 but only read 128 the FIFO has to be larger than 32 (160-128) deep. In actuality you will need at least a depth of 35+ to accommodate the clock domain crossings in the FIFO for the pointers, therefore in this case you would probably implement a 64 deep FIFO.
Hopefully you could follow along with this explanation.
Regards
- - - Updated - - -
If you have guaranteed idle cycles between bursts then the calculation will change somewhat as for every 5 100 MHz clock cycles of idle time you add will reduce the depth of the FIFO by 4 words.