Wednesday, January 18, 2012

MKHBC-8-R1: Getting ready for some serious prototyping.

I am out of bread board grade wires and out of the desk space. It is time to move the computer's circuits gradually into the more permanent (although also prototyping) boards.
I will use the biggest prototyping board that I have to mount CPU bus and I/O expansion sockets. CPU bus will consist of 3 euro type 64-pin sockets I got from Digi-Key, P/N: 5650458-5-ND. These are vertical reception sockets and they will go to mobo and angled connector type matching plugs (P/N: A1255-ND) will be attached to expansion cards with CPU, memory, GPU circuits and will be plugged to reception sockets in working unit. Mounted permanently on mobo will be also interrupt controller and I/O expansion bus buffer circuits plus some helper circuits (5V regulator, some signal lights, reset and NMI buttons, power switch etc.). The I/O expansion bus sockets will be made out of 40-pin IDE type male connectors. This way, I will be able to use common IDE ribbon cable to connect any prototype circuits not yet mounted permanently on their expansion cards (bread board stage of prototyping/design of I/O cards). The I/O expansion cards will have the female 40-pin connectors matching IDE male plugs in the mobo.

Figure 1: Basic idea how MKHBC-8-R1 will look like on the permanent board. 3 CPU bus expansion cards visible in front. I/O expansion bus IDE type sockets and I/O card now just put loosely over the 40-pin IDE female connector to give me the idea of the future layout.

Figure 2: View from the side. Between 64-pin sockets and IDE connectors I left a little bit of space for I/O expansion bus buffer circuit (which will simply consist of 3 x 74LS245 chips.).

Figure 3: 40-pin IDE female connector will be soldered into prototyping board and with circuit on it will become I/O expansion card. The first one to build will be of course 6850 UART.

Figure 4: CPU bus expansion card. I have 3 of these. With these I will build CPU card, memory card and GPU card.

Figure 5: Prototyping boards are ready. Time to heat up the soldering iron.

Few comments regarding this layout and why most of the circuits will be in the form of expansion cards. Well, first of all, it promotes modular architecture and I like that. It will allow me to gradually build the computer circuits and test them separately. It saves space. Also, when I design the mobo smartly, I can use it for other similar projects. Simply unplug existing cards and design new ones. Of course there will be limitations as of how the mobo can be used with different projects. E.g: it will have 16-address lines (non-multiplexed)/8-data lines bus, limiting the type of CPU architecture that can be used. Still, better this than nothing. I may one day decide to build 6809 based CPU card. I think that I mentioned in one of the prior posts that I have one because I originally wanted to build 6809 based computer inspired by Matt Sarnoff project - out of impulse I ordered parts for clock and CPU circuitry for 6809 based computer.

The CPU card will consist of CPU clock circuit, Rockwell 6502 CPU, start up reset circuit, main I/O selection signal, I/O decoder and EPROM addresses decoding circuits. It will also have EPROM chips on board with OS/firmware. I thought of it to be logical since CPU and its firmware (like where the start up vectors are located in address space) are bound to each other. The RAM card will consist of base RAM 32 kB chip with address decoding circuit, the 128 kB RAM chip with bank switching register and address decoder (bank switched RAM will occupy 16 kB of address space from $8000 to $BFFF) and optional switch to change RAM map configuration in case GPU card will be plugged in the system (in this case the base RAM will be limited to $0000 - $5FFF instead of $0000 - $7FFF, allowing the video memory to be decoded in space $6000 - $7FFF - 8 kB, which is how much Motorola 6847 video chip can address). GPU card will consist of 6847 chip, 8 kB video RAM, video RAM address decoder circuit, buffers and glue logic allowing to share RAM access with CPU using opposite phase method, composite video amplifying transistors/color mixing circuit and I/O write only register for setting the video mode of the 6847 chip. I am not yet certain about what I will use as video mode register. I have been thinking about 6522, but this seems to be overkill. I want to save 6522 for my interrupt timer and some I/O circuitry for future projects like IDE interface and such. So, I will probably opt for something simple, like the chip I used for RAM banking register (see schematics, 74LS374 3-state edge triggered octal flip-flops). The GPU card I save for later. I consider it the difficult part of the project. Before that I will build 6850 UART card (will go into I/O expansion bus), which is logical because I want to have some means of communicating with my system via terminal emulator. I also want to build real-time keeping card. I bought DS1685 chip some time ago not thinking about any particular project that I will use this chip with. Now I face the dilemma of attaching the multiplexed address bus type chip to non-multiplexed 6502 bus. I have some ideas, but not very clear yet.