EE345. Computer Organization
Number representation, digital storage devices, and computational units, bus structures; execution sequences and assembly language concepts; control units with horizontal and vertical microcoding; addressing principles and sequencing; microprocessors; basic input and output devices; interrupts; survey of RISC principles including pipelined execution. Lecture and lab.
This course together with EE342 are the core of the Computer Engineering minor. EE342 focuses on microcontrollers and the lowest level of software, but the CPU is a given. It's important in that course to know what a CPUis and what it does, but one can ignore for the most part how it actually works internally. EE345 is the link between EE241 Digital design, where the focus is on gates, and functional units up to datapaths, and software at the machine language level that students meet in EE247 and EE342. How does the CPU do its magic? That's what this course is all about. We learn by project: teams of students design a custom CPU using an FPGA, so this course also provides an opportunity to get acquainted with programmable logic on a grander scale than the GAL's used in EE241.Ultimately the satisfaction is to see your own computer executing a simple program. These exercises are supplemented with additional topics that are beyond practical reach for this course in the lab, such as superscalar execution, array processing (SIMD),cache memories, and distributed processing.
The next offering of this course is expected to be Fall 2017. Mr. Mike Morrow, a retired computer engineer, will be the instructor, and I will be assisting. The site and methods for postings for the 20-17 offering has not yet been set. This site reflects, instead, the previous 2015 offering of the course.
The materials below are Mike Morrow's, for the current offering of EE345. This web site is being used as a temporary expedient until Wilkes adequately provides Mike with web support.
This course is normally offered in the fall semester of odd numbered years, alternating with EE342. It's nice to have good programming background, but every other class is going to be in the situation of needing to take this course before taking EE247 and EE342. That's just the way it goes. It will make those other courses easier later.