Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions site/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ Office Hours
labs/comparisons/comparisons
labs/decoding-instructions/decoding-instructions
labs/decoding-instructions/decoding-instructions-registers
labs/system-design/enhancing-designs



Expand Down
96 changes: 96 additions & 0 deletions site/labs/system-design/enhancing-designs.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
*****************
Enhancing Designs
*****************

* Feel free to use your laptop
* You are strongly encourage to work with others

* When you get stuck, ask those sitting around you for help
* Get used to working together in the labs
* Peer teaching and peer learning has been empirically shown to be very effective



Including Hardware
==================

For this part of the lab, use the ESAP digital file
:download:`from here. <../../topics/control-logic/esap_alu_ram_output_pc_instruction_control.dig>`


#. Include the hardware for ``AND``, ``OR``, and ``NOT`` operations to the ESAP system

* These operators will work similar to addition to subtraction in the existing design

* Apply the operator to the contents of the A and B registers, and store the result in the A register
* ``NOT`` only works on the contents of the A register


#. These new operators require control signals

* Connect these new control signals to the control logic loop up table



Control Logic
=============

For this part of the lab, use the script for generating the control logic patterns
:download:`from here. <../../topics/control-logic/create_control_logic_patterns_for_look_up_table.py>`


#. Although the new control logic is connected, ensure the look up table has the correct number of outputs

* Ensure the number of outputs from the look up table includes the new control signals


#. Update the contents of the look up table to allow for three new machine code instructions

* An instruction for each of the operators allowed by the new hardware
* Use the 3 unused patterns for these instructions
* Use the Python script to create a new hex file for the look up table


#. Write machine code programs to ensure each of these new instructions work properly



Enhancing the Previous Lab
==========================

#. If not already completed, finish the design from the previous lab


16 Bit Bus
----------

#. In a separate circuit, create a design for a 16 bit bus using

* RAM with an 8 bit address space and 8 bit addressability (:math:`265 \times 8` bits)
* A counter
* Two 8 bit instruction registers

* Even counter values retrieve data from even RAM addresses, and odd values retrieve from odd memory addresses
* Fetching from RAM takes 2 clock cycles
* One of the two 8 bit registers will always store bit patterns from the even or odd memory addresses
* The output from these two 8 bit registers make up the 16 bit bus


#. Add this 16 bit bus to the design from the previous labs

* Include it in the design such that bit patterns can be written to RAM and executed automatically

* The bit patterns as discussed in previous labs


* Not all of the 16 bits will be needed when interfacing with the previous design
* The program counter enable will likely need to be controlled carefully