[Gb-ccb] FPGA choice and configuration
Tim Pearson
tjp at astro.caltech.edu
Tue Feb 24 20:35:46 EST 2004
The biggest outstanding issue on the CCB design is that we have still
not identified which FPGAs to use, or how many, or how to interface
them to the computer. Until this is settled we cannot proceed with
board layout or FPGA programming. Martin is working on this now, but
other input would be welcome. My understanding of the issues involved
is the following:
1. We haven't been able to identify a development board with a USB
interface that would meet our requirements. The CESYS board mentioned at
our telecon has a USB 2.0 interface that would probably be fast
enough, but it is (apparently) extremely difficult to use. (Martin's
comments on this are included below).
2. This is driving us to go back to Martin's original idea of laying
out one or more FPGAs on our own circuit board, with our own USB
interface chip. Martin is the process of acquiring a test setup for
the USB interface chip he proposed in an earlier message.
(a) A single FPGA does not provide enough I/O pins unless we go for a
ball-grid array, which we are reluctant to do. Multiplexing the ADCs
might allow us to use fewer I/O pins but is an added complication.
(b) We can probably do it with 2, 4, or 5 FPGAs on a single board,
with one serving as a master handling the USB communications. We need
to check the pin count. It is possible that the master FPGA could be a
packaged development board, but that would complicate the
interconnects between master and slaves.
(c) Using 4 identical FPGAs on separate boards allows for good
modularity, as in Randy's proposal, but it would require
synchronization (I think we now agree that this would be possible via
1 PPS and 10 MHz). The computer would have to handle 4 USB
connections, which might not work under USB 1.1, and the USB protocol
would have to include timing to establish synchronization.
Of these options, we currently favor (b) and Martin is trying to
come up with a concrete proposal, but if you are pursuing other options
or think that we should, please let me know.
An aside: to minimize the pin count, we are assuming that the 2 least
significant bits from each ADC will not be passed to the FPGA, even in
dump mode (unless we find ourselves with a surfeit of pins). Let me
know if this is unacceptable.
We need more discussion via e-mail (we'll try to minimize the flaming!)
and probably another telecon.
- Tim
Martin's comments on the CESYS USB interface:
* I have been reading documentation on the Cypress USB interface that
is used by the FPGA development board. The stuff available on
Cesys' web-site is dominated by documentation of Windows
software. As far as I can see, they don't give any specifics about
the FPGA interface to the USB module. I ended up going to Cypress
semicondutor's web-site, to look at the documentation of the USB
module itself, separate from the FPGA board.
It appears that to use this interface, I would not only have to
program the FPGA to talk to the Cypress USB interface module, but
also write specific firmware for the 8051 microproccessor within
the Cypress USB module, and write a specific USB 2.0 device driver.
This is clearly orders of magnitude more complicated than the
simple FIFO to virtual-serial-port interface that I was going to
use before.
* It turns out that the Cypress USB interface module that this board
uses is the same as the USB interface of an external USB 24-bit
soundcard that I use with my laptop. This was a pain in the neck to
get working. The problem is that the Cypress USB interface does
something unusual (they patented the technique, so probably nobody
else dares do anything similar). Whenever devices that use this
module are newly plugged in to the USB bus, the Cypress USB module
does the following.
A. It identifies itself to the USB host controller as a simple USB
peripheral with little functionality.
B. The device driver on the host is then expected to send the
Cypress module its firmware. This is a 200K file for my audio
card.
C. The Cypress USB module then disconnects itself from the USB bus,
then immediately reconnects itself, this time identifying itself
as a different USB device, with specifics taken from the new
firmware.
On my laptop, under RedHat, I managed to get this to work using
free software, and a copy of the firmware file, but it takes 15
seconds for the above process to complete, and after a reboot, it
only works if I manually unplug it then replug it in. If I leave
the device plugged in at boot time. Probably the boot-time poll of
the USB bus occurs before the host's USB interface is fully
initialized, so the immediate disconnect and reconnect confuses
it. Other than manually unplugging and replugging in the device
after each boot, I haven't found a solution for this problem. We
may have similar problems with the CCB if we use this development
board.
--
Timothy J. Pearson
Astronomy Dept 105-24, Caltech, Pasadena, California 91125, USA
Internet: tjp at astro.caltech.edu
Telephone: +1 626 395-4980 FAX: +1 626 568-9352
More information about the gb-ccb
mailing list