The address/data bus will be the focus of the computer. I will need two address buses - one for the source address and one for the destination address. And I will need one data bus. I figure for now I will keep it simple and have them all be 8-bit buses. This means my instruction memory will be 16-bits wide since each instruction will include both the source and destination addresses.
One reason is that I will need a way to put constants from the program into the data bus. I don't want to create a second instruction which writes a constant into a register because that breaks my #1 goal. So instead I'll need a special function register. In a normal register, when the destination address targets it, it captures data from the data bus and stores it. In this special function register, when the destination address targets it, it captures the value of the source address bus instead.
One thing to consider is how the source address bus works. Since I'm not really using the source address bus as an address and instead as a data word, it could mess up whatever the source address is pointing at. For example, if my data word is 9 and that memory location is a FIFO, a read of that register may pop off the word at the top of that FIFO. I'm not sure how exactly to handle this just yet, but I think I can. I could do a two-step command like disabling the source bus address or something in the first step. I could reverse the command so that the source is actually the destination and put the data word into the destination address. Of course, that just reverses my problem. I'll think on it.
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.