OpenCores
URL https://opencores.org/ocsvn/usb1_funct/usb1_funct/trunk

Subversion Repositories usb1_funct

[/] [usb1_funct/] [trunk/] [doc/] [success_story.txt] - Rev 11

Go to most recent revision | Compare with Previous | Blame | View Log


OpenCores.Org USB1.1 Function Controller Success Story

As part of the undergraduate program in Computer Engineering at the 
University of Waterloo, all students must participate in a fourth year 
design project. Our team created a PC Oscilloscope, since we had 
frequently encountered problems with a lack of access to oscilloscopes 
when working on our own personal projects. Real oscilloscopes are 
expensive, and definitely outside our student budgets. Our concept was 
computing power and display ability.

When designing the oscilloscope, we quickly concluded that we needed a 
relatively high bandwidth, common and affordable connection between a 
PC and our device. USB was the natural choice. Our school had provided 
us with an Altera Excalibur FPGA development kit, so we began by 
searching for USB Core IP. After a few promising leads, none of the 
companies were willing to donate a USB function controller to our 
project.

At this point, Evan Jones remembered hearing about OpenCores, and 
immediately discovered the USB1.1 function controller. We began by 
reading the little documentation that was available. Since the author
of the component used a Phillips USB tranceiver and Philips does not
provide samples of that particular part, we ordered samples of a 
nearly pin USB tranceiver from Fairchild Semiconductor. Meanwhile, we 
compiled the component with the Altera Quartus tools.

Once the trancievers arrived, we soldered up a quick circuit to connect 
the USB cable to our prototype board. The very first time we connected 
the device to our PC, the PC crashed. We assumed that this was a good 
sign, as at least the PC was seeing the USB device. After some more 
debugging using another computer running Linux, we determined that 
while the device and the PC were communicating, something was going 

We spent the next few days debugging. First we resoldered our USB 
interface circuit to reduce noise. We manually decoded the signals on 
the USB bus using an oscilloscope. We were stumped. It looked like the 
beginning of the USB enumeration was working correctly, but it would 
still fail and reset the bus.

We took a break and returned to it in a few days and redid absolutely 
everything from scratch. This time the PC detected an unknown USB 
device. It turns out that our problem was that we set an incorrect 
setting in the VHDL header for our particular FPGA. With the default 
settings and a recompile, the device worked.

It took us a few more weeks until we worked out our software device 
driver and the remainder of the device logic, but that was all 
relatively straightforward. The OpenCores USB function controller 
worked as advertised. If we were to do the project again, we would 
easily be able to get it up and running in a few hours.

Evan Jones                    http://www.eng.uwaterloo.ca/~ejones/
Mauro Loconsolo               4ydp_waterloo@rogers.com
Evan Robinson                 e2robins@uwaterloo.ca
Sahand Sojoodi                sahands@hotmail.com




Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.