04-15-2019 05:46 AM - edited 04-15-2019 07:20 AM
Hello.
Perhaps you can help me as I have a few questions regarding the efficiency I can run the aurora 8b10b protocol. They might be silly questions - but better asking than not asking at all as it might help some others out there.
I have set up a duplex aurora protocol at 1.08 Gbps at 2 byte width framing mode (and scrambling enabled if that matters) GT ref clk is 135MHz hence the 1.08Gbps rate. I have checked user_clk - it's running at approx 50.6 MHz. Now, right off the bat assuming that IF txtready is 'ready' 100% of the time, that's only allowing 16bit*50.6 = 809Mbit/s. Now I understand there is an overhead of possibly up to 25%,
So my first question is, the user_clk take into consideration the overhead or not?
Secondly, I have created a driver that checks when tx_tready = '1' on falling edge of user_clk, it will set tready = '1' and set data on data lines such that aurora will clock the data on the rising edge of user_clk. The driver requires four clocks minimum to complete the frame (of 4 x 16-bits). On the last clock, tlast is set to '1'.
I have found that (in framing mode any way) that tlast is being toggled at approximately 8.43 MHz. That's six user clocks per data frame instead, meaning I'm only getting up to 64bit*8.43 = 539.7 MBit/s. As I require at least 800Mbit/s it is far from ideal. and that's only 54% efficiency.
So second question is : Are six user clocks per data typical for framing mode?
Last question (maybe a silly one) : If I use streaming mode should I expect to require fewer user clocks per data chunk? (I'm going to try this anway)
Edit: I've now tried streaming using the first two MSbits as frame identifiers, now receiving 64-bit 'frames' at 13.5 MHz or 864 MBit, which is a bit better (albeit losing two bits each byte) - but still less efficient than I'd expect! I'm testing with 4 byte data width now...
Thanks!
04-26-2019 02:05 AM
hi @paulmtcuk ,
04-26-2019 02:05 AM
hi @paulmtcuk ,