Reply by John McCaskill●January 15, 20072007-01-15
Klaus Falser wrote:
> Hello,
> for a printing application I would like to receive data from a Unix
> workstation over Gigabit Ethernet (copper) at maximum speed.
> A first test showed us that today 2 workstations are able to interchange
> data over GB Ethernet with about 110 MB/s, nearly at the theoretical
> limits.
> The receiver should be implemented with an FPGA, put the data into DDR
> memory and process the data with the same FPGA.
>
> Looking at the Gigabit Reference Design from Xilinx I had the impression
> that it probably not so easy to go at the limits of the bandwith when
> the embedded PPC processor handles the protocol.
> A viable way seems eventually to implement some UDP acceleration, where
> UDP would also fit the data better, since the data to receive is always
> made up of packets (lines) ot the same length.
>
> Does anybody have some experience with receiving data at high data
> rates?
> Thank you very much for every hint.
>
> Best regards
> Klaus Falser
>
> R&D Electronics Department
> Company : Durst Phototechnik AG
> Vittorio Veneto Str. 59
> I-39042 Brixen
> Voice : +0472/810235
> : +0472/810111
> FAX : +0472/830980
> Email : kfalser@durst.it
We built a UDP off load engine for a custom data streaming protocol
using a PicoBlaze processor on a V4FX, and that worked great for us.
It makes a copy of the header as the packet is moved from the EMAC to a
fifo, and then has the PicoBlaze inspect the header. If it is packet
from the stream we want to offload from the PPC, the PicoBlaze sets up
the DMA engine to send it to a circular buffer. If it was anything
else, it is just passed on to the PPC and the Linux IP stack deals with
it.
This protocol has 1 KB of data and a small header wrapped in UDP, so we
are not using jumbo frames, and the PicoBlaze still has plenty of
processing power to decide what to do with one packet before the next
shows up. We are getting just a bit under 100MB/s. We do not use the
PicoBlaze to calculate any checksums. You can either ignore them, or
add some hardware to calculate them. The EMAC checks the Ethernet
checksum for you.
The PicoBlaze is an absolute gem. We have done many neat things with
it.
Regards,
John McCaskill
www.fastertechnology.com
Reply by Pablo●January 15, 20072007-01-15
Can anyone tell me some example to implement an ethernet comunication
between PC and FPGA?. I have a .NET app for transmit UDP packets and I
want the Spartan 3e to receive it but I don't know how can I do it?. I
have probed LWIP, XILNET but I have no idea.
I only want an easy example to receive and transmit.
Thanks
Reply by Sylvain Munaut●January 15, 20072007-01-15
Hi
> Does anybody have some experience with receiving data at high data
> rates?
> Thank you very much for every hint.
I have an application here that streams from a PC to a FX60 at 250Mbps.
We only use 250 because our application doesn't need more but streaming
tests showed we can go a lot higher (>800MBps but we read data from a
hdd so this could be the bottleneck).
We're using the Virtex4 embedded MAC and it's connected directly to a
hw state machine that handles the protocol on the fly and stores data
payload in a FIFO. Another state machine reads from that fifo to a DDR2
bank.
When the FIFO becomes almost full, we send "PAUSE" frames on the
ethernet link so the PC stops sending. Since PAUSE frames are handled
by the hardware of the network card, the data flow stops almost always
at the next packet (some time 1 packet later), but you should just
dimension your FIFO and it's afull threshold to handle that.
With this we are sure we didn't loose any packets and we don't need to
handle retransmission or whatever.
Sylvain
Reply by Klaus Falser●January 15, 20072007-01-15
In article <slrneqmfua.2a65.ben@saturn.home.ben.com>, ben@ben.com
says...
> On 2007-01-15, Klaus Falser <kfalser@IHATESPAMdurst.it> wrote:
> > Looking at the Gigabit Reference Design from Xilinx I had the impression
> > that it probably not so easy to go at the limits of the bandwith when
> > the embedded PPC processor handles the protocol.
>
> If you use UDP without checksums (they're optional in IPv4 for UDP) then
> the PPC overhead will be proportional to number of packets (not total data)
> so if you use a DMA MAC core and jumbo frames you might do fine with a
> standard network stack. Jumbo frames should be an option if you control
> the whole network. If you don't, don't expect to get anything like the
> theoretical maximum out of GigE!
>
>
The problem with jumbo frames may be the Ethernet switch. I'm not shure
if they are supported, but I could check it.
Thanks
Klaus
Reply by Ben Jackson●January 15, 20072007-01-15
On 2007-01-15, Klaus Falser <kfalser@IHATESPAMdurst.it> wrote:
> Looking at the Gigabit Reference Design from Xilinx I had the impression
> that it probably not so easy to go at the limits of the bandwith when
> the embedded PPC processor handles the protocol.
If you use UDP without checksums (they're optional in IPv4 for UDP) then
the PPC overhead will be proportional to number of packets (not total data)
so if you use a DMA MAC core and jumbo frames you might do fine with a
standard network stack. Jumbo frames should be an option if you control
the whole network. If you don't, don't expect to get anything like the
theoretical maximum out of GigE!
--
Ben Jackson AD7GD
<ben@ben.com>
http://www.ben.com/
Reply by Klaus Falser●January 15, 20072007-01-15
Hello,
for a printing application I would like to receive data from a Unix
workstation over Gigabit Ethernet (copper) at maximum speed.
A first test showed us that today 2 workstations are able to interchange
data over GB Ethernet with about 110 MB/s, nearly at the theoretical
limits.
The receiver should be implemented with an FPGA, put the data into DDR
memory and process the data with the same FPGA.
Looking at the Gigabit Reference Design from Xilinx I had the impression
that it probably not so easy to go at the limits of the bandwith when
the embedded PPC processor handles the protocol.
A viable way seems eventually to implement some UDP acceleration, where
UDP would also fit the data better, since the data to receive is always
made up of packets (lines) ot the same length.
Does anybody have some experience with receiving data at high data
rates?
Thank you very much for every hint.
Best regards
Klaus Falser
R&D Electronics Department
Company : Durst Phototechnik AG
Vittorio Veneto Str. 59
I-39042 Brixen
Voice : +0472/810235
: +0472/810111
FAX : +0472/830980
Email : kfalser@durst.it