Syllabus for Roster(s):
- 15F CS 2330-100 (ENGR)
- 15F CS 2330-101 (ENGR)
- 15F CS 2330-102 (ENGR)
- 15F CS 2330-103 (ENGR)
- 15F CS 2330-104 (ENGR)
- 15F CS 2330-105 (ENGR)
- 15F CS 2330-106 (ENGR)
- 15F CS 2330-107 (ENGR)
- 15F CS 2330-200 (ENGR)
- 15F CS 2330-201 (ENGR)
Course Description (for SIS)
ECE/CS 2330 Digital Logic Design
Fall 2015
Class Meetings: Tues & Thurs 12:30 - 1:45 in Rice 130 and online
Studio meetings every week on Monday, Tuesday or Wednesday depending on your section.
What kind of a world could we create if we restricted all questions to those with a yes/no answer? If every color was pure black or white, no shades of grey? If every aspect of our lives could be enumerated on a checksheet, each box checked or blank? If every decision was a clear-cut choice between two opposite alternatives? You might expect a boring world indeed, but in this course you’ll see how interesting such a digital world can be, since it includes such devices as computers, smartphones, pet tracking systems, fitbits and much more.
Digital Logic Design is the process of designing complex digital systems using simple two-way switches, providing a physical device to answer yes or no. In this course we begin with binary (yes/no) phenomena and build successively more complex components and systems, ending with a simple processor. You will discover how simple gates are built from switches, how components are built from gates, how systems are built from components. At first we will assume that there is no concept of time and that everything we need to know is immediately available. This will allow us to design an interesting collection of useful devices. Then we will add the concept of time, from which the concept of memory will emerge, which will greatly expand the devices that we can design and use to create more complex systems. Our goal is to assemble a simple processor from the constituent components and to understand how software computations are performed on hardware.
Approach
This course will enable students to learn about digital systems by discovering how they work. Most topics are introduced through a guided exploration of a collection of digital components of increasing complexity. As the example components are examined and understood (what are the inputs, what are the outputs, what does it do), the purpose and importance of each component is defined. Alternative approaches are analyzed and considered and each component will be expanded, generalized and used in a larger system. By the end of the semester we will have a simple working processor to investigate.
Goals
In his course you will:
- experience how electrical and computer scientists and engineers build digital systems
- improve your problem-solving skills , including design and debugging skills
- design in multiple levels of abstraction, that is, be able to move from detailed component-level design to system design (where components are treated as building blocks) and vice-versa
- appreciate the need for precision in technical communications, particularly with respect to interface design
Learning Outcomes
Upon successful completion of this course, you will be able to translate a real-world problem into precise specifications for a digital system, design a system to meet those specifications and demonstrate that your solution solves the problem. Further, you will be able to take a digital system that has already been designed and implemented and deconstruct and analyze it to determine what it does, how it works, and how you can use it in your system.
Activities and Assignments
A great way to learn about digital systems is to play with example systems and see how they work; that’s what you’ll do in many classes. I’ll give you a circuit that I’ve built that does something important or useful. Working with a small group of classmates you will embark on a guided exploration of the given circuit, discovering its function and behavior. There may be a short orientation lecture before you begin exploration or a summary discussion after your discovery. After class, you may be asked to extend the behavior of the given circuit or to use it as part of another system. Each of the circuits that you will explore is a building block of a larger component that in turn is a building block of a simple processor.
You will also learn the process by which such circuits and components are designed and evaluated and you will design your own circuits to achieve specific functional requirements. In some cases your designs will be rendered with pencil on paper, in other cases your will build the circuits in software. Several assignments will be implemented in physical hardware in the lab.
A weekly pencil on paper quiz will be used to assess your learning and demonstrate mastery of the the design techniques, hand help you prepare for the three tests (also paper and pencil). Lab assignments are design projects that you implement in physical hardware or (for more complex designs) in software and demonstrate to the instructor. The final exam is comprehensive.
Prerequisites
The course has no prerequisites.
Textbook
Frank Vahid, Digital Design (2nd Edition), Wiley, 2010. Also available as E-book.
Grading
10% explorations; 10% Weekly and pop quizzes; 25% Studio assignments; 30% Midterm tests (3); 25% Final exam
Grade Scale: A 94.0; A- 92.0; B+ 88.0; B 85.0; B- 83.0; C+ 79.0; C 76.0; C- 74.0; D+ 70.0; D 65.0; D- 62.0
Topics
Welcome to the digital world
- switches, logic functions andcircuits
- digital representation of data
- logic, Boolean algebra and equivalence
You have everything that you need to know at the present moment
- inputs, outputs, functions and their representation
- the relationships between logic equations and circuits
- explorations of useful circuits (decoders, encoders, multiplexers, adders, comparators, shifters, ALU)
- combinational design process
Adding the concept of time
- remembering a single bit of information
- sequential systems, finite state machines
- exploration of useful circuits (flip-flops, registers, counters)
- controllers
- sequential design process
Digital systems
- controlling an assembly of digital components
- assembling the digital components to be controlled
- establishing the connections between them
- making the system programmable