digraph G {
newrank=true;
overlap=false;
splines=ortho;
node [shape=box fillcolor=white style=filled fontname="Inter" width=1 target="_top"];
edge [arrowsize="0.5"];
rankdir=TB;
fontname="Inter";
label=<
MNT Reform 2.0D-4 System Diagram
>;
labelloc="t";
rtc [label="Realtime\nClock" href="system.html#rtc"];
rtcbat [label="Coin Cell" href="system.html#rtc"];
subgraph cluster_som {
fontname="Inter";
color=lightgrey;
label=<
System on Module>;
labelloc="t";
margin="25.0";
style=filled;
subgraph cluster_soc {
fontname="Inter";
color=white;
label=<
System on Chip (i.MX8M)>;
labelloc="t";
margin="25.0";
dsi [label="MIPI DSI" href="system.html#mipi-dsi"];
hdmi [label="HDMI" href="system.html#hdmi"];
sai [label="SAI" href="system.html#sai"];
i2c0 [label="I2C 1" href="system.html#i2c"];
usb0 [label="USB3 Root 1" href="system.html#usb3"];
usb1 [label="USB3 Root 2" href="system.html#usb3"];
ddrc [label="DDRC" href="system.html#ddrc"];
sd1 [label="MMC/SD1" href="system.html#mmc"];
sd2 [label="MMC/SD2" href="system.html#mmc"];
uart1 [label="UART 2" href="system.html#uart"];
pcie0 [label="PCIe 1" href="system.html#pcie"];
pcie1 [label="PCIe 2" href="system.html#pcie"];
uart0 [label="UART 1" href="system.html#uart"];
//uart2 [label="UART 3"];
pwm [label="PWM" href="system.html#pwm"];
ethmac [label="ETH MAC" href="system.html#eth-mac"];
cpu0 [label="Cortex-A53" href="system.html#cortex-a53"];
cpu1 [label="Cortex-M4F" href="system.html#cortex-m4f"];
gpu [label="GPU GC7000L" href="system.html#gpu"];
i2c1 [label="I2C 2" href="system.html#i2c"];
spi1 [label="SPI" href="system.html#spi"];
}
ram [label="LPDDR4\nRAM 4GB" href="system.html#ddrc"];
emmc [label="eMMC\n~8GB" href="system.html#mmc"];
ethphy [label="ETH PHY" href="system.html#eth-phy"];
s5v [label="5V Input"];
}
hub [label="USB Hub" href="system.html#usb-hub"];
adac [label="DAC WM8960" href="system.html#dac"];
dsi2edp [label="DSI to eDP\nConverter" href="system.html#dsi2edp"];
subgraph cluster_headers {
fontname="Inter"
labelloc="b";
margin="25.0";
color=lightgrey;
style=filled;
label=<Internal Ports
>;
iuart0 [label="UART1" href="system.html#uart"];
iuart1 [label="UART2\nConsole" href="system.html#uart"];
iusb0 [label="IUSB1" href="system.html#usb3"];
iusb1 [label="IUSB2" href="system.html#usb3"];
impcie [label="mPCIe Slot" href="system.html#pcie"];
im2 [label="M.2 Slot\nKey M" href="system.html#pcie"];
}
subgraph cluster_power {
fontname="Inter"
label=<Power
>;
labelloc="b";
color=lightgrey;
style=filled;
margin="25.0";
subgraph cluster_system_control {
fontname="Inter"
label="System Control\n ";
labelloc="b";
color=white;
style=filled;
margin="25.0";
lpc [label="MCU LPC11U24" width=4 href="system.html#lpc"];
ina [label="Current &\nVoltage Monitor" href="system.html#ina"];
ltc [label="Buck/Boost\nDC-DC and Charger" href="system.html#ltc4020"];
mon [label="Cell Monitor\nBalancer" href="system.html#balancer"];
lspi [label="SPI" shape=diamond fillcolor=lightgrey href="system.html#spi"];
li2c [label="I2C" shape=diamond fillcolor=lightgrey href="system.html#i2c"];
cells [label="8x LiFePO4 18650 Batteries" shape=rectangle href="system.html#cells"];
supply [label="24V Power Supply\nfrom Barrel Jack" shape=rectangle href="system.html#barreljack"];
enabchg [label="Charge On" shape=diamond fillcolor=lightgrey href="system.html#lpc"];
enab5v [label="On" shape=diamond fillcolor=lightgrey href="system.html#lpc"];
enab3v3 [label="On" shape=diamond fillcolor=lightgrey href="system.html#lpc"];
}
subgraph cluster_power_rails {
fontname="Inter"
label="Power Rails\n ";
color=white;
style=filled;
margin="25.0";
r28v [label="~28V" shape=diamond fillcolor=lightgrey];
stby [label="3V3 Standby" href="system.html#standby"];
r5v [label="5V" width=1.1 href="system.html#r5v"];
r3v3 [label="3V3" href="system.html#r3v3"];
r1v2 [label="1V2" width=0.5 href="system.html#r1v2"];
r1v5 [label="1V5" width=0.5 href="system.html#r1v5"];
r1v8 [label="1V8" width=0.5 href="system.html#r1v8"];
}
}
subgraph cluster_ports {
fontname="Inter"
label=<External Ports
>;
labelloc="b";
margin="25.0";
color=lightgrey;
style=filled;
pusb3 [label="USB3 Port 3" href="system.html#usb3"];
pusb2 [label="USB3 Port 2" href="system.html#usb3"];
pusb1 [label="USB3 Port 1" href="system.html#usb3"];
pbarrel [label="Barrel Jack" href="system.html#barreljack"];
phdmi [label="HDMI Port" href="system.html#hdmi"];
psdcard [label="SD Card Slot" href="system.html#mmc"];
peth [label="1G Ethernet Port" href="system.html#eth-mac"];
paudio [label="Headphone &\nMic Jack" href="system.html#audiojack"];
}
lshift [label="Level Shifter" href="system.html#mmc"];
//refclk [label="PCIe Clock Generator"];
subgraph cluster_hmi {
fontname="Inter"
color=lightgrey;
style=filled;
label=<Human Machine Interface
>;
labelloc="b";
margin="25.0";
subgraph cluster_screen {
fontname="Inter"
color=white;
style=filled;
label="Screen Assembly\n ";
margin="25.0";
panel [label="12.5\" 1920x1080\nIPS Panel" href="system.html#panel"];
backlight [label="Backlight" href="system.html#panel"];
speakers [label="Stereo\nSpeakers" href="system.html#speakers"];
}
subgraph cluster_trackball {
fontname="Inter"
color=white;
style=filled;
label="Trackball\n ";
margin="25.0";
tmcu [label="MCU Atmega32U2" width=3 href="system.html#tbctrl"];
tsens [label="Motion Sensor" href="system.html#tbsensor"];
ti2c [label="I2C" shape=diamond fillcolor=lightgrey href="system.html#i2c"];
tgpio [label="GPIO" shape=diamond fillcolor=lightgrey href="system.html#tbctrl"];
tkeys [label="5 Buttons" href="system.html#kbkeys"];
}
subgraph cluster_keyboard {
fontname="Inter"
color=white;
style=filled;
label="Keyboard\n ";
margin="25.0";
kmcu [label="MCU Atmega32U4" width=3 href="system.html#kbctrl"];
oled [label="OLED Display 128x32" href="system.html#oled"];
ki2c [label="I2C" shape=diamond fillcolor=lightgrey href="system.html#i2c"];
kuart [label="UART" shape=diamond fillcolor=lightgrey href="system.html#kbctrl"];
kgpio [label="GPIO" shape=diamond fillcolor=lightgrey href="system.html#kbctrl"];
kkeys [label="Key Matrix" href="system.html#kbkeys"];
}
}
{ rank=same; ddrc, cpu0, cpu1, gpu }
{ rank=same; kmcu, tmcu, lpc, panel }
{ rank=same; ltc, mon, ina }
{ rank=same; enab5v, enab3v3, cells, supply }
{ rank=same; iusb0, iusb1, iuart0, iuart1, impcie, im2, paudio}
{ rank=same; usb0, usb1, ethphy, rtc, i2c1 }
{ rank=same; adac, dsi2edp }
{ rank=same; spi1, i2c0, pwm }
{ rank=same; hdmi, ethmac, emmc }
{ rank=same; peth, hub, pusb3 }
{ rank=same; phdmi, psdcard, pbarrel }
// power signals
lpc -> lspi -> mon [arrowhead=none];
lpc -> li2c -> ina [arrowhead=none];
lpc -> enabchg -> ltc;
mon -> cells [arrowhead=none];
ina -> cells [arrowhead=none];
ltc -> cells [arrowhead=none,color=red];
supply -> ltc [arrowhead=none,color=red];
lpc -> enab5v -> r5v;
lpc -> enab3v3 -> r3v3;
// power
r28v -> r5v [color=red];
r28v -> r3v3 [color=red];
r28v -> stby [color=red];
r5v -> r1v2 [color=red];
r5v -> r1v5 [color=red];
r3v3 -> r1v8 [color=red];
ltc -> r28v [color=red];
cells -> r28v [color=invis];
rtcbat -> rtc [arrowhead=none,color=red];
stby -> lpc [color=red,constraint=false];
stby -> kmcu [color=red,constraint=false];
// soc/som signals, external ports
usb1 -> hub [arrowhead=none];
hub -> pusb1 [arrowhead=none];
hub -> pusb2 [arrowhead=none];
usb0 -> pusb3 [arrowhead=none];
hdmi -> phdmi [arrowhead=none];
sd2 -> lshift -> psdcard [arrowhead=none];
ethmac -> ethphy -> peth [arrowhead=none];
sai -> adac [arrowhead=none];
ddrc -> ram [arrowhead=none];
sd1 -> emmc [arrowhead=none];
r5v -> s5v [color=red constraint=false];
// internal ports
pcie0 -> impcie [arrowhead=none];
pcie1 -> im2 [arrowhead=none];
uart0 -> iuart0 [arrowhead=none];
uart1 -> iuart1 [arrowhead=none];
hub -> iusb1 [arrowhead=none];
hub -> iusb0 [arrowhead=none];
iusb0 -> kmcu [arrowhead=none];
iusb1 -> tmcu [arrowhead=none];
// trackball internal signals
tmcu -> ti2c -> tsens [arrowhead=none];
tmcu -> tgpio -> tkeys [arrowhead=none];
// keyboard internal signals
kmcu -> ki2c -> oled [arrowhead=none];
kmcu -> kgpio -> kkeys [arrowhead=none];
kmcu -> kuart -> lpc [arrowhead=none];
i2c1 -> rtc [arrowhead=none];
i2c0 -> adac [arrowhead=none];
// uart2 -> lpc;
spi1 -> lpc [arrowhead=none,constraint=false];
// screen assembly
dsi -> dsi2edp;
dsi2edp -> panel;
panel -> backlight [arrowhead=none];
pwm -> backlight [constraint=false];
adac -> speakers [arrowhead=none,style=dashed];
adac -> paudio [arrowhead=none,style=dashed,constraint=false];
}