Maximum data throughput

I’m thinking of using the XEM3001 in a high-speed data acquisition application. What is the maximum sustained data throughput rate to the PC?

I think, i’m doing the same here.

I have to transfer 3MWord/sec to the PC without data loss.
Even transforming the whole XEM into one big FIFO (16KWord),
we run into FIFO overflow issues.

It works, if NOTHING happens on the PC.
But if we move the mouse or a window, we get an FIFO overflow.

The reason seems to be that we can only buffer about 5msec (16k/3M) and that working on the PC can easily delay the “read from FIFO” from our software to more than those 5msec -> FIFO overflow.

That’s why our next try is with the optional Memory Expansion Module (RAM3001 ). This would give us 85msec (SRAM module) or even 5sec (DRAM module) buffering time.

Don’t get a wrong impression:
The XEM3001 is a perfect tool for developing and i like working with it, and maybe we have some undiscovered issues with our software that keeps us from performing 3MWord/sec sustained read.
But if you have a datarate like the example above, you may run into trouble without extra memory.

And if i’m totally wrong, someone please correct me.

Regards,
Claus.

Claus,

You’re right in thinking that external memory would help! The Spartan-3 does, indeed, have limited memory on-chip, which therefore causes additional overhead in checking buffer status more often.

With external memory (such as the RAM3001 or adding RAM on your board), you will achieve much higher rates. With long transfers (say 8 MB), we get closer to 33MB/s PC->FPGA and 20MB/s FPGA->PC.

PipeTest is a good sample to run to determine the effect of transfer size on transfer speed.

Thanks very much for the clarification. Can you give an indication of how much RAM is needed if, for example, the data is streaming at a constant 20MByte/s? I’m wondering whether 256KB SRAM will be sufficient.

Jeremy Bentham

Hi Jeremy,

the 256kWord of the RAM3001 SRAM module gives you about 25 msec buffer time (if i do the math right here).
I don’t know anything about your application but this sounds ok.
(no guaranty though :smiley: )

Regards,
Claus.

[QUOTE=Opal Kelly Support]Claus,

You’re right in thinking that external memory would help! The Spartan-3 does, indeed, have limited memory on-chip, which therefore causes additional overhead in checking buffer status more often.
[/QUOTE]
This is where we run into trouble.
The limited memory on-chip gave us 5msec buffering time, which is not enough for our application.

BTW: It seems like checking the buffer status with a 1 word PipeOut transaction is faster than using the conventional WireOut … :confused:

We will try this next week.

[QUOTE=Opal Kelly Support]
PipeTest is a good sample to run to determine the effect of transfer size on transfer speed.[/QUOTE]
But not for a sustained data rate :stuck_out_tongue:
In the PipeTest example you make the data when you need it and stop when you stall.
I had to realize this to find the solution with the additional memory.

Regards,
Claus.