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

183 lines
7.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 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全流程控制](../assets/readout_ri.png)
### 5.7.2. 步骤1加载波形数据到波形仓库
将预计算的基带波形采样点写入波形仓库SRAM
|参数|值|说明|
|:-|:-|:-|
|基带频率|1.2 GHz|$F_s = 6.7 - 5.5$ GHz|
|采样率|4 GSps (FPGA)|16采样点/时钟周期|
|波形长度|256 采样点|16个时钟周期FPGA$256 \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脉冲来辅助示波器触发捕获。
```