163 lines
6.4 KiB
Markdown
163 lines
6.4 KiB
Markdown
## 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`|
|