USB Demo - FTDI UM245R (8bit USB Parallel FIFO)
The Universal Serial Bus (USB)
has only been with us 20 years but has taken over computer interfaces, with 2.4
billion new interface installs each year. Development started in 1994
with companies like Compaq, DEC, IBM, Intel, Microsoft, NEC and Nortel
taking the lead. The USB 1.0 standard was officially adopted and put
into use in January of 1996.
Aside from changes in performance and connectors, USB has remained pretty much the same half duplex serial technology with the latest USB 2.0 version topping out at 480Mbps (Mbps - million bits per second). That is, until recently. Over the last year or two we have seen the release of USB 3.0 which is a dual simplex version with speeds of 5Gbps, and this is now being surpassed with SuperSpeed USB (USB3.1 Gen 2) with speeds of 10Gbit. In addition to higher speeds we are seeing the adoption of new standards and protocols to handle higher power devices with USB Power Delivery (USB PD). And keeping an eye to the future, we will be seeing devices using USB Type-C. This connector will be useable in both hosts and devices using a 24-pin double sided micro connector with 4 power, 2 differential, 4 high speed data line pairs.
So enough with the USB history lesson. The circuit pictured below
is of a FTDI UM245R USB parallel FIFO development (bumper-board).
It features a single chip solution for USB FIFO bidirectional data transfer.
It offers a 1 Mbyte data rate, adjustable timeouts, both synchronous and
asynchronous modes, 1K on-board EEPROM, on-board clock, and the rest you can
read from the data sheet hyperlink at the bottom of the page. This
chip was chosen for the ability to program its internal FPGA to do what I
needed it to do. For my project I wanted all of the communications
stuff to be handled by the chip, all that is desired is the 8 bit word
control word for my device.
Shown below on the breadboard is the UM145R interface, a 555 for clocking, a
couple of gates for logic support, and some switches & LEDs for the demo.
Keeping in mind just, the UM245R has an integrated clock of its own, I am
just using the 555 timer for demo purposes (set at 0.5bit/sec).
As mentioned, the UM245R has an internal EEPROM which can be used to store
users defined information. FTDI pre-programmed the device type, serial
number, and some other stuff by default. I left it there and will use
it as a handle for my code. The software first queries the EEPROMs and
picks up this data. I'll then select what I want to use as a handle.
The baud rate pull-down was put in but for this demo I am using the external
555 timer so it really doesn't make a difference what you set it to.
From the pull-down you just select the string you would like to send and hit
the 'Send' button. Everything else is taken care of but the chip and
code. Looking at the video (bottom Right) you can see the UM245R pick
up the text string from the computer and displays it on the LEDs (binary
represenation of ASCII). Keep in mind, USB2 is only half-duplex, I am
toggling the Send/Receive pin to echo back the data sent to the chips
buffer. I sent up a button on the screen to upload back to the Recieve
textbox.
As mentioned above, USB2.0 taps out at around 480Mbps making it useable for
video streaming but not ideal. This is where USB3.0 comes into play.
This new standard is designed for speeds 10 times that of USB2.0, and that
is in half duplex. USB3.0 is full duplex capable with speeds up to 20
times USB2.0 (5Gbps).
USB 3.0 video streaming demo and code coming soon ....
FT245R chip datasheet,
UM245R bumper-board datasheet
Recommended reading and resources
USB Complete (4th Edition) -Jan Axelson
USB Embedded Hosts - Jan Axelson