I’ve have been designing a 8-bit computer from scratch over a year one, most of the time I’ve spent researching and learning about the MCU and microprocessor I’ve chosen to use.
One of the feature that I want my 8-bit computer to have, is a rather expandable interface. And thus, I’ve chosen to go with the SPI-interface. And almost immediately ran into problems. I don’t want to spend all my I/O on Slave-Select (SS).
So I designed a 16-device SPI-bus, using two 8-bit shift-registers (74HC595). The only downside is that you can by mistake activate more than one device by shifting in more bits in the register. I can only assume that this will give you a crappy data-read/write.
But I will work in some restriction into the bootloader of the CPU.
If you’re wondering what I did to the MISO-bus, I will leave this article here. I’ve only implemented step 2, for now. Implementing a pull-up resistor is rather easy, just add a 10K between SSx and VCC.
An important note is that SPI-devices are active when the slave-select is low. So if you want to read/write data from, say device 5. You will have to shift in | 1111 1111 | 1101 1111 | (if I understand these registers correctly).
Another fun thing with this, is that you can daisy-chain these. As long as you have the power to drive all the circuitry.
Feel free to comment and correct me on things, I’m sure that I’m wrong on at least one point in this post. Also, I know that power-supply is missing for the 74HC595’s, it’s eagle CAD faults.