2.5 KiB
2.5 KiB
ATSC ADRV9009 射频信号主链路
本文档按当前工程源码整理 FPGA 到激励器 RF 接口的实际信号路径。
射频信号主路径
flowchart TD
INPUT["TS 流 / 测试数据"] --> MOD["FPGA ATSC 8VSB 调制"]
MOD --> DPD["FPGA DPD 与 IQ 处理"]
DPD --> ROUTE["打开 FPGA IQ 路由<br/>FBROUTE = 0x10"]
ROUTE --> JESD_TX["FPGA JESD204B TX0<br/>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 衰减<br/>0~40000 mdB"]
TX_PATH -->|"TAL_TXOFF"| STOP1["芯片内部 TX 停止"]
ADRV_ATT --> HMC["HMC472 外部衰减<br/>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<br/>V1.0:0 dB<br/>V1.1:当前代码 +11 dB 补偿"] --> POWER
POWER --> SPLIT["衰减分配<br/>ADRV9009 优选约 8 dB<br/>其余优先分配给 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
三层射频开关
TALISE_radioOn():ADRV9009 ARM 进入 Radio On 状态。TALISE_setRxTxEnable(..., TAL_TX1):开启 ADRV9009 TX1 信号链。- 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 输出。