## 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](#a12-exc)): |模块|基地址|用途| |:-|:-|:-| |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](#52-寄存器功能定义)。 ### 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`|