URL
https://opencores.org/ocsvn/usb1_funct/usb1_funct/trunk
Subversion Repositories usb1_funct
Compare Revisions
- This comparison shows the changes necessary to convert path
/
- from Rev 8 to Rev 9
- ↔ Reverse comparison
Rev 8 → Rev 9
/trunk/doc/success_story.txt
0,0 → 1,62
|
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 |
|
|
|
|