readout_program/chapters/05-07-exc-pipeline-demo.md

7.0 KiB
Raw Blame History

5.7. EXC-Pump通道全流程控制示例

本节通过一个完整的示例演示EXC-Pump通道从码字生成到激励信号与Pump信号输出的全流程编程控制。 示例场景输出一个6.7 GHz读出激励脉冲同时触发Pump使能信号。

5.7.1. 流程总览

EXC-Pump通道全流程包含以下步骤

  1. 加载波形数据 — 将波形采样点写入波形仓库
  2. 配置波形索引表 — 建立波形ID到地址/长度的映射
  3. 配置EXC寄存器 — 设置NCO参数、幅度、工作模式
  4. 配置上变频电路 — 设置混频板本振频率
  5. 配置Pump模拟电路 — 设置Pump频率、功率
  6. 生成并发送码字 — MCU发出波形触发码字 + Pump使能
  7. 输出激励信号与Pump脉冲 — 硬件执行输出RF信号和使能脉冲

EXC-Pump全流程控制

5.7.2. 步骤1加载波形数据到波形仓库

将预计算的基带波形采样点写入波形仓库SRAM

参数 说明
基带频率 1.2 GHz F_s = 6.7 - 5.5 GHz
采样率 4 GSps (FPGA) 16采样点/时钟周期
波形长度 256 采样点 16个时钟周期FPGA256 \times 250\text{ps} = 64\text{ns}
起始地址 0x0000 波形仓库中的偏移地址

波形采样点数据示例16位有符号整数大端字节序

地址 0x0000: 0x0000, 0x0C8C, 0x18C8, 0x2400, ...  (共256个采样点)
ASIC平台下每个时钟周期对应8个采样点采样点个数需为8的整数倍。
FPGA平台下每个时钟周期对应16个采样点采样点个数需为16的整数倍。
波形仓库总容量128 KBFPGA平台最大支持16 μs输出ASIC平台最大支持10 μs输出。

5.7.3. 步骤2配置波形索引表

在波形索引表LUT中建立波形ID到波形参数的映射

波形ID (WAVE_ID) addr (高16位) len (低16位) 说明
0 0x0000 0x0010 起始地址0x0000长度16个时钟周期
1 0x0010 0x0008 起始地址0x0010长度8个时钟周期
波形索引表深度256条1 kB每条目录宽32位。
addr 和 len 均以时钟周期为单位。
通过切换 WAVE_ID 可以在不同波形之间快速切换。

5.7.4. 步骤3配置EXC寄存器

配置AWG模块寄存器通过SPI或MCU写入

寄存器 说明
amplitude acw = 8192 归一化幅度 8192 / 2^{16} \approx 0.125
frequency fcw = 0 NCO频率控制字基带直出模式NCO不生效
phase pcw = 0 NCO相位控制字基带直出模式不生效
function 0x0 (INTP_SEL=0, MIX_MODE=0, AWG_MODE=00) 基带直出模式NRZ
function 寄存器模式选择:
  [3] INTP_SEL=0: 邻近插值FPGA平台仅支持此模式
  [2] MIX_MODE=0:  基带模式(使用外部模拟混频)
  [1:0] AWG_MODE=00: 直出模式(原始波形不经调制)

若需要使用正交调制模式(扫频应用),配置如下:

寄存器 说明
amplitude acw = 16384 归一化幅度 0.25
frequency fcw = F_{mod} / F_s \times 2^{32} 调制频率控制字
phase pcw = 0 初始相位 0
function 0x1 (INTP_SEL=0, MIX_MODE=0, AWG_MODE=01) 正交调制模式

5.7.5. 步骤4配置上变频电路

设置混频板本振频率:

配置项 说明
lo_freq 5_500_000 本振频率 5.5 GHz单位 kHz
同一个混频板上4个通道共享同一个本振信号。
输出频率 = 基带频率 + 本振频率。
本例: 1.2 GHz + 5.5 GHz = 6.7 GHz。

5.7.6. 步骤5配置Pump模拟电路

配置Pump通道输出参数

配置项 说明
pump_freq 7_800_000 Pump信号频率 7.8 GHz单位 kHz
pump_power -600 Pump信号功率具体映射关系取决于硬件校准
pump_enable 0x11 Pump输出使能需先配置再使能否则输出无效
Pump信号为连续波单音信号其开关由MCU码字的PUMP_EN比特实时控制。
pump_enable = 0x11 为硬件级使能配置后方可响应PUMP_EN码字位。
pump_enable = 0x00 时无论码字如何设置Pump均无输出。

5.7.7. 步骤6生成并发送码字

MCU生成码字同时触发波形输出和Pump脉冲

场景A同时输出波形和Pump脉冲

码字位段 字段名 配置值 说明
[12] PULSE_ONLY 0 正常输出波形
[11] PARAMETER_SEL 0 波形索引来自查找表WAVE_ID
[10] NCO_CLR_EN 0 不复位NCO
[9] MARK_EN 0 不触发Marker脉冲
[8] PUMP_EN 1 触发Pump脉冲输出
[7:0] WAVE_ID 0 索引波形ID=016个时钟周期的读出脉冲

完整码字值:0x0100

场景B仅输出Pump脉冲不输出波形

码字位段 字段名 配置值 说明
[12] PULSE_ONLY 1 禁用波形输出
[11:9] - 0
[8] PUMP_EN 1 触发Pump脉冲输出
[7:0] WAVE_ID 0 波形索引PULSE_ONLY=1时被忽略

完整码字值:0x1100

PUMP_EN 触发后Pump使能脉冲由 pump_ctrl 寄存器的延迟和持续参数控制:
  - 高16位延迟: 脉冲在码字解码后延迟N个时钟周期开始
  - 低16位持续: 脉冲持续M个时钟周期
将延迟和持续设为相同值可实现"跟随波形长度"的效果。

5.7.8. 步骤7硬件执行与输出

码字解码后,硬件按以下流水线执行:

  1. T0: MCU 发出码字 0x0100
  2. T0 + 1 cycle: 码字解码 — WAVE_ID=0 索引波形索引表 → 获取 addr=0x0000, len=16
  3. T0 + 2 cycle: 波形仓库从 addr=0x0000 开始读取,持续 len=16 个时钟周期
  4. T0 + 2~17 cycles: 原始波形数据流经模式选择器直出模式旁路希尔伯特和NCO
  5. T0 + 3 cycle: 幅度调制 → 半带插值FPGA旁路→ MIX模块基带模式旁路→ DAC
  6. T0 + 4 cycle: Pump脉冲开始输出假设pump_ctrl延迟=2
  7. T0 + 18 cycle: 波形输出完成
  8. T0 + 20 cycle: Pump脉冲结束假设pump_ctrl持续=16

最终射频输出基带波形经DAC转换后通过混频板与本振(5.5 GHz)模拟混频产生6.7 GHz读出激励信号。

5.7.9. 时序图

CLK    : _/‾\_/‾\_/‾\_/‾\_/‾\_/‾\_/‾\_/‾\_/‾\_/‾\_/‾\_/‾\_/‾\_/‾\_/‾\_/‾\_/‾\_/‾\_/‾\_
码字    : ___/────────‾‾‾‾‾‾‾‾\_______________________________________________
WAVE_ID: ___/────0────\_____________________________________________________
波形输出: _____________/─────── 16 cycles 波形 ──────\_______________________
Pump脉冲: ______________________/─ delay ─\_________/─ 持续 ─\_____________
RF_OUT : _______________________/──── 6.7 GHz 激励脉冲 ────\________________
注意事项:
1. Pump使能脉冲的延迟参数需确保与波形输出上升沿对齐。
2. 多个码字连续发送时,需确保前一码字的波形输出完成后再发下一码字,
   否则波形索引表可能被覆盖导致输出异常。
3. 调试阶段建议使用 MARK_EN 触发Marker脉冲来辅助示波器触发捕获。