gokul/usb3-sd-hub

Engineering draft: four-layer, computer-powered USB 3 hub with one USB-C host socket, two USB-C and two USB-A accessory sockets, and a full-size SD slot. Board and three schematic previews are available. Routing and production checks are incomplete; not fabrication ready.

Version
0.1.5
License
MIT
Stars
0

sheets/HostAndPower.tsx

import { SchematicNote } from "../components/SchematicNote";
import { HubBypass } from "../components/Decoupling";
import { placementFor } from "../design/placement";
import { Coilcraft4020 } from "../components/ComponentFootprints";
import { UsbCReceptacle } from "../imports/UsbCReceptacle";
import { HD3SS3220RNHR } from "../imports/HD3SS3220RNHR";
import { TPS62160DSGR } from "../imports/TPS62160DSGR";
import { TPS2553DBVR } from "../imports/TPS2553DBVR";
import { SN74LVC2G04DBVR } from "../imports/SN74LVC2G04DBVR";
import { usbCPinLabels } from "../design/pinouts";
import { muxConnections, usbCConnections } from "../design/connections";
import { hubPowerPinLabels } from "../components/Controllers";
import { Passives, Indicator, type PassiveSpec } from "../components/Passives";
import { EsdBank } from "../components/EsdBank";

const parts: PassiveSpec[] = [
	{
		name: "C_HOST",
		kind: "capacitor",
		rating: "4.7uF",
		footprint: "0603",
		pcbX: -32,
		pcbY: 20,
		from: "VBUS_HOST",
		to: "GND",
	},
	{
		name: "C_VBUS",
		kind: "capacitor",
		rating: "10uF",
		footprint: "0805",
		pcbX: -28,
		pcbY: 24,
		from: "VBUS_HUB",
		to: "GND",
	},
	{
		name: "R_ILIM_BASE",
		kind: "resistor",
		rating: "22.1k",
		pcbX: -27,
		pcbY: 16,
		from: "INPUT_ILIM_BASE",
		to: "GND",
	},
	{
		name: "R_ILIM_MID",
		kind: "resistor",
		rating: "16.9k",
		pcbX: -29,
		pcbY: 16,
		from: "INPUT_ILIM_MID",
		to: "INPUT_ILIM_BASE",
	},
	{
		name: "R_ILIM_LOW",
		kind: "resistor",
		rating: "20k",
		pcbX: -31,
		pcbY: 16,
		from: "INPUT_ILIM",
		to: "INPUT_ILIM_MID",
	},
	{
		name: "R_INPUT_FAULT",
		kind: "resistor",
		rating: "10k",
		pcbX: -33,
		pcbY: 16,
		from: "VBUS_HOST",
		to: "INPUT_FAULT_N",
	},
	{
		name: "R_HOST_SPEED",
		kind: "resistor",
		rating: "200k",
		pcbX: -22,
		pcbY: 25,
		from: "VDD33",
		to: "HUB_HOST_TYPE0",
	},
	{
		name: "R_HOST_CURRENT",
		kind: "resistor",
		rating: "200k",
		pcbX: -22,
		pcbY: 23.5,
		from: "VDD33",
		to: "HOST_CURRENT_GE_1A5_N",
	},
	{
		name: "R_HOST_CURRENT3",
		kind: "resistor",
		rating: "200k",
		pcbX: -22,
		pcbY: 22,
		from: "VDD33",
		to: "HOST_CURRENT_3A_N",
	},
	{
		name: "R_HOST_DIR",
		kind: "resistor",
		rating: "200k",
		pcbX: -25,
		pcbY: 10,
		from: "VDD33",
		to: "UP_DIR",
	},
	{
		name: "R_UP_VSENSE",
		kind: "resistor",
		rating: "887k",
		pcbX: -29,
		pcbY: 10,
		from: "VBUS_HOST",
		to: "UP_VBUS_SENSE",
	},
	{
		name: "C_UP_33",
		kind: "capacitor",
		rating: "100nF",
		pcbX: -28,
		pcbY: 7.5,
		from: "VDD33",
		to: "GND",
	},
	{
		name: "C_UP_5",
		kind: "capacitor",
		rating: "100nF",
		pcbX: -30,
		pcbY: 7.5,
		from: "VBUS_HOST",
		to: "GND",
	},
	{
		name: "C_UP_TXP",
		kind: "capacitor",
		rating: "100nF",
		pcbRotation: 90,
		pcbX: -14,
		pcbY: 10,
		from: "UP_TXP",
		to: "UP_TXP_AC",
	},
	{
		name: "C_UP_TXN",
		kind: "capacitor",
		rating: "100nF",
		pcbRotation: 90,
		pcbX: -14,
		pcbY: 8.5,
		from: "UP_TXN",
		to: "UP_TXN_AC",
	},
	{
		name: "C_CORE_IN",
		kind: "capacitor",
		rating: "10uF",
		footprint: "0805",
		pcbX: -28,
		pcbY: 30,
		from: "VBUS_HUB",
		to: "GND",
	},
	{
		name: "L_CORE",
		kind: "inductor",
		rating: "2.2uH",
		footprint: <Coilcraft4020 />,
		manufacturerPartNumber: "XFL4020-222MEC",
		pcbX: -20,
		pcbY: 29,
		from: "CORE_SW",
		to: "VDD12",
	},
	{
		name: "C_CORE_OUT",
		kind: "capacitor",
		rating: "22uF",
		footprint: "0805",
		pcbX: -16,
		pcbY: 29,
		from: "VDD12",
		to: "GND",
	},
	{
		name: "R_CORE_FB1",
		kind: "resistor",
		rating: "100k",
		pcbX: -22,
		pcbY: 27,
		from: "VDD12",
		to: "CORE_FB",
	},
	{
		name: "R_CORE_FB2",
		kind: "resistor",
		rating: "200k",
		pcbX: -24,
		pcbY: 27,
		from: "CORE_FB",
		to: "GND",
	},
	{
		name: "R_CORE_PG",
		kind: "resistor",
		rating: "100k",
		pcbX: -26,
		pcbY: 27,
		from: "VBUS_HUB",
		to: "CORE_PG",
	},
	{
		name: "C_33_IN",
		kind: "capacitor",
		rating: "10uF",
		footprint: "0805",
		pcbX: -14,
		pcbY: 24,
		from: "VBUS_HUB",
		to: "GND",
	},
	{
		name: "L_33",
		kind: "inductor",
		rating: "2.2uH",
		footprint: <Coilcraft4020 />,
		manufacturerPartNumber: "XFL4020-222MEC",
		pcbX: -6,
		pcbY: 26,
		from: "VDD33_SW",
		to: "VDD33",
	},
	{
		name: "C_33_OUT",
		kind: "capacitor",
		rating: "22uF",
		footprint: "0805",
		pcbX: -2,
		pcbY: 26,
		from: "VDD33",
		to: "GND",
	},
	{
		name: "R_33_FB1",
		kind: "resistor",
		rating: "316k",
		pcbX: -8,
		pcbY: 23,
		from: "VDD33",
		to: "VDD33_FB",
	},
	{
		name: "R_33_FB2",
		kind: "resistor",
		rating: "100k",
		pcbX: -10,
		pcbY: 23,
		from: "VDD33_FB",
		to: "GND",
	},
	{
		name: "R_RESET",
		kind: "resistor",
		rating: "10k",
		pcbX: -12,
		pcbY: 19,
		from: "VDD33",
		to: "RESET_N",
	},
	{
		name: "C_RESET",
		kind: "capacitor",
		rating: "100nF",
		pcbX: -14,
		pcbY: 19,
		from: "VDD33",
		to: "GND",
	},
	{
		name: "R_HUB_BIAS",
		kind: "resistor",
		rating: "12k",
		pcbX: -10,
		pcbY: 13,
		from: "HUB_RBIAS",
		to: "GND",
	},
	{
		name: "R_HUB_CFG",
		kind: "resistor",
		rating: "200k",
		pcbX: -11,
		pcbY: 6,
		from: "HUB_CFG",
		to: "GND",
	},
	{
		name: "R_BC_DISABLE",
		kind: "resistor",
		rating: "200k",
		pcbX: 10,
		pcbY: 6,
		from: "HUB_SPI_MISO",
		to: "GND",
	},
	{
		name: "R_NON_REM",
		kind: "resistor",
		rating: "200k",
		pcbX: 10,
		pcbY: 4.5,
		from: "HUB_SPI_CS",
		to: "GND",
	},
	{
		name: "R_SMB_SDA",
		kind: "resistor",
		rating: "10k",
		pcbX: 10,
		pcbY: 3,
		from: "VDD33",
		to: "HUB_SMBDATA",
	},
	{
		name: "R_SMB_SCL",
		kind: "resistor",
		rating: "10k",
		pcbX: 10,
		pcbY: 1.5,
		from: "VDD33",
		to: "HUB_SMBCLK",
	},
	{
		name: "R_VBUS_DET1",
		kind: "resistor",
		rating: "100k",
		pcbX: -11,
		pcbY: 4.5,
		from: "VBUS_HOST",
		to: "HOST_VBUS_DET",
	},
	{
		name: "R_VBUS_DET2",
		kind: "resistor",
		rating: "200k",
		pcbX: -11,
		pcbY: 3,
		from: "HOST_VBUS_DET",
		to: "GND",
	},
	{
		name: "C_HUB_X1",
		kind: "capacitor",
		rating: "18pF",
		pcbX: -15,
		pcbY: 14,
		from: "HUB_XTALI",
		to: "GND",
	},
	{
		name: "C_HUB_X2",
		kind: "capacitor",
		rating: "18pF",
		pcbX: -19,
		pcbY: 14,
		from: "HUB_XTALO",
		to: "GND",
	},
	{
		name: "C_POWER_LOGIC",
		kind: "capacitor",
		rating: "100nF",
		pcbX: -18,
		pcbY: 21,
		from: "VDD33",
		to: "GND",
	},
];

export const HostAndPower = () => (
	<schematicsheet
		name="Host and Power"
		sheetIndex={0}
		sheetWidth="841mm"
		sheetHeight="594mm"
	>
		<group
			pcbAnchorAlignment="center"
			pcbX="0mm"
			pcbY="0mm"
			pcbLayout={{ layoutMode: "none" }}
			schAutoLayoutEnabled
		>
			<group
				pcbAnchorAlignment="center"
				pcbX="0mm"
				pcbY="0mm"
				pcbLayout={{ layoutMode: "none" }}
				schTitle="USB-C host, 5 Gbps; host-powered, no host charging"
				schGrid
				gridCols={3}
				gridGap={5}
			>
				<UsbCReceptacle
					name="J_HOST"
					manufacturerPartNumber="12401610E4#2A"
					pcbX={-38}
					pcbY={19}
					pcbRotation={-90}
					pinLabels={usbCPinLabels}
					connections={usbCConnections({ prefix: "UP", vbus: "VBUS_HOST" })}
				/>
				<HD3SS3220RNHR
					name="U_UP_MUX"
					pcbX={-25}
					pcbY={11}
					connections={muxConnections({
						prefix: "UP",
						source: "UP",
						upstream: true,
						vbus: "VBUS_HOST",
					})}
				/>
				<TPS2553DBVR
					name="U_INPUT_LIMIT"
					pcbX={-29}
					pcbY={20}
					connections={{
						IN: "net.VBUS_HOST",
						GND: "net.GND",
						EN: "net.VBUS_HOST",
						FAULT: "net.INPUT_FAULT_N",
						ILIM: "net.INPUT_ILIM",
						OUT: "net.VBUS_HUB",
					}}
				/>
				<SN74LVC2G04DBVR
					name="U_POWER_LOGIC"
					pcbX={-18}
					pcbY={24}
					connections={{
						pin1: "net.HUB_HOST_TYPE0",
						pin2: "net.GND",
						pin3: "net.HOST_CURRENT_GE_1A5_N",
						pin4: "net.HIGH_CURRENT",
						pin5: "net.VDD33",
						pin6: "net.SS_HOST",
					}}
				/>
				<chip
					name="Q_ILIM_SS"
					pinLabels={{ pin1: "gate", pin2: "source", pin3: "drain" }}
					pinAttributes={{
						pin1: { mustBeConnected: true },
						pin2: { mustBeConnected: true },
						pin3: { mustBeConnected: true },
					}}
					footprint="sot23"
					manufacturerPartNumber="2N7002-7-F"
					pcbX={-34}
					pcbY={25}
					connections={{
						gate: "net.SS_HOST",
						source: "net.INPUT_ILIM_MID",
						drain: "net.INPUT_ILIM",
					}}
					{...placementFor("Q_ILIM_SS")}
				>
					<SchematicNote
						text={
							"N-channel MOSFET; 60 V VDS\nILIM bypass; physical pins G1 S2 D3"
						}
					/>
				</chip>
				<chip
					name="Q_ILIM_CC"
					pinLabels={{ pin1: "gate", pin2: "source", pin3: "drain" }}
					pinAttributes={{
						pin1: { mustBeConnected: true },
						pin2: { mustBeConnected: true },
						pin3: { mustBeConnected: true },
					}}
					footprint="sot23"
					manufacturerPartNumber="2N7002-7-F"
					pcbX={-34}
					pcbY={29}
					connections={{
						gate: "net.HIGH_CURRENT",
						source: "net.INPUT_ILIM_BASE",
						drain: "net.INPUT_ILIM",
					}}
					{...placementFor("Q_ILIM_CC")}
				>
					<SchematicNote
						text={
							"N-channel MOSFET; 60 V VDS\nILIM bypass; physical pins G1 S2 D3"
						}
					/>
				</chip>
			</group>
			<group
				pcbAnchorAlignment="center"
				pcbX="0mm"
				pcbY="0mm"
				pcbLayout={{ layoutMode: "none" }}
				schTitle="Sequenced 1.2 V / 3.3 V supplies; 1 A each"
				schGrid
				gridCols={3}
				gridGap={5}
			>
				<TPS62160DSGR
					name="U_CORE_REG"
					pcbX={-24}
					pcbY={30}
					connections={{
						VIN: "net.VBUS_HUB",
						EN: "net.VBUS_HUB",
						PGND: "net.GND",
						AGND: "net.GND",
						PAD: "net.GND",
						FB: "net.CORE_FB",
						VOS: "net.VDD12",
						SW: "net.CORE_SW",
						PG: "net.CORE_PG",
					}}
				/>
				<TPS62160DSGR
					name="U_33_REG"
					pcbX={-10}
					pcbY={26}
					connections={{
						VIN: "net.VBUS_HUB",
						EN: "net.CORE_PG",
						PGND: "net.GND",
						AGND: "net.GND",
						PAD: "net.GND",
						FB: "net.VDD33_FB",
						VOS: "net.VDD33",
						SW: "net.VDD33_SW",
					}}
				/>
				<chip
					name="U_RESET"
					manufacturerPartNumber="TLV803EA29DBZR"
					footprint="sot23"
					pcbX={-12}
					pcbY={16}
					pinLabels={{ pin1: "GND", pin2: "RESET_N", pin3: "VDD" }}
					pinAttributes={{
						pin1: { requiresGround: true },
						pin3: { requiresPower: true, requiresVoltage: "3.3V" },
					}}
					connections={{
						GND: "net.GND",
						RESET_N: "net.RESET_N",
						VDD: "net.VDD33",
					}}
					{...placementFor("U_RESET")}
				>
					<SchematicNote
						text={"Supply supervisor\n2.9 V threshold; active-low reset"}
					/>
				</chip>
				<crystal
					name="Y_HUB"
					pinVariant="four_pin"
					frequency="25MHz"
					loadCapacitance="12pF"
					footprint="crystal_w3.2mm_h2.5mm_4pin"
					manufacturerPartNumber="ABM8-25.000MHZ-12-1-U-T"
					pcbX={-17}
					pcbY={11}
					connections={{
						pin1: "net.HUB_XTALI",
						pin2: "net.GND",
						pin3: "net.HUB_XTALO",
						pin4: "net.GND",
					}}
					{...placementFor("Y_HUB")}
				/>
				<schematicbox
					name="HUB_POWER"
					chipRef=".U_HUB"
					width={6}
					height={4.9}
					title="USB5816C power, clock and configuration"
					pinLabels={hubPowerPinLabels}
				/>
				<SchematicNote
					chipName="HUB_POWER"
					text={"USB5816C power / configuration\n1.2 V core; 3.3 V I/O; 25 MHz"}
				/>
				<chip
					name="U_HUB_FLASH"
					manufacturerPartNumber="W25Q16JVSSIQ"
					footprint="soic8"
					pcbX={15}
					pcbY={5}
					pinAttributes={{
						pin4: { requiresGround: true },
						pin8: {
							requiresPower: true,
							requiresVoltage: "3.3V",
							requiredVoltageTolerance: "10%",
						},
					}}
					pinLabels={{
						pin1: "CS",
						pin2: "DO",
						pin3: "WP",
						pin4: "GND",
						pin5: "DI",
						pin6: "CLK",
						pin7: "HOLD",
						pin8: "VCC",
					}}
					connections={{
						CS: "net.HUB_SPI_CS",
						DO: "net.HUB_SPI_MISO",
						WP: "net.VDD33",
						GND: "net.GND",
						DI: "net.HUB_SPI_MOSI",
						CLK: "net.HUB_SPI_CLK",
						HOLD: "net.VDD33",
						VCC: "net.VDD33",
					}}
					{...placementFor("U_HUB_FLASH")}
				>
					<SchematicNote
						text={"SPI configuration storage\n16 Mbit; 2.7–3.6 V supply"}
					/>
				</chip>
			</group>
			<Passives parts={parts} />
			<HubBypass />
			<EsdBank
				prefix="HOST"
				signals={[
					"UP_DP",
					"UP_DM",
					"UP_TX1P",
					"UP_TX1N",
					"UP_RX1P",
					"UP_RX1N",
					"UP_TX2P",
					"UP_TX2N",
					"UP_RX2P",
					"UP_RX2N",
					"UP_CC1",
					"UP_CC2",
				]}
				pcbX={-34}
				pcbY={12}
				vertical
			/>
			<Indicator name="LED_POWER" net="VDD33" pcbX={-24} pcbY={3} />
		</group>
	</schematicsheet>
);