CS-173 / coefficient 7

Teacher: Stojilovic Mirjana

Language: English

## Summary

Welcome to the introductory course in digital design and computer architecture. In this course, we will embark on a journey into the world of digital systems, exploring the fundamental principles and concepts that underpin modern computing technology.

## Content

Part I: Number Systems

Digital systems are built from circuits that process binary digits (zeros and ones). This part of the course aims to show how familiar numeric quantities can be represented and manipulated in a digital system. We will describe binary number systems and show how addition and subtraction are performed.

Part II: Digital Logic and Design with Verilog

Binary logic circuits have the dominant role in digital technology. We will discover logic gates and expressions, combinational and sequential logic elements, and build state machines. We will design and simulate logic circuits in Logisim-Evolution and Verilog hardware description language.

Part III: Intro to Computer Architecture

We will discover the fundamental building blocks of computers and how they are organized. On one side, we will study a basic processor architecture and the RISC-V open-standard ISA. On the other, we will discuss the future of computing and the role of domain-specific architectures. The basics of FPGA architecture and design flow will also be covered.

## Keywords

• number systems, logic gates, digital logic, delay, frequency, power, arithmetic circuits, combinational circuits, sequential circuits, finite state machines
• memory, computer organization, CPU, FPGA, GPU, TPU
• RISC-V ISA
• Logisim-Evolution, Verilog, Icarus Verilog, GTKWave, Visual Studio Code

## Learning Outcomes

By the end of the course, the student must be able to:

• Analyze the behavior of a digital circuit
• Describe digital systems in Verilog
• Design and test digital systems
• Explain basic components of a computer
• Create fully functional digital systems, including a simple CPU
• Realize a fully functional piece of RISC-V assembly code
• Describe the functionality of a piece of RISC-V assembly code
• Characterize various number systems
• Reason about the factors affecting the performance of digital systems
• Describe various domain-specific architectures
• Describe the importance of reduced-precision computing
• Design common arithmetic circuits
• Describe field-programmable gate arrays

## Transversal skills

• Use both general and domain specific IT resources and tools
• Assess one's own level of skill acquisition, and plan their on-going learning goals.
• Communicate effectively, being understood, including across different languages and cultures.
• Continue to work through difficulties or initial failure to find optimal solutions.

## Teaching methods

• Ex cathedra
• Flipped classroom
• Exercices

## Expected student activities

• Attending the course and exercise sessions
• Completing the assignments
• Participating in the discussion on the forum

## Assessment methods

• Midterm exam (written)
• Final exam in the exam session (written)

## Supervision

 Office hours Yes Assistants Yes Forum Yes

Yes

## Bibliography

• John F. Wakerly (2018), Digital Design Principles and Practices with Verilog (5th ed.), Pearson
• Stephen Brown and Zvonko Vranesic (2014), Fundamentals of Digital Logic with Verilog Design (3rd ed.), McGraw-Hill
• Milos D. Ercegovac and Tomas Lang (2004), Digital Arithmetic, Morgan Kauffmann Publishers
• David Patterson and John Hennessy (2020), Computer Organization and Design RISC-V Edition: The Hardware Software Interface (2nd ed.), Morgan Kauffmann Publishers
• David Patterson and Andrew Waterman (2017), The RISC-V Reader: An Open Architecture Atlas (1st ed.), Strawberry Canyon LLC

## Prerequisite for

CS-200 Computer Architecture

## In the programs

• Semester: Spring
• Exam form: Written (summer session)
• Subject examined: Fundamentals of digital systems
• Lecture: 3 Hour(s) per week x 14 weeks
• Exercises: 4 Hour(s) per week x 14 weeks
• Type: mandatory
• Semester: Spring
• Exam form: Written (summer session)
• Subject examined: Fundamentals of digital systems
• Lecture: 3 Hour(s) per week x 14 weeks
• Exercises: 4 Hour(s) per week x 14 weeks
• Type: mandatory
• Semester: Spring
• Exam form: Written (summer session)
• Subject examined: Fundamentals of digital systems
• Lecture: 3 Hour(s) per week x 14 weeks
• Exercises: 4 Hour(s) per week x 14 weeks
• Type: optional

## Related courses

Results from graphsearch.epfl.ch.