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]; }