These types of problems are the hardest for me to solve since I convince myself that my approach is correct and there's no other way to do it. Now that I have put some thought into how this works, this makes much more sense.
So I have been working my way through chapter 3. For RAM8 I I thought 1 demultiplexor, 1 multiplexor and 8 registers would be solve the problem.
DMux would take the input and the address and load the data into a certain register, and Mux would take the address and output it.
Only problem is, unless I am missing something, there's no 16 bit DMux we have created. So my solution does not work, since the input is 16 bit.
What am I missing? I feel like this is the correct approach.
There are multiple ways to solve most of these problems and the authors only have you build the parts you need to solve them they way that they are trying to steer you toward, so just because you don't have a part, doesn't mean your approach is not valid.
In this case one issue you will come up against is that while your DMux8Way16 could be used to route the signal to the desired register, you still have to assert the load input on ONLY that register, otherwise you will overwrite the contents of all of the other registers with zeroes on every clock cycle.
So since you have to find a way to not assert the load signal on all of the other registers, those registers will ignore what is on their input pins and so it doesn't matter if those pins are all zero, or just whatever happens to be on the input pins to the overall part.