greatscottgadgets/luna

design r0.6

mossmann opened this issue · 7 comments

  • increase PCB size to accommodate future switch from 256 caBGA to 381 caBGA package
  • increase clearance around U8, U9, U11 (USB PHYs) to accommodate future switch from USB3343 to USB3320
  • rename Sideband port to "Control" and use as primary port for control of both FPGA and Apollo)
  • rename Host port to "Aux" for auxiliary functions including MitM
  • enhance Target-C PD/CC I/O with FUSB302B or similar Type-C controller
  • enhance Aux PD/CC I/O with FUSB302B or similar Type-C controller
  • connect shields of all USB connectors together
  • disconnect USB shields from GND except through ferrites or 0 ohm resistors (populated by default)
  • replace U1, U12, U13 (Target VBUS switches) with FET solution
  • add VBUS voltage and current monitoring for all USB ports
  • replace D1, D8 (5V diode OR) with FET solution
  • move HyperRAM to FPGA pins in a DQS group if possible for both 381 caBGA and 256 caBGA variants
  • increase clearance around U6 (microcontroller) to allow future replacement if necessary
  • restore 1.8 V supply as an assembly option, supporting either 1.8 V or 3.3 V HyperRAM
  • add pin straps for hardware version detection
  • increase LED spacing
  • add USB switch to Control port
  • improve microcontroller D+/D- routing/reference plane
  • remove Debug SPI test points
  • bigger and better mounting holes
  • add third button for SoC reset or general FPGA use
  • remove J5 (FPGA JTAG) if it is in the way
  • move Pmod connectors to the same side to support 24-pin Pmods
  • remove unpopulated SMA connectors
  • add FPGA->microcontroller interrupt signal
  • add mezzanine connector
  • add test points for DFU button
  • update layout with all of the above

Close this issue after validating the design and merging to main.

Can you add pin headers to target d- and d+ lines?

Can you add pin headers to target d- and d+ lines?

We're not going to be keen to do that, because those lines are used for high-speed differential data, and stubs are a problem for signal integrity. We already have some short stubs in the D+/D- passthrough to connect the target PHY, but they've been minimised as much as possible.

What would you want to do with headers on those pins? In the r0.6 layout there is already a connection for the FPGA to directly sense the target D+/D- signals via some resistors, so if you want to do additional monitoring of those pins, that can be done via the FPGA.

There are some cases when you need to put some extra circuit on these lines temporarily for example: https://www.huaweinewos.com/huawei-harmonyos-support-harmony-tp-cable.html
In this case you need to put two pull-ups on the data lines till the fastboot loads then you can remove them and use the usb as normal.

There are some cases when you need to put some extra circuit on these lines temporarily for example: https://www.huaweinewos.com/huawei-harmonyos-support-harmony-tp-cable.html In this case you need to put two pull-ups on the data lines till the fastboot loads then you can remove them and use the usb as normal.

We won't be adding a D+/D- pin header in r0.6 for the signal integrity reason @martinling mentioned and also due to lack of board area and time (we have already had r0.6 prototype PCBs made). Harmony TP interfacing will have to be done with an external cable or by soldering resistors to the through-hole TARGET A pins.

If you implement the USB communication with Cynthion (not a passthrough host), you could use the additional TARGET port as a place to plug in a small resistor circuit instead of using a special cable.

Design validation by hardware bring-up progress:

  • scope +3V3
  • scope +2V5
  • scope +1V1
  • scope 60 MHz clock
  • check idle current
  • SWD via J10
  • SWD via J6
  • RESET button
  • PROGRAM button
  • CONTROL USB switch
  • Apollo USB data
  • program FPGA via Apollo
  • debug LEDs
  • FPGA LEDs
  • interactive-test.py
  • bulk_in_speed_test.py on TARGET C
  • bulk_in_speed_test.py on AUX
  • CONTROL/AUX power input diode OR
  • CONTROL overvoltage shutoff
  • AUX overvoltage shutoff
  • TARGET C VBUS passthrough on/off
  • CONTROL VBUS passthrough on/off
  • AUX VBUS passthrough on/off
  • TARGET C VBUS passthrough on by default while powered off
  • TARGET C VBUS passthrough on by default while powered on
  • CONTROL VBUS passthrough off by default
  • AUX VBUS passthrough off by default
  • VBUS passthrough up to 21 V
  • VBUS passthrough up to 3 A
  • write to SPI flash
  • configure FPGA from flash
  • high speed USB data passthrough
  • bulk_in_speed_test.py on CONTROL
  • USER button
  • J10 power input
  • CONTROL CC Rd
  • TARGET C Type-C controller I2C
  • TARGET C CC I/O
  • TARGET C CC Rd while powered off
  • TARGET C CC Rd while powered on
  • TARGET C CC overvoltage shutoff
  • TARGET C SBU overvoltage shutoff
  • TARGET C SBU I/O
  • AUX Type-C controller I2C
  • AUX CC I/O
  • AUX CC Rd while powered off
  • AUX CC Rd while powered on
  • AUX C CC overvoltage shutoff
  • AUX C SBU overvoltage shutoff
  • AUX SBU I/O
  • power monitor I2C
  • CONTROL power monitor
  • AUX power monitor
  • TARGET A power monitor
  • TARGET C power monitor
  • CONTROL power input shutoff
  • AUX power input shutoff
  • PMOD A
  • PMOD B
  • MEZZANINE
  • USB analysis
  • CONTROL USB reset detection
  • TARGET D+/D- monitor
  • +3V3 current up to 1 A
  • hyperram_diagnostic.py
  • FPGA->MCU interrupt
  • TARGET A VBUS discharge

closing as this (and more) has been merged to: https://github.com/greatscottgadgets/cynthion-hardware