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

Subversion Repositories usb1_funct

[/] [usb1_funct/] [trunk/] [doc/] [success_story.txt] - Blame information for rev 10

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 9 rudi
 
2
OpenCores.Org USB1.1 Function Controller Success Story
3
 
4
As part of the undergraduate program in Computer Engineering at the
5
University of Waterloo, all students must participate in a fourth year
6
design project. Our team created a PC Oscilloscope, since we had
7
frequently encountered problems with a lack of access to oscilloscopes
8
when working on our own personal projects. Real oscilloscopes are
9
expensive, and definitely outside our student budgets. Our concept was
10
to create a cheap, full featured oscilloscope by harnessing a PC’s
11
computing power and display ability.
12
 
13
When designing the oscilloscope, we quickly concluded that we needed a
14
relatively high bandwidth, common and affordable connection between a
15
PC and our device. USB was the natural choice. Our school had provided
16
us with an Altera Excalibur FPGA development kit, so we began by
17
searching for USB Core IP. After a few promising leads, none of the
18
companies were willing to donate a USB function controller to our
19
project.
20
 
21
At this point, Evan Jones remembered hearing about OpenCores, and
22
immediately discovered the USB1.1 function controller. We began by
23
reading the little documentation that was available. Since the author
24
of the component used a Phillips USB tranceiver and Philips does not
25
provide samples of that particular part, we ordered samples of a
26
nearly pin USB tranceiver from Fairchild Semiconductor. Meanwhile, we
27
compiled the component with the Altera Quartus tools.
28
 
29
Once the trancievers arrived, we soldered up a quick circuit to connect
30
the USB cable to our prototype board. The very first time we connected
31
the device to our PC, the PC crashed. We assumed that this was a good
32
sign, as at least the PC was seeing the USB device. After some more
33
debugging using another computer running Linux, we determined that
34
while the device and the PC were communicating, something was going
35
wrong. The PC was reporting that the device was sending “babble”.
36
 
37
We spent the next few days debugging. First we resoldered our USB
38
interface circuit to reduce noise. We manually decoded the signals on
39
the USB bus using an oscilloscope. We were stumped. It looked like the
40
beginning of the USB enumeration was working correctly, but it would
41
still fail and reset the bus.
42
 
43
We took a break and returned to it in a few days and redid absolutely
44
everything from scratch. This time the PC detected an unknown USB
45
device. It turns out that our problem was that we set an incorrect
46
setting in the VHDL header for our particular FPGA. With the default
47
settings and a recompile, the device worked.
48
 
49
It took us a few more weeks until we worked out our software device
50
driver and the remainder of the device logic, but that was all
51
relatively straightforward. The OpenCores USB function controller
52
worked as advertised. If we were to do the project again, we would
53
easily be able to get it up and running in a few hours.
54
 
55
Evan Jones                    http://www.eng.uwaterloo.ca/~ejones/
56
Mauro Loconsolo               4ydp_waterloo@rogers.com
57
Evan Robinson                 e2robins@uwaterloo.ca
58
Sahand Sojoodi                sahands@hotmail.com
59
 
60
 
61
 
62
 

powered by: WebSVN 2.1.0

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