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!)


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.

Fall 2014 Projects and group meetings times

Class Schedule (a work in progress)

Date Topic / Agenda Links, Assignments, and Due Dates
8/26, 8/28 Logistics discussion and scheduling Meeting time: 12:25-1:45 in the Sr. HW Lab
Week of 9/1 Meetings with each team (schedule above)  
Week of 9/8 Meetings with each team  
Week of 9/15 Meetings with each team  
Week of 9/22 No meetings this week Erik out of town 9/24 - 9/28
Week of 9/29 Meetings with each team  
10/7, 10/9 Progress report presentations Meeting time: 12:25-1:45 in the Sr. HW Lab
Week of 10/13 Fall Break - no meetings!  
Week of 10/20 Meetings with each team  
Week of 10/27 Meetings with each team  
Week of 11/3 Meetings with each team  
11/11, 11/13 Progress report presentations Meeting time: 12:25-1:45 in the Sr. HW Lab
Week of 11/17 Meetings with each team  
Week of 11/24 Thanksgiving week - no meetings  
Week of 12/1 Meetings with each team  
Week of 12/8 Dress Rehersal Meetings with each team Have your posters ready to print!
Friday, 12/12 DEMO DAY! (schedule TBD)  


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.

Class Resources

Writing Resources

Bill Thomson recommends the following books in his excellent "Technical Communications in Computer Science" class

Other writing resources: Prof. Furse in ECE has put together some resources here.
Still more writing resources: The College of Engineering CLEAR center at the University of Utah

Other class web sites that may have useful information

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.


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.


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.


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.

If you really don't know what an oscilloscope does, look at the what is an oscilloscope video.

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:

  1. 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.

  2. 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.

  3. 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).

  4. 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).

  5. 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.