Changes

Jump to navigation Jump to search
Created page with "{{DISPLAYTITLE:<span style="position:absolute; top: -9999px;">Classes/</span>Building an 8-Bit CPU from Scratch}} {{Tutorial | name=8-Bit CPU Using Logic Gates | creator = U..."
{{DISPLAYTITLE:<span style="position:absolute; top: -9999px;">Classes/</span>Building an 8-Bit CPU from Scratch}}
{{Tutorial
| name=8-Bit CPU Using Logic Gates
| creator = [[User:Andrewvaughan|Andrew Vaughan]]
| date = May 27, 2017
| est_time = 16 Weeks
| est_cost = $40
| in_development = Yes
| is_project = Yes
}}

In this class, taught by [[User:andrewvaughan|Andrew Vaughan]], you will learn how to build a functional (albeit, simple) 8-Bit CPU from scratch using breadboards and [[Wikipedia:Transistor-transistor logic|TTL Integrated Circuits]]. No prior electronics experience is required in the class, as the basics are covered in the first lesson. At the end of the course, you will have built a fully-functional, modular CPU, as well as your own personalized [[Wikipedia:Assembly language|Assembly language]], that you can extend indefinitely to create more extensive functionality.

Office hours are held before and after each class. The office hours prior to the class (timing of which will be announced with each class) are intended for members who have missed classes and need to catch up on modules for the upcoming lesson. Office hours after each class will provide a list of advanced topics from the lesson plan, which will only be covered if interest is shown. This time is also available to assist with debugging problems in circuits.

== Time and Location ==

{|
! style="text-align: right;" | Instructor:
| [[User:andrewvaughan|Andrew Vaughan]] (Contact information available on user page)
|-
! style="text-align: right;" | Where:
| [[Main Page|Pumping Station: One]] [[Facilities#Electronics.2FMechatronics_Lab|Electronics Lab]] (2nd Floor)
|-
! style="text-align: right;" | When:
| TBD
|-
! style="text-align: right;" | Office Hours:
| TBD
|-
! style="text-align: right;" | Minimum Class Size:
| 2
|-
! style="text-align: right;" | Maximum Class Size:
| 8
|}

== Prerequisites ==

There are minimal prerequisites to attend this class. No prior experience in electronics is needed, nor any experience with soldering or computers. It is important that novices to these are attend the first classes and to make use of office hours to ask questions before continuing into more advanced topics.

=== Materials ===

Components and tools will be made available for persons who wish to learn, but do not wish to keep their project after class completion. If parts are borrowed from the electronics space, it is asked that a donation be made, at your discretion, to the [[:Category:Electronics|Electronics Lab]] area host. Note that you will be required to return all components used for the class after the course is completed. Persons borrowing equipment will be required to pair with others doing the same, if enough persons are available.

If you, however, wish to keep your project, or want to extend it further after the course is complete (both highly recommended), the following will need to be purchased:

{| style="width: 50%; margin: 25px auto; padding: 25px; border: 2px solid #cc0; border-radius: 20px; background: #ffc; font-size: 16px;"
| '''Note:''' This section is still under development. Please check back later for more information.''
|}

=== Authorizations ===

Please read the rules and responsibilities in the [[:Category:Electronics#Area_Rules|Electronics Area]] prior to attending. Along with these rules, the following authorizations must be completed to be eligible for this course:

{| style="width: 50%; margin: 25px auto; padding: 25px; border: 2px solid #cc0; border-radius: 20px; background: #ffc; font-size: 16px;"
| '''Note:''' This section is still under development. Please check back later for more information.''
|}

== Syllabus ==

Classes are held weekly, and build on top of each other. It is important that all classes are attended, or completing the CPU will be very difficult. Office hours are made available prior to every class to allow persons who miss classes to catch up prior to starting a new lesson.

=== Week 1 - Digital Electronics Fundamentals ===

{| style="width: 50%; margin: 25px auto; padding: 25px; border: 2px solid #cc0; border-radius: 20px; background: #ffc; font-size: 16px;"
| '''Note:''' This section is still under development. Please check back later for more information.''
|}

=== Week 2 - Implementing Logic with Transistors ===

{| style="width: 50%; margin: 25px auto; padding: 25px; border: 2px solid #cc0; border-radius: 20px; background: #ffc; font-size: 16px;"
| '''Note:''' This section is still under development. Please check back later for more information.''
|}

=== Week 3 - The CPU Clock Module ===

{| style="width: 50%; margin: 25px auto; padding: 25px; border: 2px solid #cc0; border-radius: 20px; background: #ffc; font-size: 16px;"
| '''Note:''' This section is still under development. Please check back later for more information.''
|}

=== Week 4 - The 8-Bit Register Modules ===

{| style="width: 50%; margin: 25px auto; padding: 25px; border: 2px solid #cc0; border-radius: 20px; background: #ffc; font-size: 16px;"
| '''Note:''' This section is still under development. Please check back later for more information.''
|}

=== Week 5 - Designing an ALU ===

{| style="width: 50%; margin: 25px auto; padding: 25px; border: 2px solid #cc0; border-radius: 20px; background: #ffc; font-size: 16px;"
| '''Note:''' This section is still under development. Please check back later for more information.''
|}

=== Week 6 - The ALU Module ===

{| style="width: 50%; margin: 25px auto; padding: 25px; border: 2px solid #cc0; border-radius: 20px; background: #ffc; font-size: 16px;"
| '''Note:''' This section is still under development. Please check back later for more information.''
|}

=== Week 7 - The RAM Module ===

{| style="width: 50%; margin: 25px auto; padding: 25px; border: 2px solid #cc0; border-radius: 20px; background: #ffc; font-size: 16px;"
| '''Note:''' This section is still under development. Please check back later for more information.''
|}

=== Week 8 - Building a Binary Counter ===

{| style="width: 50%; margin: 25px auto; padding: 25px; border: 2px solid #cc0; border-radius: 20px; background: #ffc; font-size: 16px;"
| '''Note:''' This section is still under development. Please check back later for more information.''
|}

=== Week 9 - The Program Counter Module ===

{| style="width: 50%; margin: 25px auto; padding: 25px; border: 2px solid #cc0; border-radius: 20px; background: #ffc; font-size: 16px;"
| '''Note:''' This section is still under development. Please check back later for more information.''
|}

=== Week 10 - Designing for 7-Segment Displays ===

{| style="width: 50%; margin: 25px auto; padding: 25px; border: 2px solid #cc0; border-radius: 20px; background: #ffc; font-size: 16px;"
| '''Note:''' This section is still under development. Please check back later for more information.''
|}

=== Week 11 - Introduction to EEPROM ===

{| style="width: 50%; margin: 25px auto; padding: 25px; border: 2px solid #cc0; border-radius: 20px; background: #ffc; font-size: 16px;"
| '''Note:''' This section is still under development. Please check back later for more information.''
|}


=== Week 12 - The Display Module ===

{| style="width: 50%; margin: 25px auto; padding: 25px; border: 2px solid #cc0; border-radius: 20px; background: #ffc; font-size: 16px;"
| '''Note:''' This section is still under development. Please check back later for more information.''
|}

=== Week 13 - Connecting the Modules with a Bus ===

{| style="width: 50%; margin: 25px auto; padding: 25px; border: 2px solid #cc0; border-radius: 20px; background: #ffc; font-size: 16px;"
| '''Note:''' This section is still under development. Please check back later for more information.''
|}

=== Week 14 - Designing Control Signals ===

{| style="width: 50%; margin: 25px auto; padding: 25px; border: 2px solid #cc0; border-radius: 20px; background: #ffc; font-size: 16px;"
| '''Note:''' This section is still under development. Please check back later for more information.''
|}

=== Week 15 - Control Logic Module ===

{| style="width: 50%; margin: 25px auto; padding: 25px; border: 2px solid #cc0; border-radius: 20px; background: #ffc; font-size: 16px;"
| '''Note:''' This section is still under development. Please check back later for more information.''
|}

== Completion ==

Upon completion, each member of the class will have a modularized, extendable CPU. The CPU can be programmed using an Arduino Programmer, which can be borrowed during the class, or built in one of the after-hours office-hours. Here are some examples what can be done to extend and modify the basic circuitry:

* Create additional circuitry to support more-advanced instructions
* Add more capabilities to the ALU to enable more-powerful processing
* Transition 7400-series integrated circuits to more-advanced functionality to reduce circuit complexity
* Extend the processing capability to 16- or even 32-bit processing
* Add additional input and output capabilities to the system (e.g., serial controllers, USB, disks, multi-line LCDs, etc...)

[[Category:Classes]]
330

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.

Navigation menu