Showing posts with label wirewrap. Show all posts
Showing posts with label wirewrap. Show all posts

Tuesday, January 3, 2017

Building a 68000 Single Board Computer - It's Alive!



I spent some of my recent holidays wiring up the rest of the board. With about 30 chips and a similar number of discrete components, it was quite time consuming. I followed a wiring color coding convention to distinguish between power, ground, data, address, and control signals.

To minimize the chance of errors I also marked the schematic in red pen for every connection that was made, and "ohmed out" the connections using a multimeter. As work progressed I only made and noticed a few wiring errors. I noticed a couple of small errors in my schematic as well during this process.



Last night I completed the wiring except for some portions that were not yet needed - the second set of EPROMs and RAM chips (not used by the monitor software) and the second serial port.


Today I did a last check that all chips were correctly installed and then powered it up. There were a few good signs immediately: no smoke, no chips got hot, and the current drain was reasonable. The halt LED did not come on, and looking at the CPU signals indicated that it seemed to be executing instructions.

However, no data came out the serial port, which should be expected if the monitor program was running. Some investigation with an oscilloscope indicated that the UART was never being enabled, so I started tracing back the address decoding chain.

I studied the relevant circuitry and looked at the description in the Clements book. Only a few minutes of study led me to realize that there was an error in the textbook and accompanying schematic. The wrong output for decoding the UART address was being used. This was confirmed by seeing that what I believed was the correct output was being enabled.

I made a quick change of one wire wrap, and tried the system again, hooked up using an FTDI USB to serial adaptor to a terminal emulator on my laptop. Sure enough, now I was seeing the monitor prompt!



I was able to type monitor commands and they worked correctly. I did some simple checks of the EPROM and RAM, and they appear to be working correctly. The single step circuit also seems to be working.

I'm amazed that it basically worked the first time. A lot of things had to all come together - the circuit design had to be correct, it needed to be correctly wired, and all components needed to be working.

I updated the schematic on github to correct the error, and better documented the monitor commands .

The next steps are to wire up the second UART and second set of RAM and ROM chips.

After that I can experiment with some more software. I've already entered a small program and confirmed that I can run it from the monitor, including hitting a breakpoint.

In taking some pictures of the board I noticed that it has something in common with some versions of the Raspberry Pi - it is sensitive to the camera flash, and will reset if a flash picture is taken close to it. The culprits are the EPROM chips.

Wednesday, December 28, 2016

Building a 68000 Single Board Computer - Freerunning on Protoboard


I'm now at the stage with the wirewrap version where I was on the earlier breadboard -- I have the clock, power on and pushbutton reset circuits, and CPU wired up so that I can free run the CPU. The power switch and power LED work, as well as the reset pushbutton and reset/halt LED.




By tieing AS* to DTACK* and pulling the 16 data bus lines low, it will continuously execute the instruction $0000 (which corresponds to ORI.B #0,D0) and cycle through all of memory. If I pull some data lines high, it gets an odd address exception and halts with the RESET/HALT LED lit, as expected.



Only five chips are wired up, but the rest have power and ground and bypass caps.


The next step is to wire up most of the remaining circuitry and attempt to get it running out of ROM and RAM. This will take some time as it involves almost everything in the circuit except the two UARTs. I will also only need half of the RAM and ROM chips to run the Teesside monitor program.

Friday, December 23, 2016

Building a 68000 Single Board Computer - Wirewrap Prototype

I've started assembly on a protoboard.



I am using a phenolic board with 0.1 inch hole spacing. I actually glued two boards together using Crazy Glue and some additional pieces of circuit board material for reinforcement to make a board large enough.



I've determined the locations for the ICs and inserted the wirewrap sockets. Until they are wired up, the sockets will fall out if the board is inverted, so to hold them in place I put a small dab of Gorilla Glue on one pin of each socket to hold it in place.



I also mounted the front panel switches and LEDs and some connectors. Power will connect using two binding posts. Two 6-pin headers will connect to the FTDI USB to serial adaptors for the two serial ports. A few discrete parts will be mounted on the perfboard but most will be installed into wirewrap sockets.



I installed 5 nylon standoffs, one on each corner and one in the center, to act as feet and lift the board up above the sockets.



Each IC has a 0.1 uF bypass capacitor installed next to it. There is a single large 100 uF electrolytic filter capacitor installed near the power connections.



The next steps are to wire up power to the power switch and LEDs and some of the ICs, then assemble the clock oscillator, power and pushbutton reset circuits and the microprocessor so I can get it to the same state as I had earlier on the breadboard - being able to run in freerun mode.