RAM module testing and troubleshooting

แชร์
ฝัง
  • เผยแพร่เมื่อ 24 พ.ย. 2024
  • Testing and troubleshooting the RAM module. In this video we check out the RAM module, fix an issue, and make a small modification so RAM writes are triggered on the rising edge of the clock.
    Support me on Patreon: / beneater
    You can get all the components used in this video from any online electronic components distributor (Jameco, Digikey, Mouser, etc). See eater.net/bbcp... for more.
    Complete parts list (everything in the RAM module):
    2x 74LS189 (64-bit random access memory)
    2x 74LS04 (Hex inverter)
    1x 74LS173 (4-bit D-type register)
    4x 74LS157 (Quad 2-to-1 line data selector)
    1x 74LS245 (Octal bus transceiver)
    1x 74LS00 (Quad NAND gate)
    14x LEDs (9 red, 4 yellow, 1 green)
    3x 1KΩ resistors
    1x 0.01µF capacitor
    22 gauge wire
    5 volt power source (e.g., a USB phone charger)

ความคิดเห็น • 203

  • @ZacMitton
    @ZacMitton 3 ปีที่แล้ว +74

    Warning: Do not add the 0.01microfarad capacitor directly to the clock output as indicated. This creates an exponential decay curve on the clock's falling edge, making other clock-connected modules to be unreliable (mainly the control signals that use the falling edge later) . I confirmed this with my scope, removing the cap immediately solved the problem.
    The solution is to create a signal, isolated from the clock, using something like a buffer. Since there are 2 unused NAND gates right next to it (74LS00) , you can create a buffered clock signal by making 2 of the NAND gates into inverters, thus inverting twice. Input the clock into the first NAND input, and tie both those inputs together, then send that output to the next NAND input, tie those 2 inputs together, and then your output of that will be the buffered clock that you can send into that cap as before.

    • @scottstephenson4036
      @scottstephenson4036 2 ปีที่แล้ว +13

      I ran into the same problem where the negative edge trigger later was problematic (when building the control logic it would double trigger when setting test control signals low from the 3to8/138) and I traced it to this capacitor (looked like reflections were happening). It seems that you can also install a 10x smaller capacitor (10nF rather than 100nF) and negate the clock problem you're describing (at least on my setup that worked). The buffered setup you describe is superior though :).

    • @jamesdjadams
      @jamesdjadams ปีที่แล้ว +1

      Thanks!

    • @JulieanGalak
      @JulieanGalak 8 หลายเดือนก่อน +1

      Won't that add propagation delay that will desync the local clock from the main clock? Unless you do the same thing everywhere you use the clock...
      Though it might not matter at the low speeds this computer runs at...

  • @sjair6526
    @sjair6526 ปีที่แล้ว +22

    It has been April since I bought this kit and it has taken me this long to get this far doing it in my free time. I have made a TON of mistakes and have learned so much through the process of building and troubleshooting. I normally don't leave comments however I just wanted Ben to know how much I have enjoyed this series so far. I wish I had found this channel a long time ago. Can't wait till you start your coding for dummies series. Hint Hint.

  • @cheesecake667
    @cheesecake667 8 ปีที่แล้ว +114

    Please continue your series, its the best thing on TH-cam.

    • @jeffnay6502
      @jeffnay6502 8 ปีที่แล้ว +1

      Please check out my new comments. Sort by newest first.

    • @hardiehero8987
      @hardiehero8987 3 ปีที่แล้ว

      Yes

    • @kingcrimson1631
      @kingcrimson1631 3 ปีที่แล้ว

      I agree, it's literally the best thing on TH-cam

  • @oryano
    @oryano 3 ปีที่แล้ว +12

    If you have your clock input connected to your registers during this stage, you may be having double counting after putting in the RC circuit shown at 13:15 .
    Put the clock into the inverter (74LS04N), then put the inverted output through the inverter again, then connect THAT output to the RC circuit.
    I was pulling my hair out before finding this solution.

  • @la151212511111
    @la151212511111 4 ปีที่แล้ว +17

    I always find it funny that there would be dislikes on a video like this. What would the scenario be? You've watched 8 videos in this series, but something about ram modules, or the way he handled it, makes you dislike this one?
    or maybe you hate computers in general?
    baffles me. this is one of the most informative, interesting and educational series I've ever watched. I was luckiy enough to watch it as it was nearing completion - and I'm watching it again.
    Yay covid!
    But I love it.
    Thank you Ben! Thank you !

    • @yoshiguy35
      @yoshiguy35 3 ปีที่แล้ว +3

      It's from babies on their parents iPad tapping the screen at random

    • @joshua6765
      @joshua6765 2 ปีที่แล้ว

      ^ yeah. That's right haha..

  • @markrhine5809
    @markrhine5809 3 ปีที่แล้ว +2

    Dear Mr. Eater, I have been in electronics sense I was 12 years old, I have studyed computers and how they work, But your kit is the best for learning and troubleshoot I have ever saw. I am going to purchase the complete kit and give this a try. The first thing I am going to do is watch ALL the videos to get a handle on what I will be doing, looks like it will be a fun project... Nice job sir...):

  • @mkevilempire
    @mkevilempire 3 ปีที่แล้ว +1

    The troubleshooting is probably where you learn the most. Both from watching and from experiencing yourself

  • @jimstanley_49
    @jimstanley_49 4 ปีที่แล้ว +9

    The capacitor charge time is actually about 50µs. R*C is the time constant τ, and it takes 5τ to charge a capacitor over 99%. 1τ will charge it to about 63%. How long this takes to trigger anything in the circuit depends on the VIL/VIH of the part.
    Troubleshooting a circuit at work, I needed to extend the time a reset line was held low. (The bench power supply I was using had a slower rise-time than the supply in the system and I was getting garbage initialized to the registers.) I had to adjust my initial component values because the Voltage Input High was about 1.2V and the supply was 5V. I had calculated with 5*RC, but this was too fast because the components triggered high after less than 1τ. I solved E = Vin * (1 - e^(-t/RC)) for R where C = the cap I was using, E = 1.2V, and t = whatever delay I needed. Worked great after that.

  • @nilupulperera
    @nilupulperera 6 ปีที่แล้ว +4

    Dear Ben, What a nice video series. This is what I was looking for. I do not have any engineering background. I have a medical background. Your explanations are so simple to understand everything effortless. You are a great teacher. Thank you very much. Please upload more videos in this topic.

  • @No-jb6fy
    @No-jb6fy 6 ปีที่แล้ว +22

    Just outstanding material, great use of the breadboard, spec sheets for the components, and clear drawings, with excellent explanations. Will be watching all of it. Thank you very much for doing that!

  • @glennzone12
    @glennzone12 8 ปีที่แล้ว +32

    Really anticipating a video on how the instruction decoding works

    • @jeffnay6502
      @jeffnay6502 8 ปีที่แล้ว +7

      Here is a video of my Instruction Decoder. Feel free to ask any questions.
      drive.google.com/open?id=0B6LIgQzDkH8fZ2VBbXAySmZ3TDg

    • @j4Naga
      @j4Naga 8 ปีที่แล้ว

      Nice work, how long it took to build ? Also where can I buy the components online?

    • @jeffnay6502
      @jeffnay6502 8 ปีที่แล้ว +1

      You can usually get everything from eBay.

    • @j4Naga
      @j4Naga 8 ปีที่แล้ว

      Jeff Nay thanks Jeff

  • @frankruff7114
    @frankruff7114 หลายเดือนก่อน

    So I’ve been watching this whole series. All weekend and last night I kept having dreams that I was solving people’s problems with 1s and 0s. 😂

  • @garydunken7934
    @garydunken7934 8 ปีที่แล้ว +16

    A new CPU is slowly coming together. Please keep up this good project.

    • @xrayer4412
      @xrayer4412 8 ปีที่แล้ว

      G Yogaraja so you know that ben is making new videos?

    • @jeffnay6502
      @jeffnay6502 8 ปีที่แล้ว

      Please check out my new comments. Sort by newest first.

  • @ristopoho824
    @ristopoho824 5 ปีที่แล้ว +71

    14:17
    I found a bug on your system :O
    Or next to your computer. On the up-right corner.

    • @Blobadoodle
      @Blobadoodle 5 ปีที่แล้ว

      Very funny.....

    • @ducksonplays4190
      @ducksonplays4190 4 ปีที่แล้ว

      XD my Dell dimension 4100 had computer bugs too but thankfully they were long dead

    • @ducksonplays4190
      @ducksonplays4190 4 ปีที่แล้ว

      The bugs in it are probably older than me

  • @kenb3198
    @kenb3198 8 ปีที่แล้ว +12

    Awesome series Ben. Thank you very much for your work on this. Please keep them coming!

  • @d4m4s74
    @d4m4s74 8 ปีที่แล้ว +2

    this looks like a great project to build with my father in law. I can't wait until the full instructions are out, or I receive the 20 breadboards and various parts I ordered so I can start building along

  • @TuxxDJ
    @TuxxDJ 8 ปีที่แล้ว +6

    We're all waiting Ben. We all love this

  • @bluegizmo1983
    @bluegizmo1983 5 ปีที่แล้ว +19

    I feel bad... I'm watching these videos waiting for the magic smoke lol

  • @wjkoontz
    @wjkoontz 8 ปีที่แล้ว +2

    Ben this is fantastic! Love watching you build this and feeling the bug to start one of my own. Thanks!

  • @uplink-on-yt
    @uplink-on-yt ปีที่แล้ว

    Discovering you have a bug after connecting lots of wires can get frustrating fast.
    Also, each time I see a misconnected power wire, I expect to release the magic smoke that makes everything work. That would just add to the frustration. Glad there wasn't any magic smoke in the video.

  • @chuckblack8227
    @chuckblack8227 4 ปีที่แล้ว +1

    Ben Eater, I love you

  • @davidcourtney1398
    @davidcourtney1398 7 ปีที่แล้ว +11

    12:10 ... followup question to my previous post on this Resistor/Capacitor that Ben uses on the RAM IN signal. I've worked around the issue I was having, but the more I've looked into this issue, the more I wonder why this Resistor/Capacitor is even being used in the first place? From what I've read, putting a Resistor/Capacitor on a clock signal is a no no. Apparently the right way to accomplish this (one way at least) would be to use a 555 to get the 10us pulse we are looking for without violating any clock signal rules.
    But ... do we even need the Resistor/Capacitor at all? In looking at the datasheet, I don't see anything that says the write pulse is limited to 10us, so do we really need this? If we do, is the idea of using a 555 the right way to do it?
    I'm really curious about this point because when I put that Resistor/Capacitor inline with my clock signal, it completely messes up my timings on my other modules. I'm not sure why it isn't affecting Ben's system.

    • @aroetter
      @aroetter 7 ปีที่แล้ว +5

      FWIW: I had the same issue, the RC on the clock line messes up my program counter (it counts on clock rising edges and falling edges). The fix I used was to basically build a poor man's diode (2 NAND gates in series where one input of each is +5V) to serve as a logical equality (in = out) so the clock signal can go into the RC, but, any discharge can't flow back to mess up other modules. But I, like you, am surprised that Ben doesn't seem to have this issue.

    • @StormShadow20633
      @StormShadow20633 5 ปีที่แล้ว

      david Is it possible to build an interface between this small 8-bit computer and a monitor with a VGA or HDMI connector ??

    • @howardjohnprice
      @howardjohnprice 4 ปีที่แล้ว +1

      I am having the same issue. With the RC connected to the clock, the (forthcoming) program counter module counts twice for every clock cycle: on the rising (correct) and falling edge (incorrect). I suspect this is due to capacitor altering with the voltage in the line and corrupting the carefully crafted clock signal. Unfortunately I do not have an oscilloscope to confirm this. Thanks to David for his suggestions for fixing this bug. I think the 555 solution sounds most sensible.

    • @vierikristianto1334
      @vierikristianto1334 10 หลายเดือนก่อน

      Having question relating to this too.
      Does anyone know why the output goes all 0s when the ram in is on for some period of time?

  • @ryanb94457
    @ryanb94457 3 ปีที่แล้ว +1

    These videos are great. Thanks for taking the time to make them :)

  • @devinblack20
    @devinblack20 7 ปีที่แล้ว +17

    anybody else see the bug crawl from under his paper at 14:16

  • @crocellian2972
    @crocellian2972 7 ปีที่แล้ว

    Yes to labels! And I finally got why the clk edge has to be so narrow. Holding the clk button did it.

  • @lukasrussell5905
    @lukasrussell5905 8 ปีที่แล้ว

    ben please bring this series back!

  • @xrayer4412
    @xrayer4412 8 ปีที่แล้ว +8

    Have you quite doing videos? pls im really looking forward for another

  • @SteveYoung359
    @SteveYoung359 3 ปีที่แล้ว +2

    I was so happy when Ben's first 4 bits were all high hahaha - that's what mine did as well :p - now I get help to debug

  • @bkzzzzz
    @bkzzzzz 8 ปีที่แล้ว +29

    Hi Ben, when can we have next video? waiting for it.

    • @therealmeisl5609
      @therealmeisl5609 8 ปีที่แล้ว +1

      Same here. Keep 'em coming PLZZZ :D

  • @BloodyBFH
    @BloodyBFH 7 ปีที่แล้ว +2

    Can you maybe give us some sort of parts list or a rough estimation of how many of every chip used?

  • @stevenribus123
    @stevenribus123 2 ปีที่แล้ว +1

    If you ever had the problem of some of your 74ls logic gate series burning well thats probably beacause the inputs are floating and thus powering both transistors at the same time driving tons of current converted to heat

    • @stevenribus123
      @stevenribus123 2 ปีที่แล้ว

      I had to debug for ages to find it and i also found that some chips are protected against floating like the CD4011 nand gate

  • @bkzzzzz
    @bkzzzzz 8 ปีที่แล้ว +4

    We have been waiting for new video for last couple of weeks! please update us BEN!

  • @e-vboy1454
    @e-vboy1454 4 ปีที่แล้ว +4

    I actually had some problems with this build. In program mode, I would see data being written into RAM even when I wasn't pressing the button, and the values written weren't always matched up with what was on the switches. The problem turned out to be the assumption that the '157 inputs were internally pulled high. Even in program mode, the open input from the write enable was coupling to the clock signal from the bus write enable. And the open inputs on the '157's hooked up to the switches weren't stable. Adding 1k pullup resistors to all the inputs fixed everything.

    • @mmannes
      @mmannes 4 ปีที่แล้ว

      Got exactly same problem here. I stumbled on this awesome channel when trying to build a Scott CPU and I am actually following lots of Ben's design and strategy since then. Last time I worked on RAM module, I've got the same problem as you described. I thought about debuging by changing my NAND gate from an HC series to a LS and, if it doesn't work, I would put pull-up resistors. Seems I'll try the later option first. Thanks for the advice.

    • @stevenribus123
      @stevenribus123 2 ปีที่แล้ว

      There is also a problem that the 157 has some time that the output is low when it's select pin changes and thus sometimes writing to the ram but for some reason it's fixed when i place a 220R pull up resistor.

    • @timkremer7088
      @timkremer7088 5 หลายเดือนก่อน

      @@stevenribus123 Where did you put that 220 Ohm resistor?

    • @timkremer7088
      @timkremer7088 5 หลายเดือนก่อน

      Had the same issue of inadvertant writes to the ram and found a LOW-Spike on the output (4Y, Pin 12) on the 157 when switching from A to B or vice versa on the select Pin ((A/B, Pin 1) of the LS157. The spike was on the output only, the inputs (4A, 4B, Pins 13,14) were clean. I solved it with a 100nF Capacitor on the Pin to HIGH - it works but somehow doesn't feel correct.

  • @jeffbarnett6158
    @jeffbarnett6158 8 ปีที่แล้ว

    Please do either the Program Counter or the Ring Counter next. The Output register is straight forward. My class finished it last week.

    • @jeffnay6502
      @jeffnay6502 8 ปีที่แล้ว +1

      The Program Counter is very easy. It is only 2 JK FlipFlops (74LS107) and 1 4 bit buffer (74LS126)
      all it does is increment from 0000 to 1111
      drive.google.com/open?id=0B6LIgQzDkH8fYnZlZk00bENITzg
      Now I drew this one up myself. I found that you do not need to hookup the J or K as they are both pulled high automatically. If you follow this diagram, please let me know if it worked for you.
      drive.google.com/open?id=0B6LIgQzDkH8fU3F3VEJfLWJ1VFE

  • @Aftertea_time
    @Aftertea_time ปีที่แล้ว

    I have a trouble that when i store data at address 0 in program mode and then switch to run mode,all the data will be reset to zero.
    only address 0 have this problem,I dont know how to fix it.

  • @vierikristianto1334
    @vierikristianto1334 10 หลายเดือนก่อน

    12:20
    If anyone knows, explanation is very much appreciated.
    Why is the input of ram become all 0s when the edge detection is not applied?
    Shouldn't it be writing through the bus just fine?

  • @Decco6306
    @Decco6306 7 ปีที่แล้ว +1

    14:20 that bug that crawled across the screen on the top right scared the living sht out of me

  • @RaneLafraze
    @RaneLafraze 8 ปีที่แล้ว

    I realize you are probably busy and all, but I'd really enjoy a video or two about a GPU (architecture and possibly some of the logic) Great videos so far though! Thanks so much!

  • @COMB0RICO
    @COMB0RICO 5 ปีที่แล้ว

    Thanks from Texas.

  • @Wanttoknowabout
    @Wanttoknowabout 8 ปีที่แล้ว +3

    Ben, these videos are great and very helpful. I have one question: You mention in the video that the inputs on the 74ls series ICs have pull up resistors. What about the outputs? Don't you need some resistors here? Could you say something general about this with the resistors?

    • @burninhell4448
      @burninhell4448 8 ปีที่แล้ว

      you need pullup resistors only when the IC has open collector outputs

    • @Wanttoknowabout
      @Wanttoknowabout 8 ปีที่แล้ว

      All all these ICs do not have open collector outputs or inputs?

    • @j4Naga
      @j4Naga 8 ปีที่แล้ว

      same doubt

    • @plazmotech5969
      @plazmotech5969 8 ปีที่แล้ว

      Most of the logic IC's i've seen have two state outputs

    • @0623kaboom
      @0623kaboom 6 ปีที่แล้ว

      technically all ls series chips have a resistor between the pin and the chip itself ... this is both a design and need of the chip ... to keep it using low power (L as in low power) they chip still needs to use a 5v setting so the resistor pulls the 3.3v supplied upto 5v for the chip to work properly ... being a schotky (S the person who found that paired transistors did a better job of doing what they do if they are matched) so you do have a pull up resistor on every pin because it must be there to improve power usage and decrease false positives from noise (the pull up resistor drowns out any background rf noise signal impeding the line and to better balance the transistors on the ic)

  • @The_Mimewar
    @The_Mimewar 5 ปีที่แล้ว

    WHOH DUDE! That is incredible!

  • @kevindt100
    @kevindt100 8 ปีที่แล้ว +1

    Wow that is super intresting

  • @hugomartel8552
    @hugomartel8552 8 ปีที่แล้ว

    Very Nice project ben!!

  • @beauxq
    @beauxq 4 ปีที่แล้ว +3

    @14:56 Is this a limitation (one of the limitations) on the speed of this computer?
    Will it cause problems if the clock ticks more than once every 10 microseconds?

    • @jean-marc7999
      @jean-marc7999 3 ปีที่แล้ว

      tip : thé answer is in the question...

  • @jbx907
    @jbx907 6 ปีที่แล้ว

    really great videos, subscribed, im trying to recall a combination lock circuit that i forgot, it used flip flops with for its sequencer series and a timed reset when a certain time is passed, i just forgot about it, it was used for dtmf pass code to enable a an output, the dtmf must be in the right sequence to enable an output.
    search you videos

  • @vaughnscott511
    @vaughnscott511 4 ปีที่แล้ว +1

    If you are watching this video and trying to get to the finish line, pin 3 on the S00n goes to pin 12 on the 157. Otherwise, you ram will get written over randomly.

  • @canaDavid1
    @canaDavid1 4 ปีที่แล้ว +2

    1:48 a rare off-by-one error :)

  • @veni2598
    @veni2598 2 ปีที่แล้ว

    when I press write button the LED's turn on, in your video they stay off, why?

  • @Jenko022
    @Jenko022 8 ปีที่แล้ว +2

    Thanks for another great video. could you please provide a block diagram of what you have built already?

    • @jeffnay6502
      @jeffnay6502 8 ปีที่แล้ว +2

      There is a a very good block diagram in this PDF.
      drive.google.com/open?id=0B6LIgQzDkH8fRmpSYm9ROTMzSGM

    • @diegocarrasco7028
      @diegocarrasco7028 8 ปีที่แล้ว +1

      Oh thanks for the information. In addition, as Ben said at the beginning, he is building a modification of the SAP-1 computer, not the original one, and in this document we can see those modifications.

    • @Jenko022
      @Jenko022 8 ปีที่แล้ว +1

      Awesome, Thank very much for sharing the schematic.

    • @jeffnay6502
      @jeffnay6502 8 ปีที่แล้ว

      I only used this schematic for the Instruction Decoder and the Control Matrix.
      Which worked out perfectly. I used the original 1977 schematic for everything else.
      This is the original one. (Instruction Decoder and Control Matrix is not good on this one.)
      drive.google.com/open?id=0B6LIgQzDkH8faEJuaExJemxoUUk

    • @jeffnay6502
      @jeffnay6502 8 ปีที่แล้ว

      What document are you referring to?
      Thank you

  • @OriginalJetForMe
    @OriginalJetForMe 5 ปีที่แล้ว +1

    I'm surprised the RAM you're using doesn't have a clock in that latches on the rising edge. Are there chips that do?

  • @bkzzzzz
    @bkzzzzz 8 ปีที่แล้ว +3

    I have been following your 8 bit adder video and just wondering if you can also include and show us how to do multiply / divide in this computer too. I am very curious. I bought the book also. thanks a lot.

    • @burninhell4448
      @burninhell4448 8 ปีที่แล้ว +1

      there is not going to be multiply / divide section of the alu, you will have to make a program for that

    • @bkzzzzz
      @bkzzzzz 8 ปีที่แล้ว

      Is there any simple approach for the Multiply/divide function?does not matter if it is slower but having that functionality will be great. in Malvinos Book for SAP he did mentioned some examples of multiplications and existing SAP but he did it with counting and shifting bits. I hope that approach can be used even if it is slower. I hope Ben can show us something on this subject.

    • @therealmeisl5609
      @therealmeisl5609 8 ปีที่แล้ว +2

      For fast hardware multiplication you might want to look up "Wallace tree" or "Dadda tree". Such could be added to the ALU (as an additional "product register", just like the existing "sum register"). They do exist as 74 series chips, eg the Wallace tree: 74xx275.
      For division I'm afraid there is no such (relatively) simple thing.

    • @therealmeisl5609
      @therealmeisl5609 8 ปีที่แล้ว

      Note: it's hard to find this chip, but you can build your own from (quite) a bunch of full- and half-adders, basically.

    • @therealmeisl5609
      @therealmeisl5609 8 ปีที่แล้ว +1

      Data sheet for the mentioned 275: pdf1.alldatasheet.com/datasheet-pdf/view/152946/TI/SN74LS275.html

  • @VaLuE_FoRkED
    @VaLuE_FoRkED 7 ปีที่แล้ว +1

    The voltage across the resistor only reaches 0 at about t = 5 * RC, rather than just t = RC. Wouldn't that mean that the length of the pulse is 50 microseconds rather than 10?

    • @possible-realities
      @possible-realities 3 ปีที่แล้ว +1

      It doesn't have to go all the way to zero, for TTL the high level goes down to 2 V and the low level up 0.8 V. It takes
      ln(5/2)*RC = 0.92*RC to go from 5 V to 2 V, and
      ln(5/0.8)*RC = 1.83*RC to go from 5 V to 0.8 V,
      so it seems that the pulse width should be counted as something between 0.9*RC to 1.8*RC in this case. But I think that Ben was mostly interested to get a ball park estimate of the pulse width, and just RC itself is good enough for that.

  • @lukasrussell5905
    @lukasrussell5905 8 ปีที่แล้ว +8

    PLEEEEASSSSSE NEW VIDEO BEN

  • @jbradfield
    @jbradfield ปีที่แล้ว

    at 14:15 ben rudely wakes up the spider that was taking a nap under his scratch paper

    • @drivers99
      @drivers99 ปีที่แล้ว +1

      Holy crap!
      Very observant. I guess it’s still a bit buggy.

  • @mehmetgur4478
    @mehmetgur4478 5 ปีที่แล้ว +1

    if we will use the ram with clock why the chip doesnt have clock input built in?

  • @joea4260
    @joea4260 8 ปีที่แล้ว +1

    Please do another one 😀

  • @LiamDennehy
    @LiamDennehy 6 ปีที่แล้ว +2

    Why would yo not simply attach the data programming dips directly to the bus, giving the RAM a single read path? This would also let you put custom values on the bus at runtime.

    • @0623kaboom
      @0623kaboom 6 ปีที่แล้ว

      because he wants to get away from manual programming and go for automated programming ... and putting the dips on the bus then stops that and will force what they are set at on the bus instead of what he wants to pass around the bus

    • @SembeiNorimaki
      @SembeiNorimaki 6 ปีที่แล้ว +1

      I think it's for safety. It you switch tu run mode with one of the switches connecting to ground and any register writes a 1 on that bit you willhave a short circuit

    • @possible-realities
      @possible-realities 3 ปีที่แล้ว

      Then you would need a way to force all the chips that might be trying to drive a value onto the bus not to, which seems like a lot of AND gates.
      Also, the bus is not wide enough for both address and data, so at least one of them needs to take an alternate override path.

  • @johnpierce5073
    @johnpierce5073 5 ปีที่แล้ว +2

    I had the same problem as others with the RC circuit added to the NAND gate messing up the clock in other modules. I routed the clock through the NAND gate twice with one input set to high to prevent the feedback and then to the RC. However, when I do that the write enable is always set on the RAM chip regardless of how the RI jumper is set. Anyone else have this problem and have a solution?

    • @MichaelKamprath
      @MichaelKamprath 4 ปีที่แล้ว

      I had the problem with the RC circuit too. Rather than running the clock signal through the NAND gate as you did, I ran the clock signal through a Schottky diode (of the BAT-43 variety) before connecting to the capacitor as design by Ben Eater. This fixed the "back signal" the RC circuit created in the clock line. Also, I found in general that Ben Eater's assertions about certain chips having internal pull up resistors is not always true, or the internal resistor is "too large" and thus doesn't create strong enough pull up across multiple connections. An so, I've sprinkle a number of 10K or 1K pull up resistors. Pertaining to this RAM module, the critical pull on resistor was on the selector pin of the 74ls157s (which select whether you are in run mode or program mode). Leaving those pins floating while in run mode yielded inconsistent results. The good news is since all these pins are connected to each other, you only need one 10K pull up resistor somewhere in the line.

  • @emptychair3932
    @emptychair3932 8 ปีที่แล้ว +3

    BEN! where have you gone? i sure hope you haven't given up on us!

    • @jeffnay6502
      @jeffnay6502 8 ปีที่แล้ว

      Please check out my new comments. Sort by newest first.

  • @lucasc.romagnoli7279
    @lucasc.romagnoli7279 3 ปีที่แล้ว +1

    Adding this capacitor for 10 microseconds means that the clock speed can't be fastar than that, right? Isn't that a "bad" thing? How fast can the clock go?

    • @FBI_Master
      @FBI_Master 3 ปีที่แล้ว

      it is only like 133hz at max so not even close to 10 microseconds per pulse

    • @xiar5546
      @xiar5546 3 ปีที่แล้ว

      @@FBI_Master it’s actually about 300hz. Check the Turing videos

    • @FBI_Master
      @FBI_Master 3 ปีที่แล้ว

      @@xiar5546 oh i messed up my math

  • @albertsandberg
    @albertsandberg 7 ปีที่แล้ว +3

    I've been following you since the beginning of the series and built along. This time though, I'm ahead of you and built a output register already... last night I built the EEPROM programmer (manual, no ardunio or similar). th-cam.com/video/ah2FkdFJlmI/w-d-xo.html . Very good series that got me back into electronics! Thanks a million!

  • @nadamagdy8047
    @nadamagdy8047 6 ปีที่แล้ว

    You are life saver 💚

  • @LaneSurface
    @LaneSurface 5 ปีที่แล้ว +1

    What gauge wire are you using in this project? I bought 22 gauge solid core, but the insulation seems quite thick compared to what you have here. I'm wondering if this is standard?

    • @johnSmith-up5ey
      @johnSmith-up5ey 5 ปีที่แล้ว

      I was wondering the same thing; on my build the wiring gets very tight, particularly around the bus driver chips. On the ALU I ended up using an extra breadboard to space things out. I think I'm going to have to do the same here

    • @SAJAN_ECE
      @SAJAN_ECE ปีที่แล้ว

      I am in the same position

  • @HaraldSangvik
    @HaraldSangvik 5 ปีที่แล้ว

    So. If we want to increase the ammount of RAM in this computer, we would need to have more address bits.
    This would allow us to run much larger programs on this computer!
    A DS1609S has 256 bytes of memory and would be a good match.
    Thinking that rewriting the fetch cycle might be able to have the instruction and memory adress in different memory addresses.
    like this:
    Memory:
    0000 0000 - LDA
    0000 0001 - Memory address
    The fetch cycle could be like this:
    CO | AI
    RO | II
    PC | CO | AI
    RO | RAI Storing the address in register A to put into the memory register later. Or is i possible to do without storing it?
    AI | RAO
    Or am I compleletely off the mark?

  • @VissVertigo
    @VissVertigo 8 ปีที่แล้ว

    Please do another one!

  • @rabiussanyapu
    @rabiussanyapu 8 ปีที่แล้ว +1

    come back man, we miss you a lot.. Show us how to build rom and other stuffs please :(

  • @backyardmayhemusa
    @backyardmayhemusa 7 ปีที่แล้ว

    I ensured that the power and ground where connected properly to the 74LS157 but I still am having the same issue where the 4 least significant bits are going high when I push the push button. Any advice on where to look?

  • @jamiethompson5281
    @jamiethompson5281 7 ปีที่แล้ว +4

    Why do we need the edge detection? I understand the explanation of the timings just not the reason for needing it in the first place, why do we only want to write for 10us?

    • @melkiorwiseman5234
      @melkiorwiseman5234 5 ปีที่แล้ว +1

      It helps to prevent potential errors caused by the data changing before the end of the clock cycle.

    • @gzitterspiller
      @gzitterspiller 5 ปีที่แล้ว

      I had multiple tabs opened... nevermind what Melkior said is right, I think what could be added is that you take a look when he holds the button of the clock keeping the write signal on, the output goes off, that does not have anything to do with the rising edge, it is part of the logic of the chip, whenever the WE:0 (enabling write) - It will get inverted two times and fed into the output, setting all the outputs to 0.

  • @lelandclayton5462
    @lelandclayton5462 8 ปีที่แล้ว

    Lookin good sir.

  • @kwitee
    @kwitee 3 ปีที่แล้ว +1

    Off by one error in hardware? Does that happen often?

    • @possible-realities
      @possible-realities 3 ปีที่แล้ว

      Looking at how many wires Ben has placed, I'm amazed that he hasn't wired more of them to the wrong places. It seems like an easy thing to happen unless you have good tools to avoid it.

  • @bruce2053
    @bruce2053 7 ปีที่แล้ว

    Can you please how large data is fetched sequentially ?

  • @shumanbeans
    @shumanbeans 5 ปีที่แล้ว

    This might be a stupid question but, why use a RAM if you want to write on the edge? Wouldnt it be simpler if you used a register from the begining?

    • @possible-realities
      @possible-realities 3 ปีที่แล้ว +1

      The important thing about the RAM is that it contains multiple addresses. A normal register only contains one data value.

  • @StormShadow20633
    @StormShadow20633 5 ปีที่แล้ว

    if i increase the addresses for example 8 bit pc how do i do jump instructions is it possible?

  • @mentalyunstable2872
    @mentalyunstable2872 6 ปีที่แล้ว +2

    the value on the bus goes 'round and 'round...

  • @stefanvanraemdonck9054
    @stefanvanraemdonck9054 6 ปีที่แล้ว

    Hi, i just powered up 2 74LS189's and 2 inverters. What i see it pulls 140 mA in total. is that normal for just 4 IC's? I checked and double check the connections

  • @NaturalKiller
    @NaturalKiller 4 ปีที่แล้ว

    Please i can't find the progress of this proyect in order

  • @jeffnay6502
    @jeffnay6502 8 ปีที่แล้ว +5

    I have my 8-Bit SAP-1 working, although it is not complete. But before I go on too far... A BIG THANK YOU Ben !!!
    drive.google.com/open?id=0B6LIgQzDkH8fc0tuTTQ2TDhCZ1E
    Here is what I do not have working yet.
    I do not have the HLT or JMP working yet, although I do have them coming out of the Instruction Decoder, I just need to wire them up. I also do not have an Output Register setup, so I am happy when it Outputs the answer to the BUS.
    I do have a CLR system setup (I am using a push button and an inverter), I am fuzzy on how to keep the Ring Counter timer off, until I am ready for it to start. My push button clears the Program Counter, Ring Counter, MAR and all the Registers.
    I like the Step by Step Mode, as you can see the MAR, Memory and Instruction Register interact with each other, to
    move the correct data to the BUS and to the correct registers and the Instruction Decoder and Control Matrix, Loading and or Enabling the correct registers to move things to the correct places. IT IS AMAZING !!!
    Anyhow, this is the program that I have entered.
    Address Mnemonic Opcode Operand
    0000 LDA 0000 1010
    0001 ADD 0001 1011
    0010 SUB 0010 1100
    0011 ADD 0001 1101
    0100 ADD 0001 1110
    0101 ADD 0001 1111
    DATA OUTPUT
    1010 DATA 0100 0001 65 1000001 65
    1011 DATA 0010 1111 47 1110000 112
    1100 DATA 0001 1000 24 1011000 88
    1101 DATA 0000 0011 3 1011011 91
    1110 DATA 0001 0000 16 1101011 107
    1111 DATA 0000 0111 7 1110010 114
    65 + 47 - 24 + 3 + 16 + 7 = 114 or 0111 0010

  • @gulfarn863
    @gulfarn863 4 ปีที่แล้ว

    What did one core on the mobile dual core cpu say to the other? Let's do a bus transfer...

  • @ASeventhSign
    @ASeventhSign 7 ปีที่แล้ว +2

    There's a bug at 14:16
    And those kinds of bugs can definitely affect hardware. :)

  • @pranavdhinakar4125
    @pranavdhinakar4125 ปีที่แล้ว

    In my Ram module, when I switch my board from program to run mode, some of the bits in my addresses deactivate, I have checked my wiring multiple times, does anyone else have this problem?

  • @tomfletcher-old6973
    @tomfletcher-old6973 7 ปีที่แล้ว +4

    Is the capacitor for the edge detector discharging through the clock signal?

    • @aroetter
      @aroetter 7 ปีที่แล้ว +2

      That;s what I am assuming, and it messed up my program counter module (which gets the same clock signal). I'm curious how he avoided this. I ended up fixing by using 2 NAND gates in series to make a diode from the clock signal before flowing into the RC.

    • @0623kaboom
      @0623kaboom 6 ปีที่แล้ว +2

      just pass the clock through a diode on the way to the edge detector then it wont flow back into your clock sync circuitry .. or a buffer as it will also bring the signal back to it's freshest high and low as it progresses ... and inverter also can work as a buffer ... but you have to ensure which signal you are using ... before you buffer it in an inverter.

    • @eXecu7e
      @eXecu7e 5 ปีที่แล้ว +2

      Wow this is exactly what I've been stuck with for quite some hours now!

    • @smithw7003
      @smithw7003 5 ปีที่แล้ว +1

      @@eXecu7e Me too. I went over and over everything trying to figure out why clock speed doubled. I finally just removed the clock connection to isolate it to the edge detector. Glad to finally get confirmation it wasn't just something I did wrong. Wondering if I can just get by with leaving the capacitor and resistor out of the mix.

    • @eXecu7e
      @eXecu7e 5 ปีที่แล้ว +1

      @@smithw7003 You likely won't. I later got problems with writing to RAM, and finally fixed them by routing the clock twice through the Nand gate before going into the RC (to prevent any discharging of the capacitor from mixing with the original clock signal). Essentially followed this video: th-cam.com/video/QPX3Yrqs6yY/w-d-xo.html

  • @NeoNeke
    @NeoNeke 7 ปีที่แล้ว

    Can somebody explain me if the 16 addresses as used in the example are the upper limit of an 8 bit computer? (as you only have 4 bits in the Instruction Register that can address them).
    In other words: how could you increase the memory? Do you need to got to a 16bit cpu or are there ways to this?

    • @NicholasPiegdon
      @NicholasPiegdon 6 ปีที่แล้ว +2

      The most memory you could address with 8-bit addresses (and 8-bit words and no bank-switching) is 256 bytes. I think Ben is using 4 bit memory addresses for convenience/simplicity here so he can fit both the instruction and the address of any operand into a single memory location.
      That gives a limit of 16 (4-bit) possible opcodes that can address 16 (4-bit) memory locations. It would make the instruction decoder more complex, but he could change the scheme to two-byte instructions where the first byte is the op-code and the second is the address byte. Then, he could have 256 opcodes that could address 256 memory locations.
      To do any better than that, you'd need to employ something like bank-switching or increase the number of address lines.

  • @Neutrino1
    @Neutrino1 8 ปีที่แล้ว

    when is the decode vid is coming Ben?

    • @jeffnay6502
      @jeffnay6502 8 ปีที่แล้ว +2

      Here is the Instruction Decoder and Control Matrix. The instruction Decoder is pretty easy.
      I added LEDs to represent the 6 different commands.
      LDA / ADD / SUB / OUT / JMP /HLT
      drive.google.com/open?id=0B6LIgQzDkH8fbEQ1X3NwUUJFNWs

  • @jeffnay6502
    @jeffnay6502 8 ปีที่แล้ว

    Again, I will ask the question here. I have not seen anywhere, in any of the diagrams or schematics, where a mux is needed on the memory. There is no Load Memory. command.
    There is an Enable Memory to the BUS, and you can program the memory contents with the 8 bit dip switch, but there is no load memory from the bus.
    Does anyone here have any insight to this memory multiplexer?
    Thank you

    • @therealmeisl5609
      @therealmeisl5609 8 ปีที่แล้ว +1

      Isn't that just in the memory chip itself, the LS189? I mean you just tell it 4 bits of address and it, internally, translates that to which of the row and column LOAD lines (64 in total, be it 16x4 or 4x16) it should assert and which not.
      Well, that's actually *de*multiplexing.
      But maybe I'm getting you wrong. Do you mean eg. storing the contents of the accumulator *into* memory? Like, "STA"?

    • @possible-realities
      @possible-realities 3 ปีที่แล้ว

      He did put a signal to load the memory from the bus. It's being used towards the end of this video (I think he calls it RI when he labels the control signals). That is how the memory will be updated when the computer runs, the 8 bit dip switch is just for programming before you start the computer.

  • @Tephr1te
    @Tephr1te 7 ปีที่แล้ว

    There is a fly at 14:15.

  • @floydfulton86
    @floydfulton86 ปีที่แล้ว

    Good 🎊 😮

  • @HansJanik
    @HansJanik 3 ปีที่แล้ว

    The time it takes to charge a Capacitor is 5 x Tau (RC) . Sorry 😘

  • @abdelrahmangamalmahdy
    @abdelrahmangamalmahdy 8 ปีที่แล้ว +1

    I'm watching this series to get to the control unit part.. and eventually, it's not there !!

    • @jeffnay6502
      @jeffnay6502 8 ปีที่แล้ว

      I have the control unit completed.

    • @jeffnay6502
      @jeffnay6502 8 ปีที่แล้ว +1

      This is my current working SAP-1
      drive.google.com/open?id=0B6LIgQzDkH8fUTlCYWpJV3B2dDA

  • @ukaszMarianszki
    @ukaszMarianszki 7 ปีที่แล้ว

    i wonder why at the start you have just random garbage in RAM can you please mak a vid about that mabye?

    • @Jay-kc2pm
      @Jay-kc2pm 7 ปีที่แล้ว +2

      It's because when it's powered on, every bit wants to be on, but one goes on before the other and causes the output to be random.

    • @0623kaboom
      @0623kaboom 6 ปีที่แล้ว

      it's known in digital electronics as a race condition ... it happens on powering up a circuit ... as no power is perfect on at 5v but bounces from 7v down to about 2v .. and settles out at it's 5v in the first few micro seconds ... all the different parts of the ic's have high power and low power available .. so the ic actually races to a result while the circuit bounces up and down from adding power ...
      .
      this is why most ic's and all the earliest ones had a clear or reset line to set them to a known state so it didnt matter what anything had it was all reset to a known state usually 1 to signify its not active atm .... yes 1 means OFF not on ... 0 as in a complete circuit means ON or powered or running or working ... dam yanks cant get that right either ... 1 means not working or off as in just a piece of wire ... no connections no data ....
      .

  • @elalemanpaisa
    @elalemanpaisa 2 หลายเดือนก่อน

    and people complain programming in C is too much work

  • @alexanderquilty5705
    @alexanderquilty5705 3 ปีที่แล้ว

    Completely off topic, did anybody else see that 🐜 crawl across at 14:20 in the top right? 😅😂

  • @seppa340
    @seppa340 8 ปีที่แล้ว +1

    Thanks, Ben! I'd like to know if you have an engineering degree?

    • @NL-tq1yr
      @NL-tq1yr 8 ปีที่แล้ว +1

      knowing all that he knows I bet he has a degree from a top university.

    • @j4Naga
      @j4Naga 8 ปีที่แล้ว +2

      That's obvious, he is from Khan academy too

    • @lebanbo55
      @lebanbo55 8 ปีที่แล้ว +2

      No , he doesn't . There is a interview on him on Khan academy. You can watch it.

    • @0623kaboom
      @0623kaboom 6 ปีที่แล้ว

      doesnt matter if he does or does not ... he does a great job of covering the material just one major problem ... 0 is active on or high or running ... because it is a completed circuit it has no gaps ... 1 is active low or off as in just a piece of wire not connected to anything ... NOT the other way around ... this is why he has to pull signals LOW to get them to be active because the chips were built to a proper standard that the americans didint bother to follow like the metric system instead of imperial measurement ... yes (3.67liters is equal to 1 IMP gallon) so we actually get .33 more milk than americans do when we get 4l of milk instead of a gallon jug ;)
      .
      Other than american pride on conventions being backwards he is covering everything better than most basic electronics teachers do already.
      and provides relevant versions to see what it can do as part of a whole system .... essentially he is taking a bunch of switches and making a computer ... as he writes the program and stores it then runs that program he has to input the data for it ... after that it will run as along as he chooses to let it run
      .
      all he needs to do at the end of it is make a solid state hard drive to store his programs and poof he has a workable system that is a ton better than what took apollo to the moon

  • @jeffnay6502
    @jeffnay6502 8 ปีที่แล้ว +1

    In all previous videos we have been using the correct terms, such as LOAD and or ENABLE. It looks like for simplicity's sake, we have changed the control signal inputs to IN and or OUT.
    This will change the Control Word acronyms of the Control Matrix and force those of us, who actually read the source documents, to translate standard acronyms to the new different simplistic acronyms.
    So Lm (LOAD MAR) gets translated to Mi (MAR IN) and something like La (Load Accumulator) translates to Ai (Accumulator IN).
    This really throws off the meaning of the LDA macroinstruction command or mnemonic. (Load Accumulator)
    As you can see this new simplistic set of acronyms can really throw things off a little. I have to say, I am not a fan of this.
    Although I never could understand why Cp was used for (Increment Program Counter) The rest of acronyms are very intuitive.
    I do not think, that anyone who has followed these videos, this far, needs a simplified understanding of the control signal acronyms. This is just my opinion. Please give me a Thumbs up or a Thumbs down, if you agree or disagree.
    Thank you

    • @0623kaboom
      @0623kaboom 6 ปีที่แล้ว

      you could fall back on the standard ... action device value ..... as in load register somevalue .... or write address register1 .... this is how it was handled back when it was new stuff .... you used what you wanted to do ... what you were doing it on and what you were doing it with ... this is how the machine code nemonics came about ... lda ... for load data from address ... would be...... load addressvalue somevalue or you want to load the value at the address specified .... ... still comes down to WHAT your doing on what your DOING IT WITH what your USING .... action device value

  • @nxtktube
    @nxtktube 2 ปีที่แล้ว

    14:16 a bug lurking around

  • @zes3813
    @zes3813 7 ปีที่แล้ว

    ts not intx or unintersx or fun or not funx or everx

  • @엄경준-p1i
    @엄경준-p1i 7 ปีที่แล้ว

    WOW.. You made 16byte ram?

  • @bruce2053
    @bruce2053 7 ปีที่แล้ว

    .

  • @xrayer4412
    @xrayer4412 8 ปีที่แล้ว

    First

    • @jeffnay6502
      @jeffnay6502 8 ปีที่แล้ว

      Did you ever find some ram to build the ram module?

    • @xrayer4412
      @xrayer4412 8 ปีที่แล้ว

      i have order all my komponents from utsource, and they gonna arrive in 2-4 weeks.
      thanks for asking!

    • @bonbonpony
      @bonbonpony 8 ปีที่แล้ว

      +Xrayer who cares? :P

    • @xrayer4412
      @xrayer4412 8 ปีที่แล้ว +1

      Jeff Nay

  • @GRBtutorials
    @GRBtutorials 6 ปีที่แล้ว +1

    You really have to learn to use scientific notation... It’ll make your life easier as you won’t have to put so many zeroes and risk skipping one or putting one more. For example: 10 nF = 10^-8 F and 1 kOhm = 10^3 Ohm, so 10^-8 • 10^3 = 10^-5 s = 10 us.

  • @bruce2053
    @bruce2053 7 ปีที่แล้ว

    Can you please how large data is fetched sequentially ?