Ben Eater - 8 bit breadboard computer (with changes)
ฝัง
- เผยแพร่เมื่อ 5 ก.พ. 2025
- Inspired by Ben Eater and his EXCELLENT youtube series about building an 8 bit breadboard computer, I have finished the computer, and am now "debugging" it and testing it. It's fully operational, I just have not verified that it's "doing" what I expect!
You can find Ben's excellent series here: / eaterbc
Some of the items mentioned can be found here:
Fluke 117 Multimeter:
www.amazon.com...\
Rigol Oscilliscope: www.amazon.com...
Digital Power Supply: www.amazon.com...
Jameco Kit: www.amazon.com...
I am not sponsored or paid by any manufacturer or company. The above links do link to my new amazon account, where I would receive a small percentage of any purchases made by supporters of my channel, or those who appreciate the content I provide.
Please subscribe if you like, and like if you like.
Thank you
MODIFICATIONS:
4.7k bus pull-down resistors. I found the 10k resistors left the bus "floating" in certain situations.
I added an ebay "voltage" reader.
I used only 3 EEPROMs. 1 for my HEX or DEC 4 digit 8 segment LED display. 2 EEPROMS for the Micro code. With 1 being the LSB, and the other being the MSB bits of the 16 microcodes that my breadboard can run.
I also used a single static RAM chip with I/O lines, instead of a chip with dedicated input and output lines like Ben's computer.
All of my registers are 8 bit registers, including the instruction register.
My microcodes (so far) only require up to 6 microcodes to be executed.
My microcode has a reset function built into it - however, I have yet to enable the functionality, which will require two 8 bit OR gates, inverted to reset the multiplexer.
I used 74LS373 chips for several of the 8 bit registers in the interest of simplifing the more complex circuit that Ben outlines in his video's.. His version is much more educational, and I encourage you to try it. And then try to figure out how the 373 could be used, and when it shouldn't be used.
Congratulations on the project! Expanding the memory to 8 bits (and beyond) makes the computer significantly more capable. I’m really curious to see what you’re able to do with it!
Lots of good advice in here, particularly on power distribution. I really like the idea of soldered power distribution. I suspect that maybe by using high quality (but expensive) breadboards, I’ve been lucky that things have usually worked okay? I dunno. I’ve found my computer draws just shy of 1 amp and I’ve been pleasantly surprised that it actually does work w/ USB power, though just barely. I bet folks could easily run into problems, e.g., by using slightly different LEDs with higher current draw.
Cool idea of using even/odd addresses for the two different microcode EEPROMs (assuming I understood correctly). Neat idea to be able to program both identically.
Congrats again and I look forward to seeing where you take it!
Hi Ben! Thanks so much for all of your content and video's. I agree 100% - the breadboards I am using are probably around $2-3 each. So far, my computer is drawing just about 1.0 to 1.1 amp - So we're close enough for hand grenades or horseshoes. :)
Yep - on the EEPROMS - your discussion about the rams, EEPROM programmer, and then the programming that you did, basically opened up my mind to splitting the EEPROMS into LSB/MSB chips - and using bit address 0 to be odd or even. Made the programming WAY simpler (exact copies), and made the wiring easier too. Just ground A0 on chip 1, and set to high on chip 2.
Not sure where I am going to go yet - I am still working out microcode, and I have not had time yet to "debug" it, and really test it.
I did discover that I had to reprogram my microcode for the 1 chip registers, as you had to control two of the control channels on those in order to get it to work correctly. I'll do a video soon about that experience. Looking forward to sharing, and hearing more from you.
dig up an old xt rom or a 286 rom and print it out .. get an idea what they thought was needed for microcode .... and go from there
.
Biostar had an awesome 286 board back in the day ... worked great failed little and took a beating as good as timex
I’m so glad you addressed the question of “WHY” at 3:40 in your video.
I lurk all the forums, watch Electronics videos every day on TH-cam while working in my shop full-time, I check out all the sub Reddit‘s and everything else online…
And I’ve seen so much about this project in every corner of the Internet since Mr. Eater started it.
I’ve got a humble lab, stocked to the gills with previously blown equipment that I’ve mostly repaired myself… (with a few nice pieces of HARD EARNED gear sprinkled in for safeties sake.)
But I’m a hardware guy not a software guy.
I’m getting halfway decent at debugging things… Spent the last two years tearing down dozens and dozens of motor drives. probably hundreds.....
From small 1.5kw drives, worked my way up to massive 8 foot tall Allen Bradley cabinet monster controllers. And all types of test equipment in between. Debugging and finding faulty components, characterizing/ finding substitute “unobtainable” transistors, all of the stuff needed to fix up old test gear and motor drives that have been burnt or otherwise abused.
But man oh man… This project of Ben’s gets into completely uncharted territory for me. My mind just doesn’t bend that way.
I didn’t even understand what it was… or The reason for the project at all…
I’ve been looking for the answer to that question “WHY” for the last month or so since I started seeing mentions of this all over the net. So glad you answered it in your video! Basically the project helps understand the architecture of CPUs and early computers… That makes total sense to me! The only time I’ve heard it said clearly
Super interesting indeed!
Maybe one day I will get to this point… But for the way my brain works… I’m much better at breaking down massive IGBT modules and debugging/repairing... hell I even stumble my way through etching and populating small SMD boards from scratch (thanks to Mr. Carlson‘s help)!
But messing with any of this logic and CPU stuff. I hardly understand it at all. Maybe one day.
But I Still watched the whole video and it was very interesting, And so clearly presented.
Maybe one day. But WAYYYY out of my league for now!
Thanks for the great content and the wonderful project!
ambitious bravery. commendable. inspiring. my friends and family thought I was crazy when I spent all my paper route and berry picking money to buy a bunch of fiddley bits and pieces to build an Altair. After months of assembly and debugging, none of them were convinced that it did anything at all. Switches and lights. Then on to Commodore, Atari and Apple and a decades long successful career. I love to see all of this 'old school' stuff. Cheers.
Hello, Sir! Thank you so much for showcasing your progress! I'm a big fan of Ben Eater as well and even though I've been watching his series from a perspective of programmer who eager to learn about hardware to get a deeper understanding of how to write a CPU emulator, still the use his series provides is out of this world! Being inspired by an 8-bit breadboard computer project I've written a CPU emulator that runs on arduino nano, takes input from the 4x4 keypad and displays the output on the LCD screen. It boots into a hex editor (just like Apple 1 did) and can be programmed in machine codes directly or get programs loaded via serial port. The most sophisticated program it currently runs is Chrome Dino game out of 496 bytes but I'm going to try to write a chess program for it. Well, obviously it's not even near to electronics but without Ben's series I would never get to where I am now, so yeah, hats off to Ben!
P.S. I was a bit upset when found only a few videos on electronics on your channel. Your presentation is extremely addicting and as a viewer I'd love to see more of this like content for it's very inspirational!
Ben's series is amazing. I have used it for two student projects here at UARK.
I'm glad I'm not the only one that ran into some challenges with power. Great Job !.
those stackable bread boards are good for a max of 3 boards stacked before you need to stack power supplies as well ... basically every 3 boards add a new power system so you only draw minimal current through the boards and limit component heating and hystoresis ... from all the friction fit connections you have made .. each one can resonate if they hit the right voltage ... a good way to avoid a large additon of rf interference and added power drain is move the bus off the boards and onto a ribbon cable ... use a pin based connector to attach the bus to the bread board ... but keep the lines in the ribbon cable ... you can also add a 5v and gnd line to the bus then you will always have a good reference high and low voltage when and where it's needed .... and reference all high and lows against the bus line power and not the power lines on the bread board ...
Awesome. I'm about to finally start the build myself. Been sitting on half the chips for over a year, but I'm finally back in my engineering mode. Might start out making a simple calculator first though :D
It's nice to see other people like myself making this 👍
Nice project. Nice reflexes: 4:27
I’ve been watching all the Ben Eater videos recenty.
This is cool. I know it’s old, but I’m scouring TH-cam for 8-bit processor projects. I enjoyed your troubleshooting analysis and how you solved the power problem. I’m finding my oscilloscope quite handy debugging my 8-bit fast adder for my project.
I didn't build it myself, but for power distribution and consumption I think that most of your current consumption is the LEDs.
It would be great to buy some high efficiency LEDs and connect them via 4.7k resistors, that way you would use 0.65mA per LED instead of 20mA+
If you buy 1000mcd LEDs (anything 300+ will be amazing), they'll probably be even brighter than standard cca 30mcd crap LEDs @20mA - you'll most likely be able to get away with using cheap 5V USB adapter because just 5 sets of 8 LEDs = 40LEDs!, those could consume up to 1A of power (even more if you use less than 150ohm resistors with them)
You can also save some power by swaping some or most of your TTL parts with compatible CMOS parts (HCT marking should do the trick). They look the same and they work exactly the same as TTL version (74HCT04, 74HCT08, 74HCT00 etc.)!
I want to build a breadboard Computer too, but I think I’ll make my life a little bit easier and use an 8088 for it.
Also, I really like the x86 architecture.
How has that gone?
@@ducksonplays4190 "Also, I really like the x86 architecture." -- I bet he got over that.
@@Barnaclebeard Probably
Great stuff, once I get all the parts sorted out I will be making a version of Ben's computer on solderable prototype boards, probably the 4 bit (16 byte) address version first. Good to see someone figured out how to get 256 bytes out of it.
thanks!
Now I have to go back and "reverse" the bit display's, as I have them going left to right, instead of right to left. *sigh*
"Modifications - 4.7k bus pull-down resistors. I found the 10k resistors left the bus "floating" in certain situations."
YES! I found this to be an issue as well. I settled for 1K2 resistors which ended up fixing my problems. Glad I wasn't alone!
Thanks, I also didnt get 0 values on undefined outputs when using 10k to ground resistors on the bus... Ill try other resistors
I was all proud of myself for making a 4 bit adder in No Man's Sky.
Than I saw someone had made one of the skeet ball games, with a score and timer.
I have found those elenco logic probes to be very useful as well
Great job!
If you're looking for ideas, adding a way to support branching is a lot of fun and gives a good edge. Also multiplexing control bits to a 138 so you can get more than 16 control lines
I’m waiting for my tam and mcs. But things are working so far. I couldn’t get the 173s so used 373 from the start. I also used the 245 with the 373. But you say it’s not needed. Makes sense, the 245 just combines the outputs from the 2x173. Cool👍, I can save a chip and some board space.
Hi there! I've been playing with the SN74HC574 8-bit registers. Since I'm soldering to veroboard - the D to Q alignments make it very simple to layout a line of registers (using the 74LS245 direction pin and OE to place data on the bus or into a register). I've got a line of 574s with no veroboard breaks on the D/Q lines. My Register board has a LS139 to select a particular register to output to the bus. Using 2 x MC14495 Hex displays to display the content of my LS273 registers.
good to see your project.
I'm wondering why would anyone ever dislike this
Added to my SAP computers playlist
Your version of the 8bit computer is really cool :) I found the same issue with mine and pulldown resisters, I've ended up using 1k pulldown resisters on the bus. I also added them on all the IO Control lines too. I've got an essentially complete processor now, but strangely mine only ever draws about 500mA which is a bit confusing based on what I've seen with bens and other peoples videos like yours. I'm using a rather large 5v 2.5A power brick to run my computer and haven't had any power or voltage drop issues. I also brought a Osciliscope, I got a Hantek DSO4104B which is also 4 channel but it also has a External trigger too so I can use all 4 lines for debugging and I wrote a custom instruction which I use to trigger the scope when I need debugging in a program. I'm looking carefully at your design, as I am about ready to build a second improved version with ram etc. I'm just buying some 373's and have gotten bigger ram chips and some 75LS181 ALU's
74LS181's are really nice ics.
Half a year debugging, but I cant make those weird fluctuations to go away :(
This was posted on Ben Eater's channel (someone beat me to it), but there is a simple way to improve your power rail issues. Ben touched on it briefly in his early videos and seemed to not do this, however bypass caps on rails would make a large difference especially since most of your chips are on the same clock cycle. Your 0.8 - 1.0 A power draw should drop a little and this should help as you expand.
Thanks for the tip on the 74ls kit
Yes! it's a bit expensive - but it's nice having a bunch of chips that you can roll with.
Gratz on completing yours. =)
Thanks Gerald! Still playing with it a bit here. Right now, debugging the Intstruction register with the 74LS373 which does not appear to be displaying it's value - but is passing the value to the EEPROMS.
Once I have it figured out, I'll probably do a quick video on what I found.
I love the adaptive ideas. May I make a note that the Fluke 12E+ is a little cheaper and equally as accurate. I've been following the build series for months now and are building the same but in FPGA since all my breadboards are in 'use'. You've gained a fan
Cool project! I would just suggest one addition to your tool lineup, and that is a logic analyser, I have found that to be invaluable when it comes to troubleshooting digital anything. For instance one of the saleae ones or something similar. Best of luck with the project.
If you like all that Z-80 stuff find a book called Build Your Own Z80 Computer by Steve Ciarica. You should find some things in there interesting. I wasn't too keen on the PSU he designed though. I did like the clever hexadecimal encoder he has. But I made mine with a latch so I could build up a full byte. It is still neat how the logic generates the code by strobing a counter. Which back then was an accessible way of doing it. That whole project made me think about powering large circuits differently. Because as you're finding out it is difficult to maintain regulation throughout a large circuit. I don't even try to today. I pass a higher voltage around and regulate it down at each circuit module. That's feasible. LM7805s are your friend.
Really nice project! I am implementing Ben's 8-bit computer in an FPGA. I am doing a video series on it for anyone interested.
Also, I meant to mention… The DIGILENT “analog discovery 2” has helped me a lot, it’s a computer-based device that has an oscilloscope, logic analyzer, power supply, and all other useful stuff built into it. It’s a really amazing piece of equipment. It helped me out a lot before I got my siglent SDS1202xe oscilloscope.
Also one of those really cheap logic analyzers from eBay that are under $10. That seems like it would be of great use to someone doing logic level stuff such as yourself and all of the other people building Ben’s design. Those $10 logic analyzers are truly amazing!! you can see some videos about them. Just type in “cheap usb logic analyzer” or something like that into the TH-cam search bar.
I like it good job so far.
DJ
I am at the 8 bit register part. And you kinda resembles like Scott Hansleman from Microsoft.
Nice work! I've just competed wiring the clock module and have already run into a problem that I haven't seen on the forums or comment threads. The 555 timer on the select circuit will immediately start to heat up to the point that it melts the plastic of the breadboard. This will happen within seconds. It only began happening after I put in the logic chips and will work fine when the logic chips (specifically the 74LS08N) are taken out. Any ideas?
You can easly hack that scope and unlock all the options.
Ive soldered pins to wires that run around the entire set of boards. Some 16 pairs of pins with GND and Vcc wires. I also created a Star power distribution to ensure everyboard had a connection from PSU to the board.
BUT
I AM STILL having terrible voltage drops across the boards. I am using the couple dollar ones off eBay and suspect that is my problem. I might try using a protoype board where everything gets soldered and see how I go..
I too had the same problem. As you can see, I soldered the wires and used a pin at each board to help with the voltage drops. If you are still having voltage problems, you may wish to pull the power one at a time, from each board to see if one of the boards you are using is causing problems. Sometimes one board is bad or has a short. If you continue to have problems, you may wish to use a bigger gauge of wire. I got better connections with 20, than 22 or 24. (If I remember correctly.) Meaning that in some circumstances, I feel that a thicker wire friction fits better into the power rails.
Finally, if you are using a breadboard that the rails are only halfway down the board, that could be a problem too.
Thanks for the reply LoneRegister!
I am using the cheapest breadboards available which don't have the rails running the length of the board. They are separated in the middle so ive had to solder wires to pins to connect. I am thinking the cheap boards are my problem.
Like you i've got pins soldered to power wires at each the beginning of each power rail on the breadboards and these are linked and run the perimeter of the board and right next to these pins I have a 100uF cap and 10nf ceramic cap to assist with decoupling and smoothing.
Last night I upped the gauge of the wires from my bench PSU to 18 gauge and soldered them to some veroboard. I then decided to try the star connection method from my PSU so each breadboard has its own line to the PSU instead of having it connect at one point near the top then running around. I used 20 gauge wire and soldered it to the veroboard and had these terminate to soldered connections to 2 pins to connect to the breadboards.
due to time I only created 4 sets of these lines but measuring the voltage it seems i'm still getting significant drop.
I think my next step will be as you suggested to isolate each board and measure the drop to see if I can find the offender. Failing that I may just scrap the BBoards and use prototype board with soldered connections.
On another note I have noticed something that makes the voltage drop even further. When I initiate the computer (at this point i've only got the clock, register A, register B, ALU, Bus, and Instruction Register built) and the registers start up they all start up with the LEDs lit. When the LEDs are on I get a .4V+ drop or so in voltage. With them off (I usually just disable the enable line) the voltage comes back closer to what it should be.
Is this normal? I don't have any current limiting resistors on the LEDs except for the bus and the LEDs on the instruction register (the 4 yellow and 4 blue just like Ben) seem very bright. I might try adding copies of the Bus LEDs where I have soldered resistors to the leads and see if that makes a difference.
Anyway sorry for the wall of text just looking forward to getting this running and learning more about how it all works!
What are you using to drive voltage. I originally was using an apple wall charger - and that was not a good option. When I upgraded to a power supply, things got much better. If you have a PSU, are you set to current limit or voltage limit? I'd also play around with the current max to see what happens if you provide more current.
I tried soldering wires to header pins but the plastic melts and the pins move into incorrect positions. Any tips? One idea I just thought of was maybe soldering while the headers are plugged into the breadboards. Did you do that by chance?
Wish there was a schematic of your changes. it looks like a nice addition. I have been considering doing much of the same, looking at creating actual address lines instead of shared w bus 8 bit thing.
So while you were making improvements, did you also a control line to reset the microinstruction counter at the end of shorter instructions?
On a side note, what instructions have you added with the additional instruction space, how are you handling loading operands, and did you make the "ALU" actually able to perform logical operations?
Good question - I have a thought to doing the micro-instruction counter reset - and will be posting that soon.
I have not updated the ALU for anything other than ADD/Subtract. Though I am thinking I might locate an ALU unit, and try to use that to provide stuff like that. Might end up changing my control lines structure though.
You're a serious board gamer too, I spot....
That is correct! My latest passion is StoneMeier games, and then Gloomhaven (on order). How about you?
LoneRegister Well, I used to be crazy about Settlers, and later Dominion, but currently I'm more into Ascension. My next purchase will be the 3rd year set and a complete Star Realms collection
It was the dice tower that informed me, not the Dominion box, though I did notice it later
He also did an example of a simple graphics card that connects to VGA. If you could take that example and add it to your computer that would be cool.
Can I get an F in the chat for this man's spilled cup?
I wonder how much effort it would take to go to 16bit address space, have a separate control, address, and data bus (for performance), and then try to get a minimal Linux kernel running..... any idea what the max clock speed you've been able to run at?
Good God Eric! You are a mad man.. I can't imagine cutting all that wire.... LOL
Oh - I will also throw the oscilliscope onto my breadboard and see what happens for speed. Right now, I think it's like 200 or 300Hz. I think with breadboards, impedance and resistance will become problems after a relatively low Hz rating.
LoneRegister oh, cool, can't wait to see the results. what a facinating project!
LoneRegister - I guess you could do something radical: Go for serial address and data buses. It will cost speed, but maybe, just maybe, with just 2-3 wires instead of 16-24 you could push the clock frequency up?
the ones ben uses are max rated about 400 to 500 hz ... above that you have to go prototype boards or start making your own pcb's
.
I do suggest you make a layered pcb btw ... so you will need 2 double sided copper boards and one no copper board ... top to bottom traces on the top side ... left to right traces on the bottom board .... power traces on bottom side of top board going left to right ..... ground traces on top of bottom board going top to bottom ... non plated board between ... yes you will need through hole and surface mount stuff to add parts ... also copper foil to line holes to link power and or ground and top and bottom traces through the board ... by doing a layered board etch up you limit traces acting as antennae and pulling more rf in and you localize your ground and power grid so each are fully accessible from anywhere on the board .... so less to no jumpers needed ... you can also switch the ground plane or add a new layer for control lines or the bus as well .... just use single sided boards above the bottom double sided board and make the top one single sided .. dot forget to make alignment holes or notches to get everything looking purty ;)
Awesome, i did encounter the same issue on voltage drop when using breadboard, and found myself hard to get EEPROMs, so i just quit, but, then i actually build another one using logisim and it's so much fun.huge thanks to Ben.
btw, can you give us some hits about how to do paging? should we always keep a page table in memory? is that a operating system task?what are those jobs the paging hardware carrying . maybe it can also be done in logisim? i wanna try.
I have power issues and I noticed that the VCC on my breadboards is between 4.19v-4.6v which is less than VCC required by chips to operate properly . Some chips operate properly though ,but program counter is counting in a weird behavior . So my question is: Can I connect a power supply to the right half of the computer and another power supply to the left half of the computer ? If so, will this have a bad effect on modules connected to the bus from the right and left halves of the computer ?
You will note that I created a power rail system on my breadboard. Basically I soldered to plugs that connected to most of the power rails. The goal being to lessen the amount of friction fits between power supply and each breadboard. If I daisy chain my +5 and ground one at a time, the last breadboard will have gone thru X friction fits, each one increasing resistance. If rather, I build a soldered connection to plugs that fit into each board - I only have 1 friction fit - and a bus that carries ground and power to the power supply. That should help.
@@LoneRegister Yeah I definitely know that it will increase the performance , I was just asking before I started soldering because I am not that good at soldering so I was just wondering if separate power supplies will burn the ICs regarding that modules from the left and right halves of the computer are connected to the same bus and clock pulses are coming from the left half of the computer powered by its own power supply to the right half of the computer with its own power supply , and I googled all the day and I couldn't find an answer to my question .
You really gave us helpful information in your videos , thanks for that .
@@amrkhaled9203 Don't solder to the breadboard. Create a harness.
@@LoneRegister Ok I'll do that . Thanks for replying .
Dude I want me some popcorn now :P
Something for all of us Geeks that might be of interest that I just found out about: www.retrotechnology.com/memship/memship.html
Hi! Nice!
What RAM chip are you using?
The ram chip I am using is the 972-71256SA15TPG which you can find on mouser.com here: www.mouser.com/ProductDetail/IDT/71256SA15TPG/?qs=0u2ZhD%2FBO3Fit5kTY%2FqdUQ%3D%3D
Hope that helps. If you watch Ben's video on the EEPROM programmer, you will be able to figure out how to handle the I/O lines on this chip accordingly.
So how does this work? You have one chip that contains the instruction and one chip that contains the parameter? Thus you have 256, 16 bit words?
can you please tell me how your common IO RAM is connected? I have been struggling with problem that Z output of selector (74LS157) always output 0 or 1, and so basically shorting output from RAM when Z is connected to IO pin. Thank you for your help.
I'm also starting with the build of Ben's computer. Clock module done. Now the registers. Since I don't have 173's, I was also trying to use the 373's. Unfortunately I cannot get them to work properly. Does it need additional logic for the LE and OE input? I think a combination with the CLK signal is required, because if I look in the 373 spec, I see that the data is only latched in, if the OE signal is LOW and the LE is high. But then the 373 outputs are driving the bus, hence a bus conflict? So my question is: How do I connect the computers CLK, LOAD and EN signals to the LE and OE pins of the 373?
I think I cannot do without the 245, because otherwise, it is always driving the bus, or the LED's for Register A won't always be visible, and not driving the ALU. So, I think the OE of the 373 should be always LOW, the EN signal from the computer should go to the 245, and the LE from the computer should be nand-ed with CLK and go to LE of the 373. Am I right or do you have a better idea?
Yay! someone else who uses Jameco!
You have made some nice additions to Ben's project, congratulations. Do you have any plans to make the circuit permanent and transfer it to a PCB?
how does your fetch cycle work then? So if i understand that correctly you have 8 bits instruction and then 8 bits Data in you RAM Module? If you could explain that to me?
Hmm...
I always wonder
*_WHERE THE HECK DO YOU GUYS GET YOUR SUPPLIES!_*
I CANNOT FIND THEM ANYWHERE
mouser.com and jameco usually have what you want. Ebay is also a good source.
Aliexpress
Digikey
I'm in the UK and I managed to source all of the components from DigiKey, Switch Electronics & Amazon.
I knew all that stuff when I was a kid. I also new lots of chip reps (TI, etc) who were always ready to throw a few samples to an enthusiastic (but broke) teen.
Did you use 74181s in the alu?
👍
excellent video, but very very low audio modulation...
Yes - I noticed that after posting it. It's something I will work on it future video's for everyone. Thanks for the feedback though. Your timing could not be better.
LoneRegister i notice its not as low as i first thought... it was very low max volume on a borrowed laptop also. Thank you again :)
So is this a CPU or a computer? Or is it the same thing?
It is a 74 logic series cpu... very very basic but it illustrates basic concepts of early CPU design and is a great way to get familiar with electronics
I'm in the process of building my version. I think I am having a power issue. When I have 0111 1111 in the A register, and 0000 0001 in the B register the ALU correctly shows 1000 0000. The ALU correctly outputs to the bus. With A Register set to input the 1000 0000 does not got into the A Register. Instead it resets to 0000 0000.
I can run every other number into A by adding 1 through the ALU but transitioning from 0111 1111 to 1000 0000 fails everytime. If I enable subtract I can run through every number in reverse in the A Register without issue. If I set the B resister to input the ALU output and the A register to 0000 0001 I can run through every number into the B register going one number at a time.
I can put just 1000 0000 on the bus and move it into A even with A set to 0111 1111. It's only when I have the control signals set ALU out A in that I see this bug.
I can count by 0000 0010 and it's fine. I transition from 0111 1110 to 1000 0000 no problem.
What makes me think I have a power issue is that I can unplug 5 of the LEDs on my A Register and then it transitions through 0111 1111 to 1000 0000 just fine. Plug in one my LED and the bug is back.
It is completely baffling. I have my A register, B register, ALU, clock, program counter, and Instruction register built. This is the first bug I can not figure out. Wiring seems fine. I think it has to be a power issue.
If you had any thoughts I would appreciate it. Thanks!
Dustin Pundt yes, see www.reddit.com/r/askelectronics/comments/6kcr61/_/
I had the same problem. It turns out the bottom half of the most significant bit of my bus was floating somehow. I stuck an additional 330 ohm pulldown resistor on that bit only on the lower half (below the jumper wire connection to the upper half), and that solved the issue. If I put that pulldown on the upper half of the bus, I still had the problem. Weird.
Have a nice day. Can the output be taken on the screen? crt etc.
I don't have it setup for a CRT or keyboard. Would be an interesting mod for this though!
I personally wouldn't use a CRT, since they are getting quite rare and I wouldn't want to damage one.
Great video! I have some issues with the SRAM chip with I/O lines I'm using, though. I got a 6116p 2K x 8 chip, but I can't seem to get it to work. Can you please explain how to connect it correctly to the bus?
Thanks Luca. Typically, if you are having problems you might want to check how the chip works, and the timings that you are using. Some chips are sensitive to how long the read / write signals can be active for, or how long they have to be active before you can write. With the "slowness" of the 8bit computer we're making here, you have to be aware of that.
This page might help? tams.informatik.uni-hamburg.de/applets/hades/webdemos/40-memories/40-ram/demo-6116.html
Do you read 2 Bytes, one opcode and one (or even more) addresses? (The address nibble in bens architecture was very smart and simple)
Any details or schematic for your wiring
can you please tell me how your RAM with common IO pin is connected? I have been
struggling with problem that Z output of selector (74LS157) is always 0 or 1,
and so basically suppressing output from RAM when Z is
connected to IO pin. Do you use another 74LS245 between your RAM and 74LS157?
Thank you for your help.
I got some questions, will the code that i stored in ram lost after disconnect the power
if it will lost, is it possible to store the code in eeprom and put it into the ram after reconnect power
Hi narawishfighter - depending on the memory type you use, it could store the values or not. In our case - the memory is not static, and will erase upon power off. If you used the appropriate memory, the data could be retained.
@@LoneRegister thanks for your fast reply, I plan to build one myself, I am a hobbyist (grade 10 student),I think i will learn alot from this project
That’s jame-co, not jame-eco. It is a shortened version of James Co.
Nice work! I'm collecting parts to build my own as well! I've been wondering how to make it have an 8 bit memory address and also 8bit instructions. Could you go into more detail on how you modified Ben's design to accommodate that? thanks!
Thanks! I'll put something together to go over details.
rewatch ben's version ... then watch his 4bit to 8 bit bus video ... it will be the same idea and concepts ... but the basics is you write your codes (0000 0000 ) ... so now you can have 255 codes to work with
So I've been trying to modify my build to use the same SRAM chip you're using, but am running into some problems. I hadn't considered that it uses pins that are both input and output, as opposed to the 74LS189s which have separate input and output pins. This makes things tricky because you can't program the system in the way that Ben originally designed it. I tried putting an additional 74LS245 in between, and tying the write enable to the RI signal whereas the output enable is tied to RO. This seems to work in program mode, but in run mode it fails spectacularly. I'm not entirely sure why, but I think it might have to do with the RC circuit on the RI signal.
So the question is, how did you handle this problem?
Hey Stephan - Hmm.. I will have to look. From memory - the tricky part here is that the chip must know the address and the value in order to write. Since we only have 1 8 bit bus, we can only have either the address, OR the value on the bus at the same time.
This means that I have to have a "register" holding the address for the chip (set on the cycle prior), and then I can open the bus to the data lines to write it. (with the appropriate control pins set).
I hope that helps?
If not - let me know and I'll take some pics in a day or so.
LoneRegister So I got a serious bug up my butt about fixing this last night, and it turns out my circuit was absolutely right...except for the fact that I had inadvertently hooked up the I/O pins from the SRAM chip to the bus in reverse order. Only noticed it when I stepped through each instruction clock by clock.
So for anyone else looking to implement this, what I did was increase my memory address register to a full 8 bits via another 74LS173 and tie those from address 0-7 on the SRAM, tie all of the address pins on the RAM from 8 through 15 low, tie output enable to low so it's always outputting, and hook write enable to exactly the same line that controlled write enable for the 74LS189 configuration. In between the 2-1 line selectors that switch between program and run mode on the RAM module, put another 74LS245, and tie it's output enable to the SRAM write enable chip. Works great!
Could a computer like this be expanded or modified to work something like an Arduino
For sure. I think expanding this to have PIO pins would not be too hard to do. Obviously - things like video, sound, etc.. would require QUITE a bit of modification - and I don't think the speeds attainable via breadboard would make reproducing sound realistic. This might be of interest as well: www.retrotechnology.com/memship/memship.html
Can You add led matrix display?
Hi! where did you bought such wires?
Just roles of 22 and 20guage wire. Some manufacturers skimp a bit on width - so test for fit before committing.
How much current does it draw?
About .8A to 1A
That is very good
Great job and thanks for sharing your experience!
I have also finished mine today and I totally get what you mean by Ben having explained things so well that you are able to finish the last part by yourself, as did I.
It's cool to see how people come up with their own little changes and do things slightly differently to get to the same result :)
I made a quick video of mine running the Fibonacci program: th-cam.com/video/j1o8EYSuVI8/w-d-xo.html
Will probably replace some of the wires with soldered powerrails like you mentioned, cause voltages do get under 4V in some spots, but it runs without issues now.
Do you have a schematic and ROM info on this?
Hi Ted - No. But there is a github attempting to help that might shed some light.
github.com/DutchMaker/8-bit-Breadboard-Computer
Thanks for the info.
But can it run DOOM?
Only when I install the Big Flipping Transistor. (BFT)
?
TALK LOUDER
A $400 oscilloscope? Overkill. A $15 logic probe can also tell you what's happening with your chips.
intro longer than needed