CSCE 491
Capstone Project in Computer Engineering
Fall 2004
Department Course Description
The official departmental description for this course can be
found at the following link: 491—Computer
Engineering System Project.
(3) (Prereq: CSCE 240, CSCE 311) Selected design projects.
Course Materials
Background
In this course, we'll take on the design of digital systems for implementing the IEEE 802.11 wireless LAN protocol. We'll focus on the MAC layer functionality, which controls the allocation of the wireless medium and the transmission of data across the wireless channel.
From my experience (and from my research into custom computing systems built using programmable logic devices), I believe that whole systems can be built out of custom logic models--without requiring the use of a microprocessor--and that the cost of building such a solution can be recouped in the initial project. Microprocessor cores generally have a sizable royalty structure associated with them, and so cost--along with performance, power minimization, and form factor--become reasons for adopting custom logic, which can be delivered with the flexibility and designer productivity using programmable logic devices, namely FPGAs.
We'll be designing circuits for realizing the 802.11 MAC protocol in programmable logic. What you will start with when you come in the door will be your experience in digital logic design from CSCE 211, and your knowledge of computer architecture from CSCE 212. In addition, your experience in algorithms and what you may have gained from any computer networking courses taken will be of benefit. But everything else you will need to know to design systems using wireless networking you will learn in this class. We will use the high-level graphical methods for depicting our design, namely the Algorithmic State Machine (ASM) method. The specifications will be discussed using UML models of the WLAN protocol--from which we will derive suitable systems architectures for our circuit design activities.
The design method I teach for realizing high-productivity design and architecture analysis for programmable logic design is and integral part of this course. I also teach this in CSCE 611, the course on Digital Systems Design. Just as in that class, I will be collecting designer productivity data and effort distribution data for all homework assignments and project assignments in this course to compare against data sets I've collected in previous semesters.
Importance to Computer Engineering
In my view, this class is your first, last and best look at what it will be like to practice the craft of computer engineering as it pertains to hardware-oriented design projects. I have managed many such projects over the years (in both hardware and software), and I know what it takes to specify a system, take that specification and realize a set of competing architectures from it, and to carry it with into a software implementation or into a VLSI hardware one. My philosophy is to treat the course as a team-oriented design project, although (depending on class size) the assignments could be made individually. In the real world, designers work in teams, highly coordinated and involving specialists from many functions within an organization. As a team member on such a design project, you will be expected to (1) carry out your project function in a highly disciplined manner, (2) be accountable to your teammates for upholding your end of the project (because your bonus, and even your job, depends on it), (3) exercise sound engineering principles in executing your job function (i.e., be highly technically competent, having "done your homework" on the project, so to speak), and (4) be able to conduct yourself in a professional manner, treating team mates ethically, and with dignity and courtesy, which they deserve and extend to you in a professional setting.