|
| 1 | +***************** |
| 2 | +Enhancing Designs |
| 3 | +***************** |
| 4 | + |
| 5 | +* Feel free to use your laptop |
| 6 | +* You are strongly encourage to work with others |
| 7 | + |
| 8 | + * When you get stuck, ask those sitting around you for help |
| 9 | + * Get used to working together in the labs |
| 10 | + * Peer teaching and peer learning has been empirically shown to be very effective |
| 11 | + |
| 12 | + |
| 13 | + |
| 14 | +Including Hardware |
| 15 | +================== |
| 16 | + |
| 17 | +For this part of the lab, use the ESAP digital file |
| 18 | +:download:`from here. <../../topics/control-logic/esap_alu_ram_output_pc_instruction_control.dig>` |
| 19 | + |
| 20 | + |
| 21 | +#. Include the hardware for ``AND``, ``OR``, and ``NOT`` operations to the ESAP system |
| 22 | + |
| 23 | + * These operators will work similar to addition to subtraction in the existing design |
| 24 | + |
| 25 | + * Apply the operator to the contents of the A and B registers, and store the result in the A register |
| 26 | + * ``NOT`` only works on the contents of the A register |
| 27 | + |
| 28 | + |
| 29 | +#. These new operators require control signals |
| 30 | + |
| 31 | + * Connect these new control signals to the control logic loop up table |
| 32 | + |
| 33 | + |
| 34 | + |
| 35 | +Control Logic |
| 36 | +============= |
| 37 | + |
| 38 | +For this part of the lab, use the script for generating the control logic patterns |
| 39 | +:download:`from here. <../../topics/control-logic/create_control_logic_patterns_for_look_up_table.py>` |
| 40 | + |
| 41 | + |
| 42 | +#. Although the new control logic is connected, ensure the look up table has the correct number of outputs |
| 43 | + |
| 44 | + * Ensure the number of outputs from the look up table includes the new control signals |
| 45 | + |
| 46 | + |
| 47 | +#. Update the contents of the look up table to allow for three new machine code instructions |
| 48 | + |
| 49 | + * An instruction for each of the operators allowed by the new hardware |
| 50 | + * Use the 3 unused patterns for these instructions |
| 51 | + * Use the Python script to create a new hex file for the look up table |
| 52 | + |
| 53 | + |
| 54 | +#. Write machine code programs to ensure each of these new instructions work properly |
| 55 | + |
| 56 | + |
| 57 | + |
| 58 | +Enhancing the Previous Lab |
| 59 | +========================== |
| 60 | + |
| 61 | +#. If not already completed, finish the design from the previous lab |
| 62 | + |
| 63 | + |
| 64 | +16 Bit Bus |
| 65 | +---------- |
| 66 | + |
| 67 | +#. In a separate circuit, create a design for a 16 bit bus using |
| 68 | + |
| 69 | + * RAM with an 8 bit address space and 8 bit addressability (:math:`265 \times 8` bits) |
| 70 | + * A counter |
| 71 | + * Two 8 bit instruction registers |
| 72 | + |
| 73 | + * Even counter values retrieve data from even RAM addresses, and odd values retrieve from odd memory addresses |
| 74 | + * Fetching from RAM takes 2 clock cycles |
| 75 | + * One of the two 8 bit registers will always store bit patterns from the even or odd memory addresses |
| 76 | + * The output from these two 8 bit registers make up the 16 bit bus |
| 77 | + |
| 78 | + |
| 79 | +#. Add this 16 bit bus to the design from the previous labs |
| 80 | + |
| 81 | + * Include it in the design such that bit patterns can be written to RAM and executed automatically |
| 82 | + |
| 83 | + * The bit patterns as discussed in previous labs |
| 84 | + |
| 85 | + |
| 86 | + * Not all of the 16 bits will be needed when interfacing with the previous design |
| 87 | + * The program counter enable will likely need to be controlled carefully |
0 commit comments