What should I use for highspeed/low latency communication be

G

Gravis

Guest
I have a FPGA project and it needs to interface with my PC. The proble
I've run into is finding a fast form of communication with very lo
latency. I've come asking for advice and possible solution.

I need a link that can transfer 1KB 1200 times every second, not just 1.2M
a second because the input is dependent on the output. The latency issu
makes USB impossible and a normal serial port doesnt have the bandwidth.
My initial inclination was to use a IEEE 1394 connection but the interfac
driver ICs are both expensive and too small to solder. I've looked for a
HDL implementation of the driver but I cannot find one. Does anyone kno
of a way to interface with a PC that can be or has been implemented on
FPGA or has a low component count?



---------------------------------------
Posted through http://www.FPGARelated.com
 
On 11/30/2010 07:05 AM, Gravis wrote:
I have a FPGA project and it needs to interface with my PC. The problem
I've run into is finding a fast form of communication with very low
latency. I've come asking for advice and possible solution.

I need a link that can transfer 1KB 1200 times every second, not just 1.2MB
a second because the input is dependent on the output. The latency issue
makes USB impossible and a normal serial port doesnt have the bandwidth.
My initial inclination was to use a IEEE 1394 connection but the interface
driver ICs are both expensive and too small to solder. I've looked for an
HDL implementation of the driver but I cannot find one. Does anyone know
of a way to interface with a PC that can be or has been implemented on a
FPGA or has a low component count?
PCI -- see if your favored FPGA vendor has a PCI development board, plug
it into your computer, and go (or at least start thrashing with the PCI
interface).

SATA -- "But that's for hard drives!". Yes, but apparently at the
physical level it's also a good, fairly real-time way to move data fast.
Circuit Cellar magazine had an article on using it (and ATA) for just
this application.

Have you looked into USB in isochronous mode? I don't know if buffering
would get in your way or not, but it's a thought.

Or ditch the PC, and use a processor on the FPGA, or next to it, that
doesn't have the latency issues of a PC.

--

Tim Wescott
Wescott Design Services
http://www.wescottdesign.com

Do you need to implement control loops in software?
"Applied Control Theory for Embedded Systems" was written for you.
See details at http://www.wescottdesign.com/actfes/actfes.html
 
On 11/30/2010 07:05 AM, Gravis wrote:
I have a FPGA project and it needs to interface with my PC.  The problem
I've run into is finding a fast form of communication with very low
latency.  I've come asking for advice and possible solution.
Interesting question, I will jump on the bandwagon and ask the same
thing too. I'm interested in low latency between an FPGA and user
space RAM on a PC too.

On Nov 30, 5:17 pm, Tim Wescott <t...@seemywebsite.com> wrote:
PCI -- see if your favored FPGA vendor has a PCI development board, plug
it into your computer, and go (or at least start thrashing with the PCI
interface).

SATA -- "But that's for hard drives!".  Yes, but apparently at the
physical level it's also a good, fairly real-time way to move data fast.
  Circuit Cellar magazine had an article on using it (and ATA) for just
this application.
Tim, does using SATA not imply that PCI is also used? That is FPGA ->
SATA -> PCI. PCs have their SATA controllers on a chipset which makes
them available on the PCI bus. For example if I do 'lspci' on this one
I get:

00:1f.2 SATA controller: Intel Corporation 5 Series/3400 Series
Chipset 6 port SATA AHCI Controller (rev 06)

So SATA must include the latency of PCI plus its own? Is SATA easier
to work with than PCI on an FPGA?

There are some high end FPGA cards now that plug into CPU sockets, on
Intel QuickPath or Hypertransport. Would these be lower latency than
PCI? I'm interested in low latency like the OP, but I'm talking single
digit or sub-microsecond.

Does anyone know approximately what the latency of using PCI is, to
send an interrupt and have the 1KB of data the OP is using transferred
into RAM?

Rupert
 
On Dec 1, 4:57 pm, "rupertlssm...@googlemail.com"
<rupertlssm...@googlemail.com> wrote:
On 11/30/2010 07:05 AM, Gravis wrote:
I have a FPGA project and it needs to interface with my PC.  The problem
I've run into is finding a fast form of communication with very low
latency.  I've come asking for advice and possible solution.

Interesting question, I will jump on the bandwagon and ask the same
thing too. I'm interested in low latency between an FPGA and user
space RAM on a PC too.

On Nov 30, 5:17 pm, Tim Wescott <t...@seemywebsite.com> wrote:

PCI -- see if your favored FPGA vendor has a PCI development board, plug
it into your computer, and go (or at least start thrashing with the PCI
interface).

SATA -- "But that's for hard drives!".  Yes, but apparently at the
physical level it's also a good, fairly real-time way to move data fast..
  Circuit Cellar magazine had an article on using it (and ATA) for just
this application.

Tim, does using SATA not imply that PCI is also used? That is FPGA -
SATA -> PCI. PCs have their SATA controllers on a chipset which makes
them available on the PCI bus. For example if I do 'lspci' on this one
I get:

00:1f.2 SATA controller: Intel Corporation 5 Series/3400 Series
Chipset 6 port SATA AHCI Controller (rev 06)

So SATA must include the latency of PCI plus its own? Is SATA easier
to work with than PCI on an FPGA?

There are some high end FPGA cards now that plug into CPU sockets, on
Intel QuickPath or Hypertransport. Would these be lower latency than
PCI? I'm interested in low latency like the OP, but I'm talking single
digit or sub-microsecond.

Does anyone know approximately what the latency of using PCI is, to
send an interrupt and have the 1KB of data the OP is using transferred
into RAM?

Rupert
Hi all,

we offer SATA Device IP Core for FPGAs. The FPGA side is fully
integrated,
on-chip transceivers as SATA PHY. SoC side is very flexible, with
traditional
CPU interface and streaming interface options.

I am not sure what kind of latency and bandwidth you are looking for,
but SATA
is pretty reliable and offers 300 MB/sec for Gen 2 and 600 MB/s for
Gen 3.
Latency will depend on the host PC and it's architecture. Typically
PCs have
pretty fast internal SATA interfaces ...

Best Regards,
rudi
 
Does anyone know approximately what the latency of using PCI is, to
send an interrupt and have the 1KB of data the OP is using transferred
into RAM?

I'm a bit confused by this. Typically high bandwidth costs you a bit
of latency. I.E. if you need to get 1KB across an interface you live
with a relatively long setup time, after which the data moves very
quickly. If you want to read or write a single word there is little
setup (latency), and your access just completes.

Colin
 
On Nov 30, 7:05 am, "Gravis"
<fpgarelated@n_o_s_p_a_m.adaptivetime.com> wrote:
I have a FPGA project and it needs to interface with my PC.  The problem
I've run into is finding a fast form of communication with very low
latency.  I've come asking for advice and possible solution.

I need a link that can transfer 1KB 1200 times every second, not just 1.2MB
a second because the input is dependent on the output.  The latency issue
makes USB impossible and a normal serial port doesnt have the bandwidth.
My initial inclination was to use a IEEE 1394 connection but the interface
driver ICs are both expensive and too small to solder.  I've looked for an
HDL implementation of the driver but I cannot find one.  Does anyone know
of a way to interface with a PC that can be or has been implemented on a
FPGA or has a low component count?

---------------------------------------        
Posted throughhttp://www.FPGARelated.com
Gigabit Ethernet latency on a quiet (i.e., dedicated) port can be
measured in microseconds, and your packet size is a good match for
it.

-- john, KE5FX
 
On Dec 1, 2:47 pm, colin <colin_toog...@yahoo.com> wrote:
Does anyone know approximately what the latency of using PCI is, to
send an interrupt and have the 1KB of data the OP is using transferred
into RAM?

I'm a bit confused by this. Typically high bandwidth costs you a bit
of latency. I.E. if you need to get 1KB across an interface you live
with a relatively long setup time, after which the data moves very
quickly. If you want to read or write a single word there is little
setup (latency), and your access just completes.

Colin
Hi,

I found a paper here:

http://www.hypertransport.org/docs/wp/Latency_Comparison_HyperTransport_PCIe_in_Communications_Systems.pdf

That takes a look at latencies on PCIe (compared with HT). The numbers
are on pages 9 & 10, and as a you say its "pretty quick".

Rupert
 
Real time control functions get harder to implement with every new
generation of PC. Most of them now have a PCI Express backbone that
gives a large variance in latency. Almost all data on a PC routes
through this backbone so the problem of variance applies to anything
hanging off it like a serial port or a USB port. Overall Latency has
probably increased as well when compared to older PCs because of this
packetised transmission structure.

Generally any packet based interface like USB will have their own
latency issues. Usually packets need a CRC check and so the complete
packet has to be received and checked to do that. That gives latency.
Same goes for PCI Express.

The best way is to implement the real time stuff in your FPGA and use
the PC itself as a supervisor, general storage and humun interface
functions. For latency conventional PCI is probably still best but
bear in mind there is almost certainly a PCI Express backbone in a
modern PC.

John Adair
Enterpoint Ltd.

On Nov 30, 3:05 pm, "Gravis"
<fpgarelated@n_o_s_p_a_m.adaptivetime.com> wrote:
I have a FPGA project and it needs to interface with my PC.  The problem
I've run into is finding a fast form of communication with very low
latency.  I've come asking for advice and possible solution.

I need a link that can transfer 1KB 1200 times every second, not just 1.2MB
a second because the input is dependent on the output.  The latency issue
makes USB impossible and a normal serial port doesnt have the bandwidth.
My initial inclination was to use a IEEE 1394 connection but the interface
driver ICs are both expensive and too small to solder.  I've looked for an
HDL implementation of the driver but I cannot find one.  Does anyone know
of a way to interface with a PC that can be or has been implemented on a
FPGA or has a low component count?

---------------------------------------        
Posted throughhttp://www.FPGARelated.com
 

Welcome to EDABoard.com

Sponsor

Back
Top