# ATSC ADRV9009 射频信号主链路
本文档按当前工程源码整理 FPGA 到激励器 RF 接口的实际信号路径。
## 射频信号主路径
```mermaid
flowchart TD
INPUT["TS 流 / 测试数据"] --> MOD["FPGA ATSC 8VSB 调制"]
MOD --> DPD["FPGA DPD 与 IQ 处理"]
DPD --> ROUTE["打开 FPGA IQ 路由
FBROUTE = 0x10"]
ROUTE --> JESD_TX["FPGA JESD204B TX0
2 Lane · Subclass 0 · 无 SYSREF"]
JESD_TX --> DEF["ADRV9009 JESD Deframer"]
DEF --> DAC["ADRV9009 TX1 DAC 与插值滤波"]
DAC --> MIX["正交调制 + RF PLL 上变频"]
MIX --> TX_PATH{"ADRV9009 TX1 通道使能?"}
TX_PATH -->|"TALISE_setRxTxEnable(..., TAL_TX1)"| ADRV_ATT["ADRV9009 TX 衰减
0~40000 mdB"]
TX_PATH -->|"TAL_TXOFF"| STOP1["芯片内部 TX 停止"]
ADRV_ATT --> HMC["HMC472 外部衰减
0~63,每步 0.5 dB"]
HMC --> RF_SW{"板级 RF 开关?"}
RF_SW -->|"FPGA seg1:0x26 = 1"| RF_OUT["激励器 RF 输出接口"]
RF_SW -->|"FPGA seg1:0x26 = 0"| STOP2["外部 RF 接口隔离"]
WE["当前频点 WE"] --> POWER["总衰减计算"]
LCD["LCD / 网页输出功率"] --> POWER
HW["HardwareVersion
V1.0:0 dB
V1.1:当前代码 +11 dB 补偿"] --> POWER
POWER --> SPLIT["衰减分配
ADRV9009 优选约 8 dB
其余优先分配给 HMC472"]
SPLIT --> ADRV_ATT
SPLIT --> HMC
MIX -. "TX1 → ORx1 内部映射" .-> ORX["ADRV9009 ORx1"]
ORX --> FRAMER["ADRV9009 JESD Framer B"]
FRAMER --> FPGA_FB["FPGA 反馈 IQ"]
FPGA_FB --> FAGC["ORx FAGC"]
FPGA_FB --> DPD_FB["DPD 反馈计算"]
FPGA_FB --> QUALITY["SNR / 左右带肩计算"]
FAGC -. "调节 ORx 增益" .-> ORX
DPD_FB -. "更新预失真参数" .-> DPD
```
## 三层射频开关
1. `TALISE_radioOn()`:ADRV9009 ARM 进入 Radio On 状态。
2. `TALISE_setRxTxEnable(..., TAL_TX1)`:开启 ADRV9009 TX1 信号链。
3. FPGA `seg1:0x26 = 1`:接通板级物理 RF 输出开关。
三层状态以及功率衰减配置均正确后,外部 RF 接口才会稳定输出射频。
## 关键源码入口
- `bsp/fpga.c::fpga_save_all_para()`:恢复 FPGA、RF、WE、DPD 等参数。
- `adrv9009/adrv9009_config.c::adrv9009_init()`:初始化 ADRV9009 与 JESD 链路。
- `adrv9009/jesd204b_config.c::jesd204b_tx0_cfg()`:配置 FPGA JESD204B TX0。
- `adrv9009/adrv9009_config.c::adrv9009_set_tx_path_enable()`:控制 ADRV9009 TX1。
- `bsp/fpga.c::fpga_save_power()`:计算并分配 ADRV9009/HMC472 衰减。
- `bsp/fpga.c::fpga_set_rf_output_with_para()`:控制最终板级 RF 输出。