Chris McClelland
unread,Aug 27, 2012, 7:57:46 AM8/27/12Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to fpgalin...@googlegroups.com
I noticed that when the libusb-0.1 bottleneck on the host side is
removed and replaced with the more efficient libusb-1.0 back-end, a new
bottleneck becomes significant - the fact that the CommFPGA protocol
uses USB endpoints 6 and 8.
Inside the FX2 chip, EP6OUT can be quad-buffered (basically a 2KiB
FIFO), but EP8IN is hard-coded so it can only be double-buffered at best
(a 1KiB FIFO). Since USB is kinda bursty, the amount of buffering is
significant: it means the difference between sustaining about 35MiB/s
and 43MiB/s.
I would like to switch the binary distribution to use EP2OUT and EP6IN
for both NeroJTAG & CommFPGA traffic, ensuring we have the maximum
possible buffering available in both directions.
This change will only affect you if you have designed your own PCB and
chosen to wire it in the FPGA-I/O-conserving configuration shown in the
2nd diagram in section 4.2 of the manual, i.e with FIFOADR[1] tied high,
with FIFOADR[0] driven by the FPGA. If this is you, please let me know.
I will then spend some time thinking about how to work around it. On the
other hand, if your board has *both* FIFOADR[0..1] lines wired to the
FPGA, this will *not* affect you.
The only such PCB that I *know* exists is one I designed myself, but if
there are no others, since I have only 20 prototypes of my board, I'll
probably just do some track-cutting and wire-modding, for shame, and fix
it on the next revision.
Obviously the idea solution is to make it configurable at runtime, like
the choice of JTAG lines is configurable, but I don't want to waste time
on it unless someone (apart from me!) actually *needs* it.
Chris