Would the routing be more straight forward if you stacked the backplanes?
@BubblesKmac12 годин тому
Hi, can I please get the 3d print files for this and the build material list. This is perfect for what I need to build! Thank you!
@weirdboyjim9 годин тому
Oh, that's a while back. I have a couple of ideas on how to improve this now but I'll see if I can dig this stuff out.
@BubblesKmacГодину тому
@@weirdboyjim no stress, if you are not able to find it, no problem!
@ecosta3 дні тому
Just a random thought, but your assembler might need some form of macros if you keep unrolling loops etc.
@weirdboyjim9 годин тому
Indeed, macros have been on the "todo list" for a while, but as I'm sure you can imagine my backlog of things that would be handy is pretty large. It's difficult to prioritize sometimes.
@johanfr4 дні тому
Thanks for great videos, so inspiring! I am thinking about getting a scope and have been looking at this model and its four-channel cousin. Apart from SBC design I want to be able to use it for VGA signal debugging when I create my own VGA circuit. Do you feel that the specs of your scope in terms of sample rate and clock frequency are enough to monitor such high speeds (25 MHz) or would you in hindsight have gotten a faster one?
@johanfr3 дні тому
I ordered a SDS1202X-E today. It will be infinitely better than not having one at all I think.
@weirdboyjim9 годин тому
From my experience I've need hit anything where the speed as been a concern. I have hit a couple of places where extra channels would have been handy, working out how to use the external trigger alleviates that a bit.
@partides9 днів тому
Hi. What camera are u using for soldering?
@weirdboyjim9 днів тому
You mean the microscope? ukposts.info/have/v-deo/bn5zhXmnen6lrIU.htmlsi=4cjRrJ1_Mk0ca4qW
@scome9810 днів тому
Mesmerizing and inspirational. Love this series.
@weirdboyjim9 днів тому
Glad you are enjoying it!
@captainboing11 днів тому
hmmm... I am betting on a Little flash storage chip - Winbond beastie or maybe an LCD panel with touch... Excellent vid btw, I love the way we get the "brain ticking" and the typing, not edited out like others do. It still blows my gourd that this is a complete CPU (and now computer system) of your own design - it must be great to know everything on such an intimate scale - Grab yourself an ice cream.
@weirdboyjim10 днів тому
Very generous! I’m in Rome for a few days so it may have to be Gelato! The spi is definitely moving towards storage, I occasionally just let it run slowly to watch the led’s!
@johnjohnson540112 днів тому
Hi James! Did you consider making all the IO hardware memory-mapped? In this case the CPU would not depend on peripherals and would be a general-purpose CPU with simpler general-purpose ISA instructions. Why did you decide to make IO a part of the CPU and ISA? Is it for better performance? Thanks for the videos!
@weirdboyjim9 годин тому
This is a discussion that almost needs a video on it's own. Memory Mapped IO (I do a little of this in the vga circuit) is really just IO implemented as memory operations without additional support from the cpu. Processors like the z80 have dedicated IO circuitry which still works very much like memory but separates the address space out. But those two are not the only way to do it, the "IO Ports" on my build work more like some microcomputers. The bus is the internal main bus and those "port's" are just otherwise unused addresses for main bus devices, reading or writing to a port is exactly the same as asserting or loading one of the 8-bit registers. There is no hardware at all to support the IO in the core cpu, the only things it costs me is the instruction space. In this particular architecture the IO is indeed faster since it never touches the memory system so it doesn't cause a fetch stall.
@connorwood9512 днів тому
At this point I'd be looking at buffering SPI output, so multiple bytes can be read without the CPU needing to consume them on exact clock boundaries, and a WAIT input on the CPU so the SPI subsystem can block execution until data is ready without needing lots of explicit NOPs with super precise timing. This build truly never ceases to amaze me. Really need to have a go at doing stuff like this myself someday 🙂
@weirdboyjim9 годин тому
It's always a balance on circuit verses code complexity. My tightest loop here is 3 cycles of action verses 5 cycles of delay, so I would only gain 5 cycles of parallelism for each byte of fifo (minus any management code). My sense is that I'm probably at the sweet spot for this build, but it's easy to see how that balance can shift rapidly.
@kirknelson15612 днів тому
a lot of what you do is well above my head but still very interesting 🙂
@weirdboyjim9 годин тому
Good to hear you are enjoying it!
@mike44njdevils112 днів тому
I know this is an older video, but I'm damn proud of myself for catching the lack of a main bus connection 😂
@weirdboyjim9 годин тому
Someones paying attention! 😉
@skilz809812 днів тому
I can see you are still working on and expanding the architecture and continuing to improve its ISA. When you finally complete this stage of the project where you feel it's completed, do you have any plans on taking it to the next step or level of abstraction? In other words do you have any intentions on implementing your own compiler - higher level language and do you intend to build your own operating system on top of it?
@weirdboyjim9 годин тому
A compiler would be an interesting thing to have, but code generation for 8-bit architectures tends to be pretty inefficient. I'm expecting future builds to achieve more in this regard.
@TheChrisSimpson12 днів тому
SPI display?? :D
@weirdboyjim9 годин тому
Nice idea, but that would overlap with the vga project.
@sparkybrit12 днів тому
What’s your “bus tester”?
@weirdboyjim9 годин тому
It started out as a few bits of common circuit I used on a breadboard. It has a d-type latch, a couple of line drivers and some debounced buttons. I was using that a lot of test bits of the circuit. I converted it to pcb for reliability. ukposts.info/have/v-deo/maKmaG5pfZyJzZ8.html
@TheEmbeddedHobbyist13 днів тому
I was going to comment on you changing some defines to a 0, which removes the readability of the code by adding magic numbers. And then just as i was going to type this comment you went back and replaced the zero's with some defined constants. well done. 🙂
@weirdboyjim9 годин тому
Glad I didn't disappoint (this time).
@TheEmbeddedHobbyist5 годин тому
@@weirdboyjim Never known you disappoint, provide talking points yes but disappoint no. 🙂
@twobob13 днів тому
The best
@weirdboyjim9 годин тому
Thanks TwoBob!
@TheAzuratis13 днів тому
I think now would be a good time to add a DMA Engine so that SPI and UART can do bulk data Trasfere.
@weirdboyjim13 днів тому
Dma would require support on the cpu side that I don’t have, you may need to wait for the next cpu build for that.
@TheAzuratis13 днів тому
@@weirdboyjim something simmilar would still be posible, as it's own devices with it's own memory. Essentially an autonomous buffer which could opperate at different speeds from the cpu and would remove the nops with a flag check. But this only makes sense when you plan on adding multi-theading.
@davepost767513 днів тому
It's always nice to see one of your videos pop up on UKposts.
@weirdboyjim13 днів тому
Good to hear you are enjoying!
@theboot10013 днів тому
Great video again James! Cant wait to see what the device is.
@weirdboyjim13 днів тому
Thanks!
@djsmeguk13 днів тому
Are you going to look at an interrupt driven handler, instead of all those nop?
@weirdboyjim13 днів тому
Interrupts rarely work with low enough latency, you would want some buffering as well.
@MuhamedUsman13 днів тому
you are the most consistent engineer i have ever seen
@weirdboyjim13 днів тому
Very kind of you to say that!
@RealEngineer13 днів тому
Man I wish I had your asm skills. Great video as always 🎉
@weirdboyjim13 днів тому
😊 thank you
@Minikahn113 днів тому
Can't wait to see the next step!
@weirdboyjim13 днів тому
Hope it doesn’t disappoint!
@SirDrinksAlot6913 днів тому
SPI storage incoming.
@weirdboyjim13 днів тому
Lots of interesting things once I have storage!
@erniecamhan13 днів тому
Love watching what you do...but haven't a clue what you did 😊
@weirdboyjim13 днів тому
Thanks Lol, Glad you are enjoying anyway.
@andrewwatts199713 днів тому
Congrats! A great milestone ;)
@weirdboyjim13 днів тому
Thank you very much!
@pipsqueak200913 днів тому
Fascinating progress . Thanks for sharing
@weirdboyjim13 днів тому
Thanks for watching!
@mike44njdevils113 днів тому
What I find intriguing about watching this series: Even though I have very little coding experience, I'm having almost no issues following James' coding. Well done!
@weirdboyjim13 днів тому
That is good to hear! In many regards assembly language is really easy to follow once you have a rough idea of what the instructions do (and good naming helps with that!).
@OscarSommerbo13 днів тому
Oh, I think I know what is coming...
@weirdboyjim13 днів тому
Ha! I expect you probably do. What you don't know is the first big demo that's going to use it! 😉
@OscarSommerbo13 днів тому
@@weirdboyjim Well, removing bit banging serial did evoke some memories. And I know one thing that use spi almost exclusively. Ohhh, demos are always fun, all parts of them. 😉
@mikehibbett330114 днів тому
Great progress!
@weirdboyjim14 днів тому
Thanks! Glad you liked it!
@wChris_14 днів тому
Are you going to interface with an SD-Card? because this is the only thing i can imagine that is not only useful, but can also saturate the Interface.
@weirdboyjim14 днів тому
The ability of SD cards to talk SPI is indeed an interesting possibility...
@robiniddon758213 днів тому
Remember the first few iterations of the MIPS architecture had a branch delay slot that was invariably filled with a NOP by the compiler, let alone the programmer 😂 What you have will no doubt work for you, but possibly it's worth an auto clock counter so that you can trigger it and it just pumps the 8 bits. Could be triggered by the control line that currently controls the mux. Then you can overlap writing the Rx data to ram while the next byte is being clocked in, without having to be 100% cycle count accurate in the 'filler' code. Only worth it if the equivalent of *pointer++ = register takes more than 5 cycles or is nondeterministic.
@jensschroder821414 днів тому
When the programmer inserts NOP code to move forward.
@weirdboyjim14 днів тому
Far more common at the low level than many people realize!
@johncochran849714 днів тому
Why are you using 2 shift registers? If memory serves, the SPI protocol sends bits in both directions at the same time. So you only need 1 shift register along with the capability to read and write the contents of the shift register in parallel. Algorithm is: 1. Store value to transmit in shift register. 2. Toggle clock 8 times while shifting register. This both output's 1 bit at a time from the shift register /and/ shifts in 1 bit of data from the client device into the same shift register. 3. Read value in shift register to get data from client. Effectively, you have a 16 bit circular shift register with 8 bits on your side and 8 bits on the client side. After clocking 8 times, the values in each register are exchanged with each other.
@weirdboyjim14 днів тому
You can indeed do it with just one shift register, but you need one of the more complex parts that can handle parallel read and write. The circuit logic is not any simpler and I felt it was easier to explain the separate functionality by handling shift in/out separately.
@cj09beira14 днів тому
@@weirdboyjim 🤔so that's why 299 wasn't used
@teknifix14 днів тому
SD card? It's what I would like to add to my SBC so I don't have to load everything over a serial connection. Considering the demos you've created so far you may want to add bankable RAM, so the SD card would allow for a lot more assets in future demos.
@weirdboyjim14 днів тому
SD Card, I couldn't possible comment 😅. I'm not 100% sure about bankable ram, while it would be nice to have more memory none of my plans really need it. I'd rather save a larger memory pool for a future architecture that's designed to be able to make use of it.
@KeesJanLogemann17 днів тому
Just curious: Why didn't you choose for 8-bit synchronous Up/Down counter like 74ALS869? Cost? That's 2 chips instead of 4!
@weirdboyjim17 днів тому
A couple of reasons, but my reasons are not necessarily great. My preference was to use commonly available parts that are also available in a wide variety of logic types. 869 seems to be a less common Part that only comes in a limited range of families. In terms of your own circuit design there is definitely scope to use them though.
@digitalarchaeologist510219 днів тому
Maybe the PCB isn't going to be published, so might just be a moot point but perhaps through hole caps may have been easier for the average joe bloggs.
@weirdboyjim14 днів тому
Yeah, I wasn't expecting anyone to try and do this, so I'm mostly just doing whatever is easiest for me at the time.
@digitalarchaeologist510213 днів тому
@@weirdboyjim Which does makes sense tbh. I know it's much easier to be an armchair critic than a content creator so thank you for what you do!
@mike44njdevils119 днів тому
I've been following this project on and off for about 2 years now. I know you wanted to be able to showcase every circuit you place on PCB. However, you seem to be limiting yourself to 2D thinking. Couldn't you put the Sprite hardware on risers ABOVE some part of the entire VGA circuit?
@weirdboyjim14 днів тому
I think it's all going to fit ok, working inside the constraints is an extra bit of challenge I like having. If I was really tight I could always stick a few passives on the back but I'd rather not do that. I appreciate my self imposed design constraints are not for everyone. The nearest I came to risers was for the Audio circuit, I thought I could stack channels above one another if I needed to without loosing much.
@pooyadarmani780320 днів тому
تو وصل بکن نیستی
@weirdboyjim20 днів тому
Sorry, I only speak English. I tried google translate but it didn't seem right.
@pooyadarmani780320 днів тому
خراب کردی بابا داغون شد
@ecosta20 днів тому
I love to see the troubleshooting process. Too bad it is much easier to troubleshoot when you are back-seating... I spotted the vga connector bridge issue when you solder the board, but my I'm sure I would never see it if it was me doing the soldering... 😄
@weirdboyjim14 днів тому
I really kicked myself over that one. I am debating how I show the mistakes in videos, perhaps I should highlight them explicitly when I make them?
@ecosta12 днів тому
@@weirdboyjim I like the chillaxing pace without breaks and blips. You are explaining your mistakes quite well without relying on highlights. And I find more amusing to spot those from my backseat when I do it without help... 😄
@davidrosset445721 день тому
Kind of irrelevant question but how did you glue the Papers marked PIPE 1A to the ROM’s? There are those printers that come with glue yes? Can I print them different sizes with glue too?
@weirdboyjim21 день тому
Those are printed with a "Dynamo Letratag", really useful little thing. I label lots of my storage boxes, chips etc.. with it.
@davidrosset445719 днів тому
@@weirdboyjim Nice, I ended up just using sticky paper and my regular printer, I figure it works fine too. Less spending! I like when I figure out cheaper solutions like this.