Relay Computer - Incrementer

แชร์
ฝัง
  • เผยแพร่เมื่อ 13 ก.ค. 2024
  • This 16-bit relay incrementer is based on a generic half-adder circuit with some additional goodies for Load and Select operations to and from the address bus.
    Ping me on Discord: discordapp.com/users/39099887...
    Thank you for watching, and as always I welcome any feedback or ideas for future projects!
    Chapters:
    0:00 Intro and Recap
    0:21 Why do we need an incrementer?
    2:54 Binary Addition Primer and Truth Tables
    3:55 Half-Adders
    6:57 Ripple Carry Effect
    7:57 Design Time
    10:37 The Build - Part 1
    13:47 Human Err #1
    15:08 The Build - Part 2
    16:51 Human Err #2
    17:36 Automated Testing - Without and with Flyback Diodes
    20:18 Outro and thoughts about the next card
  • วิทยาศาสตร์และเทคโนโลยี

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

  • @garywilkinson5887
    @garywilkinson5887 4 หลายเดือนก่อน +11

    Currently my favourite project on TH-cam. I’m learning so much about low-level computer architecture from this series.

    • @dipdoting
      @dipdoting  4 หลายเดือนก่อน +1

      Thank you, that's great to hear! I'm totally learning a lot along the way as well!

    • @garywilkinson5887
      @garywilkinson5887 4 หลายเดือนก่อน +1

      @@dipdoting- are the designs and PCBs available? I’d love to build one of these but while my soldering skills are just about up to the task, my PCB and electronic design skills are definitely not!! 😂

  • @circuitgamer7759
    @circuitgamer7759 4 หลายเดือนก่อน +2

    Only one negative in this video: I wanted to see a full cascade carry from overflowing back to 0 :) Loving this series so far!

  • @rubenhillier770
    @rubenhillier770 3 หลายเดือนก่อน +1

    This is great work, cant wait to see this computer running some programs using only relays.

  • @STRATOS13PAO
    @STRATOS13PAO 4 หลายเดือนก่อน +3

    I love your poject and your videos. In my opinion I think an old school approach would be way more interesting that an IC for the memory.

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

    As a electronics engineer and lover of old CPU architectures this channel is great. I also really like your narration :D

  • @user-xv9fe4eo1b
    @user-xv9fe4eo1b 4 หลายเดือนก่อน +3

    Another educational yet relaxing video. Instant like, keep on running your great project!

    • @dipdoting
      @dipdoting  4 หลายเดือนก่อน +1

      Thank you! Cheers!

  • @trevorhaddox6884
    @trevorhaddox6884 4 หลายเดือนก่อน +3

    Use telephone strowger switches with a cap on each line as a bit for RAM. They are fast and can run directly from relays without amplification of any sort of small signal.

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

    Glad to see more progress. The production quality is going up too! The animations really get the concept across.

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

      Thank you!

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

    great video, thank you. Looking foreward for the memory video

    • @dipdoting
      @dipdoting  4 หลายเดือนก่อน +1

      Thanks for watching!

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

    I think it's will be really fun to use a ram Chip and a SD card for the memories, without any micro controller in the middle ☺️

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

    fantastic presentation, i love the music, too. THis computer is going to sound like the old telephone closet where I worked after graduating from school... (Tektronix).

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

    Coming along awesome! And the videos are getting better too! And personally, I would go old school.

  • @GianmarioScotti
    @GianmarioScotti 4 หลายเดือนก่อน +2

    I see one problem with the memory implementation, here: both a capacitor-based or a magnetic core memory system require you to use some kind of electronic amplification/active device, be it a transistor or valve. Thansistors would not be period-correct, but valves definitely would. So if you bite the bullet and decide to use valves at least for the RAM memory as read-out/rewrite components, you have a good solution. A capacitor array with low-voltage valves would be relatively simple to implement.
    For ROM (read-only) memory, you have a much easier time, as you could use some sort of punched cards, pin arrays, or diode arrays.

    • @awesomecronk7183
      @awesomecronk7183 4 หลายเดือนก่อน +1

      Not necessarily... For capacotor memory you could probably get away with just using capacitors large enough to pulse a relay. You only need it to pulse long enough to set a bit in a memory output register. If voltage decay is a concern, you could latch a slightly higher voltage into the caps, so long as it's not above the max coil voltage on the relays.

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

      ​​​​@@awesomecronk7183caps are definitely a good option. I just did a quick experiment using 4x 470u electrolytic caps from a cheap eBay parts kit charged to 6V was more enough to give a good clean click on a small 5Vdc relay.
      As for decay, I charged them up to 6V and after 15mins they're still comfortably over 5V

    • @dipdoting
      @dipdoting  4 หลายเดือนก่อน +2

      Agree re: Mag core memory - the amplification would be a huge challenge - I've tried a couple of capacitors as storage and seems to work but scaling will be interesting.

    • @dipdoting
      @dipdoting  4 หลายเดือนก่อน +1

      It's like a destructive memory - for capacitors I'd need to constantly re-write the value back after it's been read. That'll make for much more clicking and clacking!

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

      @@dipdoting which is why you don't want to use relays for this, so yes, unfortunately, necessarily you need electronic tubes for readout. Or use ginormous capacitors that can activate the relay, but then you run into space and money problems. And peak current problems.

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

    Thank you so much for this upload. It is so magnificently interesting.
    I'm using latching 5v relays of same size. They cost a small fortune and I only store 9 bits (one byte plus carry). From my memory, they were about AU$12 each so that's nearly AU$100 per byte of RAM😱

  • @Minikahn1
    @Minikahn1 4 หลายเดือนก่อน +2

    You've already done so much work with "vintage" parts at this point, there's no reason to change that for the memory. Relays may be entirely too space/time consuming so maybe look at the some slightly newer options from say the late 60's instead. Something akin to SP95 memory.

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

      I would love to get some SP95s - even just to experiment with!

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

    OMG this is a great project currently I am trying to build a Ben Eater style 8 bit 6502.

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

      You may recognize my references to 6502 assembly, that's the instruction set I'll be using for this computer---I'm a huge fan of Ben Eater and 6502s!!!

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

    For the memory, you could build a small part using relays as a proof-of-concept, and do the rest with modern ICs to prevent it from exploding in complexity. Alternatively, maybe try core memory? It scales reasonably well and it's still in the same era of technology.

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

      I got my hands on some core memory - It's a science in itself - I'm always amazed how this was used with such stability back in the day!

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

    I love your videos. I do really enjoy watching them. Can’t wait for your final decision approach about “memory”. Maybe you can take both paths by mapping just a small range of addresses to old fashioned ram or rom just for demonstration purposes, and the rest going to a modern sram chip

    • @dipdoting
      @dipdoting  4 หลายเดือนก่อน +1

      Thank you! I'll likely go down both rabbit holes, I know modern RAM can work as this was used by other builders, just needs some supporting gating and I think a Darlington or some other isolators would be needed.

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

    It's making some very nice sounds already! Have you tried testing the maximum speed it can operate at? Also, consider buying/making a lead bender - those diodes become a LOT easier to solder straight when you shape them like a U with sharp corners before inserting and folding out the legs.

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

      I'm relatively new to electronics, and I didn't even know leg benders existed! :) That will be useful considering I'll have a few hundred more to do! Thank you

  • @beanMosheen
    @beanMosheen 4 หลายเดือนก่อน +1

    18:31: didn't know this was a modular synth. When's your album releasing? I love Relay House!

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

      Haha well I already have the sequencer! But the drums all sound very clicky at this point...

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

    i don't think it's cheating to have modern memory in a relay computer, but i think it would be preferable to have something as simple and "old world" as possible if you're inclined to have an "old world" processor. fairly period options besides relays/caps include paper or magnetic tape, delay line, drum, core and core rope, neon, or even williams tube, and i also like the idea another commenter had about strowger switches! of course, you could also come up with something of your own that utilizes period parts in a personal way.
    eagerly watching your progress!!

    • @dipdoting
      @dipdoting  4 หลายเดือนก่อน +1

      Thank you! I'm going to start with RAM IC and do a close follow with something like capacitor-based. I have some thought on how to do tape storage, that'll be a rainy day project.

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

    For what it is worth:
    - about the RAM memory: you could implement a couple of bytes with relays, for simple calculations, would be nice for showing what happens in the memory. For programs that need more RAM memory you could use IC.
    - about PROGRAM memory you could use flash memory IC or something like that. This is just not worth to use relays for inho.

    • @dipdoting
      @dipdoting  4 หลายเดือนก่อน +1

      I saw a video where it appeared that someone used reed-relays or such with an LED on each relay so you had a visual of what was in RAM. I'll likely go the RAM chip route to start by the looks of things, but I will still pursue the vintage approach.

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

    You def need some sort of jig to bend those diode legs

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

      I didn't even know that was a thing! :) Thank you will be ordering one of those!

  • @Kameko-uq5wy
    @Kameko-uq5wy 4 หลายเดือนก่อน

    Maybe you can use a Williams Tube kind of device for RAM. Fits the vintage, easy to make, fairly capable, and best of all it's almost mad-sciency.

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

      I had to look that one up, and that's so cool! I think I saw it in a video about EDSAC, would love to get my hands on one of those!

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

    For ROM I would probably use a diode ROM.
    I'd be *really* interested in an implementation of magnetic core memory

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

      I've been reading up on magnetic core memory, it looks to be quite the challenge and not relay friendly, but that never stops good experimentation :)

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

    If it were my project, I'd either be finding an old core-rope memory module, or subbing in a RAM chip, even on a temporary basis.

    • @dipdoting
      @dipdoting  4 หลายเดือนก่อน +1

      RAM chip is the likely day-1 scenario - but I'm going to keep at the vintage approach - Core rope for ROM would be a fun weaving project :)

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

    I have heard that flyback diodes decrease switching speed, but increase contact life due to less arcing. Also, I think semiconductor RAM and ROM is fine.

    • @dipdoting
      @dipdoting  2 หลายเดือนก่อน +1

      That's a great idea for a couple of experiments - I've wanted to try different diode types and their effect on performance.

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

    Personally, I would just use IC based RAM and ROM to begin with, which will be addressed and handled correctly by the system; you know there are many ways to create memory but that could also be a stumbling block to progress and development of the rest of the machine.
    Make it function "as if", and use the expansion thought space after the machine is executing code to create a period correct storage unit.

    • @dipdoting
      @dipdoting  4 หลายเดือนก่อน +1

      Thank you and totally agree - my brain says go for modern RAM and have more fun and adventure doing the vintage stuff afterwards :)

  • @CameronJamesH
    @CameronJamesH 4 หลายเดือนก่อน +2

    You could make a few different RAM boards and compare them; I imagine capacitors would be the cheapest to start with.

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

      Yep as a demo board 2 to 8 bytes of capacitor RAM would be very cool. But in reality it’s gonna need some SRAM ICs. The other angle is ROMs. I’d love to see some diode ROMs which were programmed with jumpers. Jolly tedious but could be interesting.

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

      I think that's going to be the approach! RAM chip, capacitors, and my big dream of getting my hands on a paper-tape reader...and punch so I can save my programs!

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

      Somewhere I saw a ROM that was all DIP switches. That would be tedious to program but I guess easier to read "the code" than jumpers :)

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

    How the heck did Alan Turing and Tommy Flowers come up with the original ideas for this.

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

    I feel like once you cross the "that would be stupid hard" line in a design like this, you have to decide personally what you want. Memory is one of those things were, yeah you could be "true" to form, but I wouldn't begrudge you if you went with a modern RAM solution for the sake of simplicity, and your sanity. Ultimately it's what YOU want from the build, but any of us that can appreciate the work your doing wouldn't judge you for using solid state ram.

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

      Thank you, that's really insightful! I'd like the design to be old-school, but also want it to function in a way that's predictable and easy to diagnose when something goes wrong.

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

    Hello! Thank you for the nice explanation of the fetch cycles. For JMP operations, there is probably a JMP register for the return address, right?
    Regarding memory: I understand the thoughts about cheating with the ROM IC. Everything else is just a lot of effort if you want to stay period-correct. But it would be exciting to see a core memory :)

    • @dipdoting
      @dipdoting  4 หลายเดือนก่อน +1

      A JMP would literally just overwrite the Program Counter with a new address. If I wanted to do some subroutine call (like a JSR) I'd need to store the return address somewhere like in XY register. There's no stack planned, so wouldn't be able to do nested subroutines.

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

    Memory can be classified in two distinct groups - RAM and ROM. Maybe going for 16 bytess of relay-based RAM would be enough and then use a diode matrix ROM (driven by a relay based 1-of-N decoder) for the program code. Some old machines had the diodes pluggable and inserted into large removable boards that could be inserted into the computer for "loading a new program".

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

      A -pin-board- pin-matrix can also be used as basic RW-ROM.
      But that has it's own challanges.

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

      @weirdboyjim (YT) actually made a version of what I was thinking about.
      It's in the video called _diode matrix prototyp build._

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

      @@GegoXaren Jim is doing a lot of amazing stuff in his build. But I can't exactly recall when he did a diode matrix - I have to re-watch his videos a bit and see if I can pick up some new tidbits that I missed the first time. By the way - a 8x8 LED display can be used as a 64-bit PROM. You can "blow the fuses" by simply overloading them just as in a real PROM ;)

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

    How about a rotating capacitor drum? Like Atanasoff and Berry used. Far less relays but, of course, there is the latency problem.

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

      Drums or any spinning things would be cool - I'm wondering about timing but could use some sort of clock track and a sequencer. Oh to have a CNC machine and some fabrication skills :)

  • @UnbrokenCheese
    @UnbrokenCheese 4 หลายเดือนก่อน +1

    I noticed you manually route the tracks. Since you're using EDA (unless you switched?), have you tried the auto-router? It does a fairly good job. As for RAM, maybe look into something like the 2114 RAM; they're from the 70s, but you'll still have a vintage feel. I dunno how availability is. 1kx4, you'll consume a lot of real estate

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

      2114 SRAM is what I was thinking. About as retro as you can get with an IC; easy to implement and doesn't have to be the final solution.

    • @lawrencemanning
      @lawrencemanning 4 หลายเดือนก่อน +1

      Auto routers usually result in pretty ugly layouts. It would be interesting to see how it would get on with such a repetitive schematic though.

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

      Yes, tried it, didn't have much success. As @lawrencemanning pointed out, the layouts were not "aesthetically pleasing" --- too many vias IMO. I think auto0routing should consider some AI.

  • @TheMason76
    @TheMason76 4 หลายเดือนก่อน +1

    Just my two cents : You first should use a modern IC for testing all the things and then try to replicate a part of the ram to old school and once all parts work, run in furthermore on the old school, with all its limitations :-) and by the way you have more time to think on which type of old school ram fits best.

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

      We are aligned :) The modern RAM option to start and test computer with, but a close follow with something more vintage.

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

      @@dipdotingGroovy ;-)

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

    What are your thoughts on the terms "flyback diode" vs "freewheeling diode"?

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

      Good question, I've heard both terms used interchangeably, but my understanding is that flyback is specific to relays to prevent spikes when the current is released. I've heard the term freewheeling in more modern TTL type applications. I use flyback because it has a nice ring to it :)

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

      Yeah, I think flyback is more appropriate for a situation where the inductor is being completely disconnected, like with a relay coil, whereas freewheeling is more appropriate when the goal is specifically to allow current to continue flowing through the inductor, like in a voltage converter.

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

    I'm confused about the complexity of of the incrementor (registry). I have seen a lot of CPU infrastructures from PIC's, 8080's, ARM's, 6800's and 6502's etc, But i belief i never encountered this structure.

    • @dipdoting
      @dipdoting  4 หลายเดือนก่อน +1

      The 6502 has a dedicated incrementing circuit as part of the program counter and I believe it is incremented automagically during the fetch cycle. The fetch cycle is hard-coded even on the relay computer so the higher-level code won't need to explicitly make calls to the incrementer.

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

    I wonder how this computer would handle 8-bit paper tape...

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

      Paper tape would be perfect for this computer - The FACOM relay computer used a super-wide 72-channel version. Would be nice to get a hold of a vintage reader/punch unit to experiment with.

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

    Nice! Can it run 13B LLM?

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

      I have doubts - if it did it would be a bit slow...

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

      @@dipdoting 🤣

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

    I just found out about same very very compact ROM storage: Core Rope Memory... (not to be confused with Core Memory). But may not work with the voltage you'll be using...
    Stupidly complicated, stupidly hard to write, and not cheap.

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

      I watched the CuriousMarc video on core rope ROM used in Apollo missions - Was amazing how they literally wove the code.Took me 5 or 6 trys to understand how it worked!

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

    You can have a PoC with relays and other old school techniques for memory, and an IC one for showing off what it can do.
    A -pin-board- pin matrix ROM would be... Interesting... To program...

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

      @weirdboyjim (YT) actually made a version of what I was thinking about.
      It's in the video called _diode matrix prototyp build._

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

      That's a great video and concept!

  • @GegoXaren
    @GegoXaren 4 หลายเดือนก่อน +1

    Just an FYI: you should trim down long legs before soldering, as the long legs eat a bit of heat. (meaning you might not get a good solder Bond.)
    It's perhaps not that much of a problem but it's _good practice.(TM)_

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

      Big tip, higher heat, no care. YMMV. The correct iron temperature is the one that completes a joint in two seconds or less.

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

      @@beanMosheen
      There is a risk of over heating the components, lowering the life length of the component.

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

      @@beanMosheen
      .... And it might have been more important before than it is today. Better materials for the legs and solder, and better flux may mean it's not as important any more.
      It was at least what I learned when I went to Secondary Education, some two decades ago, and our teacher was an old-hat.