7
mirror of https://github.com/oxidecomputer/hw-spimux.git synced 2025-04-07 18:45:09 +00:00

Initial spi mux move to its own repo

This commit is contained in:
Nathanael Huffman 2023-02-24 11:10:20 -06:00
parent 85ec8dd909
commit e3b3654ce6
No known key found for this signature in database
GPG Key ID: 48483F4460FE05AB
22 changed files with 10365 additions and 0 deletions

43
CONTRIBUTING.md Normal file
View File

@ -0,0 +1,43 @@
# Project status and open source
This repo is public because
1. It has always been our intention to make this open-source.
2. We figured it's best to err on the side of doing this early instead of late.
3. It may prove useful to those outside our company.
This is not a production design. It was designed for and served a specific
purpose in support of our actual production designs. It is not under active
development, and comes with no warranty.
And so, we thought it was important to explain where we're currently at, and
manage your expectations.
- We are a small company.
- Our current goal is to get our first generation products finished and in
customers' hands.
- We've created this design in support of our end-goal, not as its own thing.
We're all working on the products, and tool development is a side effect.
- For expediency, we've made "get-it-done" choices with libraries and parts.
We may split or clean this up later, but, for now, we're primarily focused on
getting _our_ product ready, because, again, we need to finish our computers.
- These points together mean that we may not have enough bandwidth to review and
integrate outside PRs right now.
You're welcome to send PRs! If we have time, or if the PRs are very small or fix
bugs, we may even integrate them in the near future. But be aware that we might
not get to it for a while, by which time it might no longer be relevant.
We've all dealt with those open source projects that feel open in name only, and
have big patches and history-free source drops appearing from behind the walls
of some large organization. We don't like that, and we're not going to do that.
But please bear with us while we're scaling up.
If you want to ask about whether a PR is consistent with our short-term plan
_before_ you put in the work -- and you should! -- hit us up in an issue.
Thanks!

BIN
MCNs/2E1/R4R5_replace.png Normal file

Binary file not shown.

After

(image error) Size: 37 KiB

74
MCNs/2E1/README.adoc Normal file
View File

@ -0,0 +1,74 @@
= SPI Mux MCN rev2-E1
== Rationale
A couple of incorrect voltages were identified though testing of the spimux.
. U2 pin10 (enable) should be a 3V3 signal rather than a 1V8 signal
. U3 pins 14 and 24 (mux select) should be a 1V8 signal rather than a 3V3 signal.
Note the rework documented here will use the spare channel on the level translator so that the flash mux select goes through the level translator from the SP.
To fix the first issue, we're going to disconnect R2 from 1V8 and connect to 3V3 so SP_TRANS_EN is pulled up to 3V3.
To fix the second issue, we're going to run the SP signal `SP_QSPI_XTRA10` through the level translator and also disconnect
J5 pin 1 from 3V3 and connect it to 1V8.
Additionally R4 and R5 are too weak to properly drive the bus (with the level translator) when nothing is connected. these will be changed to 3.3k Ohms.
== Material/Tools
Aside from normal lab tools like optical magnification, solder, flux, and tweezers, you'll need:
. some 30ga wire,
. qty 2 3.3k 0402 resistors (per board)
. exacto knife for scraping/cutting traces.
== Physical Rework steps
To disconnect J5 pin1 from 3V3 and connect it to 1V8 do the following:
. Cut the trace (`3V3`) between the silkscreen of `R2` and `R3`
image::jumper_topside.png[Trace Cut]
. Connect the now-disconnected size of R2 to 3V3 with a jumper wire as shown below in the 2nd picture.
image::topside_jumper2.png[Jumper]
. Cut the trace running along the top-side of the board `SP_QSPI_XTRA10` where indicated in red. (first picture)
. Carefully expose the copper of the traces on either side of the cut to allow jumper wires to be soldered to these spots. (Light grey blocks in first picture below)
. Solder a jumper (blue in first picture below) between the exposed trace and pin 12 of U2 (un-used Y8 of level translator)
. Solder a jumper (orange in first picture below) between U2 pin 9 (un-used A8 of level translator) and the remaining exposed trace
image::enable_level_trans.png[Level Trans]
. Replace R4 and R5 on the top side of the board with 3.3k resistors.
image::R4R5_replace.png[Pull-ups]
. On the back side of the board, solder a jumper between J1 pin1 (`1V8`) and J5 pin 1 (see 2nd picture below)
. On the back side of the board, the the trace (`1V8`) between J2 pin1 and the via, or optionally
carfully drill the the via to disconnect from 1V8
image::bottom-side_jumper.png[Bottom Side]
Update the board marking:
- Re-label board as rev2-E1
Final example rework pictures:
image::top_finished.jpg[Finished Top]
image::bottom_finished.jpg[Finished Bottom]
== Determinations
Until spi-mux bring-up is complete no cad changes have been initiated.

Binary file not shown.

After

(image error) Size: 77 KiB

Binary file not shown.

After

(image error) Size: 765 KiB

Binary file not shown.

After

(image error) Size: 160 KiB

BIN
MCNs/2E1/jumper_topside.png Normal file

Binary file not shown.

After

(image error) Size: 66 KiB

BIN
MCNs/2E1/top_finished.jpg Normal file

Binary file not shown.

After

(image error) Size: 953 KiB

Binary file not shown.

After

(image error) Size: 177 KiB

View File

@ -1,2 +1,14 @@
# hw-spimux
PMOD Quad SPI flash mux debug board
Breaks out the Gimletlet QSPI port to a MT25QU256ABA8E12 Flash memory IC.
![spi_mux_render](docs/spimux.png)
# Model Change Notices
We use Model Change Notices (MCNs) to track rework made in between CAD updates
andboard spins.
These are preserved in this repo for historical and reference reasons even
after the CAD has been updated.
# Status
The CAD represents what was built without the MCN(s) applied.

BIN
docs/spimux.png Normal file

Binary file not shown.

After

(image error) Size: 123 KiB

1
fp-info-cache Normal file
View File

@ -0,0 +1 @@
0

5
fp-lib-table Normal file
View File

@ -0,0 +1,5 @@
(fp_lib_table
(lib (name pmod)(type KiCad)(uri ${KIPRJMOD}/../lib/pmod.pretty)(options "")(descr ""))
(lib (name spimux)(type KiCad)(uri ${KIPRJMOD}/spimux.pretty)(options "")(descr ""))
(lib (name grumpy)(type KiCad)(uri ${KIPRJMOD}/../lib/grumpy.pretty)(options "")(descr ""))
)

104
oxide_spimux.lib Normal file
View File

@ -0,0 +1,104 @@
EESchema-LIBRARY Version 2.4
#encoding utf-8
#
# ADG3308BCPZ
#
DEF ADG3308BCPZ U 0 40 Y Y 1 F N
F0 "U" 50 150 50 H V C CNN
F1 "ADG3308BCPZ" 450 -1250 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
DRAW
S 0 100 900 -1200 0 1 0 f
X A2 1 1000 -250 100 L 50 50 1 1 B
X Y8 10 -100 -850 100 R 50 50 1 1 B
X Y7 11 -100 -750 100 R 50 50 1 1 B
X Y6 12 -100 -650 100 R 50 50 1 1 B
X Y5 13 -100 -550 100 R 50 50 1 1 B
X Y4 14 -100 -450 100 R 50 50 1 1 B
X Y3 15 -100 -350 100 R 50 50 1 1 B
X Y2 16 -100 -250 100 R 50 50 1 1 B
X Y1 17 -100 -150 100 R 50 50 1 1 B
X VCCY 18 -100 0 100 R 50 50 1 1 W
X VCCA 19 1000 0 100 L 50 50 1 1 W
X A3 2 1000 -350 100 L 50 50 1 1 B
X A1 20 1000 -150 100 L 50 50 1 1 B
X A4 3 1000 -450 100 L 50 50 1 1 B
X A5 4 1000 -550 100 L 50 50 1 1 B
X A6 5 1000 -650 100 L 50 50 1 1 B
X A7 6 1000 -750 100 L 50 50 1 1 B
X A8 7 1000 -850 100 L 50 50 1 1 B
X EN 8 1000 -1000 100 L 50 50 1 1 I
X GND 9 -100 -1000 100 R 50 50 1 1 W
ENDDRAW
ENDDEF
#
# ADG3308BRUZ
#
DEF ADG3308BRUZ U 0 40 Y Y 1 F N
F0 "U" 50 150 50 H V C CNN
F1 "ADG3308BRUZ" 450 -1250 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
DRAW
S 0 100 900 -1200 0 1 0 f
X VCCA 1 1000 0 100 L 50 50 1 1 W
X EN 10 -100 -1000 100 R 50 50 1 1 I
X GND 11 1000 -1000 100 L 50 50 1 1 W
X Y8 12 -100 -850 100 R 50 50 1 1 B
X Y7 13 -100 -750 100 R 50 50 1 1 B
X Y6 14 -100 -650 100 R 50 50 1 1 B
X Y5 15 -100 -550 100 R 50 50 1 1 B
X Y4 16 -100 -450 100 R 50 50 1 1 B
X Y3 17 -100 -350 100 R 50 50 1 1 B
X Y2 18 -100 -250 100 R 50 50 1 1 B
X Y1 19 -100 -150 100 R 50 50 1 1 B
X A1 2 1000 -150 100 L 50 50 1 1 B
X VCCY 20 -100 0 100 R 50 50 1 1 W
X A2 3 1000 -250 100 L 50 50 1 1 B
X A3 4 1000 -350 100 L 50 50 1 1 B
X A4 5 1000 -450 100 L 50 50 1 1 B
X A5 6 1000 -550 100 L 50 50 1 1 B
X A6 7 1000 -650 100 L 50 50 1 1 B
X A7 8 1000 -750 100 L 50 50 1 1 B
X A8 9 1000 -850 100 L 50 50 1 1 B
ENDDRAW
ENDDEF
#
# MT25QU256ABA8E12
#
DEF MT25QU256ABA8E12 U 0 40 Y Y 1 F N
F0 "U" 150 200 50 H V C CNN
F1 "MT25QU256ABA8E12" 550 -1350 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
DRAW
S 100 150 1000 -1300 0 1 0 f
X NC A2 1000 -1200 100 L 50 50 1 1 N N
X RFU1 A3 0 -900 100 R 50 50 1 1 N N
X ~RESET A4 0 -200 100 R 50 50 1 1 I
X RFU2 A5 0 -1000 100 R 50 50 1 1 N N
X RFU3 B1 1000 0 100 L 50 50 1 1 N N
X C B2 0 -800 100 R 50 50 1 1 I
X VSS B3 0 -1200 100 R 50 50 1 1 W
X VCC B4 0 0 100 R 50 50 1 1 W
X RFU4 B5 1000 -100 100 L 50 50 1 1 N N
X RFU5 C1 1000 -200 100 L 50 50 1 1 N N
X ~S C2 0 -700 100 R 50 50 1 1 I
X RFU6 C3 1000 -300 100 L 50 50 1 1 N N
X ~W~/DQ2 C4 0 -400 100 R 50 50 1 1 I
X RFU7 C5 1000 -400 100 L 50 50 1 1 N N
X RFU8 D1 1000 -500 100 L 50 50 1 1 N N
X DQ1 D2 0 -500 100 R 50 50 1 1 I
X DQ0 D3 0 -600 100 R 50 50 1 1 I
X DQ3/~HOLD D4 0 -300 100 R 50 50 1 1 I
X RFU9 D5 1000 -600 100 L 50 50 1 1 N N
X RFU10 E1 1000 -700 100 L 50 50 1 1 N N
X RFU11 E2 1000 -800 100 L 50 50 1 1 N N
X RFU12 E3 1000 -900 100 L 50 50 1 1 N N
X RFU13 E4 1000 -1000 100 L 50 50 1 1 N N
X RFU14 E5 1000 -1100 100 L 50 50 1 1 N N
ENDDRAW
ENDDEF
#
#End Library

Binary file not shown.

334
spimux-cache.lib Normal file
View File

@ -0,0 +1,334 @@
EESchema-LIBRARY Version 2.4
#encoding utf-8
#
# Analog_Switch_TS3A27518EPW
#
DEF Analog_Switch_TS3A27518EPW U 0 20 Y Y 1 F N
F0 "U" -550 750 50 H V C CNN
F1 "Analog_Switch_TS3A27518EPW" 350 750 50 H V C CNN
F2 "Package_SO:TSSOP-24_4.4x7.8mm_P0.65mm" 0 1000 50 H I C CNN
F3 "" 0 -100 50 H I C CNN
$FPLIST
TSSOP*4.4x7.8mm*P0.65mm*
$ENDFPLIST
DRAW
S 600 -700 -600 700 0 1 10 f
X NC2 1 700 500 100 L 50 50 1 1 B
X COM5 10 -700 200 100 R 50 50 1 1 B
X NO1 11 700 -100 100 L 50 50 1 1 B
X COM6 12 -700 100 100 R 50 50 1 1 B
X NO2 13 700 -200 100 L 50 50 1 1 B
X IN2 14 -700 -400 100 R 50 50 1 1 I
X NO3 15 700 -300 100 L 50 50 1 1 B
X NO6 16 700 -600 100 L 50 50 1 1 B
X NO4 17 700 -400 100 L 50 50 1 1 B
X NO5 18 700 -500 100 L 50 50 1 1 B
X NC5 19 700 200 100 L 50 50 1 1 B
X NC1 2 700 600 100 L 50 50 1 1 B
X ~EN 20 -700 -100 100 R 50 50 1 1 I
X NC4 21 700 300 100 L 50 50 1 1 B
X NC6 22 700 100 100 L 50 50 1 1 B
X NC3 23 700 400 100 L 50 50 1 1 B
X IN1 24 -700 -300 100 R 50 50 1 1 I
X N.C. 3 -600 -600 100 R 50 50 1 1 N N
X COM1 4 -700 600 100 R 50 50 1 1 B
X GND 5 0 -800 100 U 50 50 1 1 W
X COM2 6 -700 500 100 R 50 50 1 1 B
X COM3 7 -700 400 100 R 50 50 1 1 B
X VCC 8 0 800 100 D 50 50 1 1 W
X COM4 9 -700 300 100 R 50 50 1 1 B
ENDDRAW
ENDDEF
#
# Connector_Generic_Conn_01x02
#
DEF Connector_Generic_Conn_01x02 J 0 40 Y N 1 F N
F0 "J" 0 100 50 H V C CNN
F1 "Connector_Generic_Conn_01x02" 0 -200 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
Connector*:*_1x??_*
$ENDFPLIST
DRAW
S -50 -95 0 -105 1 1 6 N
S -50 5 0 -5 1 1 6 N
S -50 50 50 -150 1 1 10 f
X Pin_1 1 -200 0 150 R 50 50 1 1 P
X Pin_2 2 -200 -100 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# Connector_Generic_Conn_01x03
#
DEF Connector_Generic_Conn_01x03 J 0 40 Y N 1 F N
F0 "J" 0 200 50 H V C CNN
F1 "Connector_Generic_Conn_01x03" 0 -200 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
Connector*:*_1x??_*
$ENDFPLIST
DRAW
S -50 -95 0 -105 1 1 6 N
S -50 5 0 -5 1 1 6 N
S -50 105 0 95 1 1 6 N
S -50 150 50 -150 1 1 10 f
X Pin_1 1 -200 100 150 R 50 50 1 1 P
X Pin_2 2 -200 0 150 R 50 50 1 1 P
X Pin_3 3 -200 -100 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# Device_C
#
DEF Device_C C 0 10 N Y 1 F N
F0 "C" 25 100 50 H V L CNN
F1 "Device_C" 25 -100 50 H V L CNN
F2 "" 38 -150 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
C_*
$ENDFPLIST
DRAW
P 2 0 1 20 -80 -30 80 -30 N
P 2 0 1 20 -80 30 80 30 N
X ~ 1 0 150 110 D 50 50 1 1 P
X ~ 2 0 -150 110 U 50 50 1 1 P
ENDDRAW
ENDDEF
#
# Device_CP1_Small
#
DEF Device_CP1_Small C 0 10 N N 1 F N
F0 "C" 10 70 50 H V L CNN
F1 "Device_CP1_Small" 10 -80 50 H V L CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
CP_*
$ENDFPLIST
DRAW
A 0 -140 125 1186 614 0 1 12 N -60 -30 60 -30
P 2 0 1 12 -60 20 60 20 N
P 2 0 1 0 -50 60 -30 60 N
P 2 0 1 0 -40 50 -40 70 N
X ~ 1 0 100 80 D 50 50 1 1 P
X ~ 2 0 -100 80 U 50 50 1 1 P
ENDDRAW
ENDDEF
#
# Device_R_US
#
DEF Device_R_US R 0 0 N Y 1 F N
F0 "R" 100 0 50 V V C CNN
F1 "Device_R_US" -100 0 50 V V C CNN
F2 "" 40 -10 50 V I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
R_*
$ENDFPLIST
DRAW
P 2 0 1 0 0 -90 0 -100 N
P 2 0 1 0 0 90 0 100 N
P 5 0 1 0 0 -30 40 -45 0 -60 -40 -75 0 -90 N
P 5 0 1 0 0 30 40 15 0 0 -40 -15 0 -30 N
P 5 0 1 0 0 90 40 75 0 60 -40 45 0 30 N
X ~ 1 0 150 50 D 50 50 1 1 P
X ~ 2 0 -150 50 U 50 50 1 1 P
ENDDRAW
ENDDEF
#
# Mechanical_MountingHole_Pad
#
DEF Mechanical_MountingHole_Pad H 0 40 N N 1 F N
F0 "H" 0 250 50 H V C CNN
F1 "Mechanical_MountingHole_Pad" 0 175 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
MountingHole*Pad*
$ENDFPLIST
DRAW
C 0 50 50 0 1 50 N
X 1 1 0 -100 100 U 50 50 1 1 I
ENDDRAW
ENDDEF
#
# Regulator_Linear_LM1117-1.8
#
DEF Regulator_Linear_LM1117-1.8 U 0 10 Y Y 1 F N
F0 "U" -150 125 50 H V C CNN
F1 "Regulator_Linear_LM1117-1.8" 0 125 50 H V L CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
ALIAS LM1117-2.5 LM1117-3.3 LM1117-5.0 TLV1117-15 TLV1117-18 TLV1117-25 TLV1117-33 TLV1117-50
$FPLIST
SOT?223*
TO?263*
TO?252*
TO?220*
$ENDFPLIST
DRAW
S -200 -200 200 75 0 1 10 f
X GND 1 0 -300 100 U 50 50 1 1 W
X VO 2 300 0 100 L 50 50 1 1 w
X VI 3 -300 0 100 R 50 50 1 1 W
ENDDRAW
ENDDEF
#
# gimletlet-cache_Connector_Generic_Conn_02x06_Top_Bottom
#
DEF gimletlet-cache_Connector_Generic_Conn_02x06_Top_Bottom J 0 40 Y N 1 F N
F0 "J" 50 300 50 H V C CNN
F1 "gimletlet-cache_Connector_Generic_Conn_02x06_Top_Bottom" 50 -400 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
Connector*:*_2x??_*
$ENDFPLIST
DRAW
S -50 -295 0 -305 1 1 6 N
S -50 -195 0 -205 1 1 6 N
S -50 -95 0 -105 1 1 6 N
S -50 5 0 -5 1 1 6 N
S -50 105 0 95 1 1 6 N
S -50 205 0 195 1 1 6 N
S -50 250 150 -350 1 1 10 f
S 150 -295 100 -305 1 1 6 N
S 150 -195 100 -205 1 1 6 N
S 150 -95 100 -105 1 1 6 N
S 150 5 100 -5 1 1 6 N
S 150 105 100 95 1 1 6 N
S 150 205 100 195 1 1 6 N
X Pin_1 1 -200 200 150 R 50 50 1 1 P
X Pin_10 10 300 -100 150 L 50 50 1 1 P
X Pin_11 11 300 -200 150 L 50 50 1 1 P
X Pin_12 12 300 -300 150 L 50 50 1 1 P
X Pin_2 2 -200 100 150 R 50 50 1 1 P
X Pin_3 3 -200 0 150 R 50 50 1 1 P
X Pin_4 4 -200 -100 150 R 50 50 1 1 P
X Pin_5 5 -200 -200 150 R 50 50 1 1 P
X Pin_6 6 -200 -300 150 R 50 50 1 1 P
X Pin_7 7 300 200 150 L 50 50 1 1 P
X Pin_8 8 300 100 150 L 50 50 1 1 P
X Pin_9 9 300 0 150 L 50 50 1 1 P
ENDDRAW
ENDDEF
#
# oxide_spimux_ADG3308BRUZ
#
DEF oxide_spimux_ADG3308BRUZ U 0 40 Y Y 1 F N
F0 "U" 50 150 50 H V C CNN
F1 "oxide_spimux_ADG3308BRUZ" 450 -1250 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
DRAW
S 0 100 900 -1200 0 1 0 f
X VCCA 1 1000 0 100 L 50 50 1 1 W
X EN 10 -100 -1000 100 R 50 50 1 1 I
X GND 11 1000 -1000 100 L 50 50 1 1 W
X Y8 12 -100 -850 100 R 50 50 1 1 B
X Y7 13 -100 -750 100 R 50 50 1 1 B
X Y6 14 -100 -650 100 R 50 50 1 1 B
X Y5 15 -100 -550 100 R 50 50 1 1 B
X Y4 16 -100 -450 100 R 50 50 1 1 B
X Y3 17 -100 -350 100 R 50 50 1 1 B
X Y2 18 -100 -250 100 R 50 50 1 1 B
X Y1 19 -100 -150 100 R 50 50 1 1 B
X A1 2 1000 -150 100 L 50 50 1 1 B
X VCCY 20 -100 0 100 R 50 50 1 1 W
X A2 3 1000 -250 100 L 50 50 1 1 B
X A3 4 1000 -350 100 L 50 50 1 1 B
X A4 5 1000 -450 100 L 50 50 1 1 B
X A5 6 1000 -550 100 L 50 50 1 1 B
X A6 7 1000 -650 100 L 50 50 1 1 B
X A7 8 1000 -750 100 L 50 50 1 1 B
X A8 9 1000 -850 100 L 50 50 1 1 B
ENDDRAW
ENDDEF
#
# oxide_spimux_MT25QU256ABA8E12
#
DEF oxide_spimux_MT25QU256ABA8E12 U 0 40 Y Y 1 F N
F0 "U" 150 200 50 H V C CNN
F1 "oxide_spimux_MT25QU256ABA8E12" 550 -1350 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
DRAW
S 100 150 1000 -1300 0 1 0 f
X NC A2 1000 -1200 100 L 50 50 1 1 N N
X RFU1 A3 0 -900 100 R 50 50 1 1 N N
X ~RESET A4 0 -200 100 R 50 50 1 1 I
X RFU2 A5 0 -1000 100 R 50 50 1 1 N N
X RFU3 B1 1000 0 100 L 50 50 1 1 N N
X C B2 0 -800 100 R 50 50 1 1 I
X VSS B3 0 -1200 100 R 50 50 1 1 W
X VCC B4 0 0 100 R 50 50 1 1 W
X RFU4 B5 1000 -100 100 L 50 50 1 1 N N
X RFU5 C1 1000 -200 100 L 50 50 1 1 N N
X ~S C2 0 -700 100 R 50 50 1 1 I
X RFU6 C3 1000 -300 100 L 50 50 1 1 N N
X ~W~/DQ2 C4 0 -400 100 R 50 50 1 1 I
X RFU7 C5 1000 -400 100 L 50 50 1 1 N N
X RFU8 D1 1000 -500 100 L 50 50 1 1 N N
X DQ1 D2 0 -500 100 R 50 50 1 1 I
X DQ0 D3 0 -600 100 R 50 50 1 1 I
X DQ3/~HOLD D4 0 -300 100 R 50 50 1 1 I
X RFU9 D5 1000 -600 100 L 50 50 1 1 N N
X RFU10 E1 1000 -700 100 L 50 50 1 1 N N
X RFU11 E2 1000 -800 100 L 50 50 1 1 N N
X RFU12 E3 1000 -900 100 L 50 50 1 1 N N
X RFU13 E4 1000 -1000 100 L 50 50 1 1 N N
X RFU14 E5 1000 -1100 100 L 50 50 1 1 N N
ENDDRAW
ENDDEF
#
# power_+1V8
#
DEF power_+1V8 #PWR 0 0 Y Y 1 F P
F0 "#PWR" 0 -150 50 H I C CNN
F1 "power_+1V8" 0 140 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
DRAW
P 2 0 1 0 -30 50 0 100 N
P 2 0 1 0 0 0 0 100 N
P 2 0 1 0 0 100 30 50 N
X +1V8 1 0 0 0 U 50 50 1 1 W N
ENDDRAW
ENDDEF
#
# power_+3.3V
#
DEF power_+3.3V #PWR 0 0 Y Y 1 F P
F0 "#PWR" 0 -150 50 H I C CNN
F1 "power_+3.3V" 0 140 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
ALIAS +3.3V
DRAW
P 2 0 1 0 -30 50 0 100 N
P 2 0 1 0 0 0 0 100 N
P 2 0 1 0 0 100 30 50 N
X +3V3 1 0 0 0 U 50 50 1 1 W N
ENDDRAW
ENDDEF
#
# power_GNDREF
#
DEF power_GNDREF #PWR 0 0 Y Y 1 F P
F0 "#PWR" 0 -250 50 H I C CNN
F1 "power_GNDREF" 0 -150 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
DRAW
P 2 0 1 0 -25 -75 25 -75 N
P 2 0 1 0 -5 -100 5 -100 N
P 2 0 1 0 0 -50 0 0 N
P 2 0 1 0 50 -50 -50 -50 N
X GNDREF 1 0 0 0 D 50 50 1 1 W N
ENDDRAW
ENDDEF
#
#End Library

View File

LOADING design file

spimux.kicad_pcb
Normal file
View File

LOADING design file

80
spimux.kicad_prl Normal file
View File

@ -0,0 +1,80 @@
{
"board": {
"active_layer": 0,
"active_layer_preset": "",
"auto_track_width": true,
"hidden_netclasses": [],
"hidden_nets": [],
"high_contrast_mode": 0,
"net_color_mode": 1,
"opacity": {
"images": 0.6,
"pads": 1.0,
"tracks": 1.0,
"vias": 1.0,
"zones": 0.6
},
"selection_filter": {
"dimensions": true,
"footprints": true,
"graphics": true,
"keepouts": true,
"lockedItems": false,
"otherItems": true,
"pads": true,
"text": true,
"tracks": true,
"vias": true,
"zones": true
},
"visible_items": [
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
32,
33,
34,
35,
36,
39,
40
],
"visible_layers": "000ffff_80000001",
"zone_display_mode": 0
},
"meta": {
"filename": "spimux.kicad_prl",
"version": 3
},
"project": {
"files": []
}
}

704
spimux.kicad_pro Normal file
View File

@ -0,0 +1,704 @@
{
"board": {
"3dviewports": [],
"design_settings": {
"defaults": {
"board_outline_line_width": 0.049999999999999996,
"copper_line_width": 0.19999999999999998,
"copper_text_italic": false,
"copper_text_size_h": 1.5,
"copper_text_size_v": 1.5,
"copper_text_thickness": 0.3,
"copper_text_upright": false,
"courtyard_line_width": 0.049999999999999996,
"dimension_precision": 4,
"dimension_units": 3,
"dimensions": {
"arrow_length": 1270000,
"extension_offset": 500000,
"keep_text_aligned": true,
"suppress_zeroes": false,
"text_position": 0,
"units_format": 1
},
"fab_line_width": 0.09999999999999999,
"fab_text_italic": false,
"fab_text_size_h": 1.0,
"fab_text_size_v": 1.0,
"fab_text_thickness": 0.15,
"fab_text_upright": false,
"other_line_width": 0.09999999999999999,
"other_text_italic": false,
"other_text_size_h": 1.0,
"other_text_size_v": 1.0,
"other_text_thickness": 0.15,
"other_text_upright": false,
"pads": {
"drill": 0.762,
"height": 1.524,
"width": 1.524
},
"silk_line_width": 0.12,
"silk_text_italic": false,
"silk_text_size_h": 1.0,
"silk_text_size_v": 1.0,
"silk_text_thickness": 0.15,
"silk_text_upright": false,
"zones": {
"min_clearance": 0.19999999999999998
}
},
"diff_pair_dimensions": [],
"drc_exclusions": [],
"meta": {
"filename": "board_design_settings.json",
"version": 2
},
"rule_severities": {
"annular_width": "error",
"clearance": "error",
"connection_width": "warning",
"copper_edge_clearance": "error",
"copper_sliver": "warning",
"courtyards_overlap": "error",
"diff_pair_gap_out_of_range": "error",
"diff_pair_uncoupled_length_too_long": "error",
"drill_out_of_range": "error",
"duplicate_footprints": "warning",
"extra_footprint": "warning",
"footprint": "error",
"footprint_type_mismatch": "ignore",
"hole_clearance": "error",
"hole_near_hole": "error",
"invalid_outline": "error",
"isolated_copper": "warning",
"item_on_disabled_layer": "error",
"items_not_allowed": "error",
"length_out_of_range": "error",
"lib_footprint_issues": "warning",
"lib_footprint_mismatch": "warning",
"malformed_courtyard": "error",
"microvia_drill_out_of_range": "error",
"missing_courtyard": "ignore",
"missing_footprint": "warning",
"net_conflict": "warning",
"npth_inside_courtyard": "ignore",
"padstack": "warning",
"pth_inside_courtyard": "ignore",
"shorting_items": "error",
"silk_edge_clearance": "warning",
"silk_over_copper": "warning",
"silk_overlap": "warning",
"skew_out_of_range": "error",
"solder_mask_bridge": "error",
"starved_thermal": "error",
"text_height": "warning",
"text_thickness": "warning",
"through_hole_pad_without_hole": "error",
"too_many_vias": "error",
"track_dangling": "warning",
"track_width": "error",
"tracks_crossing": "error",
"unconnected_items": "error",
"unresolved_variable": "error",
"via_dangling": "warning",
"zones_intersect": "error"
},
"rule_severitieslegacy_courtyards_overlap": true,
"rule_severitieslegacy_no_courtyard_defined": false,
"rules": {
"max_error": 0.005,
"min_clearance": 0.0,
"min_connection": 0.0,
"min_copper_edge_clearance": 0.024999999999999998,
"min_hole_clearance": 0.25,
"min_hole_to_hole": 0.25,
"min_microvia_diameter": 0.19999999999999998,
"min_microvia_drill": 0.09999999999999999,
"min_resolved_spokes": 2,
"min_silk_clearance": 0.0,
"min_text_height": 0.7999999999999999,
"min_text_thickness": 0.08,
"min_through_hole_diameter": 0.19999999999999998,
"min_track_width": 0.16,
"min_via_annular_width": 0.09999999999999999,
"min_via_diameter": 0.5,
"solder_mask_to_copper_clearance": 0.0,
"use_height_for_length_calcs": true
},
"teardrop_options": [
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 5,
"td_on_pad_in_zone": false,
"td_onpadsmd": true,
"td_onroundshapesonly": false,
"td_ontrackend": false,
"td_onviapad": true
}
],
"teardrop_parameters": [
{
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_target_name": "td_round_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_target_name": "td_rect_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_target_name": "td_track_end",
"td_width_to_size_filter_ratio": 0.9
}
],
"track_widths": [],
"via_dimensions": [],
"zones_allow_external_fillets": false
},
"layer_presets": [],
"viewports": []
},
"boards": [],
"cvpcb": {
"equivalence_files": []
},
"erc": {
"erc_exclusions": [],
"meta": {
"version": 0
},
"pin_map": [
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
1,
0,
1,
2
],
[
0,
1,
0,
0,
0,
0,
1,
1,
2,
1,
1,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
2
],
[
1,
1,
1,
1,
1,
0,
1,
1,
1,
1,
1,
2
],
[
0,
0,
0,
1,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
1,
2,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
0,
2,
1,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2
]
],
"rule_severities": {
"bus_definition_conflict": "error",
"bus_entry_needed": "error",
"bus_to_bus_conflict": "error",
"bus_to_net_conflict": "error",
"conflicting_netclasses": "error",
"different_unit_footprint": "error",
"different_unit_net": "error",
"duplicate_reference": "error",
"duplicate_sheet_names": "error",
"endpoint_off_grid": "warning",
"extra_units": "error",
"global_label_dangling": "warning",
"hier_label_mismatch": "error",
"label_dangling": "error",
"lib_symbol_issues": "warning",
"missing_bidi_pin": "warning",
"missing_input_pin": "warning",
"missing_power_pin": "error",
"missing_unit": "warning",
"multiple_net_names": "warning",
"net_not_bus_member": "warning",
"no_connect_connected": "warning",
"no_connect_dangling": "warning",
"pin_not_connected": "error",
"pin_not_driven": "error",
"pin_to_pin": "warning",
"power_pin_not_driven": "error",
"similar_labels": "warning",
"simulation_model_issue": "error",
"unannotated": "error",
"unit_value_mismatch": "error",
"unresolved_variable": "error",
"wire_dangling": "error"
}
},
"libraries": {
"pinned_footprint_libs": [],
"pinned_symbol_libs": []
},
"meta": {
"filename": "spimux.kicad_pro",
"version": 1
},
"net_settings": {
"classes": [
{
"bus_width": 12,
"clearance": 0.153,
"diff_pair_gap": 0.25,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.2,
"line_style": 0,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "Default",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.16,
"via_diameter": 0.6,
"via_drill": 0.3,
"wire_width": 6
}
],
"meta": {
"version": 3
},
"net_colors": null,
"netclass_assignments": null,
"netclass_patterns": [
{
"netclass": "Default",
"pattern": "+1V8"
},
{
"netclass": "Default",
"pattern": "+3V3"
},
{
"netclass": "Default",
"pattern": "/FLASH_MUX_SELECT"
},
{
"netclass": "Default",
"pattern": "/MANUAL_MUX_SELECT"
},
{
"netclass": "Default",
"pattern": "/SP3_QSPI_CLK"
},
{
"netclass": "Default",
"pattern": "/SP3_QSPI_IO0"
},
{
"netclass": "Default",
"pattern": "/SP3_QSPI_IO1"
},
{
"netclass": "Default",
"pattern": "/SP3_QSPI_IO2"
},
{
"netclass": "Default",
"pattern": "/SP3_QSPI_IO3"
},
{
"netclass": "Default",
"pattern": "/SPI_FLASH_CLK"
},
{
"netclass": "Default",
"pattern": "/SPI_FLASH_D0"
},
{
"netclass": "Default",
"pattern": "/SPI_FLASH_DQ1"
},
{
"netclass": "Default",
"pattern": "/SPI_FLASH_DQ2"
},
{
"netclass": "Default",
"pattern": "/SPI_FLASH_DQ3"
},
{
"netclass": "Default",
"pattern": "/SP_FLASH_CLK_1V8"
},
{
"netclass": "Default",
"pattern": "/SP_FLASH_DQ0_1V8"
},
{
"netclass": "Default",
"pattern": "/SP_FLASH_DQ1_1V8"
},
{
"netclass": "Default",
"pattern": "/SP_FLASH_DQ2_1V8"
},
{
"netclass": "Default",
"pattern": "/SP_FLASH_DQ3_1V8"
},
{
"netclass": "Default",
"pattern": "/SP_QSPI_CLK"
},
{
"netclass": "Default",
"pattern": "/SP_QSPI_IO0"
},
{
"netclass": "Default",
"pattern": "/SP_QSPI_IO1"
},
{
"netclass": "Default",
"pattern": "/SP_QSPI_IO2"
},
{
"netclass": "Default",
"pattern": "/SP_QSPI_IO3"
},
{
"netclass": "Default",
"pattern": "/SP_QSPI_XTRA10"
},
{
"netclass": "Default",
"pattern": "/SP_QSPI_XTRA7"
},
{
"netclass": "Default",
"pattern": "/SP_TRANS_EN"
},
{
"netclass": "Default",
"pattern": "/~{SP3_QSPI_CS}"
},
{
"netclass": "Default",
"pattern": "/~{SPI_FLASH_CS_L}"
},
{
"netclass": "Default",
"pattern": "/~{SPI_MUX_EN_L}"
},
{
"netclass": "Default",
"pattern": "/~{SP_FLASH_CS_L_1V8}"
},
{
"netclass": "Default",
"pattern": "/~{SP_FLASH_RESET_L_1V8}"
},
{
"netclass": "Default",
"pattern": "/~{SP_QSPI_CS}"
},
{
"netclass": "Default",
"pattern": "GNDREF"
},
{
"netclass": "Default",
"pattern": "Net-(J4-Pad10)"
},
{
"netclass": "Default",
"pattern": "Net-(J4-Pad11)"
},
{
"netclass": "Default",
"pattern": "Net-(J4-Pad5)"
},
{
"netclass": "Default",
"pattern": "Net-(J4-Pad7)"
},
{
"netclass": "Default",
"pattern": "Net-(U2-Pad12)"
},
{
"netclass": "Default",
"pattern": "Net-(U2-Pad9)"
},
{
"netclass": "Default",
"pattern": "Net-(U3-Pad3)"
},
{
"netclass": "Default",
"pattern": "Net-(U4-PadA2)"
},
{
"netclass": "Default",
"pattern": "Net-(U4-PadA3)"
},
{
"netclass": "Default",
"pattern": "Net-(U4-PadA5)"
},
{
"netclass": "Default",
"pattern": "Net-(U4-PadB1)"
},
{
"netclass": "Default",
"pattern": "Net-(U4-PadB5)"
},
{
"netclass": "Default",
"pattern": "Net-(U4-PadC1)"
},
{
"netclass": "Default",
"pattern": "Net-(U4-PadC3)"
},
{
"netclass": "Default",
"pattern": "Net-(U4-PadC5)"
},
{
"netclass": "Default",
"pattern": "Net-(U4-PadD1)"
},
{
"netclass": "Default",
"pattern": "Net-(U4-PadD5)"
},
{
"netclass": "Default",
"pattern": "Net-(U4-PadE1)"
},
{
"netclass": "Default",
"pattern": "Net-(U4-PadE2)"
},
{
"netclass": "Default",
"pattern": "Net-(U4-PadE3)"
},
{
"netclass": "Default",
"pattern": "Net-(U4-PadE4)"
},
{
"netclass": "Default",
"pattern": "Net-(U4-PadE5)"
}
]
},
"pcbnew": {
"last_paths": {
"gencad": "",
"idf": "",
"netlist": "",
"specctra_dsn": "",
"step": "",
"vrml": ""
},
"page_layout_descr_file": ""
},
"schematic": {
"annotate_start_num": 0,
"drawing": {
"dashed_lines_dash_length_ratio": 12.0,
"dashed_lines_gap_length_ratio": 3.0,
"default_line_thickness": 6.0,
"default_text_size": 100.0,
"field_names": [],
"intersheets_ref_own_page": false,
"intersheets_ref_prefix": "",
"intersheets_ref_short": false,
"intersheets_ref_show": false,
"intersheets_ref_suffix": "",
"junction_size_choice": 3,
"label_size_ratio": 0.25,
"pin_symbol_size": 0.0,
"text_offset_ratio": 0.08
},
"legacy_lib_dir": "",
"legacy_lib_list": [],
"meta": {
"version": 1
},
"net_format_name": "",
"page_layout_descr_file": "",
"plot_directory": "",
"spice_adjust_passive_values": false,
"spice_current_sheet_as_root": false,
"spice_external_command": "spice \"%I\"",
"spice_model_current_sheet_as_root": true,
"spice_save_all_currents": false,
"spice_save_all_voltages": false,
"subpart_first_id": 65,
"subpart_id_separator": 0
},
"sheets": [
[
"b2f994e5-f3ef-40e8-bcfa-e3d434de3f53",
""
]
],
"text_variables": {}
}

spimux.kicad_sch
Normal file
View File

1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 E D C B A E D C B A Date: Size: B Id: / File: blob_a21bea4c8c7105b474e823f0f249b9a278ac71bd_701272802.kicad_sch Sheet: / KiCad E.D.A. eeschema 7.0.0 Title: Rev: NC2 1 COM5 10 NO1 11 COM6 12 NO2 13 IN2 14 NO3 15 NO6 16 NO4 17 NO5 18 NC5 19 NC1 2 ~{EN} 20 NC4 21 NC6 22 NC3 23 IN1 24 COM1 4 GND 5 COM2 6 COM3 7 VCC 8 COM4 9 U3 TS3A27518EPW ~{RESET} A4 C B2 VSS B3 VCC B4 ~{S} C2 ~{W}/DQ2 C4 DQ1 D2 DQ0 D3 DQ3/~{HOLD} D4 U4 MT25QU256ABA8E12 C4 1uF R5 10k R4 10k 1 2 J1 Conn_01x02 C5 1uF C6 1uF 1 10 11 12 2 3 4 5 6 7 8 9 J3 QSPI PMOD H1 MountingHole_Pad R1 10k 1 2 J2 Conn_01x02 R2 10k C3 1uF 1 10 11 12 2 3 4 5 6 7 8 9 J4 Connector_Generic_Conn_02x06_Top_Bottom GND 1 VO 2 VI 3 U1 LM1117-1.8 C1 10uF C2 10uF 1 2 J5 Conn_01x02 R3 10k 1 2 3 J6 Conn_01x03 VCCA 1 EN 10 GND 11 Y8 12 Y7 13 Y6 14 Y5 15 Y4 16 Y3 17 Y2 18 Y1 19 A1 2 VCCY 20 A2 3 A3 4 A4 5 A5 6 A6 7 A7 8 A8 9 U2 ADG3308BRUZ +1V8 GNDREF GNDREF +1V8 +1V8 +1V8 +1V8 GNDREF GNDREF GNDREF GNDREF +3.3V +3.3V GNDREF +1V8 +3.3V GNDREF +3.3V GNDREF +1V8 GNDREF GNDREF GNDREF GNDREF +1V8 +3.3V GNDREF +3.3V SP_FLASH_DQ3_1V8 SP_QSPI_IO3 SP_QSPI_XTRA10 SP3_QSPI_IO3 SP3_QSPI_IO2 SPI_FLASH_D0 SP_QSPI_XTRA7 ~{SP_QSPI_CS} SP_QSPI_IO0 SPI_FLASH_DQ1 SP_FLASH_DQ0_1V8 SP3_QSPI_IO0 ~{SPI_MUX_EN_L} SP_TRANS_EN SP3_QSPI_IO3 SP_QSPI_CLK SP3_QSPI_IO2 SPI_FLASH_CLK SP_QSPI_IO1 ~{SP3_QSPI_CS} ~{SP_FLASH_RESET_L_1V8} SP_TRANS_EN ~{SPI_FLASH_CS_L} FLASH_MUX_SELECT SP_QSPI_IO3 ~{SP_FLASH_RESET_L_1V8} SP_FLASH_CLK_1V8 SPI_FLASH_DQ2 FLASH_MUX_SELECT SP_QSPI_IO2 ~{SP_FLASH_CS_L_1V8} ~{SPI_MUX_EN_L} SP3_QSPI_CLK SP_FLASH_DQ1_1V8 SP_QSPI_CLK SP3_QSPI_IO1 SP3_QSPI_IO0 ~{SP_FLASH_CS_L_1V8} SP_QSPI_IO0 SP3_QSPI_IO1 SP_FLASH_DQ2_1V8 SP_QSPI_IO2 MANUAL_MUX_SELECT SP_QSPI_XTRA10 ~{SP3_QSPI_CS} SP3_QSPI_CLK SPI_FLASH_DQ3 ~{SP_QSPI_CS} SP_FLASH_CLK_1V8 SP_QSPI_IO1 (~{SP_FLASH_RESET_L}) Dupont header for connection to an SP3 dev system. Pin-out kept consistent with the Qspi but expects 1V8 voltage levels here Matches gimletlet QSPI Header. XTRA7 is ~{FLASH_RESET_L XTRA10} is SP_FLASH_MUX_SELECT Manual Override Headers Jumper required! Install between Pins 1 and 2 for SP mux control Install between Pins 2 and 3 for J5 jumper control QSPI Mux: NC=SP connection (IN1 + IN2 Low) NO=SP3 connection (IN1 + IN2 High) Install jumper to disable SPI_MUX outputs. Use dupont wire on pin2 for for ~{MUX_EN_L} control Install Jumper to force Mux to AMD (SP3) but only if J6 is Jumpered between pins 2 and 3 also. SP Connection Decoupling for Mux and Flash AMD (SP3) Connection Decoupling for ADG330BBCPZ Install jumper to disable SPI Level translator outputs. Use dupont wire on pin1 for for SP_TRANS_EN control Generate 1V8 from SP header's 3V3 input using an LDO

7
sym-lib-table Normal file
View File

@ -0,0 +1,7 @@
(sym_lib_table
(version 7)
(lib (name "oxide_spimux")(type "Legacy")(uri "${KIPRJMOD}/oxide_spimux.lib")(options "")(descr ""))
(lib (name "gimletlet-cache")(type "Legacy")(uri "${KIPRJMOD}/../gimletlet-2/gimletlet-cache.lib")(options "")(descr ""))
(lib (name "ignitionlet-cache")(type "Legacy")(uri "${KIPRJMOD}/../ignitionlet/ignitionlet-cache.lib")(options "")(descr ""))
(lib (name "spimux-rescue")(type "KiCad")(uri "${KIPRJMOD}/spimux-rescue.kicad_sym")(options "")(descr ""))
)