6.4 KiB
6.4 KiB
5.7. EXC-Pump通道全流程控制示例
本节通过一个完整的端到端示例说明EXC-Pump通道的编程配置流程。 示例基于 ASIC 平台(DAC 8 bit@6 Gsps,8 采样点/时钟周期),场景为输出一个 6.7 GHz 读出激励脉冲,同时触发 Pump 使能信号。
5.7.1. 端到端配置流程
EXC-Pump通道的工作流程如下:
| 阶段 | 操作 | 说明 |
|---|---|---|
| 初始化 | 加载波形数据、配置索引表、配置寄存器、配置上变频、配置Pump | 通过SPI写入,步骤1~5无先后顺序要求 |
| 初始化 | 加载MCU程序 | 写入MCU_INS,定义触发后要发出的码字 |
| 运行 | 外部触发 → MCU执行 → 产生码字 | 触发由其它硬件发出,MCU响应后执行程序并生成13位码字 |
| 运行 | 码字解码 → 波形输出 + Pump脉冲 | 硬件自动流水线执行,输出RF信号和使能脉冲 |
关键理解:
触发信号来自外部硬件(非MCU),MCU是被动响应方。
MCU 程序加载到 MCU_INS 后处于待命状态,收到触发后执行并生成码字。
初始化配置可在任意时刻通过 SPI 完成,只需在触发前生效即可。
5.7.2. 地址空间速查
以下配置基于EXC通道0(Exaddr=0),各模块基地址如下(完整地址映射见 附录A.1.2):
| 模块 | 基地址 | 用途 |
|---|---|---|
| MCU_INS | 0x00700000 |
MCU指令存储 |
| MCU_DAT | 0x00800000 |
MCU数据存储 |
| AWG_REG | 0x00900000 |
AWG控制寄存器 |
| AWG_IDX | 0x00A00000 |
波形索引表(256条 × 32位) |
| AWG_WVE | 0x00B00000 |
波形仓库(128 KB) |
| MIXER_REG | 0x00100000 |
混频板本振配置 |
| PUMP_REG | 0x00000000 |
Pump通道寄存器(ch0基址) |
5.7.3. 步骤1:加载波形数据
将预计算的基带波形采样点写入 AWG_WVE:
| 参数 | 值 | 说明 |
|---|---|---|
| 基带频率 | 1.2 GHz | F_{baseband} = 6.7 - 5.5 GHz |
| 波形长度 | 256 采样点 | ASIC: 32 cycles × 8 samples/cycle |
| 写入地址 | 0x00B00000 起 |
AWG_WVE 基地址,连续写入 256 × 16 bit |
ASIC 平台每时钟周期 8 个采样点(6 Gsps),采样点个数需为 8 的整数倍。
FPGA 平台每时钟周期 16 个采样点(4 Gsps),采样点个数需为 16 的整数倍。
每个采样点为 16 位有符号整数(二进制补码),大端字节序。
波形仓库总容量 128 KB。
5.7.4. 步骤2:配置波形索引表
在 AWG_IDX 中建立波形ID到存储参数的映射(深度256条,每条32位):
| WAVE_ID | AWG_IDX地址 | addr [31:16] | len [15:0] | 说明 |
|---|---|---|---|---|
| 0 | 0x00A00000 |
0x0000 |
0x0020 |
起始地址 0x0000,长度 32 cycles |
| 1 | 0x00A00004 |
0x0020 |
0x0010 |
起始地址 0x0020,长度 16 cycles |
addr 和 len 均以时钟周期为单位。
AWG_IDX 每条目占用 4 字节,WAVE_ID=N 的地址 = 0x00A00000 + N × 4。
5.7.5. 步骤3:配置EXC寄存器
通过SPI写AWG控制寄存器(基带直出NRZ模式):
| 地址 | 寄存器 | 字段 | 值 | 说明 |
|---|---|---|---|---|
0x00900034 |
amplitude | acw [31:16] | 16384 |
归一化幅度 16384 / 2^{14} = 1 |
0x00900038 |
frequency | fcw [31:0] | 0 |
基带直出模式NCO不生效 |
0x0090003C |
phase | pcw [31:16] | 0 |
基带直出模式NCO不生效 |
0x00900044 |
func_ctrl | awg_mode [1:0] | 0(直出) |
原始波形不经调制 |
0x00900044 |
func_ctrl | mix_mode [2] | 0(基带) |
使用外部模拟混频 |
0x00900044 |
func_ctrl | intp_sel [3] | 0(邻近插值) |
ASIC 可设为 1 使用半带插值优化平坦度 |
0x00900048 |
pump_ctrl | delay [31:16] | 2 |
Pump 脉冲延迟(单位时钟周期) |
0x00900048 |
pump_ctrl | width [15:0] | 32 |
Pump 脉冲持续宽度(与波形长度对齐) |
若需正交调制模式(如扫频应用),将
awg_mode设为1(调制),并配置frequency和phase。详见 §5.2。
5.7.6. 步骤4:配置上变频
通过SPI写混频板本振频率寄存器:
| 地址 | 寄存器 | 字段 | 值 | 说明 |
|---|---|---|---|---|
0x00100000 |
lo_freq | fcw [31:0] | 5_500_000 |
本振 5.5 GHz,单位 kHz |
同一混频板4个通道共享本振。输出频率 = 基带频率 + 本振频率 = 6.7 GHz。
5.7.7. 步骤5:配置Pump
配置泵浦板寄存器(ch0基址 0x00000000):
| 地址 | 寄存器 | 字段 | 值 | 说明 |
|---|---|---|---|---|
0x00200000 |
pump_freq | pump_freq [31:0] | 7_800_000 |
Pump 频率 7.8 GHz,单位 kHz |
0x00300000 |
pump_power | pump_power [31:0] | -600 |
功率设定(具体映射取决于硬件校准) |
0x00400000 |
pump_enable | pump_enable [31:0] | 32'h11 |
硬件级使能(32'h00 = 关闭) |
pump_enable = 32'h11 为硬件级使能,配置后方可响应码字 PUMP_EN 位。
pump_enable = 32'h00 时,无论码字如何设置,Pump 均无输出。
5.7.8. 步骤6:MCU程序与触发
MCU程序加载到 MCU_INS(0x00700000),触发后MCU执行程序并生成13位码字。
触发信号由外部硬件发出,MCU响应后自动执行。
场景A:同时输出波形和Pump脉冲
| 位段 | 字段名 | 值 | 说明 |
|---|---|---|---|
| [12] | PULSE_ONLY | 0 |
正常输出波形 |
| [11] | PARAMETER_SEL | 0 |
波形索引来自查找表 |
| [10] | NCO_CLR_EN | 0 |
不复位NCO |
| [9] | MARK_EN | 0 |
不触发Marker |
| [8] | PUMP_EN | 1 |
触发Pump脉冲 |
| [7:0] | WAVE_ID | 0 |
索引波形ID=0(32 cycles 读出脉冲) |
完整码字值:0x0100
场景B:仅输出Pump脉冲(无波形)
| 位段 | 字段名 | 值 | 说明 |
|---|---|---|---|
| [12] | PULSE_ONLY | 1 |
禁用波形输出 |
| [11:9] | — | 0 |
— |
| [8] | PUMP_EN | 1 |
触发Pump脉冲 |
| [7:0] | WAVE_ID | 0 |
被忽略(PULSE_ONLY=1) |
完整码字值:0x1100
注意事项:
1. 连续触发时需确保前一码字的波形输出完成,否则波形索引表可能被覆盖。
2. 调试阶段建议使用 MARK_EN 触发Marker脉冲辅助示波器触发捕获。
3. 码字字段定义详见 [§5.1](#51-码字功能定义),具体 MCU 指令编程参见《量子编程指令集》。
5.7.9. 配置清单汇总
| 步骤 | 地址 | 寄存器 | 关键字段 | 值 |
|---|---|---|---|---|
| 1 | 0x00B00000 |
AWG_WVE | 波形采样点 | 256 × 16 bit |
| 2 | 0x00A00000 |
AWG_IDX[0] | addr / len | 0x0000 / 0x0020 |
| 3 | 0x00900034 |
amplitude | acw | 8192 |
| 3 | 0x00900038 |
frequency | fcw | 0 |
| 3 | 0x0090003C |
phase | pcw | 0 |
| 3 | 0x00900044 |
func_ctrl | awg_mode, mix_mode, intp_sel | 0x0 |
| 3 | 0x00900048 |
pump_ctrl | delay / width | 2 / 32 |
| 4 | 0x00100000 |
lo_freq | fcw | 5_500_000 |
| 5 | 0x00200000 |
pump_freq | pump_freq | 7_800_000 |
| 5 | 0x00300000 |
pump_power | pump_power | -600 |
| 5 | 0x00400000 |
pump_enable | pump_enable | 32'h11 |
| 6 | 0x00700000 |
MCU_INS | MCU程序 | 产生码字 0x0100 |