FPGARelated.com
Forums

FPGA+ggiabit ethernet and protocols

Started by Unknown October 1, 2004
Hello
i need to implement gigabit ethernet in FPGA..
now all is almost done (MAC in FPGA , PHY), and need to implement a simple
protocol that will ensure proper delivery of all data from digital camera (1
picture = 128MB). I thought about IP/UDP and own protocols with handshake
and retransmition of lost packets, but maybe there exists something
simpler -  already used and implemented protocols - i just need to make
programmer's life easier at the other end of cable:)
Regards
Greg


Followup to:  <cjkl5p$ieu$1@news.onet.pl>
By author:    "greg" <xgrzes@poczta.onet.pl>
In newsgroup: comp.arch.fpga
> > Hello > i need to implement gigabit ethernet in FPGA.. > now all is almost done (MAC in FPGA , PHY), and need to implement a simple > protocol that will ensure proper delivery of all data from digital camera (1 > picture = 128MB). I thought about IP/UDP and own protocols with handshake > and retransmition of lost packets, but maybe there exists something > simpler - already used and implemented protocols - i just need to make > programmer's life easier at the other end of cable:) >
At that point you might as well use TCP... implementing TCP is not that hard if you don't care about super-high performance across very long distances. See for example uIP or lwIP for small TCP/IP stacks that can be run on a small microcontroller which can easily be synthesized in an FPGA. If you want to use UDP or raw Ethernet packets you probably want to do something like TFTP. -hpa
> > i need to implement gigabit ethernet in FPGA.. > > now all is almost done (MAC in FPGA , PHY), and need to implement a
simple
> > protocol that will ensure proper delivery of all data from digital
camera (1
> > picture = 128MB). I thought about IP/UDP and own protocols with
handshake
> > and retransmition of lost packets, but maybe there exists something > > simpler - already used and implemented protocols - i just need to make > > programmer's life easier at the other end of cable:) > > > > At that point you might as well use TCP... implementing TCP is not > that hard if you don't care about super-high performance across very > long distances.
The problem is, that i need to have transfer about 70MB/s I thought about TCP/IP and it really doesn't look so bad..The CRC calculation can be done in hardware on fly and the rest implemented using 8bit microcontroller,that i already have in design or NIOS.
> > See for example uIP or lwIP for small TCP/IP stacks that can be run on > a small microcontroller which can easily be synthesized in an FPGA. > > If you want to use UDP or raw Ethernet packets you probably want to do > something like TFTP. >
Thanks, i will have a look for it.
Followup to:  <cjos65$56p$1@news.onet.pl>
By author:    "greg" <xgrzes@poczta.onet.pl>
In newsgroup: comp.arch.fpga
> > > > At that point you might as well use TCP... implementing TCP is not > > that hard if you don't care about super-high performance across very > > long distances. > > The problem is, that i need to have transfer about 70MB/s > I thought about TCP/IP and it really doesn't look so bad..The CRC > calculation can be done in hardware on fly and the rest implemented using > 8bit microcontroller,that i already have in design or NIOS. >
If so, you really want to either: a) Just to full-blown TCP, using your microcontroller or NIOS (Altera has a fairly nice low-overhead TCP/IP library for NIOS, too.) b) Use a "windowed spew" protocol; effectively TCP without the congestion control. Just spew a bunch of sequenced-number packets out the wire, and expect to get an ACK back clearing all packets up to the packet specified. The big issue with ANY of these protocols is how much buffer memory do you devote to it: you want to have enough buffer memory that you can send at least ~2 roundtrips worth of data before you have to stall until your ACK gets back.
> > See for example uIP or lwIP for small TCP/IP stacks that can be run on > > a small microcontroller which can easily be synthesized in an FPGA. > > > > If you want to use UDP or raw Ethernet packets you probably want to do > > something like TFTP. > > > Thanks, i will have a look for it.
Using a ping/pong protocol like TFTP would be an absolute performance killer in your application. -hpa