Skip to content

Conversation

@beforeyouknowit
Copy link

Hi @dbalsom - I saw your VCF West video on Youtube, and thought I might help tidy and improve your PCB layouts a bit. 😀

Here's the gist of the pull request:

  • I've switched from a 2-layer to 4-layer PCB, and simplified and tidied internal traces a lot.
  • I've consolidated the 3.3VP supply onto a 1mm-wide "loop" trace on the back of the board.
  • I've tried to keep as many of the digital and signal lines on the inner two layers, sandwiched between the GND layers of the outer copper layers.
  • I've resized most (if not all) of the component labels from 1.0 to 0.8mm, and done my best to tidy and align the labels.
  • I've tidied and aligned most of the patterned components, such as the status indicator LED row.

I'm not sure if you've considered adding a 3.3V LDO to your designs, but it might he helpful to have a 3.3VD supply that's dedicated to the main 3.3VD "loop" now. I'd be happy to add this to a minor revision.

If you like my work, I'm happy to keep 'chipping away' at the other PCB designs in the repo!

@dbalsom
Copy link
Owner

dbalsom commented Oct 14, 2025

Hi, thanks for offering to clean up my designs. I am no EE :D

I was hoping to keep the board 2 layer due to the extra cost of 4-layer boards, but if it's a much cleaner design and will help with the clock signal to have it 4-layer, I suppose that's worth doing.

Also it is crucially important that the board remain purple ;)

Some things I had fixed since V4 that I hadn't pushed up yet:

  • We need pull-up resistors on SCL and SDA. As is the little i2c eeprom won't work!
  • Need weak pull-up resistors on ~BUSY and ~ERROR pins for when no FPU is connected.

Speaking of the FPU, would you mind taking a look over the 387 board? That was my first 4-layer board and I'm sure I did some dumb stuff.

@beforeyouknowit
Copy link
Author

No worries, happy to help! 😄

In my experience, there's no extra costs to go from a 2-layer to 4-layer board, (at least not with JLCPCB, which is my usual choice of fabrication house.)

Somehow, despite double-checking the board setup in KiCAD, it keeps rendering it as black instead of purple, even though the config files still say purple! Not sure if that's a known bug on their end... (Obviously the colour choice for fabrication is up to you! 😜)

I've added some 3.3 K Ohm resistors for the I2C SDA and SCL pull-ups, and the ~{BUSY} and ~{ERROR} lines to the schematic and PCB layout.

Here's a quick preview (screenshot) of the updated internals:
image

I haven't added a 3.3V LDO to this just yet; I'm curious to see what the actual power consumption of the 386EX is on your existing development board, or whatever it's stated maximum consumption is from the datasheet. Do you have a rough idea of the 3.3V power budget for it?

I've added another commit with these minor touch-ups.

I'd be happy to dive into the 387 board soon!

@dbalsom
Copy link
Owner

dbalsom commented Oct 14, 2025

No worries, happy to help! 😄

In my experience, there's no extra costs to go from a 2-layer to 4-layer board, (at least not with JLCPCB, which is my usual choice of fabrication house.)

That's odd, it's more work for them. It's about twice as expensive on OSH Park and PCBWay, but I've never used JLCPCB.

I've added some 3.3 K Ohm resistors for the I2C SDA and SCL pull-ups, and the ~{BUSY} and ~{ERROR} lines to the schematic and PCB layout.

Sorry I'm not seeing the pullup resistors on SDA and SCL in the upper-left. Also it looks like you put the pullup on LOCK not BUSY.

Also another thing I failed to mention - ideally the eeprom gets powered off 3.3v from the Arduino rather than the external power connector. The eventual idea of the eeprom was to identify the type of shield you have connected so you don't have to recompile and reupload any code when you switch shields. So the Arduino should always be able to read it and the external power connector may not always be plugged in (it's a binning issue, but I do have one 386EX that runs fine without any Vcc)

The external power can be either 3.3V or 5V. When you add a 387 you'll need the 5V. That has some considerations I'm sure.

I haven't added a 3.3V LDO to this just yet; I'm curious to see what the actual power consumption of the 386EX is on your existing development board, or whatever it's stated maximum consumption is from the datasheet. Do you have a rough idea of the 3.3V power budget for it?

I have two boards running right now with external 5V power, my power supply says I'm pulling 0.02W/0.005A so they really don't pull much power at all at these low clock rates.

@dbalsom
Copy link
Owner

dbalsom commented Oct 14, 2025

as for the PCB color, it probably got changed when you went to 4 layers.

image

it's just this color here for the mask in stackup.

@beforeyouknowit
Copy link
Author

beforeyouknowit commented Oct 14, 2025

That's odd, it's more work for them. It's about twice as expensive on OSH Park and PCBWay, but I've never used JLCPCB.

It seems like JLCPCB's entire fab line is setup for 4 layer as the default on "value" boards. Scotty from Strange Parts did a good tour on their factory a while ago: https://www.youtube.com/watch?v=xvByereqOVQ

Sorry I'm not seeing the pullup resistors on SDA and SCL in the upper-left. Also it looks like you put the pullup on LOCK not BUSY.

You're absolutely right, I missed this! I've just updated the design again to correct it:
image

Also another thing I failed to mention - ideally the eeprom gets powered off 3.3v from the Arduino rather than the external power connector. The eventual idea of the eeprom was to identify the type of shield you have connected so you don't have to recompile and reupload any code when you switch shields. So the Arduino should always be able to read it and the external power connector may not always be plugged in (it's a binning issue, but I do have one 386EX that runs fine without any Vcc)

To clarify, in your designs, is the 3.3V the Arduino supply? or is the 3.3VP the Arduino supply?

I have two boards running right now with external 5V power, my power supply says I'm pulling 0.02W/0.005A so they really don't pull much power at all at these low clock rates.

5V / 0.02W = ~250mA -- this seems like a healthy "idle" power consumption for a 386 CPU, but I wonder what it consumes when it's running at full usage and regular (non-stepped) clock cycles..? 😅

@beforeyouknowit
Copy link
Author

I just had a look at the 386EX datasheet, page 28;
Supply Current 320 mA (Max) 250 mA (Typical)

I think I'm so used to seeing 60-120W TDPs on modern CPUs that I have to recalibrate my assumptions about legacy CPUs! 😅

@dbalsom
Copy link
Owner

dbalsom commented Oct 14, 2025

That's odd, it's more work for them. It's about twice as expensive on OSH Park and PCBWay, but I've never used JLCPCB.

To clarify, in your designs, is the 3.3V the Arduino supply? or is the 3.3VP the Arduino supply?

3.3VP is the external power pin

@beforeyouknowit
Copy link
Author

Here's a first-attempt at the 387 PCB:
image

But we should probably resolve any remaining tidbits on the 386EX (for this pull request) so that I can open a fresh one. 😅

@dbalsom
Copy link
Owner

dbalsom commented Oct 14, 2025

do these curved traces require some kind of kicad plugin? they look neat but i'm concerned about my own ability to maintain this.

@beforeyouknowit
Copy link
Author

beforeyouknowit commented Oct 14, 2025

do these curved traces require some kind of kicad plugin? they look neat but i'm concerned about my own ability to maintain this.

I use "Rounder Tracks" - which is a part of the "RF Tools" plugin, available from the KiCAD Plugin and Content Manager. 😊 You simply select two adjacent/abutting traces (usually at a 90º) and then run the plugin, i.e. input a 1mm curve, and it does the rounding.

image

@dbalsom
Copy link
Owner

dbalsom commented Oct 15, 2025

So the only thing to wrap up would be to route the Arduino's 3.3 power pin from the bottom up to the top of the board, either that or if you can think of a way to relocate the EEPROM.

It should go to the EEPROM power, and also to the UART debug header so that an RS232 module can be used without external power.

@beforeyouknowit
Copy link
Author

So the only thing to wrap up would be to route the Arduino's 3.3 power pin from the bottom up to the top of the board, either that or if you can think of a way to relocate the EEPROM.

I've added 2x 1N4148 standard diodes, which feed 3.3V from both of the 3.3V off-board supplies to the EEPROM IC and it's related pull-up resistors.

It should go to the EEPROM power, and also to the UART debug header so that an RS232 module can be used without external power.

I've also created a new 3.3V_COMBINED global label, which now supplies power to the EEPROM circuits and the UART header (as 3.3V output.)

Sidebar: I think this might be out-of-spec for RS232, in that most RS232 transceiver ICs are designed for 5V input power. (It seems like most modern transceivers are usually very tolerant of 3-5V supplies, but there might be issues on older chips.) In other words, this might be a point of failure or low-reliability, depending on whichever RS232 transceiver IC is connected to it.

Subsequent to adding these diodes, I've updated the HTML BOM, too.

Let me know if there's anything else you need touched-up. 😃

@dbalsom
Copy link
Owner

dbalsom commented Oct 19, 2025

i don't know if you do Discord, but it might be more efficient to talk there.
I have a #ArduinoX86 channel here:
https://discord.gg/8Gv7mVz4CC

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants