183 lines
7.0 KiB
Markdown
183 lines
7.0 KiB
Markdown
## 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信号和使能脉冲
|
||
|
||

|
||
|
||
### 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 KB,FPGA平台最大支持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=0(16个时钟周期的读出脉冲)|
|
||
|
||
完整码字值:`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脉冲来辅助示波器触发捕获。
|
||
```
|