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

In this course we take what we learned from the first course and expand on the simple 8 bit design and create a 16 bit machine with a maximum of 64 instructions with each instruction having access to 4 different addressing modes. We cover port mapped i/o and memory mapped i/o. We start using a new faster more stable version of Logisim. The hard wired control unit is replaced with a mixed hardwired and microcoded control unit. We increase the number of general purpose registers from 4 to 6 and add in a temporary register, index register , stack pointer register and floating point unit register.

Read more

In this course we take what we learned from the first course and expand on the simple 8 bit design and create a 16 bit machine with a maximum of 64 instructions with each instruction having access to 4 different addressing modes. We cover port mapped i/o and memory mapped i/o. We start using a new faster more stable version of Logisim. The hard wired control unit is replaced with a mixed hardwired and microcoded control unit. We increase the number of general purpose registers from 4 to 6 and add in a temporary register, index register , stack pointer register and floating point unit register.

We design a new assembler in python to help us write the assembly language code with our new larger instruction set.

Finally we add on a keyboard a character display and a graphics display.

The 64 Kbyte address space is split into a ROM that contains the start of an operating system and commonly used subroutines and a RAM that contains the program code and data.If you want to know how to build a fully functioning 16 bit machine and design some cool assembly language programs then this is the course you need to take.

Don't just read about theory and imaginary machines , build an actual machine that works. It's the best way of learning Computer Architecture Design and Organisation.

Enroll now

What's inside

Learning objectives

  • Mico-coded control unit design
  • Addressing modes
  • Assembler in python
  • Cpu mertrics
  • Labels and declarations
  • Port mapped input output
  • Memory mapped input output
  • The stack
  • Subroutines
  • High level language constructs in assembly language
  • 16 bit machine with 90 instructions
  • Show more
  • Show less

Syllabus

Introduction
The CPU
Assembler / Debugger
Load and Run
Read more
Add Subtract Multiply Divide
Count to Three
Add Subtract
Multiply Divide
CPU and Algorithm Metrics
Assembler and Compiler
Assembler Labels and Declarations
Compile and Assemble
Update Design
Roadmap for Next 10 Videos
New Reset Method
Port Mapped I/O
Input Output Instruction
Input Device
Output Device
New Completed Input Output
Port to Logisim Evolution
16 Bit Machine
Memory Mapped I/O
Memory Mapped IO Theory
Memory Mapped IO Circuits
Micro-Coded Control Unit
Hardwired v Micro-Coded Control Unit
Transition to Micro-Coded Control Unit
Micro-Coded Control Unit Explained
Mixed Micro-Coded and Hard Wired Control Unit
Mapping Instructions to ROM
Compression ROM
The Stack
New Design Overview
Stack 1 Theory
Stack 2 Implemetation
Stack 3 Instructions
Architecture and Addressing Modes
Addressing Modes Introduction
Architecture 1
Architecture 2
Full Instruction Set
Implementing Addressing Mode in MicroCode
Architecture 3
Architecture 4
Keyboard Screen and Graphics Display
Keyboard
Keyboared Example
Display
Display Example
New Clock Circuit
Graphics Card 1
PIXEL Instruction
PIXEL Example
Graphics Card 2
SPLASH Instruction
Creating a Splash Screen Image
Assembler
Install Python
First Assembly Language Program
Loops and Labels
EQU and DS Assembler Directives
Factorial Example
Greatest Common Divisor
DS , DC , EQU Assembler Directives Compared
Subroutines , Functions and Basic Control Structures
Read and Write Characters
(get_char) and (print_char) Subroutines
Passing Parameters by Value
Passing Parameters by Reference
Passing Parameters Using the Stack
Basic High Level Constructs
Recursion
Generating a One Dimensional Array using EQU Directive
Manipulating a One Dimensional Array using the EQU Directive
Generating a One Dimensional Array using the DS Directive
Printing Characters from an Array to the Screen using the DC Directive
Mathematics Library
The Absolute Value
Graphics Library
Bresenhams Algorithm
Bresenham's Algorithm Example
Bresenham's Line Drawing Algorithm in Python
Breseham's Algorithm in Assembly Language Video 1
Bresenham's Algorithm in Assembly Language Video 2
Goodbye
Next Course
Bonus Section
Bonus Lecture

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Expands upon knowledge of computer architecture design and organization by building a 16-bit machine
Develops fluency with the 64-bit instruction set
Students build their own virtual machine
Builds upon the previous 8-bit design course
May require significant background knowledge

Save this course

Save Design a CPU 2 to your list so you can find it easily later:
Save

Reviews summary

Popular cpu design course

Learners say this course is for anyone who wants to learn about CPU design. Students of all skill levels will be able to follow the easy-to-understand lectures, demonstrations, and explanations on how to design a CPU. Learners will feel more engaged with the knowledgeable instructor and the engaging assignments.
Explores all aspects of the topic
"very interesting and very well presented"
"knowledgeable and easy to understand"
Well-received with many positive reviews
"so far love it!"
"i love this course"
"Exellent delivery"
Knowledgeable and supportive instructor
"yes. It seems to be a good fit."
"Great course, i really enjoyed it! I'm so excited to get started now! Thank you"
Clearly explained content
"Very clearly explained 👌"
"Clear, instructive, straightforward!"
"Easy to understand for beginners"
Some outdated content that needs updating
"yes, it is a good experience until now."
"Contents were good. However, there are some outdated codes which do not functional anymore. Needs to be updated."

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 2 with these activities:
Review Basic Computer Architecture Concepts
Refresh your understanding of basic computer architecture concepts to provide a strong foundation for assembly language programming.
Browse courses on Computer Architecture
Show steps
  • Review the different components of a computer system.
  • Review how these components interact to execute instructions.
  • Review the basics of computer memory and how it is organized.
Tutorial on Addressing Modes
Go through a tutorial on addressing modes in assembly language.
Show steps
  • Find a tutorial on programming addressing modes.
  • Read through the tutorial and understand the different addressing modes.
  • Write a few assembly language programs to practice using different addressing modes.
Practice Writing Assembly Language Programs
Develop proficiency in writing assembly language programs by working through practice problems.
Show steps
  • Find a set of practice problems.
  • Solve the practice problems.
  • Test your programs on an emulator or simulator.
Show all three activities

Career center

Learners who complete Design a CPU 2 will develop knowledge and skills that may be useful to these careers:
Computer Hardware Engineer
Computer Hardware Engineers design, develop, and test computer hardware components, such as processors, memory modules, and circuit boards. This course is an excellent starting point for aspiring Computer Hardware Engineers because it provides a solid foundation in the design and implementation of computer hardware. The course covers topics such as processor architecture, memory management, and input/output devices, which are essential concepts for understanding how computer hardware works. In addition, the hands-on nature of the course provides students with practical experience in designing and testing their own computer hardware components.
Computer Architect
Computer Architects design and develop the overall architecture of computer systems, including the hardware and software components. This course is a valuable resource for aspiring Computer Architects because it provides a comprehensive overview of the design and implementation of computer systems. The course covers topics such as processor architecture, memory management, and input/output devices, which are essential concepts for understanding how computer systems work. In addition, the hands-on nature of the course provides students with practical experience in designing and testing their own computer systems.
Computer Programmer
Computer Programmers write and maintain computer programs, which are sets of instructions that tell computers how to perform specific tasks. This course is a valuable resource for aspiring Computer Programmers because it provides a solid foundation in the design and implementation of computer programs. The course covers topics such as data structures, algorithms, and programming languages, which are essential concepts for understanding how computer programs work. In addition, the hands-on nature of the course provides students with practical experience in designing and writing their own computer programs.
Software Engineer
Software Engineers design, develop, and maintain software applications. This course is a valuable resource for aspiring Software Engineers because it provides a solid foundation in the design and implementation of software applications. The course covers topics such as software design, software development, and software testing, which are essential concepts for understanding how software applications work. In addition, the hands-on nature of the course provides students with practical experience in designing and developing their own software applications.
Computer Systems Analyst
Computer Systems Analysts study the needs of users and organizations to design, develop, and implement computer systems solutions. This course is a valuable resource for aspiring Computer Systems Analysts because it provides a comprehensive overview of the design and implementation of computer systems. The course covers topics such as system analysis, system design, and system implementation, which are essential concepts for understanding how computer systems are used to solve problems. In addition, the hands-on nature of the course provides students with practical experience in designing and implementing their own computer systems.
Network Engineer
Network Engineers design, build, and maintain computer networks. This course is a valuable resource for aspiring Network Engineers because it provides a solid foundation in the design and implementation of computer networks. The course covers topics such as network architecture, network protocols, and network security, which are essential concepts for understanding how computer networks work. In addition, the hands-on nature of the course provides students with practical experience in designing and implementing their own computer networks.
Database Administrator
Database Administrators design, implement, and maintain databases, which are collections of organized data. This course is a valuable resource for aspiring Database Administrators because it provides a solid foundation in the design and implementation of databases. The course covers topics such as database design, database management, and database security, which are essential concepts for understanding how databases work. In addition, the hands-on nature of the course provides students with practical experience in designing and implementing their own databases.
Information Security Analyst
Information Security Analysts design, implement, and maintain security measures to protect computer systems and networks from unauthorized access, use, disclosure, disruption, modification, or destruction. This course is a valuable resource for aspiring Information Security Analysts because it provides a solid foundation in the design and implementation of security measures. The course covers topics such as security assessment, security planning, and security implementation, which are essential concepts for understanding how security measures are used to protect computer systems and networks. In addition, the hands-on nature of the course provides students with practical experience in designing and implementing their own security measures.
Web Developer
Web Developers design, develop, and maintain websites. This course may be useful for aspiring Web Developers because it provides a basic understanding of the design and implementation of websites. The course covers topics such as HTML, CSS, and JavaScript, which are essential concepts for understanding how websites work. However, it is important to note that this course does not cover all of the skills and knowledge necessary to become a successful Web Developer.
Systems Administrator
Systems Administrators maintain and manage computer systems and networks. This course may be useful for aspiring Systems Administrators because it provides a basic understanding of the design and implementation of computer systems and networks. The course covers topics such as operating systems, networking, and security, which are essential concepts for understanding how computer systems and networks work. However, it is important to note that this course does not cover all of the skills and knowledge necessary to become a successful Systems Administrator.
Technical Writer
Technical Writers create and maintain technical documentation, such as user manuals, white papers, and technical reports. This course may be useful for aspiring Technical Writers because it provides a basic understanding of the design and implementation of technical documentation. The course covers topics such as technical writing principles, documentation tools, and document management, which are essential concepts for understanding how technical documentation is created and maintained. However, it is important to note that this course does not cover all of the skills and knowledge necessary to become a successful Technical Writer.
Instructional Designer
Instructional Designers develop and deliver instructional materials, such as lesson plans,教材, and online courses. This course may be useful for aspiring Instructional Designers because it provides a basic understanding of the design and development of instructional materials. The course covers topics such as learning theory, instructional design models, and media selection, which are essential concepts for understanding how instructional materials are designed and developed. However, it is important to note that this course does not cover all of the skills and knowledge necessary to become a successful Instructional Designer.
Quality Assurance Analyst
Quality Assurance Analysts test and evaluate software products to ensure that they meet quality standards. This course may be useful for aspiring Quality Assurance Analysts because it provides a basic understanding of the testing and evaluation of software products. The course covers topics such as testing methodologies, testing tools, and quality metrics, which are essential concepts for understanding how software products are tested and evaluated. However, it is important to note that this course does not cover all of the skills and knowledge necessary to become a successful Quality Assurance Analyst.
Data Analyst
Data Analysts collect, analyze, and interpret data to identify trends and patterns. This course may be useful for aspiring Data Analysts because it provides a basic understanding of the collection, analysis, and interpretation of data. The course covers topics such as data collection methods, data analysis techniques, and data visualization, which are essential concepts for understanding how data is collected, analyzed, and interpreted. However, it is important to note that this course does not cover all of the skills and knowledge necessary to become a successful Data Analyst.
Business Analyst
Business Analysts analyze business needs and processes to identify opportunities for improvement. This course may be useful for aspiring Business Analysts because it provides a basic understanding of the analysis of business needs and processes. The course covers topics such as business analysis techniques, process modeling, and requirements gathering, which are essential concepts for understanding how business needs and processes are analyzed. However, it is important to note that this course does not cover all of the skills and knowledge necessary to become a successful Business Analyst.

Reading list

We've selected ten 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 2.
This textbook provides a more in-depth coverage of computer architecture than the previous book, with a focus on the hardware/software interface. It valuable resource for students and professionals who want to learn more about the design and implementation of operating systems and other software systems.
This textbook provides a comprehensive overview of digital design and computer architecture, with a focus on the hardware/software interface. It valuable resource for students and professionals who want to learn more about the design and implementation of computer systems.
This classic textbook provides a comprehensive overview of computer architecture, including coverage of microarchitecture, pipelining, memory hierarchies, and I/O systems. It valuable resource for students and professionals who want to learn more about the design and implementation of computer systems.
Provides a practical guide to the design and implementation of embedded systems. It valuable resource for students and professionals who want to learn more about the design and implementation of embedded systems.
This textbook provides a comprehensive overview of embedded software, with a focus on the design and implementation of embedded systems. It valuable resource for students and professionals who want to learn more about the design and implementation of embedded systems.
Save
This textbook provides a comprehensive overview of MIPS assembly language, with a focus on the hardware/software interface. It valuable resource for students and professionals who want to learn more about the design and implementation of embedded systems.
This textbook provides a comprehensive overview of advanced microprocessors and interfacing, with a focus on the hardware/software interface. It valuable resource for students and professionals who want to learn more about the design and implementation of embedded systems.
This textbook provides a comprehensive overview of embedded systems, with a focus on real-time operating systems. It valuable resource for students and professionals who want to learn more about the design and implementation of embedded systems.
Provides a comprehensive overview of embedded systems, including coverage of hardware, software, and design techniques. It valuable resource for students and professionals who want to learn more about the design and implementation of embedded systems.
This textbook provides a comprehensive overview of microprocessors and interfacing, with a focus on the hardware/software interface. It valuable resource for students and professionals who want to learn more about the design and implementation of embedded systems.

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 2.
64-Bit Assembly & Shellcoding for Ethical Hackers
Most relevant
x64 Assembly Language and Reverse Engineering Practicals
Most relevant
Design a CPU
Most relevant
Estimating the Work within Your Team - Get the Most Value...
Introduction to Microprocessors
Specialized Exploits: Windows and Linux Shellcode
Format String Vulnerabilities
Introduction to Microprocessors
Robotics: Aerial Robotics
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