David George wrote:
Hi Randy.
In the block documentation regarding use of the "ten_GbE_v2" block,
there's no mention
of the requirement to clock data into the TX fifo on every other clock
cycle when running
much above 120MHz. I assume that this requirement, which was explained
in the block
documentation for the original "ten_GbE" block, applies to v2 as well.
Is this correct?
There are two ways you can prevent TX overflows with the ten_Gbe_v2
block. The first is rate matching which involved clocking in data at a
certain rate, for instance every other cycle, so that the data rate in
just less than 10Gbps. This is what is described in the old 10Ge doc.
A note on this; 10Ge is pretty efficient with large packet - so I
wouldn't worry about rate matching until 145-150 MHz (156.25 is
exactly 10Gbps). Though it is better to be safe than sorry.
The second way of preventing overflows, which allows 100% utilization,
involves using the flow control signals. Basically keep clocking in
data until the "tx almost full" flag goes high after which back-off
transmitting until the flag is cleared. When this flag goes high you
have 4 free slots in the TX FIFO (I think it is actually more, but
rather be safe). This means you have some time to back-off your tx
state machine and don't need to cause undue timing hazards.
Rate matching is sometimes the easiest, but won't get you maximum performance.
Cheers,
David George
Hi David,
An excellent and informative response. Thanks for the valuable information!
Randy