Classes/Building an 8-Bit CPU from Scratch: Difference between revisions

From Pumping Station One
No edit summary
 
(4 intermediate revisions by the same user not shown)
Line 5: Line 5:
| date = May 27, 2017
| date = May 27, 2017
| est_time = 16 Weeks
| est_time = 16 Weeks
| est_cost = $40
| est_cost = $75
| in_development = Yes
| in_development = Yes
| is_project = Yes
| is_project = Yes
Line 170: Line 170:
| Clock, Display
| Clock, Display
|-
|-
| style="text-align: right; font-family: Courier New, Courier, fixed-width;" | $
| style="text-align: right; font-family: Courier New, Courier, fixed-width;" | $0.59
| style="text-align: right; font-family: Courier New, Courier, fixed-width;" | $
| style="text-align: right; font-family: Courier New, Courier, fixed-width;" | $0.59
| style="text-align: center;" | 1
| style="text-align: center;" | 1
| 74LS32
| [https://www.digikey.com/product-detail/en/texas-instruments/SN74LS32N/296-1658-5-ND/277304 74LS32]
| Quad OR Gate
| Quad OR Gate
| Clock
| Clock
Line 413: Line 413:
* Introduction to integrated circuits
* Introduction to integrated circuits


After the lesson, students will receive a [[File:Electronics_Cheat_Sheet.pdf|Electronics Cheat Sheet]] for their reference throughout the rest of the course.
After the lesson, students will receive an [[File:Electronics_Cheat_Sheet.pdf|Electronics Cheat Sheet]] for their reference throughout the rest of the course.


==== After the Class ====
==== After the Class ====
Line 425: Line 425:
* Different types of resistors
* Different types of resistors


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


{| style="width: 350px; margin: 25px auto; padding: 15px; border: 2px solid #cc0; border-radius: 20px; background: #ffc;"
{| style="width: 350px; margin: 25px auto; padding: 15px; border: 2px solid #cc0; border-radius: 20px; background: #ffc;"
Line 433: Line 433:
|}
|}


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


{| style="width: 350px; margin: 25px auto; padding: 15px; border: 2px solid #cc0; border-radius: 20px; background: #ffc;"
{| style="width: 350px; margin: 25px auto; padding: 15px; border: 2px solid #cc0; border-radius: 20px; background: #ffc;"
Line 441: Line 441:
|}
|}


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


{| style="width: 350px; margin: 25px auto; padding: 15px; border: 2px solid #cc0; border-radius: 20px; background: #ffc;"
{| style="width: 350px; margin: 25px auto; padding: 15px; border: 2px solid #cc0; border-radius: 20px; background: #ffc;"
Line 449: Line 449:
|}
|}


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


{| style="width: 350px; margin: 25px auto; padding: 15px; border: 2px solid #cc0; border-radius: 20px; background: #ffc;"
{| style="width: 350px; margin: 25px auto; padding: 15px; border: 2px solid #cc0; border-radius: 20px; background: #ffc;"
Line 457: Line 457:
|}
|}


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


{| style="width: 350px; margin: 25px auto; padding: 15px; border: 2px solid #cc0; border-radius: 20px; background: #ffc;"
{| style="width: 350px; margin: 25px auto; padding: 15px; border: 2px solid #cc0; border-radius: 20px; background: #ffc;"
Line 465: Line 465:
|}
|}


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


{| style="width: 350px; margin: 25px auto; padding: 15px; border: 2px solid #cc0; border-radius: 20px; background: #ffc;"
{| style="width: 350px; margin: 25px auto; padding: 15px; border: 2px solid #cc0; border-radius: 20px; background: #ffc;"
Line 473: Line 473:
|}
|}


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


{| style="width: 350px; margin: 25px auto; padding: 15px; border: 2px solid #cc0; border-radius: 20px; background: #ffc;"
{| style="width: 350px; margin: 25px auto; padding: 15px; border: 2px solid #cc0; border-radius: 20px; background: #ffc;"
Line 481: Line 481:
|}
|}


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


{| style="width: 350px; margin: 25px auto; padding: 15px; border: 2px solid #cc0; border-radius: 20px; background: #ffc;"
{| style="width: 350px; margin: 25px auto; padding: 15px; border: 2px solid #cc0; border-radius: 20px; background: #ffc;"
Line 489: Line 489:
|}
|}


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


{| style="width: 350px; margin: 25px auto; padding: 15px; border: 2px solid #cc0; border-radius: 20px; background: #ffc;"
{| style="width: 350px; margin: 25px auto; padding: 15px; border: 2px solid #cc0; border-radius: 20px; background: #ffc;"
Line 497: Line 497:
|}
|}


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


{| style="width: 350px; margin: 25px auto; padding: 15px; border: 2px solid #cc0; border-radius: 20px; background: #ffc;"
{| style="width: 350px; margin: 25px auto; padding: 15px; border: 2px solid #cc0; border-radius: 20px; background: #ffc;"
Line 506: Line 506:




=== Week 12 - The Display Module ===
=== Week 11 - The Display Module ===
 
{| style="width: 350px; margin: 25px auto; padding: 15px; border: 2px solid #cc0; border-radius: 20px; background: #ffc;"
! Notice
|-
| This section is still under development.  Please check back later for more information.''
|}
 
=== Week 12 - Connecting the Modules with a Bus ===


{| style="width: 350px; margin: 25px auto; padding: 15px; border: 2px solid #cc0; border-radius: 20px; background: #ffc;"
{| style="width: 350px; margin: 25px auto; padding: 15px; border: 2px solid #cc0; border-radius: 20px; background: #ffc;"
Line 514: Line 522:
|}
|}


=== Week 13 - Connecting the Modules with a Bus ===
=== Week 13 - Designing Control Signals ===


{| style="width: 350px; margin: 25px auto; padding: 15px; border: 2px solid #cc0; border-radius: 20px; background: #ffc;"
{| style="width: 350px; margin: 25px auto; padding: 15px; border: 2px solid #cc0; border-radius: 20px; background: #ffc;"
Line 522: Line 530:
|}
|}


=== Week 14 - Designing Control Signals ===
=== Week 14 - Control Logic Module ===


{| style="width: 350px; margin: 25px auto; padding: 15px; border: 2px solid #cc0; border-radius: 20px; background: #ffc;"
{| style="width: 350px; margin: 25px auto; padding: 15px; border: 2px solid #cc0; border-radius: 20px; background: #ffc;"
Line 530: Line 538:
|}
|}


=== Week 15 - Control Logic Module ===
=== Week 15 - Programming and Deployment ===


{| style="width: 350px; margin: 25px auto; padding: 15px; border: 2px solid #cc0; border-radius: 20px; background: #ffc;"
{| style="width: 350px; margin: 25px auto; padding: 15px; border: 2px solid #cc0; border-radius: 20px; background: #ffc;"
Line 547: Line 555:
* Extend the processing capability to 16- or even 32-bit processing
* 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...)
* Add additional input and output capabilities to the system (e.g., serial controllers, USB, disks, multi-line LCDs, etc...)
* Building the modules in an FPGA


[[Category:Classes]]
[[Category:Classes]]