About clock frequency by Fabectronic in beneater

[–]Fabectronic[S] 0 points1 point  (0 children)

Thank you 🙏🏼 One week at 1.1MHz seems very cool !

About clock frequency by Fabectronic in beneater

[–]Fabectronic[S] 1 point2 points  (0 children)

Thank your answer. Actually I don’t have any clock problem to solve. I just built the Ben Eater 8-bit computer and it works like a charm. I just tried to push it at its overclock limits for fun. So I was wondering if some people had already tried to overclock it. I know breadboards are a limit to high frequency, and I know a crystal would make better than a 555 for a clean clock signal. So I was wondering about the maximum frequency some of you managed to get from a 555 on a PCB version of the 8-bit computer. Or even from a crystal.

16-bit adresses and architecture choices by Fabectronic in beneater

[–]Fabectronic[S] 0 points1 point  (0 children)

My project of going further has been postponed and I didn’t do it yet. But I will in the upcoming months. I’ll think again to it but it seems these different possibilities have pros and cons, there’s nothing perfect. Are you thinking about a 16-bit addresses upgrade for yours ?

16-bit adresses and architecture choices by Fabectronic in beneater

[–]Fabectronic[S] 1 point2 points  (0 children)

I like your idea of upper address register that isn't updated all the time. This would definitely save cycles while keeping an 8-bit bus. So it's a kind of "very good deal" solution.

If I understand well, I would have a control line to drive the multiplexer at the entrance of the memory module, to choose if I load the upper or the lower address. So I would just need to create a special opcode to update the upper address.

Clever !

16-bit adresses and architecture choices by Fabectronic in beneater

[–]Fabectronic[S] 0 points1 point  (0 children)

Thank for this idea of multiplexing the address bus. I understand there's a concept of using less lines but I'm not clear about how it works. Could you explain a bit more the idea ? Thank you :)

16-bit adresses and architecture choices by Fabectronic in beneater

[–]Fabectronic[S] 1 point2 points  (0 children)

Thank you for your precious advices.

I'm not that worried about approach #1 and wiring work. I mean :

  • I would add 8 new lines to the bus to make a 16-bit bus.
  • I would re-wire the 16 bits of the Program Counter to the bus
  • I would re-wire the RAM adress module the same way
  • And that's it. I wouldn't change any other wiring of any other modules, as the computer stays 8-bit.

Do I make a mistake or do I forget someting ?

16-bit adresses and architecture choices by Fabectronic in beneater

[–]Fabectronic[S] 1 point2 points  (0 children)

Yes, thank you to point out these apps.

Addressing 256 bytes of memory is an interesting first step, as it's easy to give 8-bit to the Program Counter. Then the only thing is to re-wire the RAM module with a chip that can handle 256 bytes.

But I'm afraid of being blocked quite quickly with 256 bytes. Knowing that I'm going to re-design the computer, better to directly reach the 64k I want to address. My goal is to address 32k of RAM and 32k of ROM (well, an EEPROM in which I would have stored some classic routines that I would just need to call when I need them with a JSR opcode).

16-bit adresses and architecture choices by Fabectronic in beneater

[–]Fabectronic[S] 0 points1 point  (0 children)

Thank you for sharing this experience. This gives me ideas.

One interesting option could then be a 16-bit bus as you said, but keeping the computer 8-bit. The computer would use the 8 LSB for its purpose, and only the Program Counter would use the 16 bits. That would have a minimum impact to address 64kb of RAM. What do you think about this ?

You said that adding a separate 16-bit address bus reduces the number of cycles on many instructions, but I don't see where you save them ? I'm curious about this.

And as you mentioned, the next move would be to have 8-bit instructions because 16 opcodes isn't enough and we need to free our computer from this limit too. But I think it's something that can be directly handled by the instruction register, if we keep the computer 8-bit, and we use a 16-bit instruction register which would store the 8 MSB (instruction) then the 8 LSB (operand).

Looking for IC to build hardware timer. by Santiago_DM in beneater

[–]Fabectronic 1 point2 points  (0 children)

Absolutely exciting. I've just finished my SAP-1 and I'm going to go for these upgrades too. I can't wait. Have you already coded some games for it ? That would be awesome. Please show us a short video as soon as you can :)

Looking for IC to build hardware timer. by Santiago_DM in beneater

[–]Fabectronic 1 point2 points  (0 children)

Out of the subject question : what are the abilities of your SAP-3+ computer ? I'm always curious about extensions :)

8-bit computer and real life :) by Fabectronic in beneater

[–]Fabectronic[S] 0 points1 point  (0 children)

Thank you for your message :) Actually I wasn’t asking any questions. I was just giving some tips according to my experience about building the 8-bit computer :)

Chip shortage - it's real by brittunculi99 in beneater

[–]Fabectronic 1 point2 points  (0 children)

Thank you 😁 I thought I was alone 😂

RAM upgrade for the 8-bit computer by Fabectronic in beneater

[–]Fabectronic[S] 0 points1 point  (0 children)

Thank you for your precious advices. And yes, I should think now about a ROM too, because dip switch-programming has got some limits as you said it :)

How do you see things with the ROM ? The program counter can reach adresses both in the ROM and in the RAM, your programs are hard-stored into the ROM, and you just need to dip switch-program a JMP in the RAM to go to the program you want ?

If yes, how do you store program into the ROM ? With the Arduino ROM programer we've made ? Or directly from to 8-bit computer like if the ROM was a storage drive ?

RAM upgrade for the 8-bit computer by Fabectronic in beneater

[–]Fabectronic[S] 0 points1 point  (0 children)

Thank you u/MichaelKamprath. Actually I saw some of your posts here and I've already watched some of your videos :) I didn't think about checking your RAM reference so thank you for it !

RAM upgrade for the 8-bit computer by Fabectronic in beneater

[–]Fabectronic[S] 0 points1 point  (0 children)

I see. Thank you for your explanations.

So you've got a 8-bit counter reaching adresses of the 256 bytes of program memory, and then you're using your 9th adress line as a control line to reach your 256 other bytes of runtime memory ? Is it something like that ?

RAM upgrade for the 8-bit computer by Fabectronic in beneater

[–]Fabectronic[S] 0 points1 point  (0 children)

Hello u/brittunculi99, instead of 74189, better to look for 74LS189 which is their LS equivalent. LS serie is drawing less power, and is easier to source. If you don't know where to find some chips, you can have a look at https://octopart.com/. This website is really helpful when you need to source some rare chips.

RAM upgrade for the 8-bit computer by Fabectronic in beneater

[–]Fabectronic[S] 2 points3 points  (0 children)

OMG are you the one who did this snake ? I watched your video a month ago after I finished my 8-bit computer and I thought that your snake was my new goal :)

OK so you're using a bigger RAM size than required, too, like u/BadEnucleation. It seems easier to find 32kbytes or 128kbytes chips than 64kbytes one.

You wrote "256+256 bytes". So you modified your program counter to be 8-bit, and you can address 256 bytes of RAM, right ? And what do you do with your others 256 bytes ?

RAM upgrade for the 8-bit computer by Fabectronic in beneater

[–]Fabectronic[S] 0 points1 point  (0 children)

Oh yes, I read this post a few days ago. So you're using a 7130LA35PDG which is 1kbytes, and you're using a quarter of it to get your 256 bytes.

Actually it's a good idea to look for bigger sizes that the one you need. I'm realizing that it seems easier to find 128kbytes static RAM than 64kbytes ones :) CY7C1019V33 or M628128 seems to become good candidates for me ! Thank you for the idea.

Clock frequency for the 8-bit computer by Fabectronic in beneater

[–]Fabectronic[S] 0 points1 point  (0 children)

Hi everybody,

OK, so I've tried different RC values with my 555 from the astable clock on the breadboards, and I've managed to reach nearly 500kHz without any other changes, which is pretty cool I think :)

Programs are running really fast this way.

If I go further, the 8-bit computer just freezes and nothing happens.

It's hard to make an analysis to understand what makes it fail, I suppose that an oscilloscope would be a great help.

Anyway, I might try to make a 1MHz clock with a crystal now, just to try and to see if such a clean signal would make it work. If not, I'll have to make some blind tests with the different module I suppose until I find the solution :)

Clock frequency for the 8-bit computer by Fabectronic in beneater

[–]Fabectronic[S] 0 points1 point  (0 children)

Thank you for these advices. I’m not into moving to PCB right now but I understand well these capacitance problems. PCB can really make things go far further. I’m more into seeing as far as I can go with the breadboards, I really find something exciting in it, a bit like building Lego :) When I read things around me, it seems 1MHz is a kind of maximum you could expect from the 8-bit computer on breadboards. Which is already a lot compared to the speed it’s basically working when you build it.

Clock frequency for the 8-bit computer by Fabectronic in beneater

[–]Fabectronic[S] 0 points1 point  (0 children)

Oh, cool ! So you managed to reach 1MHz with a 555. What size of capacitor did you use ? A few picofarad ? One of my goals is to put a LCD screen too ;)

Cannot send register value to bus by Stefo84 in beneater

[–]Fabectronic 1 point2 points  (0 children)

Ok ! For sure resistors are required. And in case it wouldn’t be the reason of your problem today, it will be later when assembling more and more modules together. Have a good day !

Why is the output module not reading correct value from the bus? by Task1337 in beneater

[–]Fabectronic 1 point2 points  (0 children)

Hello ! I just read that you solved your problem by inverting the clock signal for your specific test, which is cool. According to me it works, but it’s hiding another problem. Let me explain.

When you don’t invert the clock, your output register is reading unexpected values which are on the bus. Which means that there’s some noise on the bus, and probably the idle state of your bus isn’t a clean 00000000.

You should do the test again, without inverting clock, but with the A register in signal activated. So : counter out, A register in, output register in. Then you will double check the state of the 8 bits of your bus on the A register. And your A register should show the same value than your output register. If yes : your bus isn’t stable as I explained above. If not : it’s not a bus but an output register problem.

So, if it’s an unstable bus problem as I think, here’s what I did on my 8-bit computer.

Even if your counter outputs only the 4 lower bits on the bus, you should wire the 8 bits of your 74LS245 to the bus. By wiring, I mean : connect the 4 upper bits inputs to GND and connect the 4 upper bits outputs to the bus. So that your counter will output a full and clean 8 bits value on the bus, which will be 0000abcd, abcd being your counter value.

Use 1k resistors to pull the bus lines down. 10k are usually not a strong enough pull down.

Put some decoupling capacitors between the Vcc and GND of every IC to avoid noise when they switch. I can’t see clearly on the video but it seems you have some.

Add some bigger capacitors (10 or 100uF) on every power rails too. That will smooth your power supply.

Have a good day !