You thought the ROM was big?
You thought the ROM was big? Meet the RAM.
That's actually a link to the state machine I used to test the RAM itself, so that you can see what its interface is like.
Note that I'm using a ROM to hold a sequence of simple instructions [here just addresses and data], just as I did in the PCU test. While my designs are getting bigger and more complicated, I'm able to leverage the components I already trust in order to test the new ones.
With the creation of this component, I now have [in a half-assed way] all the parts that one would need to make a CPU. All the rest is pretty much glue logic and some instruction-decode state machines. However, most of the components need a little tweaking before I can really put them all together. For example, the ALU doesn't have a carry-in signal yet, the multiplier doesn't give 16-bit results for signed inputs, the shifter doesn't produce the precise overflow behavior that I want, and they've got a variety of different control interfaces.
My plan for the rest of Step 3 is:
- Improve bcd's simulator interface, to make testing easier and faster;
- Decide on a standard control paradigm for all components;
- Go through all the components, one by one, and make the necessary improvements;
- [Finally!] put it all together and proceed to Step 4: write+run test code for the complete CPU.