<< BACK | NEXT >>

Bus Monitor v1

[6th August 2015]

I'm starting work on my 2nd 6502 home brew computer with the initial hardware already constructed. I'm now at the point of writing some initial firmware and checking that the hardware works as expected.
Now, last time I put one of these together I, at first, attached a series of LEDs with series resistors to the address, data and control buses. I then had to single-cycle the processor and for each cycle then convert the buses into hex values and compare those against what was expected int he object code. It took a fairly long time and was certainly inefficient time-wise. I did look at creating a soldered LED board and, although this was easier to attach, still took as long to use. Here's a picture of both the breadboard (it's the raised smaller breadboard with the resistors and LEDs) and soldered versions:

BusMonitor version 0 using L.E.D.s BusMonitor version 0 using L.E.D.s BusMonitor version 0 using L.E.D.s, underside

Recently, I decided to tackle this issue head on and, given that I've been learning to program GALs, decided it'd be an excellent idea to see if I could create a 7 segment LED display bus monitor using them. Why GALs? Well, you can get 7 segment LED display driver ICs which will display BCD (binary coded decimal, characters 0-9) easily enough, but you cannot readily get hold ones which display hexadecimal (characters 0-9 and A-F) any more.
PLDs (GALs, PALs) and CPLDs can be used to simulate the functions of the older hex 7 segment driver ICs and as I have a bucket load of Lattice 22V10B GALs, I decided to use these.

First off, here's the initial circuit diagram:

BusMonitor version 1 using LED 7 segment displays circuit diagram
(click image to enlarge)

As you can see, the project uses six GALs, each one deals with 4 bits from the attached buses. The connectors allow for a 16 bit address bus and an 8 bit data bus. This gives us 16 pins/4=4 GALs for the address bus and 8 pins/4=2 GALs for the data bus: The total is 6. We do have some signal lines, but these are displayed using LEDs so we can ignore those.
The reason why the GALs deal with 4 bits each is that 4 bits represents on hex charater in the address. So the hex characters '0' to 'F' can be represented by binary 0000 ('0') to 1111 ('F'). This means that we can use a single 7 segment display per 4 bits. Each GAL then outputs 7 lines (one per segment on the attached 7 segment display). It's a pity that the GALs don't have more pins as I could then have one GAL deal with 8 bits and then switch between 7 segment displays... oh well.
One thing to keep in mind is that each segment of the 7 segment LED display is... an LED! Which means that each segment will do what LEDs do and try and draw as much current as possible and then burn out. Because of this, I've used current limiting network resistors in series. A network resistor looks exactly like an IC but simply contains a series of resistors independant of each other going from a pin on one side of the device to a pin on the other side, directly opposite.
The 7 segment LED display types that I'm using for this project can be display segments in red or green. The colour is determined for the entire display device by which of two pins is used as the common cathode.

BusMonitor version 1 using LED 7 segment displays top side BusMonitor version 1 using LED 7 segment displays top side BusMonitor version 1 using LED 7 segment displays top side
(click an image to enlarge)

Issues & Solutions

This version works, however some issues came up, namely:
- The soldered kynar/mod wires on the back would detach every so often and require resoldering. This couldn't be helped apart from possibly hot glueing the back or perhaps using electrical tape - both ugly solutions.
- It overheats drastically. This is because each GAL is trying to power 7 LED segments at 10mA each. 70mA total and so the GALs I think are running at their limit. Reducing the output to each segment would help significantly with this
Also, this design is utterly unoptimal as I could have done it with fewer GALs and rapidly switched between the segmented LEDs fast enough so that the human eye is fooled. You live and learn.

<< BACK | NEXT >>



Site Map | CSS Hover Menus by Css3Menu.com