Register PCB - Superscalar 8-Bit CPU #20

Поділитися
Вставка
  • Опубліковано 27 чер 2024
  • Our CPU only has two registers right now. Since we need a lot more to write interesting programs, let's convert the register breadboard into a dedicated PCB. And while we're at it, let's add a third read port such that we can simultaneously fetch an 8 bit operand and a 16 bit address from the register file in the future. In this video, we build up four register PCBs and take a deep dive into testing them with the circuit tester board.
    This video series explores the concepts and techniques that make modern computer processors so incredibly fast and powerful. I build my very own 8-bit processor from individual logic gates and gradually evolve it to become a superscalar out-of-order machine. Along the way, we take a deep dive into contemporary computer architecture in a hands-on fashion and rediscover some of the foundations of modern computing.
    Previous Video: • Circuit Testing with P...
    Series Playlist: • Build a Superscalar CPU
    - Golden Models: ethz.ch/content/dam/ethz/spec...
    - Register File: en.wikipedia.org/wiki/Registe...
    - Three-State Logic: en.wikipedia.org/wiki/Three-s...
    Related Videos:
    - James Sharman's 8 bit CPU Registers: • General Purpose Regist...
    - Circuit Tester PCB: • Build Your Own Logic A...
    - Circuit Tester Software: • Circuit Testing with P...
    Chips:
    - 74HC377: www.ti.com/lit/ds/symlink/sn7...
    - 74HC541: www.ti.com/lit/ds/symlink/sn7...
    00:00 - Intro
    01:52 - Schematic
    07:28 - Layout
    17:04 - Assembly
    22:41 - Soldering
    26:00 - Testing Setup
    29:05 - Basic Tests
    42:12 - Golden Model
    47:12 - Randomized Testing
    51:40 - Thoughts on Golden Models
    52:51 - Test All the Registers!
    53:48 - Outro
    #homebrew #8bit #breadboard #superscalar #computer
  • Наука та технологія

КОМЕНТАРІ • 28

  • @vincei4252
    @vincei4252 Рік тому +5

    Just started to watch the series. Great content! You need more subs!

  • @GordonWrigley
    @GordonWrigley Рік тому +4

    Whenever you want to write "global" it's a good sign that maybe you should make a class. Interestingly golden models as classes could serve equally well in a simulator.

    • @fabianschuiki
      @fabianschuiki  Рік тому +2

      Yeah that is an excellent point! Having the GM in a class would allow you to pretty neatly instantiate it, giving you a handle to all of the circuit's state, and then you'd just run it alongside the tester instance. Very cool! 🎉🥳

  • @djc1402
    @djc1402 Рік тому +3

    I really enjoy your videos. They are some of the best I've seen on YT, as good as the Ben Eater and James Sharman ones. I've also learnt a lot. I'm looking forward to what you are going to do in the future.

    • @fabianschuiki
      @fabianschuiki  Рік тому +3

      Thank you so much, that means a lot! 🥳👍

  • @TheMason76
    @TheMason76 Рік тому +2

    Can't wait to see the next Episodes of your build. I am really excited how it is going to be and your explanations to that. Very impressive and ambitious Project. *thumbs up. Hope to see more of your fantastic videos soon

  • @CeDoMain
    @CeDoMain Рік тому +2

    Now its time to write a Software which gets an GoldenModel-Object, a Discription of the Mapping between the GoldenModel and the Hardware Pins and a Test Strategy (Randomized Pins, Pattern Pins, Repeats, etc.). Then you can automate your Tests even more. I like your videos very much!

    • @fabianschuiki
      @fabianschuiki  Рік тому +2

      Thanks! 😀
      I like your suggestion of automating some of the golden model equivalency checking. That would make things a lot easier. I have a few ideas on automated fault detection that might play into this. Needs some thought 👍

  • @JaenEngineering
    @JaenEngineering Рік тому +2

    Excellent work as always, and even if I do get a little lost when it comes to the software side of things, it's always a pleasure to watch.

    • @fabianschuiki
      @fabianschuiki  Рік тому +2

      Thanks! I'm torn between showing the software side in more detail, which has a tendency to totally go off the rails and blow up into a 2h segment, and keeping the hardware focus, which then glosses over some details and makes the software part too quick 🤔. Not sure which direction to go...

    • @JaenEngineering
      @JaenEngineering Рік тому +2

      @@fabianschuiki you seem to have a pretty good balance, and while I can understand what you're describing the code does, I see the code itself and it might as well be written in ancient cruciform! For some reason I've just never been able to parse a natural language description into a programming language or vice versa, a bit like how I failed my language classes in high school.

    • @trans_foxgirl
      @trans_foxgirl 9 місяців тому

      ​@@fabianschuiki ) my yj

  • @TomStorey96
    @TomStorey96 Рік тому +2

    You could take a look at PyTest for writing test suites. It kind of takes care of all of the "prettyness" of success and failures, but you can also use parameterisation for tests that are similar but need to iterate through several values.
    I'm sure you could write something yourself to do much the same, but PyTest already has it all there so you just focus on writing tests

    • @fabianschuiki
      @fabianschuiki  Рік тому +3

      That's an excellent idea! I'm definitely going to take a look at that 👍🥳

  • @TSteffi
    @TSteffi Рік тому +3

    There is a bit with overlapping audio at 33:52

    • @fabianschuiki
      @fabianschuiki  Рік тому +3

      Thanks 👍! Something has gone wrong there during the rendering of the video. Unfortunately it's not so easy to fix up a video once it's uploaded to UA-cam 😔

  • @donwald3436
    @donwald3436 Рік тому +2

    Why do you print the component numbers under the component? Doesn't that make it harder to troubleshoot and repair?

    • @fabianschuiki
      @fabianschuiki  Рік тому +2

      Yeah it does. The reason I try to hide them is to make the boards look less busy and cleaner, such that I can label the things on the silkscreen that really matter later on (pin numbers on the headers, labels for the individual signals that you have to hook up externally, etc). With these small boards troubleshooting and repairs are usually very straightforward, and you'll have to pull up the schematic and layout anyway where you can see all the components. The pattern-based testing with the tester PCB also really helps here, because you can very easily see where the issues are just by looking at which pins fail. If we ever get to automated test pattern generation, we'll even be able to cook up test patterns that can tell you exactly which chip pins on the PCB are bad just from driving the PCB inputs and observing its outputs.

  • @AmauryJacquot
    @AmauryJacquot Рік тому +2

    it's me or the microscope view shows there remains a lot of solder balls between the legs of the soic components ?

    • @fabianschuiki
      @fabianschuiki  Рік тому

      Yes! I also realized after the fact that on some of the PCBs I did push too much solder paste through the stencil, which then often pools into small solder balls ontop of the solder mask. I think part of the problem is using a heat gun which might blow solder around as it liquifies. Ideally I'd use a hot plate for more even soldering, which would allow the solder to properly pool and slowly cook off any oxygen on the pads.

    • @AmauryJacquot
      @AmauryJacquot Рік тому +1

      @@fabianschuiki I've been inspired by your tester device for my PDP-11/70 project, check your mentions 😃

    • @fabianschuiki
      @fabianschuiki  Рік тому +1

      Cool, thanks for the pointer 🥳👍👍👍

  • @davidrosset4457
    @davidrosset4457 Рік тому +1

    Will you post the .json file of the Register PCB on GitHub?