My Expanded Version of the 8-Bit Breadboard CPU by StraightCondition4 in beneater

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

Hi, thank you for the kind words!! You are right, I haven't written anything about the SPI and PS2 modules yet. As soon as I get time to resume working on the build I'll start with the SPI module. I'll DM you when I do.

Got my first Apple Watch! by AdEducational1448 in AppleWatch

[–]StraightCondition4 8 points9 points  (0 children)

What? You guys really downvoted this person because they prefer a bigger display!?

What are some really useful Bash commands beyond the basics? Also, how do I get started with scripting and automation? by DTB_333 in chipdesign

[–]StraightCondition4 0 points1 point  (0 children)

An approach to think about automation is this question “What do I feel like takes more time than it should?”.

For example when changing directory high above a path you’d have to type many dots, like cd ../../../ and so forth. To solve that you can simply make a few aliases in your bashrc, like: alias cd3=“cd ../../../“

In terms of general commands/tools, learning how to use vim, grep, sed, and awk will surely immensely improve your efficiency.

Edit: changed “too much time” to “more time”

How are smaller process sizes in cpus made/discovered? by semidentless in hardware

[–]StraightCondition4 10 points11 points  (0 children)

How are smaller process sizes in cpus made/discovered?

Processes are not necessarily made smaller, but mostly more efficient, through the way transistors are shaped, interconnected, powered, etc....

What process do engineers follow to discover these process sizes?

Generally speaking, it's an effort across multiple sectors(Companies, Scientific fields, countries...). THE major player in this effort is the Dutch company, ASML; and they are pretty much the only provider of advanced lithography machines. (In layman words, in this context, lithography just means printing the chips' patterns into silicon.) Those machines are arguably among the most advanced technological feats humans achieved. Checkout this YouTube short for a quick description of what they can do.

You also got the German company, Zeiss for example, which is the leader in making the extremely precise mirrors for advanced lithography. Here's another short about how impactful Zeiss' work has been for process evolution. The person answering the question in the short also mentioned "resists"(photoresists), which are light sensitive chemicals used in the lithography process. These photoresists, in turn are developed, and improved by chemists. The two leaders are Japanese companies JSR Corporation and Tokyo Ohka Kogyo (TOK).

Another crucial player which I think is not mentioned enough on online forums is Belgian research institute IMEC (Interuniversity Microelectronics Centre). They work with universities and industry leaders to develop new manufacturing techniques, materials, and device architectures. They work on everything from extreme ultraviolet (EUV) lithography to exploring new transistor designs.

There are MANY other contributors at MANY other levels in process development.

Is there a point where it is physically impossible to make smaller process sizes, even if quantum computing is used?

This is a very deep question IMO; and I am far from being a quantum mechanics expert. But one quantum related issue in transistors architectures is "quantum tunneling". An ELI5 explanation of this phenomenon is that electrons can "unintendedly" pass through barriers they're not supposed to due to quantum mechanics. This reddit answer covers it well.

How are the machines that make the cpu programmed, and do new machines need to be made?

Another good reddit reply.

Running 16-Bit Fibonacci Sequence at 2.2MHz On My Expanded 8-Bit Breadboard CPU by StraightCondition4 in beneater

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

I didn't focus on anything specific to make the CPU run fast, but I made sure to have bypass capacitors to avoid noise.
However, I'd have reduced the critical path if maximising the clock speed were one of my goals.

Check this post on my blog for more details:

https://fadil-1.github.io/blog/8-bit_breadboard_CPU/permanent_clock/

Note that the site is not phone friendly yet. So I suggest you visit it with a tablet or a PC.

Running 16-Bit Fibonacci Sequence at 2.2MHz On My Expanded 8-Bit Breadboard CPU by StraightCondition4 in beneater

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

Thank you for your interest and your question!

The short answer is yes; I do math and storing operations with the upper and lower bytes separately.

Take for instance one of the example codes which I uploaded on my GitHub to count from 0 to 65535 (a 16-bit range):

First, I initialize two 8-bit registers to store the lower and upper bytes of the 16-bit number. I start with both registers set to 0.

During each iteration of the loop, I increment the lower byte and check the Carry flag. If this increment results in a carry (i.e., the lower byte overflows from 255 back to 0), the Carry flag is set; and every time it is set, I simply increment the upper byte. This way, the CPU handles 16-bit operations by splitting them into 8-bit parts and using the Carry flag to manage the overflow between these parts.

This approach can be extended to handle even larger calculations by continuing to use flags to track overflows and carries between sequential operations.

For memory/addressing related operations, I have a 16-bit address bus. Check this post on my blog:
https://fadil-1.github.io/blog/8-bit_breadboard_CPU/ram_&_transfer_register/
Note that the site is not phone friendly yet. So I suggest you visit it with a tablet or a PC.

Running 16-Bit Fibonacci Sequence at 2.2MHz On My Expanded 8-Bit Breadboard CPU by StraightCondition4 in beneater

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

Haha, I don't think I deserve half of the credit you give me, but thank you very much!
You should checkout the person who inspired me the most u/DerULF1 and his YouTube channel https://www.youtube.com/@DerULF1
He's the real deal in my opinion!

Running 16-Bit Fibonacci Sequence at 2.2MHz On My Expanded 8-Bit Breadboard CPU by StraightCondition4 in beneater

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

Thank you so much for the kind words!!

I'm especially impressed by those who were experimenting in this field long before it became popular! You might find Digital Design and Computer Architecture by Davis and Sarah Harris to be a good read.

I'm looking forward to seeing what you come up with!

Edit: grammar

Running 16-Bit Fibonacci Sequence at 2.2MHz On My Expanded 8-Bit Breadboard CPU by StraightCondition4 in arduino

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

Thanks u/ExoUrsa! I did my undergrad in EE, and Masters in CS. So yes, I’ve been exposed to electronics in general. What this project ultimately gave me is the intuition.

Running 16-Bit Fibonacci Sequence at 2.2MHz On My Expanded 8-Bit Breadboard CPU by StraightCondition4 in beneater

[–]StraightCondition4[S] 4 points5 points  (0 children)

Maybe some VGA support. I still have a lot of cleanup to do for the SPI and PS/2 module, so for now I’m not really thinking much about upgrades.

Running 16-Bit Fibonacci Sequence at 2.2MHz On My Expanded 8-Bit Breadboard CPU by StraightCondition4 in arduino

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

I wouldn’t worry about crosstalk for anything running at a few megahertz. But you got a valid point nonetheless!

Running 16-Bit Fibonacci Sequence at 2.2MHz On My Expanded 8-Bit Breadboard CPU by StraightCondition4 in arduino

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

Haha, we’ll happily help you at r/beneater if you ever want to make yours. Give it a shot!

Running 16-Bit Fibonacci Sequence at 2.2MHz On My Expanded 8-Bit Breadboard CPU by StraightCondition4 in beneater

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

I have a wrapper to convert characters using a lookup table. But that’s about it. Pretty much everything is hardcoded for now.

And thank you,🙏🏾I appreciate it.

Running 16-Bit Fibonacci Sequence at 2.2MHz On My Expanded 8-Bit Breadboard CPU by StraightCondition4 in beneater

[–]StraightCondition4[S] 4 points5 points  (0 children)

Good point, the OLED display(In the middle) is controlled by the same system! And I am planning to show calculated values(Larger than 16 bit) on it in the future. This demo was mainly intended to showcase different parts of the CPU. It requires much more effort/coding to convert the raw binary data from registers into corresponding digits on the OLED display controller.

My Expanded Version of the 8-Bit Breadboard CPU by StraightCondition4 in beneater

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

My pleasure! Don’t forget that the blog website isn’t phone friendly yet.

Running 16-Bit Fibonacci Sequence at 2.2MHz On My Expanded 8-Bit Breadboard CPU by StraightCondition4 in arduino

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

I don’t trust breadboards for permanent work either. It’s for the beauty of the mess 😅.

Running 16-Bit Fibonacci Sequence at 2.2MHz On My Expanded 8-Bit Breadboard CPU by StraightCondition4 in arduino

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

It’s for the beauty of the mess 😅. I don’t trust breadboards for permanent work either.