Close

Backplane and a Serial Ports

A project log for OMEN Alpha

As-simple-as-possible computer with the 8085 CPU

martin-malyMartin Maly 08/25/2018 at 15:044 Comments

My goal is to make a computer you can extend with some peripherals devices. Of course, the modern ones, no vintage cassette tape or light pen. But there is a problem: a lot of them has a SPI or I2C interface.

Of course you can simulate SPI and / or I2C by bit banging on 8255, but it is pretty slow.

Of course you can use a few 74's to make a shift register and a glue logic to send and receive data on the full speed.

You can use a buffer and a driver to bit-banged-but-faster solution.

OR

You can use a coprocessor.

In my case the second processor is an ATMega88. Yes, it has more power than the whole OMEN Alpha, but never mind.

I have used the ATMega as an peripheral. It is connect to the system bus as a regular peripheral device. Chip select makes ATMega interrupt, read data from data bus and let the firmware work. The firmware decide if it's data or controll byte, and make all necessary operations for SPI or TWI bus.

Because there are no synchronization, I have to use simple "halt" mechanism by a simple R-S FF (1/2 of a 7400). Chip select set R-S to HALT (and drive the 8085's READY signal to low). ATMega can take its own time to read data from bus or write them back (regarding the /RD and /WR signals).

When ready, ATmega sets R-S back to READY (and drive READY high). The 8085 CPU now can work...

I will see if it works... It should...

Discussions

Peabody1929 wrote 08/27/2018 at 16:25 point

Is there an issue with the hold time for the data bus during a read cycle?  When does the 8085 sample the data bus? 

  Are you sure? yes | no

Dave's Dev Lab wrote 08/26/2018 at 18:17 point

i have seen a lot of projects use an AVR or PIC to handle more complex I/O for computing projects. while these are good for development and testing, i think for the overall project that they reduce the uniqueness and educational aspects of the board. If you look at the computing history of the 80's and 90's, the real struggle wasn't with the core computing, it was with the I/O. Things like unified keyboard interfaces, video/sound standards, and printer connections. When using and AVR or PIC to short-cut that development, you really miss out on a lot of the real challenges of creating a home-brew computer... (just my opinion!)

p.s. have you considered using a CPLD?

  Are you sure? yes | no

Martin Maly wrote 08/26/2018 at 18:44 point

Sure it's a shortcut. But I want to try this way too. Of course I can to do it with a binary counter and a shift register, and I will do!
In my angle of view the point of creating a home-brew computer is to have a fun (in the first place) and to have a very own computer you can write a software for. 

p.s.: I have tried to implement the most into the GAL, but I've failed. CPLDs are not so easy available for me, unfortunately, and FPGAs I have has a lot power to make the whole computer on a chip. ;)

  Are you sure? yes | no

Dave's Dev Lab wrote 08/26/2018 at 19:16 point

"In my angle of view the point of creating a home-brew computer is to have a fun (in the first place) and to have a very own computer you can write a software for. " 

Understood! it's was more of a general observation rather than a critique of your project. keep up the good work!

  Are you sure? yes | no