Part 5b EEP2 .pdf

Part 5b EEP2 .pdf

<aside> ✅ Before the lab

If you are behind, download the starter design as in step 1 below. Otherwise follow 2 and 3. The starter design has already implemented tasks 1 & 2 (16 bit conversion of EEP1) so if you use this you must read these tasks but do not need to implement them. The conversion is a mechanical process but one you need to do to use your own EEP1 design.

  1. Only if you need to: download and use eep2starter. You can skip the steps below, and then need to read (but not implement) Tasks 1 & 2 below. The starter design does not have any EEP1 challenge work added.
  2. Otherwise Download the new design sheets and tests given to you for this lab. Add them all to your project directory. merge8,split8 are likely duplicates of what you have, in which case you need not add them.
  3. Copy your EEP1 design, rename it (and the top-level sheet) to EEP2. </aside>

Untitled

1 Converting EEP1 to 16 bit datapath

Note: I am going ahead with EEP2starter instead of modifying my EEP1 as it is too time-consuming to change all challenge features like CMP and LSL Rb to a new format that I haven’t gone through yet.

Task 1-2 skipped

Untitled

<aside> ✅ Task 3 Use the code in EEP2 tests alu.ram (assembler EEP2 tests alu.txt) to check that you have correctly changed EEP1 into a 16 bit databus. These tests terminate with PC = 1 (pass) or PC=2 (fail). You can check the last few instructions before PC=2 to find the failing test.

EEP2 needs a small addition to the EEP1 instruction set to cope with a consequence of extending the datapath and PC width to 16 bits. This is delivered by the ext16 sheet and tested in the next section.

</aside>

Untitled

Termination on PC = 1

2 Using EXT to generate 16 bit immediate constants

EEP1 instructions on 16 bit EEP2– there is a problem where Imm8 can nolonger genereate all possible data values or address values.