1ea2bc64ac
The power mux's status output had no pull-up, which broke the USB current budget interlock. TPS2121 ST is an open-drain output; the datasheet lists RST = 6-20 kOhm under Recommended Operating Conditions, alongside RILM, so it is an external part. ST is driven low only while IN2 (the J3 external 5 V header) is sourcing OUT, and is high impedance whenever IN1 (the J7 USB-C input) is sourcing. U10 gate 2 inverts MUX_ST into EXT_SELECTED, and MAIN_EN = USB_3A_OK OR EXT_SELECTED enables the 15 A core buck. With MUX_ST floating on USB-C power, a drift low asserts MAIN_EN no matter what the TUSB320 advertised, so the board would try to bring up the core rail on a 500 mA port. Every other open-drain net here already has its pull-up (R7/R8, R30, R33/R34, R98/R104/R105/R106); this one was missed. R108 (10 k, VCC3V3_AUX -> MUX_ST) is appended at the end of design_data.py rather than beside the mux: reference designators are assigned in call order, so inserting it mid-file would renumber every later resistor and invalidate the routed board. Placed at (53.0, 101.6), 2.4 mm from the U10 gate it holds up, on a site checked clear of existing copper, and routed with close_remaining.py. Also corrects POWER_TREE.md, which credited PR1 for giving the external input priority. PR1 = GND actually *disables* priority mode; CP2 (tied to VCC3V3_AUX) is what selects IN2. Since CP2 derives from the mux's own output the behaviour is two-phase - highest-voltage wins at cold start, IN2 unconditionally once the aux rail is up - so with both inputs connected there can be one seamless switchover at startup. Documented, with the numbers: both eFuses UV 3.98 V / OV 5.80 V, ILIM 2.69 A (USB-C) and 4.04 A (header), mux OV 5.69 V / ILIM 4.5 A. The two inputs are never summed: both eFuses block reverse current and the mux bonds exactly one input at a time. board_routed.kicad_sch/.kicad_sym are now gitignored byte copies of the tracked schematic; kicad-cli needs them beside the board for --schematic-parity, and deleting them in the previous commit had silently disabled that check. Verified: ERC 0/0, DRC 0 violations, 0 unconnected, every net one copper group, schematic parity unchanged at the 402 pre-existing warnings. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012KaTmCCxCEW4awsmXRNT1d
150 lines
7.0 KiB
Markdown
150 lines
7.0 KiB
Markdown
# Güç ağacı, sıralama ve reset
|
||
|
||
## Giriş yolu
|
||
|
||
Kartta üç ayrı USB-C/güç konnektörü vardır ve hiçbiri birden fazla rolü
|
||
paylaşmaz: `J7` yalnızca USB-C güç girişidir, `J3` yalnızca harici 5 V güç
|
||
girişidir, `J1` ise yalnızca JTAG/UART debug portudur ve SYS5'i hiçbir zaman
|
||
beslemez.
|
||
|
||
```text
|
||
J7 USB-C VBUS -> U7 TPS259470A (2.69 A typ) -> USB5_PROT --+
|
||
+-> U9 TPS2121 -> SYS5
|
||
J3 EXT_5V ----> U8 TPS259470A (4.04 A typ) -> EXT5_PROT --+
|
||
|
||
J1 USB-C VBUS -> yalnızca yerel algılama (U5 VBUS_DET, FTDI_RESET_N bölücüsü);
|
||
SYS5'e veya herhangi bir eFuse'a bağlı değil.
|
||
```
|
||
|
||
Her iki eFuse yaklaşık 4.0 V UV (232k/100k) ve 5.8 V OV (383k/100k) eşiğine,
|
||
kontrollü output slew'a, fault test noktasına ve true reverse-current
|
||
blocking'e sahiptir. Akım limitleri: J7 USB-C yolu 2.69 A (R15 1.24k), J3
|
||
harici yolu 4.04 A (R20 825R). U9 4.5 A limitli power mux'tur (R25 22.1k);
|
||
kendi OV eşiği 5.69 V'tur (442k/100k).
|
||
|
||
**J7 ve J3 aynı anda bağlı olsa bile SYS5 her zaman tek bir kaynaktan
|
||
beslenir, ikisi asla toplanmaz.** Bunu iki bağımsız engel garanti eder: her
|
||
girişin kendi TPS259470A eFuse'unda true reverse-current blocking vardır, ve
|
||
TPS2121 sırt sırta FET'lerle her an yalnızca bir girişi OUT'a bağlar.
|
||
|
||
### Öncelik hangi pinden geliyor
|
||
|
||
`PR1` GND'ye bağlıdır ve bu, TPS2121'de priority modunu **kapatır** (veri
|
||
sayfası: "Connect to GND if not required"). Önceliği belirleyen pin `CP2`'dir
|
||
ve `VCC3V3_AUX`'a bağlıdır. Tablo 9-3'e göre `CP2 >= VREF` ve `PR1 < VREF`
|
||
iken çıkış **IN2**'dir, yani J3 harici girişi.
|
||
|
||
`CP2` mux'un kendi çıkışından türeyen bir raydan beslendiği için davranış iki
|
||
fazlıdır:
|
||
|
||
| Faz | CP2 | Seçim kuralı |
|
||
|---|---|---|
|
||
| Soğuk açılış (VCC3V3_AUX henüz yok) | 0 V | VCOMP: yüksek gerilimli giriş kazanır, eşitlikte IN2 |
|
||
| VCC3V3_AUX ayakta | 3.3 V | IN2 (harici 5 V) koşulsuz kazanır |
|
||
|
||
Yani ikisi de takılıyken ve soğuk açılışta USB-C daha yüksekse, VCC3V3_AUX
|
||
geldiği anda harici girişe bir switchover olur. TPS2121 tam olarak bunun için
|
||
tasarlanmıştır (seamless, tSW 100 us) ve SYS5'te 138 uF bulk vardır, dolayısıyla
|
||
zararsızdır. Harici girişin ilk andan itibaren koşulsuz kazanması istenirse
|
||
`CP2` `VCC3V3_AUX` yerine `EXT5_PROT`'tan sürülmelidir.
|
||
|
||
### ST pull-up (R108)
|
||
|
||
TPS2121 `ST` açık-drenç bir durum çıkışıdır ve veri sayfasının Recommended
|
||
Operating Conditions bölümünde `RST` = 6-20 kohm harici pull-up ister. `ST`
|
||
yalnızca IN2 çıkışı sürerken aktif olarak low'a çekilir; IN1 (USB-C) sürerken
|
||
yüksek empedanstır. U10'un ikinci kapısı `MUX_ST`'yi ters çevirip
|
||
`EXT_SELECTED` üretir ve `MAIN_EN = USB_3A_OK OR EXT_SELECTED` core buck'ı
|
||
açar. Pull-up olmadan USB-C ile beslenirken bu kapı girişi havada kalır; low'a
|
||
kayarsa TUSB320 ne ilan etmiş olursa olsun MAIN_EN kalkar ve kart 500 mA'lik
|
||
bir portta core rayını açmaya çalışır. `R108` 10k bunu VCC3V3_AUX'a çeker.
|
||
|
||
USB güç yolunda TUSB320 (U35, J7 üzerinde) CC ilanını decode eder ve
|
||
`TUSB_OUT1`/`TUSB_OUT2` üzerinden U10'a bildirir. `MAIN_EN`, yalnızca J7 3 A
|
||
ilan ettiğinde veya harici giriş gerçekten U9 tarafından seçildiğinde
|
||
yükselir. `VCC3V3_AUX` ise U12 üzerinden SYS5 var olduğu sürece
|
||
supervisor/debug mantığını besler.
|
||
|
||
J1'in kendi TUSB320'si (U5) yalnızca CC Rd terminasyonu ve UFP algılaması
|
||
için kalır; onun OUT1/OUT2 çıkışları artık hiçbir mantığı sürmez, çünkü J1
|
||
gücü hiçbir zaman SYS5'e taşımaz. J1'in VBUS pini yalnızca iki yerel bölücüyü
|
||
besler: U5'in `VBUS_DET` girişi ve FT4232H'nin self-powered
|
||
`FTDI_RESET_N` algılaması. Böylece FT4232H, J1'e gerçek bir USB host
|
||
takılmadığı sürece resette kalır; bu davranış J7 veya J3 üzerinden kart
|
||
güçlendirilmiş olsa bile değişmez.
|
||
|
||
## Ray üretimi
|
||
|
||
| Sıra | Ray | Regülatör | Nominal kapasite | Yükler |
|
||
|---:|---|---|---:|---|
|
||
| 0 | `VCC3V3_AUX` | U12 TPS7A2033 | 300 mA | TUSB320, FT4232H I/O/regülatör, EEPROM, supervisor ve reset mantığı |
|
||
| 1 | `VCC0V95` | U13 TPS6287B15 | 15 A sınıfı | Ti375 VCC/VCCA/VDD_SOC |
|
||
| 2 | `VCC1V8` | U14 TPS62867 | 6 A sınıfı | Ti375 VCCAUX/config/HSIO, QSPI, iki 1.8 V PMOD |
|
||
| 3 | `VCC3V3` | U15 TPS62867 | 6 A sınıfı | Ti375 HVIO, SCH16T, FTDI izolasyon bufferları, iki 3.3 V PMOD |
|
||
| 4 | `VCC3V0_RF` | U17 TPS7A2030 | 300 mA | MAX2771 RF/PLL/IF/VCO |
|
||
| 4 | `VCC3V0_DIG` | U18 TPS7A2030 | 300 mA | MAX2771 digital/ADC, Ti375 BR0/TR0 VCCIO |
|
||
| 4 | `VCC3V0_CLK` | U19 TPS7A2030 | 300 mA | 16.368 MHz ve 40 MHz osilatörler |
|
||
| bağımsız | `VCC3V3_ANT` | U20 TPS7A2033 | 300 mA | J5 3.3 V aktif anten seçeneği; U27 çıkışı 100 mA ile sınırlar |
|
||
|
||
Bu tablo regulator sınıfını gösterir. Toplam çıkış gücü `SYS5` giriş gücünü,
|
||
eFuse/mux limitini ve termal sınırı aşamaz.
|
||
|
||
## FPGA açılış sırası
|
||
|
||
1. `MAIN_EN`, U13 core buck'ı etkinleştirir.
|
||
2. 0.95 V regülasyona girince U13 `CORE_PG` yükselir.
|
||
3. `CORE_PG`, U16 LM3880'i başlatır.
|
||
4. `SEQ_FLAG1` U14'ü açar; `VCC1V8` oluşur ve U14 `PG_1V8` verir.
|
||
5. `SEQ_FLAG2` U15'i açar; `VCC3V3` oluşur ve U15 `PG_3V3` verir.
|
||
6. 3.3 V LDO'ları açarak üç 3.0 V rayını oluşturur.
|
||
7. U28 `VCC3V0_DIG > 2.79 V` gördükten sonra CT açık seçimiyle yaklaşık
|
||
20 ms bekler ve `FPGA_POWER_OK_N` bırakılır.
|
||
8. U34 aşağıdaki mantığı üretir:
|
||
|
||
```text
|
||
ALL_FPGA_POWER_OK = CORE_PG
|
||
AND PG_1V8
|
||
AND PG_3V3
|
||
AND FPGA_POWER_OK_N
|
||
AND SEQ_FLAG3
|
||
```
|
||
|
||
9. Sonuç doğru olunca U32 CRESET_N'i bırakır ve Q1 U29/U30 buffer OE'yi açar.
|
||
|
||
## Reset kaynakları
|
||
|
||
| Kaynak | Koşul | CRESET yolu |
|
||
|---|---|---|
|
||
| Power valid | `ALL_FPGA_POWER_OK=0` | U32 açık-drenç çıkış low |
|
||
| FTDI | BDBUS4 low | U31 açık-drenç çıkış low |
|
||
| Kart butonu | SW1 basılı | U33 açık-drenç çıkış low |
|
||
| Harici | J4 pin 1 GND'ye çekilir | 1k/4.7nF filtre, U33 açık-drenç output low |
|
||
|
||
CRESET_N üzerinde tek pull-up R35=10 kohm ile `VCC1V8`'adır. Hiçbir reset
|
||
sürücüsü high sürmez; dolayısıyla farklı power domain çıkışları çatışmaz.
|
||
Harici reset pini dry-contact/open-drain girişidir, harici bir gerilim kaynağı
|
||
değildir.
|
||
|
||
## Kapanış davranışı
|
||
|
||
Bir izlenen ray bozulduğunda ilgili PG düşer, U34 sonucu hemen düşük olur,
|
||
CRESET_N çekilir ve FTDI'nin FPGA'ya doğru sürücüleri high-Z yapılır. Bu yapı
|
||
yalnızca boot sırası için değil brown-out/back-power koruması için de kullanılır.
|
||
LM3880 power-down sırasında FLAG3→FLAG2→FLAG1 ters sırasını uygular.
|
||
|
||
## Ölçüm sırası
|
||
|
||
İlk enerjilemede akım limitli laboratuvar kaynağı kullanılmalı ve şu sıra
|
||
osiloskopla doğrulanmalıdır:
|
||
|
||
1. TP6 `SYS5` ve TP7 `VCC3V3_AUX`.
|
||
2. TP8 `VCC0V95`.
|
||
3. TP9 `VCC1V8`.
|
||
4. TP10 `VCC3V3`.
|
||
5. TP12 `VCC3V0_DIG`.
|
||
6. TP13 `FPGA_CRESET_N` ve TP14 `FPGA_CDONE`.
|
||
|
||
TP13, son rail valid olduktan yaklaşık 20 ms sonra yükselmelidir. Boot
|
||
tamamlandığında TP14 yükselmelidir. Gerçek inrush ve steady-state akımları
|
||
ölçülmeden PMOD veya aktif anten yükü bağlanmamalıdır.
|