|
|
3 Credits | 300 Level | 50 Contact hours
Digital Design (2nd Edition), Frank Vahid, Wiley, 2010.
The C programming language, By Brian W Kernighan and Dennis Ritchie, Prentice Hall; 2nd Edition (04/88)
Students learn the basic concepts of computer systems. Students are introduced to the concepts of computer architecture abstraction hierarchy ranging from a step above silicon to a step below modern programming languages. Students in this course will learn to write code in C and Assembly, how data is stored in memory, memory organization, data representation, the logical design of computers, the basics of hardware design from gates and registers through general-purpose computers, and legal, ethical, and security issues related to these topics.
Engineering in all fields is progressing at a rapid rate; the ability to design and create digital systems is increasingly important. Logic Design is the process of designing complex digital systems using simple two way switches. In this course we begin with binary (yes/no) phenomena and build successively more complex components and systems.
You will discover how simple gates are built from switches, how components are built from gates, how systems are built from components, 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.
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. There may be a short orientation lecture before you begin exploration or a summary discussion after your discovery. After that, you may be asked to extend the behavior of the given circuit or to use it as part of another system.
You will also learn the process by which such circuits and you will design your own circuits to achieve specific functional requirements.
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 computer processor. Lastly, you will learn the basics about embedded systems programming using real ARM processors as key piece of IoT .
1. Binary numbers. Octal, Hex. 2s complement representation.
2. Encoding and Decoding. Binary arithmetic
3. Combinational Logic Design. Boolean Logic Gates. Boolean Algebra
4. Representation of Boolean functions. Multiple-Output Combinational Circuits
5. Combinational Logic Design Process. Minimization of functions
6. Decoders and Muxes
7. Sequential Logic Design. Flip-Flops. Timing diagrams. Clocks.
8. Finite-State Machines (FSMs)
9. Controller design. Registers. Shifters
10. Reverse engineering of sequential circuits.
11. Programmable Processors. C introduction
12. C programming. Procedures. Arrays. C std library conventions
13. C programming: Output. stdio.h
14. C programming: Input. Lookup tables LUT. memory errors
15. Compilation. Compile-time info. Data representation. Assembly language. x86-64 assembly.
16. Computer Architecture and Processor Technology. x86-64 assembly. Data movement
17. Datapath Components: Arithmetic Logic Units. Adders and Multipliers
18. Register Files and Memories. RAM / ROM memories. Addressing.
19. C programming: interrupts & timers
At the end of this course you will have:
• Better understanding how digital systems impact people’s lives.
• Experience how computer scientists and engineers build digital systems to solve a wide range of real problems in all fields.
• Improved your problem-solving skills, including design and debugging skills.
• Analyzed and designed in multiple levels of abstraction, that is, be able to move from detailed component-level design to system design.
• Learned the logical design of computers and the basic practical aspects about computer
programming using C, using modern ARM processors, as key piece of the Internet of Things (IoT).
• Understand how C become assembly and how assembly is run by a computer. Describe how
data is stored in memory.
• Have better understanding of the need for precision in technical communications, particularly about the interface design.
Your final course average will be calculated using the following method:
• Labs and Exercises – 30%
• Assignments – 20%
• Exam 1 – 15%
• Exam 2 – 15%
• Final Exam – 20%
|
|