From: Kolja Sulimma on
On 14 Dez., 23:58, "dlopez" <d...(a)designgame.ca> wrote:

>
> Now I only saw problems and corner cases with this approach. The PC, which
> is sending the data and commands, does not have easy visibility on the FPGA
> FIFO, so it doesn't really know the right mix of data/command to send.

I think you did not understand what I meant.
What you are talking about is having control and data in one stream.
This gives you
all the potential problems you describe.
I was talking about splitting the FIFO on a cycle by cycle basis and
wasting half of the
bandwidth of the fifo to tell the FPGA what stream a byte belongs to
by packing bytes
into 16 bit words.
Do the math: Half of 60MB/s is still more than the 25MB you get from
the async FIFO.
The handling of the streams should be implemented in the USB chips
firmware.
The PC should not need to know about this.


> Then one command,
> somewhere between my C# code and the FPGA, might get stuck in the pipeline
> since the FPGA won't grab more data from the USB chip.

In this approach the FPGA should allways empty the USB chip FIFO.There
is nothing
to loose because it does not matter which FIFO overflows if the sink
is stuck.
I believe that in this case the packet approach that you suggested is
save and it has even more
performance.

Kolja Sulimma