We may earn an affiliate commission when you visit our partners.
Eduardo Corpeño and Marissa Siliezar

Learn about the RISC-V Instruction Set Architecture by creating applications in an actual RISC-V microcontroller. See many applications developed on a RISC-V embedded microcontroller board. We've chosen an inexpensive board so you may follow along if you want.

This course is part of a hands-on curriculum where you'll get some basic experience on the design and development of embedded applications using a RISC-V core. This curriculum contains the following courses:

Read more

Learn about the RISC-V Instruction Set Architecture by creating applications in an actual RISC-V microcontroller. See many applications developed on a RISC-V embedded microcontroller board. We've chosen an inexpensive board so you may follow along if you want.

This course is part of a hands-on curriculum where you'll get some basic experience on the design and development of embedded applications using a RISC-V core. This curriculum contains the following courses:

  1. Part 1: The Where you'll learn about the RISC-V Instruction Set Architecture.

  2. Part 2: Embedded Applications. Where you'll learn how to create basic applications using the on-chip peripherals.

  3. Part 3: Real Time Operating Systems. Where you'll learn how to create RTOS applications with an industry standard RTOS.

  4. Part 4: The Journey inside an RTOS. Where you'll learn how an RTOS works, now that you know how to use them.

The purpose of this first course is to get you acquainted with the RISC-V Instruction Set Architecture, covering the following topics, and more:

  1. About RISC-V

    1. The RISC philosophy.

    2. The RISC-V foundation.

  2. The RISC-V Instruction Set Architecture Details.

    1. CPU Registers.

    2. Addressing Modes.

    3. The Modular Instruction Set Variants.

      1. Base (Integer) Instruction Set.

      2. Multiplication Instruction Set.

      3. Atomic Operation Instruction Set.

      4. Compressed Instruction Set.

      5. Floating Point Instruction Set.

        1. Hands-On Boot Camp

  3. The GD32 Board, by Seeed Studio

  4. Segger Embedded Studio

    1. Creating a Project

    2. Compiling your Code

  5. Debugging

  6. Disassembled Code

Enroll now

What's inside

Learning objectives

  • How to design an embedded system of your own.
  • The steps to take when you have an embedded system in mind.
  • Tips and tricks in several steps of the design and implementation process.
  • How the risc-v architecture is organized.
  • The risc-v philosophy.

Syllabus

Introduction
Motivation 1: Become a part of the RISC-V community!
Motivation 2: Learn Computer Architecture
Motivation 3: Get over the Arduino!
Read more
About the Exercise Files
About RISC-V
CISC vs RISC Architectures
RISC-V ISA
The RISC-V Foundation
The RISC-V Reader: An Open Architecture Atlas
ARM and a Leg
Optional: A Crash Course on Computer Architecture
Parts of a Microprocessor-Based System
Why we need a Bus Architecture
The Bus Architecture
The Data Bus
The Address Bus
The Control Bus
How is it possible to drive a bus?
The Memory Subsystem
The Input/Output Subsystem
Optional: Inside the CPU
Parts of a CPU
Arithmetic Logic Unit
Registers
Special Registers
The Data Path
Control Logic
Instruction Encoding
Instruction Execution
Optional: Some Design Approaches
Instruction Set Architecture
Addressing Modes
FCLASS
Some Addressing Mode Examples
Number of Operands per Instruction
Harvard vs. Von Neumann
The RISC-V ISA
CPU Registers
Instruction Sets
Instruction Encoding, Part 1
Instruction Encoding, Part 2
Encoding of Immediate Values
RISC-V Reference Card
RV32I Integer Base ISA
Register Operations
Immediate Operations
Load and Store
Branches
Jumps
Load Immediates
RV32 Extension ISAs
RV32M Multiply Extension ISA
RV32F/D Floating-Point Extension ISAs
RV32C Compressed Extension ISA
Atomic Operations
Race Condition Example
Race Conditions
Implementing a Lock, Part 1
Implementing a Lock, Part 2
RV32A Atomic Extension ISA
The aq and rl bits
The GD32VF103 Board
The First Workaround
Some RISC-V SoCs
SiFive
Some RISC-V Boards
The Development Environment
Looking for an IDE
Finding SEGGER Embedded Studio
Setting up the Development Environment
Looking at the Sample Projects
Creating a Project
Building an Application
The Debugger
Using The Debugger
A Pickle
The Second Workaround
Step by Step Execution and Watches
Step by Step Execution in Assembly Language
Register Watches
Assembly Code with Integers
What's with the Silly Assembly Code?
Look at the Compressed Instructions
Function Calls
Assembly Code with Floats
Final Remarks
Wrap Up
Think of all the things we learned!
What's Next?

Save this course

Save Embedded Fun with RISC-V, Part 1: The RISC-V ISA to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Embedded Fun with RISC-V, Part 1: The RISC-V ISA with these activities:
Review Computer Architecture Fundamentals
Reinforce your understanding of computer architecture concepts, including CPU structure, memory organization, and instruction execution, to better grasp the RISC-V ISA.
Browse courses on Computer Architecture
Show steps
  • Review basic CPU components like ALU, registers, and control unit.
  • Study memory hierarchy and addressing modes.
  • Understand instruction cycle and execution flow.
Read 'RISC-V Reader: An Open Architecture Atlas'
Gain a deeper understanding of the RISC-V ISA by studying this comprehensive guide.
Show steps
  • Read the chapters related to the base integer instruction set.
  • Study the different instruction formats and addressing modes.
  • Compare the information in the book with the course material.
Read 'Computer Organization and Design RISC-V Edition'
Deepen your understanding of RISC-V architecture by studying a comprehensive textbook on computer organization and design.
Show steps
  • Read the chapters related to instruction set architecture and CPU design.
  • Work through the examples and exercises in the book.
  • Compare the concepts presented in the book with the course material.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Write Assembly Code for Simple Tasks
Practice writing RISC-V assembly code for basic tasks like arithmetic operations, data movement, and control flow to solidify your understanding of the instruction set.
Show steps
  • Write assembly code to add two numbers and store the result in memory.
  • Write assembly code to copy data from one memory location to another.
  • Write assembly code to implement a simple loop.
  • Test your code using the debugger.
Create a RISC-V Instruction Set Cheat Sheet
Compile a concise cheat sheet summarizing the most commonly used RISC-V instructions, their syntax, and their purpose for quick reference.
Show steps
  • List the core RISC-V instructions (RV32I).
  • Include instructions from the M, F, and C extensions.
  • Organize the cheat sheet by instruction type (e.g., arithmetic, memory, branch).
  • Add a brief description of each instruction's function.
Implement a Simple Calculator in RISC-V Assembly
Develop a basic calculator application in RISC-V assembly language that performs addition, subtraction, multiplication, and division operations.
Show steps
  • Design the calculator's user interface (input/output).
  • Write assembly code to handle user input and perform calculations.
  • Implement error handling (e.g., division by zero).
  • Test the calculator thoroughly.
Contribute to a RISC-V Open Source Project
Contribute to an existing RISC-V open-source project, such as a software library, a toolchain, or a hardware design, to gain practical experience and collaborate with other developers.
Show steps
  • Find a RISC-V open-source project on GitHub or GitLab.
  • Read the project's documentation and contribution guidelines.
  • Identify a bug to fix or a feature to implement.
  • Submit a pull request with your changes.

Career center

Learners who complete Embedded Fun with RISC-V, Part 1: The RISC-V ISA will develop knowledge and skills that may be useful to these careers:
Embedded Systems Engineer
An embedded systems engineer designs, develops, and tests software and hardware for embedded systems. The work involves creating applications for microcontrollers, integrating hardware components, and ensuring the system meets performance requirements. A course focusing on the RISC-V Instruction Set Architecture is incredibly valuable as it provides a deep understanding of the core principles underlying modern embedded systems. Focusing on the RISC-V ISA helps build a foundation for working effectively with a wide array of embedded processors. This course, with its emphasis on RISC-V architecture and hands-on application development, is an ideal starting point for aspiring embedded systems engineers.
Firmware Engineer
A firmware engineer specializes in developing low-level software that controls hardware devices. This includes writing code for microcontrollers, debugging hardware interactions, and optimizing performance. This course, explaining the RISC-V Instruction Set Architecture, is directly relevant to this role, as firmware engineers frequently work with these architectures. By learning about CPU registers, addressing modes, and instruction set variants, such as those covered in this course, you are one step closer to understanding how to write efficient and reliable firmware. The hands-on experience with the GD32 board and Segger Embedded Studio also directly translates to real-world firmware development workflows.
Hardware Engineer
Hardware engineers design, develop, and test computer systems and components. They work on everything from circuit boards to processors. While hardware engineers might not always delve into instruction set architectures, understanding the RISC-V ISA can provide valuable insights into how software interacts with hardware. Knowledge of the RISC-V architecture, as taught in this course, helps you understand how the hardware executes instructions and manages data. Furthermore, the course’s exploration of bus architectures, memory subsystems, and input/output subsystems helps hardware engineers design more efficient and effective systems.
Internet of Things Engineer
Internet of Things engineers design and develop connected devices that can communicate with each other and the internet. These devices often rely on embedded systems and microcontrollers with RISC-V architecture. This course, explaining the RISC-V Instruction Set Architecture, is beneficial to Internet of Things engineers as it provides a comprehensive foundation in the underlying architecture of many Internet of Things devices. This course may improve their ability to design and implement efficient and secure Internet of Things solutions.
Systems Architect
A systems architect designs and oversees the implementation of complex computer systems, ensuring that all components work together effectively. A deep understanding of instruction set architectures, like RISC-V, plays a pivotal role in system performance. This course’s detailed exploration of the RISC-V Instruction Set Architecture, including CPU registers, addressing modes, and instruction set variants, helps examine the fundamental building blocks of system design. By understanding the principles of RISC-V, a systems architect can make informed decisions about hardware and software choices. In this way, they optimize the overall performance and efficiency of the system.
Computer Architect
A computer architect designs and develops the architecture of computer systems, including processors, memory systems, and communication networks. This often requires a deep understanding of instruction set architectures and their implications. This course offers a dedicated introduction to the RISC-V Instruction Set Architecture, including CPU registers, addressing modes, and instruction set variants. For anyone interested in becoming a computer architect, this course helps examine the fundamental building blocks of modern processor design. Given the growing adoption of RISC-V, especially, this course may be quite useful.
Cryptography Engineer
Cryptography engineers design and implement secure communication systems and cryptographic algorithms. Understanding the underlying hardware and software architectures is crucial for ensuring the security of these systems. This course may be useful for cryptography engineers who are working with embedded systems based on the RISC-V architecture. By gaining a deeper understanding of the RISC-V Instruction Set Architecture, cryptography engineers can better design and implement secure cryptographic solutions for embedded devices.
Robotics Engineer
Robotics engineers design, build, and program robots for a variety of applications. This often involves working with embedded systems and microcontrollers. This course may be useful for robotic engineers as it explores the RISC-V Instruction Set Architecture and its implementation in embedded systems. The knowledge gained from this course of RISC-V architecture, along with Segger Embedded Studio, can be applied to programming and controlling robots.
Signal Processing Engineer
Signal processing engineers develop algorithms and systems for processing signals, such as audio, images, and video. Many signal processing applications are implemented on embedded systems, making knowledge of instruction set architectures valuable. This course may be useful for signal processing engineers who are working with embedded systems based on the RISC-V architecture. This helps them optimize their algorithms for the specific hardware platform and improve performance.
Software Engineer
Software engineers design, develop, and test software applications. While this role is broad, understanding computer architecture can provide a deeper understanding of how software interacts with hardware. Though a software engineer is often not concerned with instruction set architecture, they can benefit from understanding ISA. This course provides a solid introduction to the RISC-V Instruction Set Architecture. This course may be useful to software engineers by helping them optimize their code for specific hardware platforms and troubleshoot performance issues.
Academic Researcher
Academic researchers investigate new scientific principles. Often, this requires significant understanding of computer architecture and the impact of computer architecture. This course may be helpful to academic researchers because it explores topics such as microprocessor-based systems, along with ISA. Given its exploration of RISC-V architecture, the knowledge gained from this course may also help academic individuals stay more informed.
Research and Development Engineer
Research and development engineers conduct research and develop new technologies in various fields. This often involves exploring emerging architectures and technologies. This course may be beneficial for research and development engineers interested in exploring the RISC-V architecture and its potential applications. The knowledge gained from this course helps research and development engineers stay at the forefront of technological innovation.
Test Engineer
Test engineers design and implement tests to ensure the quality and reliability of hardware and software systems. Understanding the underlying architecture of a system is crucial for developing effective tests. This course may be helpful for test engineers working with embedded systems based on the RISC-V architecture. The knowledge gained from this course helps test engineers create targeted tests that can identify potential issues and improve the overall quality of the system.
Application Engineer
Application engineers provide technical support and guidance to customers using a company's products. This may require understanding the underlying hardware and software architectures. This course may be useful for application engineers supporting embedded systems based on the RISC-V architecture. By gaining a deeper understanding of the RISC-V Instruction Set Architecture, application engineers can better assist customers with their technical issues and help them effectively use the company's products.
Technical Consultant
A technical consultant provides expert advice and guidance to companies on technology-related issues. This often requires a broad understanding of various technologies and their applications. This course may be useful for technical consultants who need to advise clients on embedded systems or RISC-V architecture. The knowledge gained from this course helps technical consultants provide informed recommendations and guidance to their clients.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Embedded Fun with RISC-V, Part 1: The RISC-V ISA.
Provides a comprehensive overview of computer organization and design, with a specific focus on the RISC-V architecture. It covers topics such as instruction set design, pipelining, memory systems, and I/O. This book is commonly used as a textbook at academic institutions. Reading this book will provide a deeper understanding of the concepts covered in the course and prepare you for more advanced topics.
Provides a detailed overview of the RISC-V instruction set architecture. It covers the base integer instruction set, as well as several extensions. This book valuable resource for anyone who wants to learn more about RISC-V. It is particularly useful for understanding the different instruction formats and addressing modes.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser