• Welcome to TechPowerUp Forums, Guest! Please check out our forum guidelines for info related to our community.
  • The forums have been upgraded with support for dark mode. By default it will follow the setting on your system/browser. You may override it by scrolling to the end of the page and clicking the gears icon.

Plan B for retirement: DIY SoC with some 8-16 bit CPU & Co

Joined
May 31, 2020
Messages
23 (0.01/day)
Location
Finland
System Name Yes
Processor AMD Ryzen 9 5950X
Motherboard ASUS ROG Strix X570-E Gaming
Cooling Custom water cooling, CPU & GPU has shared 400x400 radiator 2 feet out of case
Memory 64 GB G.Skill Trident Z Neo 3600 MHz 16-16-16-36
Video Card(s) NVIDIA GeForce RTX 2080 Ti
Storage 2 TB Corsair Force Series MP600 NVMe M.2 PCIe 4.0 & 1 TB Samsung 970 Evo M.2
Display(s) 1st: Asus 32" ROG Swift PG329Q, 175Hz (OC) WQHD 2nd: Acer 32" Predator Gaming Z321QU, 165 (OC) WQHD
Case Lian Li, originally got it for ASUS ROG Maximus XI Gene, microATX
Audio Device(s) Several diffetent, I guess...
Power Supply Corsair AX1200i
Mouse Provo Noste Pro, 1 wireless and some other mouses for different purposes
Keyboard Provo Kajo Opto, 1 wireless Microsoft something
Software Windows 11
Benchmark Scores Some 16-17 000 on Time Spy

8-BIT DIY COMPUTING DEVICE ISN'T GOING

TO BUILD ITSELF, SO I NEED YOUR HELP

(OR, AN INTERVENTION)


Introduction:

I been thinking about building this a while now, I mean why not? I got time... I have 3 decades of history as PC enthusiast, including overclocking etc and PC building/repairing/tuning is still one of my favorite activities. People around me are well aware of this and won't hesitate to ask me to go fix their hardware. Which I do, with joy. I suspect it's because how much detective work it all requires, not sure though, but I find the search for answers most fullfilling.
I'm not computer/software/ engineer, and I only have some expertise in electronic- and mechatronic automation. What I lack in expertise on certain specific PC related fields, I compensate it with my infinite interest on subject. Anyway...

The beef here is:


I'm a bit lost where to even begin this all. So I'm asking some general tips and guidance on easy to avoid big mistakes so won't lose interest etc.

I've thought through the design on like, on logical level (not logical gate level), I haven't drawn even circuit diagram yet and only kind of have the idea how it (at least in theory) should work. Although I'm not 100% sure which type of parts and with what parameters give the hoped results, yet. Parts such as transistors, capacitors, diodes, flip-flops, EROM's (or EEROM's?)... Even currents and voltages are "hanging freely" at this stage.

I don't want copy anyone but build mine own, so no step by step guides please, unless it's only way to explain something for my smooth brains. I have some last century tools to write on ROM chip, of course soldering tools, spectrum of measuring tools well.. a lot of tools really so that's all good. Going to need small parts obviously but they can be cannibalised from old obsolete electronics.

Guess I could list some of my biggest questions...

  1. What would work best as "RAM", or drive it's purpose?
  2. How about harddrive, do I even need one though, 8-bit CPU's data output can be basically stored on any number of systems... so... on a harddrive after all.
  3. ...I only have questions actually so better I stop listing them because soon it's just replica of someone elses...
But I mean, feel free to comment if you've built one or tried to and share me your experiences?
 
If you have to ask these questions, you don't have the skill to build a computer from bare components. There is a reason why people spend years and years going to school for this. It's not meant as a dig on you. 99.9% of the population can't do what you are thinking of.
 
Look into Atmel AVR microcontrollers, use its SPI bus to add an external DRAM memory chip and interface with an SD Card
 
I kinda do not want to spoil the party... but thinking about making something first... and especially with 80ies tech gear.... it is not possible. Someone did it already during 8bit ZX Spectrum DIY clone era etc and not just because of fun, but because they were poor and exhibited even greater spare part deficit than even now. They had to be creative.

You have to stick to datasheet on most parts... ATMEGA's external RAM has been optional, but it was just dismissed as a cuckoo option, just because of price, device footprint and reliability. As a single project just because you can, you can do it... as this example.

For starters... to peek into the area and if you are into making something... make a simple clock made from logic... but with proper compensation circuit, that is a aware of it's fault. It is done many times, but the implementation can vary a lot, thus in the end the result will be quite unique.

If you want to make it even more complex... peek into early speech synthesis.
 
Last edited:
Maybe what you want, is to use an FPGA, something akin to this project.

Or if you really want to get your hands dirty.
 
If you have to ask these questions, you don't have the skill to build a computer from bare components. There is a reason why people spend years and years going to school for this. It's not meant as a dig on you. 99.9% of the population can't do what you are thinking of.
Yeah I'm well aware of the challenges ahead, but I have enough experience on electronic and mechatronic automation engineering to understand this is doable. I only have uni education mechatronics but drawn electric automation circuit diagrams etc with AutoCAD for foreign and domestic factories since teenager, first as side hustle but which became the main hustle later in life. And as I'm currently retired and as mentioned I got plenty of time to study & learn. After all, I can read (with reading glasses...) and I'm still able to take in new information when I see it serving some purpose.

Maybe what you want, is to use an FPGA, something akin to this project.

Or if you really want to get your hands dirty.
Thanks for the link, look to it soon. It's possible FP gates are pretty much only solution currently too...
 
If you have to ask these questions, you don't have the skill to build a computer from bare components. There is a reason why people spend years and years going to school for this. It's not meant as a dig on you. 99.9% of the population can't do what you are thinking of.
This ^^ There's nothing trivial about building a computer, even the simplest 8-bit one. The fact that you're asking how to do it on a forum tells me that you have no idea how to go about this.

It looks like you want a big challenge, so I recommend studying a course in this field and really knowing your stuff first, then taking on this challenge, which will be very satisfying.

Perhaps building a design based around a 32-bit ARM CPU will be best? Great performance and great support for this platform. I've programmed the ARM2 in assembler on an Acorn Archimedes and it's awesome.

Good luck.
 
Yeah I'm well aware of the challenges ahead, but I have enough experience on electronic and mechatronic automation engineering to understand this is doable. I only have uni education mechatronics but drawn electric automation circuit diagrams etc with AutoCAD for foreign and domestic factories since teenager, first as side hustle but which became the main hustle later in life. And as I'm currently retired and as mentioned I got plenty of time to study & learn. After all, I can read (with reading glasses...) and I'm still able to take in new information when I see it serving some purpose.


Thanks for the link, look to it soon. It's possible FP gates are pretty much only solution currently too...
Automation is far far away from designing a computer. But let's say you have to drive to learn what you need... Let's start with the big picture, what do you want this to do? Play simple games like text adventures? Play sprite based games?

Next how will you interact with it? Will it be os based? Low level language based? Assembly? Basic? Dos? Cp/m?

What is your input system? Keyboard? Output? Blinking led? Fixed character display like a 16x2lcd?

What do you want for memory? (skip a harddrive, it's unnecessary complexity)

Instead of starting with designing your own, I suggest building one from this list... You will gain much more knowledge by understanding one that is already done.

 
I kinda do not want to spoil the party... but thinking about making something first... and especially with 80ies tech gear.... it is not possible. Someone did it already during 8bit ZX Spectrum DIY clone era etc and not just because of fun, but because they were poor and exhibited even greater spare part deficit than even now. They had to be creative.

You have to stick to datasheet on most parts... ATMEGA's external RAM has been optional, but it was just dismissed as a cuckoo option, just because of price, device footprint and reliability. As a single project just because you can, you can do it... as this example.

For starters... to peek into the area and if you are into making something... make a simple clock made from logic... but with proper compensation circuit, that is a aware of it's fault. It is done many times, but the implementation can vary a lot, thus in the end the result will be quite unique.

If you want to make it even more complex... peek into early speech synthesis.
I was thinking it will be giving signals to actuator parts. Be the "brains" or PID controller of useless servomechanisms, like some... well, control heat of bbq for example, at first and gradually fine tune it as something that may even serve some actual purpose. I don't have purpose driven need for it now, there's R9 5950X for that, but more of a interest on subject driven need...

This might be relevant.
Sure it's interesting but I'm not "quite" in the same league, as a matter of fact we play different game, in different age groups, on other continent...

Automation is far far away from designing a computer. But let's say you have to drive to learn what you need... Let's start with the big picture, what do you want this to do? Play simple games like text adventures? Play sprite based games?

Next how will you interact with it? Will it be os based? Low level language based? Assembly? Basic? Dos? Cp/m?

What is your input system? Keyboard? Output? Blinking led? Fixed character display like a 16x2lcd?

What do you want for memory? (skip a harddrive, it's unnecessary complexity)

Instead of starting with designing your own, I suggest building one from this list... You will gain much more knowledge by understanding one that is already done.

It will be sending signals that do mechanical work, PID controller sort of, at first. There's million uses I can imagine for one. Leds are fine telling where signals going at first, nothing fancy in mind, likewise some bytes of binary code (big-little endian doesn't matter I suppose at this stage) instructions on a ROM, or several ROM chips, and which bit numbers I know later too, but which I have means to stamp myself. The ROM/'s kind of be RAM except repeating same words every time "a fetch" comes (over e.g. sensory signal) for the processor which release volts to where instructed. Kind of hard to put this in words in English as it's like my 3rd language and have some gaps in technical terms too.

Processor would just keep the system running smoothly, read the situation and act accordingly. Later, once it's going as intented, can start focusing on more sophisticated features....

If you have to ask these questions, you don't have the skill to build a computer from bare components. There is a reason why people spend years and years going to school for this. It's not meant as a dig on you. 99.9% of the population can't do what you are thinking of.
Well, my introduction doesn't give good specification how I'm doing it,, but it's really not like I could dress it like that on English either necessarily.

But... I'll try: Think of "Centralised Processing U-Haul" or CPU (the 8 or so bit CPU). It receiving signal from sensor 1. detecting event A. It now needs to know what to do, but it got "address": 1.A. where to ask that from. It'll send the "signal guys x1.1" to "fetch" the information from address 1.A. where a ROM with certain stable, some couple bytes of binary code instruction is found. Once the the sgx1.1 reach the ROM a "capacitor" or such pops off and transforms "sgx1.1" to "sgx1.2" that's carrying those couple words of information of ROM in address 1.A. to CPU for "centralized processing". It then processing transistors on/off as the sgx1.2 instructs which in turn sends signal guys x2.1, x3.1 & x4.1 on move. Sgx2.1 ot instruction to visit address 2.B. which is another ROM where "capacitor" pops sg2.1 -> sgx2.2 with more info for Centralised Processing U-Haul.

Sgx3.1 got an instruction to go tell rotary actuator to act with force ROM at 1.A instructed, but the actuator is lazy and sgx3.1 has to sacrifice itself turning the actuator with force sgx3.1.

Sgx4.1 got instruction to go meet with sensor 2 which had detected an anomaly in movement of the actuator sgx3.1 used itself, and speeds back to CPU as sgx4.2, however no has no clue what's next, if it wasn't for sgx2.2 from address 2.B with a word or two saying that if sgx4.2 is seen around, send sgx5.1 to urn the actuator, sgx2.1 to adress 2.B ROM and sgx4.1 to sensor 2...sgx5.1 pulled it's job perfectly, sgx2.2 returned but sgx4.2 didn't so sgx2.2 instructed everyone on standby for next signal to process...

I have no idea how that makes sense to anyone, but there's the main operational side if it, transistors control electricity in a way it's instructed by ROM's...
 
Last edited:
I still not exactly sure what you're trying to do.

Do you want to build a CPU from scratch, implement a CPU on a programmable logic or just emulate a instruction set on a microcontroller? I guess making a "DIY SoC" is out of league for most people. There's low volume didactic fabs that might take experimental orders, but they usually not exactly available for general public. Do you mean "DIY SBC" instead, that's several order of magnitude more realistic to do.

If you're trying to create CPU from scratch, how discrete you want it to be? Individual transistors? Individual logic gates? Does using simpler integrated logic like ALU, decoders or shift registers okay for your project? How about using PAL/GAL?

Anyway, the fact that you ask about "RAM" and "Harddrive" gives me impression that you're not exactly aware what you want to do and what it required to implement.

For reference, take a look at Gigatron or this one or this one or this one (DIY CPU from "standard" 74xx chips), or if you want more discrete Megaprocessor (transistor-level CPU project), and decide what you want.
 
Are you trying to create your own arduino?
if so im intrested
 
Do you want to build a CPU from scratch, implement a CPU on a programmable logic or just emulate a instruction set on a microcontroller? I guess making a "DIY SoC" is out of league for most people. There's low volume didactic fabs that might take experimental orders, but they usually not exactly available for general public. Do you mean "DIY SBC" instead, that's several order of magnitude more realistic to do.
It is what it is. Circuitboard with transistor based processing unit which will in it's first stage use pre-made instructions on ROM's, which controls a mechanical system... just can't decide quite which, but in a way it's not pure logic (or is...) but able to adapt on changes, e.g. environmental. I have some ideas on altering code of ROM once data leaves it etc...

If you're trying to create CPU from scratch, how discrete you want it to be? Individual transistors? Individual logic gates? Does using simpler integrated logic like ALU, decoders or shift registers okay for your project? How about using PAL/GAL?

PAL/GAL comes later. I need to get logics unit and voltages transferred first, with some transistors, and after I've been thinking 8-bit would be just too much. At least for start, considerably less, like 100 transistor system which would be doable with diode-resistor logic units, and would make everything so much simpler. And MOS transistors can be added later once get in the PAL/GAL leagues although it's a giant leap to just building platform for some 5 000- 8 000 transistor operation. So, get to know the system better and add new features as feel safe to do so. I understand it'll be complete overhaul of it, but sort of practice first what works with what and "go deeper" from there
Anyway, the fact that you ask about "RAM" and "Harddrive" gives me impression that you're not exactly aware what you want to do and what it required to implement.
Yeah I understand how it can look like it but they were genuine question I wondered at the time, although visualised the thing better now, like from usage of it to requirements....

Are you trying to create your own arduino?
if so im intrested
I guess kind of, just with less sophistication and less respects for anyones intellectual property

For reference, take a look at Gigatron or this one or this one or this one (DIY CPU from "standard" 74xx chips), or if you want more discrete Megaprocessor (transistor-level CPU project), and decide what you want.
The whole project began when came across this, which is also my first computer ever...

 
Are you willing to write your own operating system?

My guess is that anyone with the right expertise can pump out a bunch of components (at an exorbitant cost). The challenge is to get all those parts to work together. If you want a functional general purpose computer, it's time to revisit what an operating system is.

An operating system is a big complicated program that lets other big complicated programs co-exist peacefully on the same system. This isn't just a word processing program, video player, and a card game. This means things like an audio driver, video driver, network driver, and windowing system.

Even if you relied mostly on a pre-existing OS like Linux/FreeBSD/whatever, you'd still need to write custom code.

A.) Are you capable of this? B.) Do you believe that people who are capable of this would pose this question at TPU?
 
Are you willing to write your own operating system?

My guess is that anyone with the right expertise can pump out a bunch of components (at an exorbitant cost). The challenge is to get all those parts to work together. If you want a functional general purpose computer, it's time to revisit what an operating system is.

An operating system is a big complicated program that lets other big complicated programs co-exist peacefully on the same system. This isn't just a word processing program, video player, and a card game. This means things like an audio driver, video driver, network driver, and windowing system.

Even if you relied mostly on a pre-existing OS like Linux/FreeBSD/whatever, you'd still need to write custom code.

A.) Are you capable of this? B.) Do you believe that people who are capable of this would pose this question at TPU?
I'm not even at the stage of planning where I could see it on anykind of display, yet at least. I've only used C for coding some simple games with x86 but doubt it'll help at that. Although I can "stamp" binary code on crude ROM chips, something picked up decades ago when had to pull stuff from sleeve when things weren't that sophisticated as today and had to complete some conveyor belts etc...

Plan is to use set of those ROM's as ISA that create sort of assembly language, but I've not even planned assembler that could be interacted with more than set on certain modes changing logic instructions.

But time will tell, my own PC isn't currently even operational after I started to remove CPU cooling radiators from case to make room for... stuff... and use one big 400x400 radiator outside case for both GPU and CPU, instead of just 420x140 one for GPU, but... don't have parts and it's taking forever for couple tube connectors to arrive so I can't get on CAD to work on this thing...
 
I'm not even at the stage of planning where I could see it on anykind of display, yet at least. I've only used C for coding some simple games with x86 but doubt it'll help at that. Although I can "stamp" binary code on crude ROM chips, something picked up decades ago when had to pull stuff from sleeve when things weren't that sophisticated as today and had to complete some conveyor belts etc...

Plan is to use set of those ROM's as ISA that create sort of assembly language, but I've not even planned assembler that could be interacted with more than set on certain modes changing logic instructions.

But time will tell, my own PC isn't currently even operational after I started to remove CPU cooling radiators from case to make room for... stuff... and use one big 400x400 radiator outside case for both GPU and CPU, instead of just 420x140 one for GPU, but... don't have parts and it's taking forever for couple tube connectors to arrive so I can't get on CAD to work on this thing...
Honestly dude Im starting to agree with anyone else you seem to be way in over your head
Maybe start with a Arduino and go from there?
 
Honestly dude Im starting to agree with anyone else you seem to be way in over your head
Maybe start with a Arduino and go from there?
What's wrong with the plan so far? Try being constructive, I won't be able write everything in detail on this platform with language I really don't even have education on either, basically using metaphorical language on most parts...

Honestly dude Im starting to agree with anyone else you seem to be way in over your head
Maybe start with a Arduino and go from there?
Since you've left it there I take it as you were just trolling, or this is going over your head. Which is understandable since I maybe could be more specific, if I was asked specific questions.

Look, I don't know what age you guys are but when I was some preteen we didn't even have schools for these things, but if you took x86 as instruction set and not a CPU's somewhere between like Intel's 8080 and 286, I apologise for not being specific enough, also I remembered wrong C+ came later to my life, it was some BASIC with x86 CPU and C+ with 286 - 386.


Also not sure about this but, in case there's some misunderstanding, hex editors are usually needed for manipulation of binary code CPU is able to read which I can somehow manage, hex editors were common tool to manipulate e.g. games in times before Windows 3 existed. You'll need hex editor and "assembly code" that run the basics of the ISA and which needs to turn into something programs we can interact with on assembler by "custom code". So there's "some" fundamental to work on first.

Who's just going to have this all figured out from scrap metal to finished system?
Look into Atmel AVR microcontrollers, use its SPI bus to add an external DRAM memory chip and interface with an SD Card
I took a good look in to this and realised I'm basically building ancient I²C based system and also I either need to tone down transistor count by some 95% just from 8-bit computing, OR take notes from what you suggested. How about something like these with pmods:

Screenshot_20210905-005700_Samsung Notes.png
 
Since you've left it there I take it as you were just trolling, or this is going over your head. Which is understandable since I maybe could be more specific, if I was asked specific questions.
Im not trolling
it just seems that this is the wrong stating point
ima be honest i don't know the first thing about CPU building or even where to start
But my assumption is it takes a Very Specific set of skills
and not the kind of thing you can just learn off the internet
*My idea would be essentially make a 8088 clone kinda like amd did *
thats still quite a high bar though
 
But my assumption is it takes a Very Specific set of skills
and not the kind of thing you can just learn off the internet
I got really lucky with set of friends having interest on same subject. All with having access to different resources needed back then: with some having access to software, some hardware and some literature etc. Plus tech was pretty simple and stable... in sense it didn't change like today, I've pretty much dropped off the horse today.

Switching from life long Intel user to AMD last year and going to BIOS first time, I just threw my hands up and thought: F*** it. Last PC I ever get. And gave 3 cardboard boxes of mobos, GPU's, wires, coolers, RAM's, water cooling blocks, well everything between local PC store and Taiwan to a friends kid who was picking up the habit... although been slowly sinking back to the "bad habits" myself.

But at least not OC'ing anymore, zero DDR5 or other part anxieties, except need new GPU... and new m... no.

I get an iPad.
 
to AMD last year and going to BIOS first time, I just threw my hands up and thought: F*** it.
It's statements like this that make people feel that you are in over your head. If you get frustrated or can't figure out a commercial bios, how do you plan to code a low level language like assembly?
 
It's statements like this that make people feel that you are in over your head. If you get frustrated or can't figure out a commercial bios, how do you plan to code a low level language like assembly?
Everyone has to start somewhere. I think he's got an interesting and fun idea.
 
Everyone has to start somewhere. I think he's got an interesting and fun idea.
I used something like this, except older, back when I was still in school.

I agree with W1zz though. An Amtel/Microchip microcontroller is probably the best way to go.

Another good option for someone unfamiliar with the microcontroller space would be to get an Arduino. They're pretty cheap and easy to get started with. You can interface with a SRAM DIP or something if you want to really start experimenting.
 
Last edited:
It's statements like this that make people feel that you are in over your head. If you get frustrated or can't figure out a commercial bios, how do you plan to code a low level language like assembly?

Right... I get it...

I should be more specific since this is a subject with specific attributes and stop ramblings but, IT IS annoying to find out you need to relearn quite literally, every term in the BIOS of mobo made by same company and has even same functions and which neither AMD or Intel so aren't happy translate. Apparently so people won't wreck their equipment, which is odd as it's their personal property after they carry them (paid) out of store.

I'm probably not too far off course stating that proper glossaries would prevent damage and neither corporation aren't covering OC damage on their stuff anyway.... which... is... actually a great incentive not to tell in terms of profits...

But still, even with brand new & different tech (switching from i5-9600K to R9 5950X which I wasn't planning of getting but it kind of, came behind blind curve) & with new terminology, dancing the BIOS update rumba with the eras X570 which required a dance partner, some other AMD CPU with integrated graphics, I became much faster than I first imagined, a satisfied owner of stable & chill AMD CPU with all 16 cores behaving unlike I've ever before even dared to dream of. BIOS set with 8 cores on better half at 4,55GHz & 8 cores on lesser at 4,45GHz, setup I chose after got to know more about the CPU and how it operates, 32GB CL 15-15-15-28 3800MHz Neo's, which are now basic "D.O.C.P. 3600MHz 16-16-16-36" (instead of Intel's XMP...) as had to double RAM amount over, things... and finding myself resurrecting a habit I might have even gotten burnout before, aka overclocking and pressure of finding some edge vs others overclockers...

... and now the first short version has more substance...

I used something like this, except older, back when I was still in school.

I agree with W1zz though. An Amtel/Microchip microcontroller is probably the best way to go.

Another good option for someone unfamiliar with the microcontroller space would be to get an Arduino. They're pretty cheap and easy to get started with. You can interface with a SRAM DIP or something if you want to really start experimenting.
I still have my old simple, white breadboard, although been always calling those as "koekytkentälevy" before, and thanks for the link: always interested on these gadgets. Which also means I have this UM232H development tool that at quick glance seems to be based same system as that Dragon thing which I believe is pretty universal tool? So do I have any need for Arduino, I mean they have their advantages but... well, actually kind of want one now...

(felt to sleep writing this comment waking up in the next morning, so sorry for the delay...)
 
Last edited:
Back
Top