CS/ECE 4710
Computer Engineering Senior Project
Fall 2014

Instructor:

Erik Brunvand, elb 'at' cs 'dot' utah 'dot' edu, MEB 3142

Office Hours:

After class and by appointment

Class:

Official Meeting Time: T-Th 12:25-1:45 MEB 3143 (Sr. HW Lab)
We'll meet in the lab for the first week, then arrange for separate meeting times for each team. We'll occasionally meet as a class for in-progress presentations.

Web Page:

http://www.eng.utah.edu/~cs4710 (right here!)

Logistics

Academic Misconduct

Note that the School of Computing has adopted a tougher stance on academic misconduct you will need to read the policy and print and sign the form. At this point in your program, I assume that everybody already has this form on file with Arlene. If you don't, for some reason, you need to turn this form in to Arlene Arenaz (the CE academic advisor) by Friday, August 29.

For 4710, academic misconduct means
representing work that is substantially copied from an
outside source as your own. Since this course is all about
completing self selected projects that were proposed in
3992, this is not likely to be a problem. However, if you've
made use of information from other sources (friends,
colleagues, web tutorials, similar projects from other
sources, manufacturer's examples, etc.) then
you must cite that source
in your final documentation. If you use text which is
slightly modified or copy diagrams that you find on the web
then the source of this
information mustbe
cited. Best practice for
textual work is to cite information obtained elsewhere and
provide the full reference in a bibliography. For copied
diagrams used in either your final report, your slides, or
your final poster, then best practice is
to cite the
source in the caption or
as text associated with the
diagram. This is not an optional
practice.

Special Needs

The University of Utah seeks to provide
equal access to its programs, services, and activities for
people with disabilities. If you will need accommodations in
the class, reasonable prior notice needs to be given to the
Center for Disability Services, 162 Olpin Union Building,
581-5020 (V/TDD). CDS will work with you and the instructor
to make arrangements for accomodations. All written
information in this course can be made available in
alternative format with prior notification to the Center for
Disability Services.

Course Description

Prerequisites: "C-" or better in CS/ECE 3992 AND CS/ECE 5780 AND Full Major status in Computer Engineering

From the course catalog: This is the capstone team project course for Computer Engineering majors who do not choose to do a thesis or an ECE clinic. The CS/ECE 3992 teams remain intact and the goal is too build and demonstrate the project that was proposed and approved in CS/ECE 3992. Students in this class do not meet in a classroom setting. Each team will meet with the instructor once each week for approximately 1 hour to discuss progress and/or problems as well as demonstrate scheduled milestone results. At the end of the term students are expected to demonstrate their entire operational project to an open house crowd of interested faculty and students. Friends and family are also welcome to attend. A final written report is also turned in which documents the details of all aspects of the project.

Grading

Incomplete Policy - There is no option for an incomplete in this class unless you have a documented medical or legal emergency. The Demo Day target is a strong constraint.

The grades will be based on timely completion of your self-selected schedule, quality of the completed project on demonstration day, your ability to demo and present your project, the quality of your demo day poster, your web site and your final report.The percentages are as follows:

Hitting your scheduled milestones

-

10%

Quality of final project

-

55%

Final project report

-

20%

Final project poster

-

5%

Website and web logs

-

5%

Demo day performance

-

5%

Note that although the grades will be given on a per-group basis, there will also be a team-evaluation by every team member. Based on that evaluation, individual grades may be adjusted based on relative effort/participation of group members.

Other class web sites that may have useful information

CS/ECE 5780 Embedded Systems: You should have already taken this class, so you know that there's lots of good info on the site, including information about using Altium Designer to design printed circuit boards.

Lab Resources (these are from Al Davis, Fall 2013)

Every year there are a number of remedial things that some students
have either not been taught or have just forgotten. Fortunately in
our video bonkers world, there are a wide variety of instructional
videos that can be utilized to get you up to speed quickly. Here are
some pointers to videos for problems that have been common in the
past. A great website in general
is CuriousInventor.com
where you will find tools, materials, and instructional videos on
many of the topics you should probably care about.

Soldering

Most students have done some hardware prototypes using a prototype
board where wires are just pushed into ZIF (zero insertion force)
sockets. While this is a reasonable prototype approach it suffers
from several disadvantages when compared to soldering and printed
circuit boards: the ZIF socket adds both increased capacitance and
inductance to the connection, ZIF protoboards tend to use longer
wires which act as antennas and cause the circuit to be sensitive to
inductive and capacitive coupling which distorts the signal in ways
that can cause failure, and the ZIF prototype is not very robust
since wires can just as easily be removed as they were to
insert.

If you don't know soldering basics check
out: soldering video. This works for through hole
components.

There are lots of surface mount components with much finer
geometry. For a drag soldering demo for .5 mm pitch SMT packages
see: drag
soldering video.

For more sophisticated soldering of packages such as QFN (Quad Flat
No-Lead) packages
see: QFN
soldering video. This video also provides temperature profiles
as well as some other useful information about tools and fluxes. It
also illustrates where you can have solder masks made. For more
information and using different packages that duplicates some of the
previous information but gives a good overall view of serveral
soldering and desoldering techniques check
out more
soldering info.

For more sophisicated soldering techniques for things like BGA (Ball
Grid Array) packages you could use the same tactics as for QFN
packages but fortunately you are lucky since in Al's lab in 2180 we
have a fairly sophisticated set of BGA rework equipment - there is a
learning curve for this stuff but it works great if you have complex
components. Note that if you choose BGA components you will need to
make a printed circuit board.

Desoldering

Screwups happen and sometimes you'll need to desolder
something. There are typically 5 methods - from simplest to most
sophisticated they are solder wick, vacuum desoldering, vacuum
desoldering tip, ChipQuick, and hot air or infrared reflow.

Desoldering using a wick (we have wicks in the lab) - see the
"more soldering info" link above which has some nice tips
for this technique.

Desoldering using a vaccum desoldering device (Al has this stuff in
his lab) -
see vacuum
desolder video.

A desoldering tip is just a tip that hits all leads at once on the
DIP (dual inline package) and has a vacuum which when the chip
releases sucks it up into the tip and off the board.

ChipQuick is solder that stays molten for a long time - you just
apply it to the contacts heat it up and it keeps the actual solder
molten allowing you to remove the component. The "more
soldering info" link about also demonstrates this
technique.

Lastly if you use thermal or infrared reflow then you should use the
BGA work station in Al's lab. The technique is simple although the
learning curve for the equipment is a bit more time
consuming. Basically the appropriate sized hood is lowered over the
part to be removed, the area under the hood is heated to melt or
"reflow" the solder and a spring loaded vacuum pad lifts
the part off the pads when all of the pads release.

Oscilloscopes

Amazing as it may seem at this stage of your CE career, there are
people who don't really know how or why to use an oscilloscope. As
digital geeks we all tend to think of the world in terms of 0's and
1's at the lowest level but even digital circuits exhibit behavior
that is far from this 0 and 1 abstraction. When your circuit
doesn't work as planned, an oscilloscope lets you see where this
abstraction breaks down.

Note that all oscilloscopes essentially do the same thing but the
controls take a bit of time to figure out. Let's say you're
familiar with a Tektronix scope and the one you now have to use is
an Agilent scope - you'll likely find out that the knobs are in
different locations and there may be more or less options. In
essence this is a 10 minute problem. For a basic operation tutorial
check out
the O'scope
basics video.The major difference between oscilloscopes is how
fast they can measure something and whether they are digital
sampling devices (most common now) or older analog units. If the
frequency of what you're looking at exceeds the scope speed then
you'll need to find a faster scope. For many digital sampling
scopes (such as the ones in the Sr. HW Lab) increasing the
volts/division on the vertical axis also increases the sampling
frequency which allows you to see things that might not be seen at a
slower sampling rate. A common problem that many students run into
is a somewhat crazy jittery display - this is caused by incorrect
triggering and if you go to a single sweep the problem will go
away. The triggering options on the lab's scopes are not as good as
they should be in my opinion.

And finally for some more advanced things that are often a puzzle to
most but not all 4710 students -
see Adv. O'scope
video. I love it that at the end the video, the presenter
claims that you'll know more than I do about oscilloscopes. I love
it when this happens, mostly because that's the whole goal for most
teachers.

Hopefully these videos will get you close to where you need to be
but when all else fails (oh that might be Google and YouTube)
there's always the manual.

When hardware prototypes seem to be misbehaving
in bizarre ways, the most common culprit is:

The circuit is wired incorrectly. Note that this often results
in parts being destroyed. The best way to avoid this is to work
with a schematic and then "ring out" the implementation
before you apply power to your expensive components. This can be
done with a multimeter set on ohms - just follow each wire path to
make sure it's connected only to the places it's supposed to go
and not to some other place. Absolutely NEVER just move wires
around until something works - engineers design things and random
search is a really crappy and slow way to design something. ALWAYS use a schematic and label where the wires go. Lastly
before you turn on the power test to see that power and ground are
not connected (shorted).

OK the oscilloscope won't help you with culprit 1 but it will help
you with the remaining problems.

Ground bounce. If you think ground is always 0 volts you are
wrong. It may be that ground is SUPPOSED to be 0 volts but that
is often not true. If your circuit is misbehaving then it's
worthwhile to check the difference between the ground of the power
supply and the ground pins on your various components. Note what
you care about is the ground pin of the component and not just the
pad that it's supposedly soldered or connected to. Also note that
using AC coupling on both probes for this test is useful. You
will expect to see a straight line on the scope in both cases but
you often will see some ripple. There's always some ground bounce
in any circuit - if it's a couple of % of the (power V - ground V)
value then it's likely not the culprit. If it's more than 10-20%
it's likely a BIG problem so go fix it. The culprits here could
be a number of things - the ground could be distributed over too
small a wire or PCB trace, the ground connection to the component
could be a cold solder joint, or the ground lead is getting
coupled noise from a nearby signal trace or wire.

Power (or Vdd) bounce. Testing this is that same as for
ground bounce and the culprit list is the same but with one
exception. Typically 4710 projects use one or more constant
voltage power supplies. These power supplies supply a varying
amount of current as needed but if either the total amount of
current exceeds the capacity of the power supply or if the dynamic
variance of the current demand is too high you will see a ripple
on the power supply and it may vary a different points in your
circuit. A common way to fix this in digital circuits is to add a
decoupling capacitor between ground and power at the component
where this is a problem. Of course if the current demand exceeds
what the power supply can deliver (evidence of this is that you
will see the output voltage drop below what it is supposed to be)
then you will need a different power supply that can supply more
current. A common mistake is to choose a power supply that
provides "just enough" current. This is a BAD plan for
two reasons - most project teams don't actually know how much
current they need and it's always a wise plan to provide headroom
of say 20% over what you really need. Things are much more
complicated for analog circuits (hopefully I'll get this tutorial
done at some point).

Signal integrity. For digital circuits we expect to see a
square wave. If you actually look at any signal on your project
it's unlikely that you'll ever see a real square wave on the
oscilloscope. You'll see overshoot on the rising edge and
undershoot on the falling edge. In the particularly bad case you
will see significant ripple during what should be a high or low
signal value. This is caused by noise injection from nearby
traces or wires. The likely culprit is that they are two close
together and capacitive coupling is happening. The fix is to
separate them or at least make sure they aren't running in
parallel for very long. Remember any long wire is an antenna and
the problems get much worse as signalling frequencies go
up. There are other more subtle fixes that are too numerous to
mention but one tip is to know what capacitive and inductive
coupling waveforms look like on the oscilloscope. (have yet to
find tutorial videos so I will have to create some).

Jitter - for digital circuits noise or signal integrity is
most commonly only of concern near the critical clock edge - if the
data signal is not at the proper level in what I'll call the
sampling window (a region around the critical clock edge - this
could be the falling or rising clock edge depending on your
component or on both edges if you're doing DDR (Dual Data Rate)
signalling which is commonly used for DRAM main memory
components. In this case it's important to look at the clock signal
on a component and each data signal. Easily done using an
oscope.

The bottom line here is that an oscilloscope is a very useful device and you should know how to use one. The virtualized educational material that you get in a simulated world is a great start but the simulator doesn't prepare you to deal with real implementations unless your simulation goes to the trouble of accurately modeling every wire, every component, and every aspect of the circuit board and the enironment that it will operate in. There is one gotcha however. I've seen numerous projects where the student says my circuit works with the test equipment attached but fails when the test equipment isn't attached. What's going on here? Every time to attach a scope or logic analyzer probe to a circuit pin it adds a very small capacitance to that connection. Hence adding a capacitor of the appropriate value at this spot will likely help.

Most projects involve micro-controllers of some sort - they vary from the ultra-simple ones you find on Arduino platforms to more fully featured (and more complex to figure out) devices from manufacturers such as Freescale and Motorola. A common mistake is to choose a micro-controller because it is cheap - actually this is a BIG mistake since the processor may be too slow to do what you need it to do and may not have enough memory to hold your code and data. Until you know exactly what you need to accomplish your project goals, it's a good idea to spend a bit more and give yourself some headroom to avoid future time-consuming headaches later.

Finally - most digital projects don't require high currents in wires but if you find that some wires OR components are getting warm then there is a problem that has to be fixed ASAP. If a wire is warm then it's too small for the current it's carrying. For wire gauges (the smaller the number the bigger the wire and the more current it can carry) there are standards for how much current the wire can carry before it starts to become a fuse - check here for a handy table.