I really need help on ram8 because I have run into a bind. At line 18, I am getting a comparison failure and I do not know why. I think it may have something to do with the registers because they are unable to hold a value if another one is assigned a value.
I just had a look at your chip. At first I thought it looked spot on but then I noticed a couple of things
1: There is no such chip as a DMux8Way16 (EDIT in the book, anyway).
2: The input to each internal chip that needs to be not identical for all internal chips is not the
the one you are varying in your chip
Other than that your use of the Register and the Mux looks fine
Hope this helps
Your DMux8Way16 will output the in on one of its outputs and 0000000000000000 on the other seven outputs
If the load is 1, then your design will have the effect of altering the contents of all the registers in the chip.
It will stick in into one register (the one specified by the address) and 0000000000000000 into the other registers.
Its effectively reducing your RAM8 to the storage capacity of a single register.
You are using all the right chips in your design except the DMux8Way16, you should be using the DMux8Way instead. Making this alteration will require you to alter the inputs to your registers.
On the other hand, what you do with the outputs of your registers looks to be fine to me