James Sharman
ALU (10: Control) - Making an 8 Bit pipelined CPU - Part 41
updated
0:00 Introduction
0:41 Build Explore and Check
2:48 Circuit EDA and Layout
7:26 Circuit Routing
16:15 Test PCB
17:14 Unboxing
18:37 Component Placing
19:51 Reflow
20:53 Hand Soldering
24:38 Install
27:17 Test
27:53 Demos
28:52 Outro
0:00 Introduction
1:19 Start with a potentiometer
2:37 555!
4:01 Principle test
5:05 the bit where I Turning my homebrew cpu into a basic clock circuit
6:33 First Test and troubleshoot
8:12 Creating a reading
9:34 Working Analogue Input
10:57 Connecting a Joystick
12:43 Reading both axis
15:45 Both axis working
17:02 Connecting the buttons
17:19 Fully working joystick!
17:54 Outro
EEVblog’s video on “How an Analog PC Joystick Works” youtu.be/hMBbnWjbUAU
Making the Joystick-Dupont adapter youtu.be/YcCYVFSQkg8
This circuit is extremely simple compared to some of the projects we’ve interfaced to the CPU but I want to interface a few components by what is colloquially called “bit banging” and to do that I need some general purpose I/O lines. This is really a reminder of how simple things can be but it also means I can move on and interface some circuits in future videos without the distraction of the cpu interface.
0:00 Introduction
0:32 Interfaces so far
2:51 Build
3:25 Build - Output
4:26 Build - Input
7:17 Stand alone test
9:33 Extra breakout
11:03 Integration
11:20 Adding software support
15:17 First testing
16:37 Test program
19:16 Outro
0:00 Introduction
0:48 Discussion
6:51 Build Explore and Check
12:01 Empty Breadboards
15:48 Wiring the ram chip
20:16 Tile Index Timing
21:55 Read address Inputs
26:20 Output Multiplexer
30:10 Write address Inputs
34:22 Stand Alone Testing
38:32 Integration
39:37 Adding an Output Latch
40:59 Turn it on!
45:35 Swap the Latches
46:05 Text Mode
49:18 Nibble Address Error
50:40 Demo: Fibonacci
51:27 Demo: Vga Terminal and Logo
52:25 Demo: Maze
53:48 Demo: Graphical Tile set
54:26 Demo: Monitor extensions for tiledata
55:15 Demo: Kodak Parrots
57:39 Extra Decoupling
58:32 Demo: Parallax Maze
59:42 Outro
Fixing the last Palette glitches - youtu.be/auarSG2MzdA
0:00 Introduction
0:31 Troubleshooting
4:19 My Most Expensive Mistake Yet!
5:35 Breadboard Patch
9:21 Bodge Assessment
10:15 Rom Patch
14:01 Design Fix
17:58 Adapter Board Design
19:35 Adapter Soldering
23:29 Adapter Test
25:08 Outro
25:45 Post Credits Testing
Sections of the console output in the early part of this video didn’t record, I did my best to reproduce them for continuity.
0:00 Introduction
0:25 Name Reveal
0:53 Discussion
2:23 Backplane Layout
3:35 Expansion Connector
7:02 Backplane Design
10:26 PCB Routing
11:27 Unboxing
12:48 SMD Soldering
15:31 Module Headers soldering
22:38 Connector’s and Power components Soldering
24:47 Basic Tests
27:28 Peripheral Move
29:07 Module Transfer
32:55 Broken Pin fix
35:27 First Power On
37:20 Investigation
41:10 Outro
0:00 Introduction
0:38 Discussion
2:15 PCB Design
7:53 Unbox and solder
10:08 Testing
16:16 Troubleshooting
17:30 Success!
19:03 Future Plans
21:09 Outro
22:00 Post credits scene
0:00 Introduction
0:36 Discussion
2:16 Get the scope out!
3:39 ALU Inputs
9:03 ALU Output
11:42 Flags
14:28 Pipeline
17:28 Fetch
23:03 Conclusions
24:58 The Critical Path
27:18 Outro
There was lots of discussion in the comments and on discord about what use we could make of the unused sections of the ram chips. In this video I explore a very simple circuit extension for doing that.
There is a brief bit of coding during the troubleshooting where I forgot to adjust the font size, apologies to anyone on a small screen.
0:00 Introduction
0:39 Vortex Demo Explanation
4:31 Plasma Palette cycle
5:41 Extending the Palette Hardware
10:16 Test
11:20 Image Fade Demo
12:26 Line Fade Demo
13:14 Shaded Cylinder Fail
14:14 Troubleshooting
17:19 Fixed!
17:51 Outro
This video ended up being much longer than I like main channel videos to be. I can’t really cut a video a video like this down the middle as I like to bring chunk of work to a conclusion. I will try to break work chunks down a bit more in future to avoid big ones like this. It was several videos worth of work at all stages.
There is no Schematic inset for this video, I did record it but I couldn’t get it to fit onto the screen without obscuring important work or scaling it to the point of uselessness. I may release a rough cut on the extras channel or add it to the pcb design when I get to it.
0:00 Introduction
0:35 Demo of Current DAC’s
1:39 Design discussion
6:25 Exploring current setup
8:42 Build – Layout and Initial wiring
13:52 Build – Data Lines
18:04 Build – Address Lines
24:48 Build – Control Logic
33:35 Integrate
35:56 Test & Troubleshooting
40:42 Palette Parrot Demo
42:15 Palette cycle Mandlebrot Demo
43:15 Beam raced Palette change Demo
44:35 Normal Map Demo
46:31 Vortex Demo
47:15 Outro
The normal map demonstraited in this video is derived from Julian Herzog’s example on wikimedia commons.wikimedia.org/wiki/File:Normal_map_example_-_Map.png
0:00 Introduction
0:54 Doom?
1:17 Discussion
2:48 Doomed
3:34 Outro
Join us on Discord: discord.gg/jmf6M3z7XS
Support the channel on Patreon: patreon.com/JamesSharman
Watch the companion video “Programming Doomed” on my Extras channel: youtu.be/sC3Issh5cPQ
Get monthly updates from a variety of makers by signing up for the new MakerNews letter: makernews.substack.com
0:00 Introduction
1:04 Discussion
8:58 PCB Design
15:42 Unbox and Solder
19:37 Stand alone Test
26:54 Test Integration
29:41 Outro
I recently bought a soldering hot plate, this is the first full PCB using it.
Tilemap PCB - youtu.be/TpolGhGUe9Y
Hot Plate - youtu.be/nYzFj7fpsPI
0:00 Introduction
1:04 A Look at the problem
1:57 Fixing the design
6:16 Unboxing
7:22 Component Place
10:51 Epic new soldering plate!
11:55 Through hole soldering
13:05 Install and Test
14:14 troubleshoot and fix
17:03 Success!
18:05 Outro
18:49 The Frame of Shame!
0:00 Introduction
0:41 Circuit Recap
1:25 Discussion
4:19 Build
12:37 Integrate into CPU Build
13:26 Add Support
17:41 Testing
19:11 Snek!
21:28 Outro
Join the channels Discord: discord.gg/jmf6M3z7XS
You can support the channel on Patreon: patreon.com/JamesSharman
This is converting the circuit built in the following videos
Framebuffer - youtu.be/_w5bc9CLDrk
Scrolling - youtu.be/oMGtJN1Pkis
Beam Racing - youtu.be/9crrf0WoAvU (A tweak to the scrolling)
0:00 Introduction
1:46 Extraction
2:56 Schematic design
17:52 PCB routing
34:14 Unboxing
35:07 Pick and Place
38:40 Soldering
40:44 Install & Test
41:38 Troubleshooting
43:25 Software Workaround?
46:20 Outro
0:00 Introduction
0:31 Unboxing
3:53 Resoldering Power connector
5:55 Composite Mod
9:39 It’s alive
12:30 Testing the Keyboard
17:37 Outro
0:00 Introduction
0:48 Starting the circuit
4:25 Get the scope out!
10:07 It’s Alive!
11:01 Outro
Links:
Snes Controller to Dupont Adapter youtu.be/ag582oYVmR4
DIY NES Controller - Full Build youtu.be/d_ztfv2ZM6k
Interfacing With a NES Gamepad youtu.be/bSWNnPtwb_g
0:00 Introduction
1:47 Schematic design
4:04 Memory Map
11:32 PCB Layout
12:14 PCB routing
17:17 Unboxing
18:17 Pick and Place
19:17 Soldering
21:38 Install & Test
28:54 Fix
29:48 Re-test
32:41 Outro
Notes:
You don’t think about how long the coffee machine takes until you are editing it in a video!
Upward facing camera to a face illuminated from beneath with led’s is REALLY unflattering!
0:00 Introduction
0:33 Build Tour
1:12 Benchmark discussion
3:08 It’s a Race!
4:43 Results Discussion
8:12 Capturing instructions per clock rate
14:31 Outro, is it the fastest?
Matt’s Channel: youtube.com/channel/UCWihlGXWuyJbjP5vjzD03Rw
8-Bit Battle Royale: youtube.com/playlist?list=PLPSrOWYluVLIwjHSJKuO8UU8BTT3uceqU
Porting Video on my Extras Channel: youtu.be/eBbtlLnYZ1A
chat about this and related projects on the discord: discord.gg/jmf6M3z7XS
Backplane solder on 2nd channel: youtu.be/wfvLBACrB1E
0:00 Introduction
1:00 Clock PCB v1.1
1:56 Clock test
4:26 Testing the conditionals
9:16 Fixing the conditionals
13:20 ALU Result PCB v1.1
14:47 ALU test
16:42 Outro
Clock PCB v1.1 youtu.be/Odl_o9POwL8
ALU Result PCB v1.1 youtu.be/ZqbilYwKAQo
There is probably just a final PCB build video left in this sub series, and maybe some software work seeing what we can do with it.
0:00 Introduction
1:03 Discussion
2:15 Build
3:44 3 States
8:10 Latches
11:10 Register Select
14:25 Predictable initialisation
17:50 Connecting to Channels
21:00 New output circuit
24:25 Connecting to the CPU!
26:01 Initialisation Code
27:38 Fail!
28:48 More testing
29:48 Code tour
30:30 4 Channel Demo!
31:37 Outro
0:00 Introduction
1:08 EasyEda design
14:03 PCB routing
19:39 Unboxing
21:05 Human pick and place
23:43 Hot Air reflow
28:27 Testing
29:16 Troubleshooting
32:04 Success!
Confession: The oscilloscope capture in the testing section is a “re-enactment” the original footage didn’t record.
Technically this isn’t a Geiger counter, it’s just the tube with the driver circuit but I have plans to turn it into a real counter so this will turn into part 1 if I actually get that far before being distracted.
0:00 Introduction
0:31 Unboxing the kit
2:28 Soldering
12:18 Testing
15:27 Outro and Plans
0:00 Introduction
3:30 Guessing Size
8:09 Working out connectors
16:52 Temporary Backplane
18:43 Outro
This video covers the Sieve, the Segmented Sieve and the Incremental Sieve.
The painting of Eratosthenes I’ve used is “Eratosthenes teaching in Alexandria by Bernardo Strozzi (1635)”
Still, I wanted to make some solid progress so I designed those changes directly into the channel(s) pcb. I had originally hoped for four single channel pcb’s but it was easier to make a pair of pcb’s with two on each.
No music this time as we need to make some changes to the circuit driving it, but the next audio video should give us the first playback with all 4 channels.
0:00 Introduction
2:16 Eda circuit update
5:32 Layout attempt 1
7:21 Switch to 2 channel board
8:56 Layout double board
11:11 Routing
20:34 Backplane
20:54 Unboxing
21:30 Soldering
26:11 Backplane soldering
27:23 Testing
32:27 And Again!
Join me on the new channel discord server: discord.gg/jmf6M3z7XS
I wonder if watching this video will realign some peoples expectations for what a basic display circuit is capable of. I’ll revisit some these techniques and demos as we add new hardware to see how far we can take them.
0:00 Introduction
1:22 Demo: WibbleX
2:22 Demo: Pseudo Parallax
5:17 Tweaking the Circuit
7:58 Demo: WibbleY
9:05 Demo: Cylinder
10:35 Demo: Candle Flame
12:26 Demo: Race Track
13:58 Outro
In the first three vga videos we built up the most basic stand alone video subsystem. At the end of the last video the freed up cpu time was put to use with our first animating graphics. Animation is where things start to get interesting and one of the most useful 8-bit era building blocks to that end is hardware scrolling. In this video we explore how to add this to the vga circuit.
0:00 Introduction
1:00 Counter initialization
2:38 More Breadboards
5:45 New Registers
10:20 Memory Mapped IO Discussion
15:54 IO Implementation
19:42 Initial Test Code
22:18 Smooth Scrolling!
24:18 Super wide scrolling! (Incremental update)
26:26 Vertical Scrolling
28:46 Main Demo
29:42 Boring James talking outro bit
In this video I add a framebuffer to the developing vga circuit. In many ways this makes the circuit a complete (if simple and low specification) vga adapter that we'll go on to add functionality too in future videos. Adding the framebuffer only increases the visual quality a little bit (The horizontal resolution is no longer limited by cpu clock rate) but it does free up the cpu.
To demonstrate this I write some decompressor code that could be called basic looped video or gif type animation playback and use it to play some recognisable animations on the cpu/vga combination.
0:00 Introduction
0:29 Re-cap
4:40 Adding X/Y Counters
10:45 Memory Interface discussion
11:34 (1) Duel Port Ram
13:31 (2) Time-Division Multiplexing
15:30 (3) Bus Request
18:20 (4) Hybrid
21:00 (4.1) Hybrid+
21:56 Adding the Ram
28:55 Interfacing
34:19 Back to the cpu
38:40 Pattern Test
40:57 Image test
42:38 Corruption!
43:50 Animation Test
45:30 Post credits scene
Now the UART is a reliable PCB it's worth the effort to develop a monitor/bootloader in order to streamline future development. I had been back and forth on exactly what I would develop, but I always wanted to introduce something to speed the process of getting code to the build. I start by showing a true accounting of the iteration time to get code to the build with the eeprom programmer, and then finish with some rapid testing using the new system.
0:00 Introduction
0:47 Tedious and boring, demonstrating the problem
3:00 Some soldering, speeding up the copy.
4:21 Testing improved copy speed
5:33 Starting a monitor, Text entry
7:19 Command parsing
8:23 Interpreting numbers
10:05 Command Processing
10:55 Basic monitor demonstration
12:37 Proof of concept code loading
14:19 Disassembler
16:09 Testing the disassembler
17:55 Better code loading
19:34 Stub loader, Moving the Monitor
24:16 Testing the Bootloader!
25:50 Outro
0:00 Introduction
0:54 Base Test
4:20 Discussion
8:51 Counters
10:52 Adding the ROM
13:45 Rom Data
16:10 Sync Test
18:34 New DAC's
22:16 Quick Hack Image
25:35 CPU Integration
27:47 Best Parrot Yet!
29:42 Animation!
The achievement is marred a little by an error on the silk screen. I'll decide if I'll do a new board revision or just print out a label to stick over it at a later point.
0:00 Introduction
1:14 Schematic
12:42 Layout
15:12 Routing
18:32 Unbox
21:55 Hot-Air
25:57 Test
0:00 Introduction
1:58 Project Goals
6:16 VGA signal
8:37 Build Process
10:47 Circuit build
14:36 Initial Programming (H-Sync)
17:39 H-sync Test
18:53 Video Code tour
20:54 Test
Pin headers - amzn.to/3hMfwyW
DB15 breakout - ebay.co.uk/itm/393273511221
LCD - ebay.co.uk/itm/313183790652
Core Memory - etsy.com/uk/listing/925863268
0:00 Introduction
0:06 Pin headers
0:51 VGA breakout
2:03 SPI Display
3:14 Oscilloscope Probes
4:48 MCP23017
5:20 Core Memory
8:11 Fin
0:00 Introduction
1:29 Finishing the Schematic
7:44 Layout
11:09 Routing
13:49 PCB Unbox
14:15 Stencil and Paste
15:40 Component Placement
19:48 Hot Air
22:48 Install and Test
Backing music for the time-lapse is "Active Form" by "Chasms" that they kindly provided to the youtube free music library.
I've added a new microphone stand and this is the first time I used it for recording a video. The Quality is much improved (better signal to noise) but it is much more sensitive to me moving my head while wiring. I'll be more careful in future.
0:00 Introduction
1:37 Rewire
4:47 Build Transmit
17:06 Design Flaw?
19:35 Interface to CPU
20:39 Code
23:32 Test & Troubleshooting
25:36 Working
0:00 Introduction
1:03 CPU Overview
11:57 What is the power consumption?
13:58 Pipeline - Basics
18:25 Pipeline - 4th Stage?
20:28 Pipeline - Performance
23:13 Why no Interrupts?
32:00 External Storage
33:38 Tool chain
35:13 What would I do differently?
46:12 What about floating point?
47:37 Is it a distraction?
48:41 Flag preservation
51:45 Will I add an RTC?
52:28 How much did it cost?
54:46 Additional Core?
56:03 All Teh features?
57:13 Stack Register?
59:33 More Peripherals?
59:52 Selling Boards?
1:00:59 What Clock Speed can it Run at?
1:03:59 Multibyte instructions?
1:06:12 Caching?
1:07:59 Has my soldering Improved?
1:09:00 Video Card?
1:10:16 Documentation about the build?
1:11:25 Detailed ISA?
1:12:25 Architecture Specification?
1:14:01 Fin.
Easyeda Profile: easyeda.com/weirdboyjim
0:00 Introduction
1:35 PCB Unbox
2:56 Soldering Race
4:41 Test
7:28 Receive FIFO
13:24 Finish up
In the unboxing I found a random puzzle which I completed in a side box next to the soldering. I speed this up roughly 2x relative to the soldering to fit the gap, I don't want anyone to think I'm misrepresenting my puzzle solving.
Backing music for the soldering is "Active Form" by "Chasms" that they kindly provided to the youtube free music library.
0:00 Introduction
1:22 Schematic EDA
3:21 Unbox
4:45 Soldering
6:00 Test Code
9:14 Basic Counter
16:06 Memory Interfacing
25:09 Outro
0:00 Introduction
2:29 Schematic
11:12 PCB Layout
20:51 PCB Unbox
21:11 Soldering
26:55 Test and Bughunt
33:10 Bodge Fix
41:17 Final Test
0:00 Introduction
0:17 R2R Ladder
5:46 Ground level
7:14 Op-Amp
9:15 -5v
13:54 Finish
Bitluni did a good video explaining R2R resister ladders - youtube.com/watch?v=_tABS7AX8D8
0:00 Introduction
0:48 PCB Design
4:15 Soldering
9:22 Cad
13:22 Assemble
14:08 Finish and Test
I'm waiting on a delivery before I can complete the final module in the ALU but I wanted to do this anyway so we'll have a moment when the CPU is entirely PCB.
I have experienced some glitches on the enable line which I cleaned up with a low value (1nf) cap, I'll investigate this a bit more when I get some time and maybe report back.
0:00 Introduction
1:45 PCB Design
11:18 unbox and solder
17:10 Test
22:27 Schematic fix
23:29 Outro
0:00 Introduction
2:01 Design Discussion
5:57 Build
13:33 Coding
16:24 Test & Troubleshooting
18:04 Circuit Fix
20:46 Coding
22:28 Finish and Test
In the second coding section I made a small mistake, I've edited out the short test run where I discovered that as it just didn't flow well in the edited video but if you watch very closely you can see the mistake and then the fix tagged on the end.
If you want to understand the workings of this circuit, you should watch:
youtube.com/watch?v=LkM9tBCAros (Alu control)
youtube.com/watch?v=Slm3yZyVidc (Diode Matrix 1/2)
youtube.com/watch?v=UXz_rTgeAEc (Diode Matrix 2/2)
0:00 Introduction
1:14 EDA Design
18:33 Soldering
25:24 Install and Test
Notes: Since editing I've used the circuit a lot and not seen a repeat of the bad connection. I did however discover that resistor associated with the ADD led wasn't connected properly, I had to resolder that for the LED to work.
This video is really the first in a sub series to upgrade the memory module to using shadow ram but I didn't want a big wait and then a massive video.
0:00 Introduction
0:54 Discussion
5:16 EDA
7:04 Bodge Soldering
14:31 Code
17:55 Install and Test
This is ALU pcb conversion 2/4, the bitwise logic unit. Very pleased with this PCB, for some reason it one was extra satisfying. The circuit I'm converting here was designed in part 34. youtu.be/pMV_0qT0uY0
0:00 Introduction
0:33 EDA
13:25 Solder
17:48 Install and Test


