Yet another TTL computer, inspired by Ben Eater's YouTube video series.
While wiring up the ALU, I was becoming frustrated with all the wires. Trying to keep things looking neat became more and more difficult and I couldn't help thinking that the green wire I was using felt thicker than some of the other wire I had used on this project. I'm not particularly happy with the final result, but it is as neat as I could get it and it was very difficult to get all the wires to lay neat and fit into the available space.
When I started wiring up the computer, I had originally used some purple wire that I found very difficult to work with - the wire kept snapping and the outer coating was quite difficult to strip. I switched to using a new spool of green coated wire that was a bit easier to work with, but still needed a bit extra effort to strip the ends. Having almost used up that spool of wire, I ordered some more and have been working on some other projects the past few days. I grabbed a different spool of wire for another project and found it much easier to work with - stripping the wire was so much easier and I was able to lay multiple wires next to each other easier too. Comparing the green wire with this other spool (brown) I could see that the plastic coating is a lot thinner on the brown wire, which makes routing multiple wires easier.
It might not show up so well in these pictures, but the brown wire easily fits two wires per row of breadboard holes whereas the green wire is a very tight fit. There is actually a slight amount of play between the brown wires which simply isn't present with the green...
I think I will switch over to this other brand, but that will also mean a colour change - for some reason I can't find green or blue spools of this wire unless I buy a six pack of different colours - I have enough black, red, white and yellow wire to last me, but they don't sell blue or green individually. I can get brown and grey spools, so I guess I will have to replace the green with brown. (I think the grey might be too easily confused with the white I am using for the clock signals and yellow is used for control signals.) I'll leave the ALU for now, but it will need to be rewired with the new wire at some stage...
After fixing a minor wiring mishap (I managed to wire up the ALU to bus in the wrong order!) the ALU worked first time without problems. It looks messy as heck, but it is a messy component...
I've uploaded a short demo of the ALU in action - adding B to A then loading the result back into A each clock tick, then I change the jumper for subtraction and count down. It feels good to see some blinky lights happening at last! 8^)
I have almost finished the ALU wiring - I only need to connect the output to the data bus and add some proper LEDs. A quick test shows that it is working as expected, even if the wiring is a mess. Here it is calculating 17 - 14.
I'll be glad to move onto a different module. IIRC Ben does the RAM module next, so that's prolly what I will do...
Well I couldn't leave it alone, so I started working on the data bus wiring and ALU this afternoon/evening. A few dabs of superglue has made the breadboard structure nice and secure and the data bus is now looking a bit neater without all the jumper wires everywhere.
Due to the layout of the breadboards I am using, most of the data bus connections are slanted, but that's the best I could do. I am increasingly frustrated at the five holes then a gap in standard breadboard power rails - why don't they have tie points all the way along the power rails?
After doing the bus wiring, I started on the ALU - what a mess of wiring! I really can't see any other way and I admire Ben's efforts to try to keep the wiring as tidy as possible, but it really is messy. I only have the A register wired up so far, but a quick test shows that it is working, with no swapped bits.
I have been half-thinking about committing this design to a PCB layout when I am finished and I think routing the ALU section is going to be a pain! When I get the B register wired in and tested I think that should be the worst of the wiring mess completed. The output and microcode modules are a bit cramped in places, but they don't seem as bad as the ALU is.
I haven't been feeling well today, but I did manage to get register A re-wired on the new breadboards. The new wire (green) is much easier to work with than the purple coated wire I had been using previously. I am reasonably happy with the results here, but I could probably have done the blue data bus wiring a little neater if I tried.. 8^)
Okay, today I didn't do as much as I had hoped, but I am happy with what I did get done. A simple fix was wiring in a "clock bus" next to the data bus. This doesn't really add much to the project right now, but it should make routing the clock signal a bit neater as more of the computer gets built.
Then I added some pull-down resistors to the data bus. I spent too much time trying to get the resistors neatly positioned and soldering them to a negative rail. The soldering isn't my best work, but it will do for now - I can tidy it up later.
Finally, I added some indicator LEDs to the data bus. Again I spent too much time trying to get everything lined up nicely, but the end result isn't too bad IMHO.
I'll tackle the A and B registers next...
I have completed the rewiring of the first register. I chose the instruction register only because it lives on the same side of the construction as the clock module. I tested the new IR and it works flawlessly. I haven't yet wired in the data bus or clock signal properly, but for now it is looking pretty good.
And for reference, the current (new) layout is below:
Tomorrow I plan on connecting the data bus and adding some pull-down resistors and indicator LEDs. You may notice I have 10 lines in the data bus - I am planning on using one for the clock and one for the inverted clock signal. That should make routing the clock signal a bit nicer. After wiring up the bus, I will then re-do the A and B registers and (finally) start on the ALU.
And the clock is done.
I'm reasonably happy with how this has turned out, however I really wish breadboards' power rails had holes _all_ the way along the rails, instead of groups of five holes at a time. I had to place two wires and one resistor at a slight angle because of the five hole layout, but I wanted to compress the layout slightly and the final result didn't turn out too bad.
Next task is redoing the registers...
I only had 10 breadboards when I started wiring up my computer and I thought I would simply purchase another batch of 10 boards from the same supplier. Well the breadboards arrived a couple of weeks ago, but when I went to add them to my project I noticed they were slightly different - the colour was a slightly off-white shade, compared to the bright white of the first batch, and the boards were even more warped than the originals. I want the final product to be a nice display piece, so I am not really happy about using two different types of breadboard. As it would happen, just after I noticed this discrepancy I was placing an order for some PCBs and components with JLCPCB and LCSC. I checked LCSC's breadboards and their prices were about the same as the cheap Aliexpress-sourced breadboards. Throwing caution to the wind, I added 15 breadboards to my order and hoped for the best...
My JLCPCB/LCSC order arrived yesterday and I couldn't be happier! The new boards are all identical, plus they all sit perfectly flat and the power rails are nice and square. (The rails on the previous boards were a bit loose and off-kilter.) So I've made the brave (foolish?) decision to move the construction over to the new breadboards. This is going to be fun!
Here is the current state of my build:
And the new (bare) breadboards look much nicer IMHO:
The few parts above are just resting loosely in place - I am going to reposition the components of the clock to give a slightly more pleasing layout. I also found a frame which is the perfect size for this project, so I can display it properly once it is complete. 8^)
Moving the four modules I have already finished over shouldn't take too much time and I should end up with a much nicer looking result. Wish me luck! ;^)
The extra wire I needed finally arrived last week, but unfortunately I have been too busy with other things to work on this (or any other) project. 8^( I did spend a little time on the computer today though - I made up a bunch of LEDs with integrated resistors and tweaked the wiring of the registers so they work a bit better.
I wasn't particularly happy with how Ben drives LEDs directly from the 74LS chips with no current-limiting resistors. Not only is this "a bad thing" IMHO, but the blue LEDs can be particularly bright when driven so hard. Adding resistors while keeping close to Ben's layout is kinda hard, so I tried out two possible solutions.
Option one was to modify some 10-segment LED bar graph displays with a resistor array. Bending the pins on one side of an LED display over and soldering them to the pins of a resistor array allowed me to turn the display into a SIL device. This is ideal for plugging into the pins of a 74LS245 to display the current value. Unfortunately, not all the blinky lights on the computer are so nicely laid out, so a SIL LED bar graph would only be useful in a limited number of places. Plus, while I do like the look of the LED bar graph displays, I think the retro-ness of 5mm LEDs suits this project better.
The second option was to solder resistors to the legs of LEDs. I managed to find some nice, tiny 1/6 watt resistors, so I decided to try using these and I think they turned out kinda okay. With these babies, I can just plug them in where Ben had his LEDs and they are not only less bright, but they should help protect the ICs by drawing less current.
And here's a very short video showing both LED solutions. The red LEDs appear a bit dim, especially the one of the right which is not pointing straight up here, but they are not really so dim in person. I quite like the look of the 5mm LEDs, so the rest of the computer will use these LEDs with in-line resistors.