I have not used it myself, but parallel transfer is potentially even simpler than serial, as it uses a basic FIFO interface. It looks like this:

D0-D7 (inout): Data bus.
TXE# (output): When low, data can be written to the FIFO.
RXF# (output): When low, data can be read from the FIFO.
WR# (input): Writes data to the FIFO on negedge.
RD# (input): New data byte can be read on D0-D7 after negedge.
Data output enabled while low.

Pin descriptions and timing diagrams are on page 10 and 11, here:
http://www.ftdichip.com/Documents/DataSheets/DS_FT245R_v105.pdf


I suggested this earlier...
What about one of FTDI's USB - FIFO converters? (or USB-UART)
the FIFO ones have
"Data transfer rate to 1 Megabyte / second - D2XX Direct Drivers."
or
"Data transfer rate to 300 kilobyte / second - VCP Drivers."
I am not quite sure what D2XX or VCP means, but you can get D2XX for Mac OS X, Linux, etc.

http://www.ftdichip.com/Products/FT245R.htm

at one megabyte per second, we can transfer all 256 megabytes in approx 4 min, 16 seconds.
...
There is also a so-called "USB to UART Switch" manufactured by Dallas/ Maxim Semiconductors that can switch the two signals - this would be useful for having both, but just USB would probably work.

Did people recieve this? (I just wanted to make sure these are getting through)


Anyway, I think that a FIFO interface is easier than a serial one. Remember, however, that we have a 4 MILLION gate FPGA with almost nothing on it, so we don't need an insanely optimized download system (in terms of latency in the FPGA, since any performance gains are destroyed by the FIFO) unless we go with the download-on-the-fly idea proposed by Daniel (which I rather like - more later). Because of this, it might be more practical to use the UART, since most computers can get cheap USB <-> RS232 adapters instead of an FTDI solution that is a pain to connect up. If we are planning on soldering these ahead of time for developers, I just assume go with the FIFO (to save us programming time),
but if people are attaching themselves it might be easier to use UART.

As for Daniel's idea:
Rather use a FIFO where the input is fed by 10x oversampled PCICLK and
output is read as fast as the transport link allows with given encoding
(transmiting changes only). It should work with a buffer for 10 samples
and you need at least half or less of the transfer rate of input,
because the signals somewhere MUST stay stable (otherwise we're talking
about 330MHz "noise" on all lines). These stable levels on input will
allow to clear the buffer, and they will occur once per PCICLK period.

I think that this makes sense. Not only does this make the program "real time" and therefore drastically reduce the download time, but it also allows for greater flexibility in capture time. Essentially an infinite buffer (the hard drive) is on the tracer machine, so we might as well store the signals there. The developer must have two computers anyway (one test with both ODG cards, one tracer), and this means we can essentially use both FPGAs to implement whatever compression we want. It is a simple matter of sending data over the UART in "real time". The signals are still coming in faster than we can shove them out, but as daniel said there is no way that 330 Mhz noise is omnipresent on the bus (at least, I should hope not...)

Thoughts?
_______________________________________________
Open-graphics mailing list
[email protected]
http://lists.duskglow.com/mailman/listinfo/open-graphics
List service provided by Duskglow Consulting, LLC (www.duskglow.com)

Reply via email to