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

It's time to take on a Challenge. How does designing a CPU sound?

In this fourth part of the FPGA Embedded Design series, we'll design a CPU from scratch to finally get it up and running on several platforms.

We'll write most of the code in the Vivado Design Suite, but you'll have the chance to see it working as well in Quartus Prime, EDA Playground or LabsLand, so you can follow along with your favorite tools. The FPGA boards we'll use are the BASYS3, by Digilent (with a Xilinx FPGA), and the DE0-CV from Terasic (with an Intel FPGA).

This course consists of three main parts:

Read more

It's time to take on a Challenge. How does designing a CPU sound?

In this fourth part of the FPGA Embedded Design series, we'll design a CPU from scratch to finally get it up and running on several platforms.

We'll write most of the code in the Vivado Design Suite, but you'll have the chance to see it working as well in Quartus Prime, EDA Playground or LabsLand, so you can follow along with your favorite tools. The FPGA boards we'll use are the BASYS3, by Digilent (with a Xilinx FPGA), and the DE0-CV from Terasic (with an Intel FPGA).

This course consists of three main parts:

  1. Foundations of Computer Architecture, where we'll cover the essentials of CPU design and jargon.

  2. Design of our own CPU, where we'll make several design decisions to come up with a soft processor that meets our needs.

  3. Hands-On Development, where we'll write the code, simulate and finally get our CPU into an FPGA board. No purchases are required for this part, but it sure helps to have your own board to follow along, and keep on tinkering in the future with your new soft processor.

What are you waiting for? Let's have fun designing a CPU.  

Enroll now

Here's a deal for you

We found an offer that may be relevant to this course.
Save money when you learn. All coupon codes, vouchers, and discounts are applied automatically unless otherwise noted.

What's inside

Learning objectives

  • How a cpu works.
  • How to design a cpu core of your own.
  • How to design an instruction set architecture
  • How to design a cpu core in verilog.
  • How to synthesize a cpu core for altera and xilinx fpgas.

Syllabus

Introduction
Instructor Introduction
Motivation 1
Motivation 2
Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Covers the essentials of CPU design and jargon, which is foundational knowledge for electrical engineers and computer scientists
Offers hands-on development, where learners write code, simulate, and implement their CPU on an FPGA board, which is valuable for practical experience
Allows learners to follow along with their favorite tools such as Vivado Design Suite, Quartus Prime, EDA Playground or LabsLand, which promotes flexibility
Explores structural vs behavioral approaches, which are key concepts in computer architecture and digital design
Requires FPGA boards such as BASYS3 and DE0-CV, which may require additional purchases to fully follow along with the hands-on development
Focuses on designing a CPU from scratch and implementing it on FPGA platforms, which may not be relevant for learners interested in software development

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Hands-on fpga microprocessor design

According to students, this is a challenging yet highly rewarding course that focuses on designing a CPU from scratch and implementing it on FPGA boards. Learners highlight the practical, hands-on approach as a major strength, finding the process of building their own processor a great learning experience. While the course offers clear explanations of computer architecture fundamentals, several reviewers note that it requires significant prerequisites, particularly from earlier parts of the series, and is not suitable for beginners. Some mention potential difficulties with tool setup and specific hardware configurations. Overall, it's seen as a valuable course for gaining practical embedded design skills.
Fundamentals of CPU design explained well.
"The explanation of computer architecture basics and CPU parts was very clear."
"Helped solidify my understanding of the CPU pipeline and instruction execution."
"I found the ISA design section and encoding explanations well-presented."
Gain valuable skills for embedded design.
"This course gives you practical skills you can immediately use in embedded design projects."
"I feel more confident working with FPGA projects and designing hardware after this."
"Applying Verilog to build a complex component like a CPU was a great practical exercise."
Experience building a processor from scratch.
"Building the CPU from scratch was the most rewarding part of the course for me."
"I loved the hands-on process of designing my own processor and seeing it run."
"Getting the CPU running on the board was a great feeling and solidified the concepts."
"The practical labs where you write the RTL code are excellent."
Potential difficulties with tool/board configuration.
"Getting Vivado set up correctly and working with my specific board was a bit tricky at first."
"Had some issues with the specific FPGA board configuration files and constraints."
"The labs assume you have the recommended hardware and toolchain working seamlessly."
Not for beginners; assumes prior FPGA knowledge.
"This course definitely requires solid background from the previous parts of the series."
"It's quite challenging and definitely not for beginners in digital design or FPGAs."
"Needed to review digital logic and Verilog basics before starting this part."
"Make sure you are comfortable with FPGA concepts and tools beforehand."

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 FPGA Embedded Design, Part 4 - Microprocessor Design with these activities:
Review Computer Architecture Fundamentals
Solidify your understanding of computer architecture fundamentals to better grasp the CPU design concepts covered in the course.
Browse courses on Computer Architecture
Show steps
  • Review basic logic gates and their functions.
  • Study different memory types and their characteristics.
  • Understand the basic components of a CPU.
Read 'Digital Design and Computer Architecture'
Gain a solid understanding of digital design principles and how they relate to computer architecture.
Show steps
  • Read the chapters on digital logic and combinational circuits.
  • Study the sections on sequential circuits and CPU design.
Read 'Computer Organization and Design'
Deepen your understanding of CPU architecture and design principles by studying a comprehensive textbook.
Show steps
  • Read the chapters related to CPU architecture and instruction set design.
  • Work through the examples and exercises in the book.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Design a Simple Instruction Set Architecture (ISA)
Apply the concepts learned in the course by designing your own ISA, including instruction formats, addressing modes, and instruction set encoding.
Show steps
  • Define the instruction formats and addressing modes.
  • Create an instruction set encoding scheme.
  • Document your ISA design decisions.
Create a Presentation on CPU Design Trade-offs
Research and present on the various design trade-offs involved in CPU design, such as performance vs. power consumption, complexity vs. cost, and RISC vs. CISC architectures.
Show steps
  • Research different CPU design trade-offs.
  • Prepare a presentation outlining the trade-offs and their implications.
  • Present your findings to peers or colleagues.
Implement Basic CPU Instructions in Verilog
Reinforce your understanding of Verilog and CPU instruction implementation by writing Verilog code for basic instructions like addition, subtraction, and logical operations.
Show steps
  • Choose a set of basic CPU instructions.
  • Write Verilog code to implement each instruction.
  • Test your implementation using a simulator.
Contribute to an Open-Source CPU Project
Gain practical experience by contributing to an open-source CPU project, such as reporting bugs, writing documentation, or contributing code.
Show steps
  • Find an open-source CPU project on platforms like GitHub.
  • Identify areas where you can contribute.
  • Submit your contributions to the project.

Career center

Learners who complete FPGA Embedded Design, Part 4 - Microprocessor Design will develop knowledge and skills that may be useful to these careers:
FPGA Engineer
An FPGA engineer develops and implements digital circuits using field-programmable gate arrays. This course, with its focus on designing a CPU from the ground up using Verilog and implementing it on both Altera and Xilinx FPGAs, aligns directly with this job. Those who seek to work in this career will find that learning through the practical application of developing a soft processor will help them to understand the nuances of FPGA design. The hands-on experience of coding, simulating, and deploying a CPU in an FPGA environment is especially useful.
Computer Architect
A computer architect designs the structure and organization of computer systems, including the core processors, memory subsystems, and input/output components. This course provides a deep dive into the fundamentals of CPU design, instruction set architecture, and the interaction between different hardware components. This aligns directly with the daily tasks of a computer architect. The course also covers various design approaches and their tradeoffs, which provides a comprehensive view of the field. Those interested in this career will find this course highly applicable.
Digital Design Engineer
A digital design engineer designs and implements digital circuits using a range of different technologies. This course focuses on the design of a CPU from start to finish, including the digital logic and architecture required for its function. The course work includes synthesizing their design on FPGA which may prove most useful for this career. The study of the bus architecture, data path, and control logic are also directly applicable to this role. The hands-on experience with Verilog and FPGA implementation help you become a digital design engineer.
Embedded Systems Engineer
An embedded systems engineer works on the design, development, and implementation of embedded systems. This role involves understanding hardware and software interactions, including how CPUs function within those systems. This course directly tackles CPU design, instruction set architecture, and the practical implementation of a processor on FPGA boards. The in-depth study of CPU design and structure makes this course an effective option for those aiming to pursue a career in embedded systems. The course's detailed explanation of computer architecture and the hands-on development provides a particularly strong base.
Processor Architect
A processor architect is responsible for defining the structure and behavior of microprocessors. This career requires an understanding of instruction set architecture, data paths, and control logic, all of which are covered in this course. The hands-on project of designing and implementing a CPU provides valuable experience for those aspiring to be processor architects. The course's theoretical discussions are paired with practical hands on experience, which will benefit this career. This course will be highly relevant for this career.
Hardware Engineer
A hardware engineer designs, develops, and tests computer hardware components and systems. This role often requires in-depth knowledge of computer architecture and digital logic, both of which are covered in this course. The material includes the fundamental concepts of CPU design, instruction set architecture, and the development of a soft processor. The hands-on design work provides practical experience and a foundation for this role. For those looking to work directly with hardware design, this course may be particularly useful.
RTL Designer
An RTL designer is responsible for creating hardware designs using Register Transfer Level languages, such as Verilog. This course includes the design of a CPU using Verilog, and also goes over low-level behavioral code. The hands-on aspect of coding, along with the focus on computer architecture, provides a solid foundation for this role. This course will be especially useful for those seeking to learn the practical aspects of RTL design including working with state machines and opcodes.
Application Specific Integrated Circuit Engineer
Application Specific Integrated Circuit engineers work on developing special-purpose integrated circuits for particular applications. This course will help students learn how processors are designed, which is relevant to this role. The course includes a hands-on project of designing a CPU from scratch which is excellent experience for those in this career. The course explores design approaches, instruction set architecture, and hardware implementation in both Intel and Xilinx FPGA boards. This course will be particularly useful for those interested in this career. Many roles in this field require an advanced degree.
System on a Chip Engineer
A system on a chip engineer develops integrated systems that include processors, memory, and peripherals on a single chip. This course, by focusing on the design of a CPU, provides insight into an important component of such systems. Understanding the details of CPU design and how various components interact, as discussed in the course, helps build a knowledge base for this role. The hands on approach also helps students become proficient in working with embedded systems. This course will be useful for someone interested in this field.
Verification Engineer
A verification engineer is responsible for testing and validating the functionality of digital circuits and systems. This course includes simulation and synthesis of a CPU design and will help build the ability to check for correct operation. Anyone seeking a role in verification will find both the practical application and the theoretical grounding in computer architecture useful. This course helps build a foundation for those who wish to test and validate hardware designs that include a CPU.
Research Scientist
A research scientist in the field of computer engineering may explore next generation architectures and innovative design techniques. The course's in-depth treatment of computer architecture, instruction sets, and CPU implementation will be useful for those who aspire to this career. Many research positions require an advanced degree, like a PhD. The hands-on project of designing a CPU will provide important practical experience for those seeking to enter academia or industrial research. This course will likely be useful for those pursuing this career path.
Firmware Engineer
A firmware engineer develops the low-level software that controls hardware, including microprocessors. While this course focuses on hardware design, it provides a fundamental understanding of how processors work at the core level. This knowledge becomes especially valuable when working with firmware that interacts directly with the hardware. The detailed study of computer architecture, instruction sets, and hands-on implementation will be relevant for those working on low level software for hardware. This course may be useful for those seeking this career.
Robotics Engineer
Robotics engineers focus on the design, development, and testing of robots. A strong understanding of computer architecture and processor functionality is essential in this role. This course, with its focus on how a CPU works and how to design one, may be valuable to those wishing to enter this field. The knowledge of how software interacts with hardware, particularly how instruction sets are executed, could also prove helpful. This course may be useful for students interested in this career.
Technical Consultant
Technical consultants advise clients on the use of technology solutions. While this course focuses on low-level hardware design, it provides useful insights into the inner workings of computers. Understanding the complexities of CPU architecture, instruction sets, and implementation can be beneficial for those in this role as they will need to translate technical jargon into client friendly language. This course may be useful for technical consultants in the computing industry.
Computer Systems Analyst
A computer systems analyst studies an organization's computer systems and procedures and designs information systems solutions to help the organization operate more efficiently and effectively. This course provides relevant insights into how a computer works at the hardware level. While the course itself teaches hardware and low-level design, the knowledge of what a CPU does and how it works may be useful to those in the computer systems analyst career. They may find this course helpful.

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 FPGA Embedded Design, Part 4 - Microprocessor Design.
Comprehensive guide to computer organization and design, covering topics such as instruction set architecture, pipelining, memory hierarchy, and I/O systems. It provides a solid foundation for understanding how CPUs work and how they are designed. This book is commonly used as a textbook at academic institutions. It adds significant depth to the course material.
Provides a clear and accessible introduction to digital design and computer architecture. It covers the fundamental concepts of digital logic, combinational and sequential circuits, and CPU design. This book is helpful in providing background knowledge. It is valuable as additional reading.

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