Course Overview and Purpose
In ECE 290, you will learn how computer processors execute instructions. You will assemble digital logic components to construct increasingly complex digital systems, and you will eventually learn to design the hardware of a computer. The course emphasizes three themes:
-
Computers encode data in fixed-length binary units
-
A computer processes digital data, updating its stored state, in regular steps
-
Digital systems are designed modularly, through levels of abstraction
Required for all undergraduate majors in electrical and computer engineering, ECE 290 builds on the basics of digital logic and computer organization that you learned in ECE 110 and ECE 190. Upon completing ECE 290, you will be prepared for junior-level laboratory courses ECE 385 and ECE 391.
Course Learning Objectives
Through the course activities, you will have the opportunity to learn to
-
Analyze the error detecting and correcting properties of codes
-
Explain the principles of two’s complement representation and arithmetic
-
Translate verbal specifications into Boolean expressions and state machines
-
Apply Boolean algebra to simplify Boolean expressions
-
Analyze and design efficient combinational logic circuits, sequential logic circuits, and random access memories
-
Explain the relationships between timing diagrams, state machines, and sequential circuits
-
Design digital systems with register files, buses, and functional units
-
Design hardwired and microprogrammed control units to implement instruction sets
-
Develop and evaluate solutions to problems in professional ethics
-
Develop and improve teamwork skills for engineering projects
Instructional Philosophy for This Course
Students do not all learn the same way, nor do they all have the same goals for their careers. Therefore, within the scope of the learning objectives for this course, you will be given opportunities to choose and define you own ways for achieving success.
The course provides many ways for students to learn the core materials, including lectures, classroom exercises, online homework, problem sets, problem-solving in discussion sections, and laboratory assignments. For some students, some assignments or exercises may not be useful. Therefore, the total number of points associated with practice and exposure to the course material will be capped, so that you will not need to complete all activities for full credit. Effectively, you are allowed to decide how you will most efficiently learn the course material.
To emphasize the cooperative nature of the engineering profession, during the third week of the semester, you will be assigned to a learning team of five students. Team assignments will be determined by the instructors based on a variety of criteria, including team diversity and overlapping availability for team meetings. Within learning teams, students will support each other’s learning and accomplishment throughout the course. Nearly all engineering projects in industry are accomplished by teams, because well-functioning teams can accomplish far more than the sum of their individual members. In this course, you will learn how to collaborate effectively with other students. You will receive guidance and feedback not only on your team’s products, but also on your team’s ability to work together.
Your teams will also have choices in how you demonstrate mastery of the course material. In place of two midterm exams, you will choose two projects of your own. The projects should demonstrate what you have learned in this course, but may incorporate your own interests within or beyond engineering.
Specific Instructional Objectives
Representation of information
-
Convert between decimal, binary, octal, and hexadecimal representations of integers (a)
-
Determine the number of errors that a code can detect or correct (a)
-
Understand two's complement representation of integers and determine whether overflow occurs in arithmetic operations (a)
-
Distinguish between a variety of decimal and alphanumeric codes (a)
Design and analysis of combinational networks
-
Understand the operation of discrete logic gates (a)
-
Analyze a combinational network using Boolean expressions (a)
-
Convert a verbal specification into a Boolean expression (c, e)
-
Understand basic properties of Boolean algebra: duality, complements, standard forms (n)
-
Apply Boolean algebra to prove identities and simplify expressions (a, e)
-
Use Karnaugh maps to find minimal sum-of-products and products-of-sums expressions (e)
-
Design combinational networks that use NAND, NOR, and XOR gates (c, e)
-
Design with MSI components such as encoders, decoders, multiplexers, adders, arithmetic-logic units, ROMs, and programmable logic arrays (c, e)
-
Calculate delays in ripple carry adders and combinational arrays (a)
Design and analysis of sequential networks
-
Understand the operation of latches; clocked, master-slave, and edge-triggered flip-flops; shift registers; and counters (a)
-
Plot and interpret timing diagrams (a, b)
-
Determine the functionality of sequential circuits from state diagrams and timing diagrams (a, b)
-
Translate sequential circuit specifications into state diagrams (c, e)
-
Design sequential circuit components (latches, flip-flops, registers, synchronous counters) using logic gates (c, e)
-
Synthesize general sequential circuits (c, e)
-
Understand tradeoffs in register and counter design (c)
Computer organization
-
Understand the operation of tri-state buffers and their uses in multiplexing outputs and enabling bi-directional signaling (a)
-
Understand the operation of random access memories (a)
-
Synthesize a large memory from smaller memories and decoders (c, e)
-
Design datapath components, including register files, buses, and functional units (c, e)
-
Design a hardwired control unit to implement an instruction set (c, e)
-
Design a microprogrammed control unit to implement an instruction set (c, e)
-
Understand tradeoffs between hardwired and microprogrammed control (c)
-
Understand instruction formats and addressing modes (a)
-
Understand the operation of stack instructions, control flow, and interrupts (a)
-
Specify new instructions and addressing modes in register transfer language (c, e)
-
Translate register transfer language statements into microcode (e)
-
Analyze the effects of individual instructions and machine-level programs (a)
-
Write short machine-level programs (c, e)
Laboratory skills
-
Use a Web conferencing system to communicate with instructors and other students (g, k)
-
Use professional CAD software on engineering workstations for schematic capture and simulation of small digital systems (b, k)
In the list of instructional objectives the letters (a), (b), ... refer to the parts of Criterion 3 in the Engineering Criteria 2000 used by the Accreditation Board for Engineering and Technology to accredit educational programs in engineering in the United States.
Criterion 3:
Engineering programs must demonstrate that their graduates have
(a) an ability to apply knowledge of mathematics, science, and engineering
(b) an ability to design and conduct experiments, as well as to analyze and interpret data
(c) an ability to design a system, component, or process to meet desired needs
(d) an ability to function on multi-disciplinary teams
(e) an ability to identify, formulate, and solve engineering problems
(f) an understanding of professional and ethical responsibility
(g) an ability to communicate effectively
(h) the broad education necessary to understand the impact of engineering solutions in a global and societal context
(i) a recognition of the need for, and an ability to engage in life-long learning
(j) a knowledge of contemporary issues
(k) an ability to use the techniques, skills, and modern engineering tools necessary for engineering practice