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

Traffic lights

Read about what's good
what should give you pause
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

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

Reviews summary

Practical 16-bit cpu design with microcode

Learners say this course is a highly practical deep dive into 16-bit CPU architecture design, distinguishing itself by its focus on building an actual, working machine rather than just theoretical concepts. It expands significantly on previous material, introducing micro-coded control units, advanced addressing modes, and an assembler developed in Python. The comprehensive coverage includes port and memory-mapped I/O, stack implementation, and even graphical display interfaces, making it a rigorous and rewarding experience for those with the necessary foundational knowledge.
Broad coverage from CPU design to assembly programming.
"The curriculum was very comprehensive, covering everything from core CPU components to high-level language constructs in assembly."
"I was impressed by the breadth of topics, including graphics display and advanced subroutines in assembly."
"The course covers a lot of ground, from the fundamentals to advanced topics like Bresenham's algorithm in assembly."
Teaches how to develop a functional assembler.
"Developing our own assembler in Python was a brilliant and unique practical exercise."
"The custom Python assembler made writing assembly code for our new CPU much more manageable and insightful."
"I found the assembler design section very useful for understanding the link between high-level and low-level code."
Covers complex concepts like microcode and I/O.
"The detailed explanation of the micro-coded control unit was a game-changer for my understanding of CPU control."
"Learning about port-mapped and memory-mapped I/O significantly deepened my knowledge of CPU interfaces."
"The instruction set expansion and new addressing modes really pushed my understanding of advanced CPU design."
Focuses on building a working 16-bit CPU.
"This course delivers on its promise to build an actual machine, not just theory; I loved seeing it come to life."
"I found the practical aspect of designing and seeing the CPU work step-by-step in Logisim incredibly engaging."
"Building the 16-bit CPU and observing it execute my own assembly code was a truly satisfying experience."
Requires a solid foundation, ideally from Part 1.
"I highly recommend taking 'Design a CPU 1' before attempting this course to fully grasp the underlying concepts."
"This course is definitely not for beginners; a strong background in digital logic and computer architecture is essential."
"If you're comfortable with the 8-bit design, this course provides a logical and challenging progression."

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

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