We may earn an affiliate commission when you visit our partners.
Course image
Ross McGowan

If you want to know how a computer works then this course is for you. I work through the design of a simple CPU (Central Processing Unit) which is the beating heart of a modern computer. I design and simulate each block of the CPU in an online tool called Logisim. You can download the tool and simulate the CPU on your own computer or if you  like you can take a copy of my simulation files and just load them into the tool and simulate what you have learned in the videos or just listen along to the videos (it's up to you).

Read more

If you want to know how a computer works then this course is for you. I work through the design of a simple CPU (Central Processing Unit) which is the beating heart of a modern computer. I design and simulate each block of the CPU in an online tool called Logisim. You can download the tool and simulate the CPU on your own computer or if you  like you can take a copy of my simulation files and just load them into the tool and simulate what you have learned in the videos or just listen along to the videos (it's up to you).

I have added subtitles for 78 different languages. If your language is not there then get in touch and I will add it in. If you are not a native English speaker then try the subtitles and run the videos at 0.75x speed.

First we download the free design tool called LOGISIM in which we design and simulate our CPU and take a look around the tool and show you how it works. Then the fun begins. We design and simulate the following blocks

Simple logic gates

1 bit memory cell

8 bit memory cell

8 bit register

Decoder

RAM (Random Access Memory)

ALU (Arithmetic Logic Unit)

Clock

We then take a break from our hard work (pheeewww. ) and ask the question ,  ' Can a computer answer the question of Life the Universe and Everything ? '  We look at some of the ideas behind what a computer is and what it can and more importantly cannot do . We answer this question in the next two videos.

Algorithms

Turing Machines

After this little break we then get back to designing our CPU. We design and simulate the most difficult section called the Control Unit. This is where the MAGIC happens and you will get that amazing EUREKA moment when you can say, '. ' In this section we build up the This Once you get to this point you will know and you will be home and dry . )

We then model the CPU using Excel VBA and from this build an This will help us write our Finally we are in a position to load the CPU up with our first assembly language program. An algorithm that multiplies 2 numbers together (might not sound like much but you can then design your own algorithms and simulate them on YOUR OWN CPU).

We then look at the Top Level Simulation. We load up the CPU RAM (memory) with our first program and watch it running through the program live right in front of our eyes. You can let it execute the code quickly or you can step through a 0 and a 1 at a time and see every little detail of what is happening inside the CPU that YOU have just designed .

Also keep a look out in the bonus section for extra material that I will be periodically adding. I expand the CPU from 8 bits to 16 bits , create some more assembly language algorithms that run on the CPU and explain in detail the VBA code from the assembler and debugger (

This course follows the CPU design in the book ButHowDoItKnow (The Basic Principles of Computers for Everyone). You do not need to buy the book to follow the course but I would highly recommend the book.

.

Enroll now

What's inside

Learning objectives

  • Design and simulate an 8 bit cpu
  • Create your own instruction set
  • Create your own assembly language
  • Create your own assembler in excel
  • Create your own assembly language debugger in excel vba
  • Write your own assembly language programs
  • Put simply , 'if you want to know how a computer works then take this course !!!'
  • That's right , 'if you really want to know how a computer works then take this course !!!'
  • Subtitles added in 78 different languages

Syllabus

RAM , ALU , Registers and Clock

Welcome to the course. To get started right away you can download the circuit design tool LOGISIM from the resource link. You will need to have java running on your machine as well so click the java link to download this. The third link will give you access to 3 files, we only need one at the moment the CPU_DESIGN file. If you open this file in LOGISIM then you will see the WELCOME screen. Just click on the CPU_MEM_1 block to start simulating your first circuit. Or just start building your own copy in LOGISIM along with the videos. Note the other 2 files called ASSEMBLER  and  MULTIPLYSIM will be used at the end of the video series. I have also added 9 simulation files that I used to build up the control section if you want to re-create these simulations (the links are in the resources of the control section videos. HAVE FUN !!!

A couple of students say they couldn't download the files in the resources section so I have added the extra zip file so if you have any difficulties then try downloading from downloadable materials or External Resources.

Read more

In this video we take a look at the software tool that we will be using throught the rest of the course. Logisim is a free tool which can be downloaded from the following address http://www.cburch.com/logisim/download.html just press the download link on bullet point 2. New course video.

In this video we look at building  AND , OR ,NOT, XOR ,NOR gates using the NAND gate. This is an easy introduction to get you used to using the simulation tool. New course video.

A look ahead at what we will build over the next 10 video lectures. This video will give you a road map to what we will learn in the next 10 videos. New course video.

In this video we build up a 1 bit memory cell. New course video.

In this video we take the 1 bit memory cell and expand it to a 1 byte memory cell. New course video.

In this video we take the 8 bit memory cell and produce a single 8 bit register.New course video.

In this video we build up the decoder block. Don't worry if you don't know what this is as it is all explained in the video.New course video.

An automated method of designing combinational logic circuits in Logisim.

In this video I describe the control buffer which is used throughout the rest of the CPU design. This is also known as a unity gain buffer.

In this video we build up the 256 byte RAM. New course video.

In this video we build up the Arithmetic Logic Unit. New course video.

In this video we design the clock circuit. New course video.

In this video we start bringing some of our blocks together and have an overview of the final design in order to see our road map ahead. New course video.

In the famous book The Hitch Hikers Guide to the Galaxy by Douglas Adams the computer Deep Thought spends millions of years working out the answer to Life the Universe and Everything - answer is 42.

Over the next 2 videos we look at what an algorithm is and what it can and more important cannot do for you. If you are not interested in the mathematics then just skip the  next 2 videos and move right onto the CONTROL SECTION. New course video.

We continue our mathematical look at computers with the idea of a Turing Machine. I have used the book ' The Emperors New Mind ' by Roger Penrose chapter 2 in order to produce this video. If you are interested in the content of this video then I would recommend reading this.New course video.

Control Section

In this video we start building up the most complicated section of our cpu the Control Section. We start by adding 2 numbers. New course video.

In this video we will take a look at the stepper that is used in the control section.

In this video we look at the fetch execute cycle that is at the heart of every cpu. New course video.

In this video we look at the ALU instruction within the control unit. New course video.

In this video we look at the Load and Store instructions within the control unit. New course video.

In this video we look at the data instruction within the control unit. New course video.

In this video we look at the Jump Register instruction within the control unit. New course video.

In this video we look at the jump address instruction within the control unit. New course video.

In this video we look at the jump if instruction within the control unit.

In this video we look at the clear flags instruction. New course video.

Assembly Language (Assembler and Debugger)

In this video we look at a simple assembler for the cpu built in microsoft excel. You can download the assembler for excel from the link below. Make sure you ENABLE MACROS in excel for it to work. Also it asks for a path to save the file to , for example 'C:\Users\Ross\Desktop' , this is the path to my desktop but you can change this to suit yourself. Good luck.

In this video we design our first assembly language program. New course video.

I this video we look at a model of the CPU in Excel VBA and see how this allows us to create an Assembly Language Debugger. SEE THE UPDATED VERSION IN THE RESOURCES SECTION.

Load and Run a Program

In this video we complete the control section then build up the CPU using all the blocks that we have designed so far.

In this video we provide a method to reset the CPU so at initialisation all the registers and address locations contain zeros.

We need an automated method for loading a program into the CPU.

A final simulation at the top level multiplying 2 numbers together.

Goodbye and some suggestions for further study.

New Design and Some other Interesting Stuff

Here is one suggestion to improve the running of the CPU.

In this video I go into detail as to how I wrote the Assembly Language Debugger.

In this video I show how to use the debugger in Excel to write the assembly language code for the Fibonacci series and then simulate the assembly language code in the CPU.

In this video we look at extending the 8 bit design to a 16 bit design.

It's been a while since I first put this course on Udemy. It's about time I did something useful with this CPU. This is a taster of for the next course DESIGN A CPU (SUPERCHARGED) where we design a calculator using our CPU. I will update this section with my progress and let you know when the new course will be available. I will also leave my new designs in the resources section if you want to have a play.

Bonus Section
Bonus Lecture

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Provides foundational understanding of computer hardware, architecture, and assembly language
Involves hands-on simulation in an online tool, fostering practical learning
Covers topics from logic gates to Turing machines, providing a comprehensive overview
Taught by Ross McGowan, an experienced instructor with over 20 years in the industry
Utilizes an accessible and easy-to-use simulation tool, eliminating the need for specialized hardware or software
May require additional resources for a deeper understanding of assembly language programming

Save this course

Save Design a CPU 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 Design a CPU with these activities:
Read But How Do I Know: The Basic Principles of Computers for Everyone by J. Clark Scott
This book provides a great foundational understanding of how computers work. It is highly recommended that you read this book before or concurrently with taking this course.
Show steps
  • Borrow or purchase a copy of the book.
  • Read through the book at your own pace, taking notes as needed.
  • Complete any exercises or activities included in the book.
Read Code by Charles Petzold
This book provides a comprehensive overview of the history of computer programming. It is a great way to learn about the evolution of computers and how they work.
View Melania on Amazon
Show steps
  • Borrow or purchase a copy of the book.
  • Read through the book at your own pace, taking notes as needed.
  • Complete any exercises or activities included in the book.
Practice building logic gates in Logisim
Building logic gates in Logisim will help you develop a strong understanding of the fundamentals of computer architecture.
Browse courses on Logic Gates
Show steps
  • Download and install Logisim.
  • Create a new project in Logisim.
  • Add the necessary components to your project to build a logic gate.
  • Simulate your logic gate to test its functionality.
Five other activities
Expand to see all activities and additional details
Show all eight activities
Practice writing assembly language programs
Practicing writing assembly language programs will help you develop your programming skills and your understanding of how computers work.
Browse courses on Assembly Language
Show steps
  • Find a set of practice problems.
  • Solve the practice problems.
  • Check your answers against the provided solutions.
Design and simulate a simple 8-bit CPU in Logisim
Designing and simulating a simple 8-bit CPU in Logisim will give you hands-on experience with the inner workings of a computer.
Browse courses on CPU Design
Show steps
  • Choose a simple 8-bit CPU design to implement.
  • Create a new project in Logisim.
  • Add the necessary components to your project to build the CPU.
  • Simulate your CPU to test its functionality.
Follow a tutorial on how to write assembly language programs
Learning how to write assembly language programs will give you a deeper understanding of how computers work.
Browse courses on Assembly Language
Show steps
  • Find a tutorial on how to write assembly language programs.
  • Follow the tutorial to learn the basics of assembly language.
  • Write a few simple assembly language programs on your own.
Write a blog post or article about how computers work
Writing a blog post or article about how computers work will help you solidify your understanding of the subject.
Show steps
  • Choose a topic for your blog post or article.
  • Research your topic.
  • Write your blog post or article.
  • Publish your blog post or article.
Build a simple calculator using the CPU you designed in Logisim
Building a simple calculator using the CPU you designed in Logisim will give you a practical application of your knowledge.
Browse courses on CPU Design
Show steps
  • Design the hardware for your calculator.
  • Write the software for your calculator.
  • Assemble and test your calculator.

Career center

Learners who complete Design a CPU will develop knowledge and skills that may be useful to these careers:
Computer Hardware Engineer
Design a CPU helps build a foundation for the work Computer Hardware Engineers do every day. Computer Hardware Engineers design, develop, test, and evaluate computer hardware and software systems. They may also work on the integration of hardware and software systems. This course is an excellent way to learn the basics of computer architecture and design, which Computer Hardware Engineers need to know. Additionally, the course covers topics such as memory, logic gates, and assembly language, which are all essential for Computer Hardware Engineers to understand. There is no doubt that this course would be useful for anyone considering a career in Computer Hardware Engineering.
Firmware Engineer
Firmware Engineers design, develop, and maintain the firmware for electronic devices. Firmware is the software that is embedded in hardware devices, such as computers, smartphones, and networking equipment. This course provides a good foundation for the work Firmware Engineers do every day. It covers topics such as computer architecture, assembly language, and logic gates, which are all essential for Firmware Engineers to understand. Additionally, the course provides hands-on experience with designing and simulating a CPU, which is a valuable skill for Firmware Engineers to have.
Computer Architect
Computer Architects design and develop the architecture of computer systems. They work on the overall design of a computer, including the hardware and software components. This course provides a good foundation for the work Computer Architects do every day. It covers topics such as computer architecture, assembly language, and logic gates, which are all essential for Computer Architects to understand. Additionally, the course provides hands-on experience with designing and simulating a CPU, which is a valuable skill for Computer Architects to have.
Electrical Engineer
Electrical Engineers design, develop, test, and maintain electrical systems. They work on a wide range of projects, from power plants to electronic devices. This course provides a good foundation for the work Electrical Engineers do every day. It covers topics such as logic gates, memory, and assembly language, which are all essential for Electrical Engineers to understand. Additionally, the course provides hands-on experience with designing and simulating a CPU, which is a valuable skill for Electrical Engineers to have.
Software Engineer
Software Engineers design, develop, and maintain software systems. They work on a wide range of projects, from operating systems to mobile apps. This course provides a good foundation for the work Software Engineers do every day. It covers topics such as computer architecture, assembly language, and logic gates, which are all essential for Software Engineers to understand. Additionally, the course provides hands-on experience with designing and simulating a CPU, which is a valuable skill for Software Engineers to have.
Computer Programmer
Computer Programmers write and maintain computer programs. They work on a wide range of projects, from operating systems to mobile apps. This course provides a good foundation for the work Computer Programmers do every day. It covers topics such as computer architecture, assembly language, and logic gates, which are all essential for Computer Programmers to understand. Additionally, the course provides hands-on experience with designing and simulating a CPU, which is a valuable skill for Computer Programmers to have.
Computer Systems Analyst
Computer Systems Analysts design, develop, and implement computer systems. They work with businesses and organizations to determine their needs and develop systems that meet those needs. This course provides a good foundation for the work Computer Systems Analysts do every day. It covers topics such as computer architecture, assembly language, and logic gates, which are all essential for Computer Systems Analysts to understand. Additionally, the course provides hands-on experience with designing and simulating a CPU, which is a valuable skill for Computer Systems Analysts to have.
Database Administrator
Database Administrators design, develop, and maintain databases. They work with businesses and organizations to determine their data needs and develop databases that meet those needs. This course may be useful for Database Administrators, as it provides a good foundation in computer architecture and design. Additionally, the course covers topics such as memory, logic gates, and assembly language, which are all essential for Database Administrators to understand.
Information Security Analyst
Information Security Analysts design, develop, and implement security measures to protect computer systems and networks. They work with businesses and organizations to identify and mitigate security risks. This course may be useful for Information Security Analysts, as it provides a good foundation in computer architecture and design. Additionally, the course covers topics such as memory, logic gates, and assembly language, which are all essential for Information Security Analysts to understand.
Network Administrator
Network Administrators design, develop, and maintain computer networks. They work with businesses and organizations to determine their networking needs and develop networks that meet those needs. This course may be useful for Network Administrators, as it provides a good foundation in computer architecture and design. Additionally, the course covers topics such as memory, logic gates, and assembly language, which are all essential for Network Administrators to understand.
Quality Assurance Analyst
Quality Assurance Analysts test and evaluate computer systems and software to ensure that they meet quality standards. They work with businesses and organizations to identify and fix defects in software. This course may be useful for Quality Assurance Analysts, as it provides a good foundation in computer architecture and design. Additionally, the course covers topics such as memory, logic gates, and assembly language, which are all essential for Quality Assurance Analysts to understand.
Technical Writer
Technical Writers write and edit technical documentation, such as user manuals and white papers. They work with businesses and organizations to create documentation that is clear and easy to understand. This course may be useful for Technical Writers, as it provides a good foundation in computer architecture and design. Additionally, the course covers topics such as memory, logic gates, and assembly language, which are all essential for Technical Writers to understand.
Web Developer
Web Developers design, develop, and maintain websites. They work with businesses and organizations to create websites that meet their needs. This course may be useful for Web Developers, as it provides a good foundation in computer architecture and design. Additionally, the course covers topics such as memory, logic gates, and assembly language, which are all essential for Web Developers to understand.
Systems Engineer
Systems Engineers design, develop, and implement complex systems, such as computer systems and networks. They work with businesses and organizations to determine their systems needs and develop systems that meet those needs. This course provides a good foundation for the work Systems Engineers do every day. It covers topics such as computer architecture, assembly language, and logic gates, which are all essential for Systems Engineers to understand. Additionally, the course provides hands-on experience with designing and simulating a CPU, which is a valuable skill for Systems Engineers to have.
Computer and Information Research Scientist
Computer and Information Research Scientists conduct research in the field of computer science. They develop new theories and algorithms, and design and implement new computer systems. This course provides a good foundation for the work Computer and Information Research Scientists do every day. It covers topics such as computer architecture, assembly language, and logic gates, which are all essential for Computer and Information Research Scientists to understand. Additionally, the course provides hands-on experience with designing and simulating a CPU, which is a valuable skill for Computer and Information Research Scientists to have.

Reading list

We've selected 15 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 Design a CPU.
Great companion to the course as it goes into more detail about the basic principles of computers. It is written in a clear and concise style, making it accessible to a wide range of readers.
Classic in the field of computer science. It provides a comprehensive overview of the topic, from the basics of data structures to the latest advances in algorithm design. While it is more technical than the previous books, it is still a valuable resource for anyone who wants to learn more about the art of programming.
Classic in the field of computer architecture. It provides a comprehensive overview of the topic, from the basics of digital logic to the latest advances in processor design. While it is more technical than the previous book, it is still a valuable resource for anyone who wants to learn more about how computers work.
Provides a comprehensive overview of computer systems, from the basics of hardware to the latest advances in software. It valuable resource for anyone who wants to learn more about how computers work.
Provides a comprehensive overview of digital design, from the basics of Boolean algebra to the design of complex digital systems. It valuable resource for anyone who wants to learn more about the hardware side of computers.
Provides a comprehensive overview of operating systems, from the basics of process management to the latest advances in distributed systems. It valuable resource for anyone who wants to learn more about how operating systems work.
Provides a comprehensive overview of computer networks, from the basics of network protocols to the latest advances in network security. It valuable resource for anyone who wants to learn more about how computer networks work.
Provides a comprehensive overview of the fundamentals of computer science, from the basics of data structures and algorithms to the principles of operating systems and networks. It valuable resource for anyone who wants to learn more about the theoretical foundations of computing.
Classic in the field of algorithms. It provides a comprehensive overview of the topic, from the basics of data structures to the latest advances in algorithm design. While it is more technical than the previous books, it is still a valuable resource for anyone who wants to learn more about how algorithms work.
Classic in the field of artificial intelligence. It provides a comprehensive overview of the topic, from the basics of logic to the latest advances in machine learning. While it is more philosophical than the previous books, it is still a valuable resource for anyone who wants to learn more about the future of computing.
Provides a comprehensive overview of software engineering, from the basics of project management to the latest advances in software testing. It valuable resource for anyone who wants to learn more about how to build better software.
Provides a comprehensive overview of software development, from the basics of coding to the latest advances in software testing. It valuable resource for anyone who wants to learn more about how to write better software.
Classic in the field of cognitive science. It provides a comprehensive overview of the topic, from the basics of logic to the latest advances in artificial intelligence. While it is more philosophical than the previous books, it is still a valuable resource for anyone who wants to learn more about the nature of mind.
Save
Classic in the field of science fiction. It provides a comprehensive overview of the topic, from the basics of space travel to the latest advances in astrophysics. While it is more humorous than the previous books, it is still a valuable resource for anyone who wants to learn more about the nature of the universe.

Share

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

Similar courses

Here are nine courses similar to Design a CPU.
Computer Science: Algorithms, Theory, and Machines
Design a CPU 2
Crash Course Digital Electronics
Design and Simulate the Aerodynamics of Propellers in...
I sistemi Operativi Moderni
Siemens NX Mastery: Advanced Design & Applications
Simulating a Hippocampus Microcircuit
Circuit Design, Simulation and PCB Fabrication Bundle
Human-Computer Interaction I: Fundamentals & Design...
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 - 2024 OpenCourser