补充内容

This commit is contained in:
guocheng 2026-07-28 15:50:19 +08:00
parent f54914c53c
commit 37ba99c570
5 changed files with 321 additions and 236 deletions

View File

@ -7,18 +7,50 @@
### 4.4.1. 读出参数存储
系数计算模式下匹配滤波器的系数由DDS生成的载波乘以权重参数得到。
DAQ_PAR 模块(基地址 `0x00500000`,总容量 32 KB存储解模所需的全部参数
每个量子比特独占 2 KB 子空间(控制区 512 B + 权重区 1536 B
- 载波的频率和相位由dds_pfd控制其高20为作为频率控制字低12位作为相位控制字。
- 权重参数的选择由mtf_idx控制其高16位作为地址低16位作为长度。
- mtf_idx索引得到的权重数据颗粒度是权重样本点一个样本点可对应多个周期采样点
- 寄存器dds_pfw_q 和mtf_idx_q 的详细定义与查找表中定义保持相同。
$$ \text{Qubit }N\text{ DAQ\_PAR 基地址} = \mathtt{0x00500000} + N \times \mathtt{0x800},\quad N = 0,1,\ldots,15 $$
读出系统的的读出参数存储格式如下图所示。
FPGA平台下的系数直读模式只使用`Ctrl`部分中的数据,并忽略`dds_pfw`控制字.
**控制区**(每比特偏移 0x000 ~ 0x1FF共 512 字节)
控制区最多支持 16 组参数PARA_ID = 0~15每组占用 8 个 32 位寄存器32 字节),
各组基地址 = Qubit 基地址 + PARA_ID × `0x20`
每组包含以下 8 个寄存器:
|组内偏移|寄存器|位段|说明|
|:-|:-|:-|:-|
|`0x00`|dds_fpw|[31:12] fcw|解模载波频率控制字:$F_c = fcw / 2^{20} \times F_s$|
|^|^|[11:0] pcw|解模载波相位控制字:$\phi_c = pcw / 2^{12} \times 2\pi$|
|`0x04`|mtf_idx|[31:16] addr|权重数据起始地址(单位:时钟周期|
|^|^|[15:0] len|权重数据样本长度(单位:时钟周期)|
|`0x08`|line0_ab|[31:16] a0|直线0 斜率系数 a16位有符号数|
|^|^|[15:0] b0|直线0 斜率系数 b16位有符号数|
|`0x0C`|line0_c|[31:0] c0|直线0 截距系数 c32位有符号数|
|`0x10`|line1_ab|[31:16] a1|直线1 斜率系数 a|
|^|^|[15:0] b1|直线1 斜率系数 b|
|`0x14`|line1_c|[31:0] c1|直线1 截距系数 c|
|`0x18`|line2_ab|[31:16] a2|直线2 斜率系数 a|
|^|^|[15:0] b2|直线2 斜率系数 b|
|`0x1C`|line2_c|[31:0] c2|直线2 截距系数 c|
> 三组直线方程用于三态判断,将 IQ 平面划分为三个区间。判定公式:$a \times I < c \times 2^4 - b \times Q$。三条直线的交点应重合于一点否则产生错误态3态)。详见 [§4.5.3](#453-采集态数据)
**权重区**(每比特偏移 0x200 起,共 1536 字节)
权重区存储匹配滤波器权重系数,最大 1536 个 8 位有符号系数I 路和 Q 路权重分开存储。
详细布局见下方存储格式图。
- 系数的粒度由 `func_ctrl.step_ctrl` 控制,一个权重样本点可对应 1/2/4/8/16 个时钟周期采样点;
- 权重数据由 `mtf_idx` 中的 addr 和 len 字段索引。
**读出参数存储格式**如下图所示。
![读出参数存储格式](../assets/readout_para.png)
> 系数计算模式ASIC匹配滤波器系数 = DDS 载波 × 权重参数。FPGA 平台使用系数直读模式,仅使用 `Ctrl` 部分mtf_idx索引 DAQ_FLT`0x00580000`)中预存储的匹配滤波器系数,忽略 dds_fpw 控制字。
### 4.4.2. 匹配滤波器系数
ez-Q 2.5 FPGA平台使用系数直读模式其需要额外的存储空间来配置匹配滤波器系数。

View File

@ -46,9 +46,40 @@ $$
### 4.5.3. 采集态数据
#### 态判断计算
态判断利用解模IQ数据通过三组直线方程将 IQ 平面划分为三个区域,判定量子比特状态。
三组直线方程定义在 DAQ_PAR 参数区(见 [§4.4.1](#441-读出参数存储)
每组包含三个系数a, b, c直线方程为 $ax + by = c$
其中 a、b 为 16 位有符号数c 为 32 位有符号数I、Q 为 20 位截位后的解模结果。
对于每条直线,位置判定公式为:
$$
compare[i] = (a_i \times I < c_i \times 2^4 - b_i \times Q),\quad i = 0, 1, 2
$$
得到三条直线的位置判定结果后,通过优先级电路确定态信息:
|优先级|态值|判定条件|
|:-|:-|:-|
|1|0|compare[0] = 1 且 compare[1] = 0|
|2|1|compare[1] = 1 且 compare[2] = 0|
|3|2|compare[2] = 1 且 compare[0] = 0|
|—|3错误态|其它情况|
```
三态判断要求三条直线交于同一点,否则 IQ 平面被划分为 4 个以上区域,
部分 IQ 点将落入未定义区域产生错误态3态
仅需两态判断时,设置 func_ctrl.TWO_STA_EN = 1仅使用一组直线方程。
```
#### 态数据存储格式
* 1个完整数据包含16个qubit态信息4字节
* 每个量子比特态信息用2个比特表示
* 高位表示高序号即32比特对应{q15,q14,...,q0};
* 高位表示高序号即32比特对应 {q15, q14, ..., q0}
### 4.5.4. 采态计数数据

View File

@ -1,109 +1,154 @@
## 4.6. ACQ通道全流程控制示例
本节通过一个完整的示例演示ACQ通道从码字生成到采集数据获取的全流程编程控制
示例场景:对2个量子比特q0, q1执行单次读出采集解模IQ数据。
本节通过一个完整的端到端示例说明ACQ通道的编程配置流程
示例基于 **ASIC 平台**ADC 8 bit@6 Gsps场景为对2个量子比特q0, q1执行单次读出采集解模IQ数据。
### 4.6.1. 流程总览
### 4.6.1. 端到端配置流程
ACQ通道读出全流程包含以下步骤
ACQ通道的工作流程如下
1. **配置模拟前端** — 设置下变频本振频率
2. **加载解模参数** — 配置匹配滤波器权重和DDS参数查找表
3. **配置ACQ寄存器** — 设置解模频率/相位/缩放等控制参数
4. **生成并发送码字** — MCU发出采集触发码字
5. **接收处理数据** — 固件打包上传上位机解帧获取IQ数据
![ACQ全流程控制](../assets/readout_ro.png)
### 4.6.2. 步骤1配置模拟前端
配置混频板下变频本振频率,将射频信号转换到中频:
|配置项|值|说明|
|阶段|操作|说明|
|:-|:-|:-|
|lo_freq|5_500_000|本振频率 5.5 GHz单位 kHz|
|初始化|配置模拟前端、解模参数、ACQ寄存器|通过SPI写入步骤1~3无先后顺序要求|
|初始化|加载MCU程序|写入MCU_INS定义触发后要发出的码字|
|运行|外部触发 → MCU执行 → 产生码字|触发由其它硬件发出MCU响应后执行程序并生成32位码字|
|运行|码字解码 → 采集 → 解模 → 推送数据|硬件自动流水线执行|
|运行|上位机接收数据|从 `rslt_push` 接口读取并解帧|
```
本振频率需根据目标量子比特频率确定。
例如量子比特频率为 6.7 GHz则下变频后中频为 1.2 GHz。
关键理解:
触发信号来自外部硬件非MCUMCU是被动响应方。
MCU 程序加载到 MCU_INS 后处于待命状态,收到触发后执行并生成码字。
初始化配置可在任意时刻通过 SPI 完成,只需在触发前生效即可。
```
### 4.6.3. 步骤2加载解模参数
### 4.6.2. 地址空间速查
将解模参数匹配滤波器权重、DDS频率/相位控制字)写入参数查找表。
本例配置2组参数对应2个量子比特
以下配置基于ACQ通道0Exaddr=0各模块基地址如下完整地址映射见 [附录A.1.1](#a11-acq)
**权重数据(匹配滤波器系数)**
|模块|基地址|用途|
|:-|:-|:-|
|MCU_INS|`0x00200000`|MCU指令存储|
|MCU_DAT|`0x00300000`|MCU数据存储|
|DAQ_REG|`0x00400000`|DAQ控制寄存器|
|DAQ_PAR|`0x00500000` + N×`0x800`|解模参数查找表(每比特 2 KBN = qubit 序号)|
|MIXER_REG|`0x00100000`|混频板本振配置|
|参数索引|目标比特|权重长度|iw示例 |qw示例 |
> FPGA 平台额外使用 DAQ_FLT`0x00580000`存储匹配滤波器系数系数直读模式。ASIC 平台使用系数计算模式,无需此项。
### 4.6.3. 步骤1配置模拟前端
通过SPI写混频板本振频率寄存器
|地址|寄存器|字段|值|说明|
|:-|:-|:-|:-|:-|
|0|q0|128 采样点|`cos(ω·t)` 包络采样|`sin(ω·t)` 包络采样|
|1|q1|128 采样点|`cos(ω·t)` 包络采样|`sin(ω·t)` 包络采样|
|`0x00100000`|lo_freq|fcw [31:0]|`5_500_000`|本振 5.5 GHz单位 kHz|
**DDS参数频率/相位控制字)**
本振频率根据目标量子比特频率确定:中频 = 量子比特频率 本振频率。同一混频板4个通道共享本振。
|参数索引|fcw (频率控制字)|pcw (相位控制字)|scale|
|:-|:-|:-|:-|
|0|`fcw_q0` = $F_{if} / F_s \times 2^{32}$|0|1|
|1|`fcw_q1` = $F_{if} / F_s \times 2^{32}$|0|1|
### 4.6.4. 步骤2加载解模参数
DAQ_PAR 每比特独占 2 KB 子空间q0 基地址 = `0x00500000`q1 基地址 = `0x00500800`),详见 [§4.4.1](#441-读出参数存储)。
**控制区配置**(每组 8 × 32 bit = 32 字节PARA_ID 对应基地址 = Qubit 基地址 + PARA_ID × `0x20`
配置 q0 和 q1 各一组参数(均使用 PARA_ID=0
|地址|寄存器|字段|值|说明|
|:-|:-|:-|:-|:-|
|`0x00500000`|dds_fpw|fcw [31:12]|$\lfloor F_{if} / F_s \times 2^{20} \rfloor$|q0 解模频率控制字|
|^|^|pcw [11:0]|`0`|q0 解模相位控制字|
|`0x00500004`|mtf_idx|addr [31:16]|`0`|q0 权重起始地址(单位:时钟周期)|
|^|^|len [15:0]|`16`|q0 权重长度 16 时钟周期(= 128 采样点 / 8|
|`0x00500008`|line0_ab|a0 [31:16]|校准值|q0 态判断直线0 系数 a|
|^|^|b0 [15:0]|校准值|q0 态判断直线0 系数 b|
|`0x0050000C`|line0_c|c0 [31:0]|校准值|q0 态判断直线0 系数 c|
|`0x00500010`|line1_ab|a1 / b1|校准值|q0 态判断直线1 系数|
|`0x00500014`|line1_c|c1 [31:0]|校准值|q0 态判断直线1 系数|
|`0x00500018`|line2_ab|a2 / b2|校准值|q0 态判断直线2 系数|
|`0x0050001C`|line2_c|c2 [31:0]|校准值|q0 态判断直线2 系数|
|`0x00500800`|dds_fpw|fcw [31:12]|$\lfloor F_{if} / F_s \times 2^{20} \rfloor$|q1 解模频率控制字|
|`0x00500804`|mtf_idx|addr [31:16]|`0`|q1 权重起始地址(单位:时钟周期)|
|^|^|len [15:0]|`16`|q1 权重长度 16 时钟周期|
|`0x00500808`|line0_ab|a0 / b0|校准值|q1 态判断直线0 系数|
|`0x0050080C`|line0_c|c0 [31:0]|校准值|q1 态判断直线0 系数 c|
|`0x00500810`|line1_ab|a1 / b1|校准值|q1 态判断直线1 系数|
|`0x00500814`|line1_c|c1 [31:0]|校准值|q1 态判断直线1 系数 c|
|`0x00500818`|line2_ab|a2 / b2|校准值|q1 态判断直线2 系数|
|`0x0050081C`|line2_c|c2 [31:0]|校准值|q1 态判断直线2 系数 c|
```
参数查找表共支持16组参数PARA_ID = 0~15
每组包含独立的权重系数和DDS参数。
MCU可通过修改PARA_ID在运行时快速切换目标比特。
三组直线方程系数a,b,c需通过量子比特校准实验确定此处以"校准值"代替。
若实验不需要态判断(如仅采集 IQ 数据),直线方程系数可填 0。
```
### 4.6.4. 步骤3配置ACQ寄存器
**权重区配置**(偏移 `0x200` 起,布局见 [§4.4.1](#441-读出参数存储) 存储格式图):
配置解模相关寄存器通过SPI或MCU写入
|寄存器|值|说明|
|:-|:-|:-|
|`demod_len`|128|解模采样点数,与权重长度一致|
|`result_scale`|1|解模结果缩放因子1 或 16|
|`dds_fcw`|`fcw_q0`|初始DDS频率控制字可通过查找表覆盖|
|`dds_pcw`|0|初始DDS相位控制字可通过查找表覆盖|
本例 q0 使用 16 个时钟周期的权重数据(写入 q0 权重区 `0x00500200` 起),
q1 同样 16 个时钟周期(写入 q1 权重区 `0x00500A00` 起)。
权重系数为 8 位有符号数I 路和 Q 路分开存储,具体偏移以 `readout_para.png` 图示为准。
```
当码字中 DDS_FPW_SEL = 0查找表模式
实际解模参数由 PARA_ID 索引的查找表决定,
寄存器中的初始值作为 fallback。
ASIC 平台下匹配滤波器系数 = DDS 载波 × 权重参数(系数计算模式),
权重数据只需存储缓变包络,一个权重点可对应多个时钟周期采样点(由 `step_ctrl` 控制)。
MCU 可通过切换 PARA_ID 在运行时快速切换目标比特。
mtf_idx 的 addr 和 len 单位为时钟周期ASIC 平台每周期 8 采样点)。
本例 len=16 时钟周期 = 128 采样点。
```
### 4.6.5. 步骤4生成并发送码字
### 4.6.5. 步骤3配置ACQ寄存器
MCU生成32位ACQ码字触发一次完整的读出采集
通过SPI写DAQ控制寄存器
|码字位段|字段名|配置值|说明|
|地址|寄存器|字段|值|说明|
|:-|:-|:-|:-|:-|
|`0x00400044`|func_ctrl|iq_scale [3]|`0`|IQ 结果截位 [27:8]|
|`0x00400044`|func_ctrl|two_sta_en [2]|`0`|三态读出模式|
|`0x00400044`|func_ctrl|const_en [7]|`0`|使用查找表权重(非常数权重)|
|`0x00400080`|mtf_idx_q0|addr [31:16] / len [15:0]|fallback 值|q0 匹配滤波器索引(查找表模式的 fallback|
|`0x004000C0`|dds_fpw_q0|fcw [31:12] / pcw [11:0]|fallback 值|q0 DDS参数查找表模式的 fallback|
```
func_ctrl 寄存器中与 ASIC 系数计算模式相关的位const_en、step_ctrl、weight_iq
必须按上表配置,否则可能导致解模结果错误。
```
### 4.6.6. 步骤4MCU程序与触发
MCU程序加载到 MCU_INS`0x00200000`触发后MCU执行程序并生成32位码字。
**触发信号由外部硬件发出**MCU响应后自动执行。
码字示例(使能 q0、q1 解模仅存储IQ数据
|位段|字段名|值|说明|
|:-|:-|:-|:-|
|[31:16]|QUBIT_EN|`0x0003`|使能 q0, q1bit0=1, bit1=1|
|[15]|COUNT_SAVE_EN|0|不存储态计数|
|[14]|STATE_SAVE_EN|0|不存储态数据|
|[13]|IQ_SAVE_EN|1|存储解模IQ数据|
|[12]|WAVE_SAVE_EN|0|不存储原始波形|
|[11]|MTF_IDX_SEL|0|匹配滤波器参数来自查找表|
|[10]|DDS_FPW_SEL|0|DDS参数来自查找表|
|[9]|STATE_CLR_VAL|0|不清理态计数|
|[8]|DEMOD_CLR_VAL|0|不清理解模求和|
|[7:4]|FB/STATE/SUM|0|不触发反馈/态统计/求和|
|[3:0]|PARA_ID|0|使用参数组0q0参数|
|[15]|COUNT_SAVE_EN|`0`|不存储态计数|
|[14]|STATE_SAVE_EN|`0`|不存储态数据|
|[13]|IQ_SAVE_EN|`1`|存储解模IQ数据|
|[12]|WAVE_SAVE_EN|`0`|不存储原始波形|
|[11]|MTF_IDX_SEL|`0`|匹配滤波器参数来自查找表|
|[10]|DDS_FPW_SEL|`0`|DDS参数来自查找表|
|[9]|STATE_CLR_VAL|`0`|不清零态计数|
|[8]|DEMOD_CLR_VAL|`0`|不清零解模求和|
|[7:4]|FB/STATE/SUM|`0`|不触发反馈/态统计/求和|
|[3:0]|PARA_ID|`0`|参数组索引(各比特独立查找|
完整码字值:`0x0003_2000`
完整码字值:**`0x0003_2000`**
```
上述码字使能了 q0 和 q1 同时解模并仅存储 IQ 数据。
若需对不同比特使用不同参数,需发送多个码字并切换 PARA_ID。
例如:
码字1: PARA_ID=0, QUBIT_EN=q0 → 使用参数组0读出q0
码字2: PARA_ID=1, QUBIT_EN=q1 → 使用参数组1读出q1
一个码字可同时使能多个比特(通过 QUBIT_EN 位段),
各比特使用各自的 DAQ_PAR 子空间(基地址 = 0x00500000 + N×0x800
因此 q0 和 q1 可共用 PARA_ID=0 且互不干扰。
若同一比特需要使用不同的解模参数(如不同频率/权重),
可在不同触发中切换 PARA_ID 来实现。
```
### 4.6.6. 步骤5接收处理数据
### 4.6.7. 步骤5数据接收
ACQ通道完成采集后将数据打包成帧通过`rslt_push`接口推送上位机。
上位机驱动解帧后按流模式返回:
**IQ数据帧格式**
采集完成后硬件通过 `rslt_push` 推送上位机。IQ数据帧格式2比特 × 8字节
|字节偏移|字段|长度|格式|
|:-|:-|:-|:-|
@ -113,22 +158,19 @@ ACQ通道完成采集后将数据打包成帧通过`rslt_push`接口推送上
|12|Q (q1)|4 字节|32位有符号整数大端|
```
若码字同时使能多种数据存储,帧内数据按以下顺序排列
若码字同时使能多种数据存储,帧内顺序为
波形数据 → 解模IQ数据 → 态判断数据 → 态计数数据
推荐每次仅使能一种数据类型以简化上位机解析。
推荐每次仅使能一种数据类型以简化解析。
```
### 4.6.7. 时序总结
### 4.6.8. 配置清单汇总
单次ACQ读出的完整时序
1. **T0**: MCU 发出32位码字 `0x0003_2000`
2. **T0 + 1 cycle**: 码字解码,使能 q0, q1 的解模通路
3. **T0 + 2~129 cycles**: ADC采集128个采样点并行送入匹配滤波器
4. **T0 + 130 cycle**: 解模完成IQ数据写入结果缓存
5. **T0 + 131 cycle**: 数据打包,通过 `rslt_push` 推送上位机
```
实际解模时间取决于使能比特中最长的解模长度。
若 q0 解模128点、q1 解模256点则解模耗时 = 256 cycles。
```
|地址|寄存器/区域|关键值|
|:-|:-|:-|
|`0x00100000`|lo_freq|`5_500_000`|
|`0x00500000` ~ `0x0050001F`|DAQ_PAR q0 控制区PARA_ID=0|dds_fpw, mtf_idx, 3×line_coeff|
|`0x00500800` ~ `0x0050081F`|DAQ_PAR q1 控制区PARA_ID=0|同上结构|
|`0x00500200` 起|DAQ_PAR q0 权重区|q0 的 I/Q 权重(见存储格式图)|
|`0x00500A00` 起|DAQ_PAR q1 权重区|q1 的 I/Q 权重(见存储格式图)|
|`0x00400044`|func_ctrl|`0x0000`(见 [§4.6.5](#465-步骤3配置acq寄存器)|
|`0x00200000`|MCU_INS|MCU程序 → 码字 `0x0003_2000`|

View File

@ -12,4 +12,4 @@ Pump输出时需要使能输出并配置好输出频率和功率以下是
* pump_freq: 32比特整数范围[7000000, 9000000], 单位是kHz
* pump_power: 32比特整数范围[-1100, -300] 具体映射关系取决于硬件
* pump_enable: 0x11 为使能0x00为关闭
* pump_enable: `32'h11` 为使能(开),`32'h00` 为关闭(关)

View File

@ -1,182 +1,162 @@
## 5.7. EXC-Pump通道全流程控制示例
本节通过一个完整的示例演示EXC-Pump通道从码字生成到激励信号与Pump信号输出的全流程编程控制
示例场景输出一个6.7 GHz读出激励脉冲同时触发Pump使能信号。
本节通过一个完整的端到端示例说明EXC-Pump通道的编程配置流程
示例基于 **ASIC 平台**DAC 8 bit@6 Gsps8 采样点/时钟周期),场景为输出一个 6.7 GHz 读出激励脉冲,同时触发 Pump 使能信号。
### 5.7.1. 流程总览
### 5.7.1. 端到端配置流程
EXC-Pump通道全流程包含以下步骤
EXC-Pump通道的工作流程如下
1. **加载波形数据** — 将波形采样点写入波形仓库
2. **配置波形索引表** — 建立波形ID到地址/长度的映射
3. **配置EXC寄存器** — 设置NCO参数、幅度、工作模式
4. **配置上变频电路** — 设置混频板本振频率
5. **配置Pump模拟电路** — 设置Pump频率、功率
6. **生成并发送码字** — MCU发出波形触发码字 + Pump使能
7. **输出激励信号与Pump脉冲** — 硬件执行输出RF信号和使能脉冲
|阶段|操作|说明|
|:-|:-|:-|
|初始化|加载波形数据、配置索引表、配置寄存器、配置上变频、配置Pump|通过SPI写入步骤1~5无先后顺序要求|
|初始化|加载MCU程序|写入MCU_INS定义触发后要发出的码字|
|运行|外部触发 → MCU执行 → 产生码字|触发由其它硬件发出MCU响应后执行程序并生成13位码字|
|运行|码字解码 → 波形输出 + Pump脉冲|硬件自动流水线执行输出RF信号和使能脉冲|
![EXC-Pump全流程控制](../assets/readout_ri.png)
```
关键理解:
触发信号来自外部硬件非MCUMCU是被动响应方。
MCU 程序加载到 MCU_INS 后处于待命状态,收到触发后执行并生成码字。
初始化配置可在任意时刻通过 SPI 完成,只需在触发前生效即可。
```
### 5.7.2. 步骤1加载波形数据到波形仓库
### 5.7.2. 地址空间速查
将预计算的基带波形采样点写入波形仓库SRAM
以下配置基于EXC通道0Exaddr=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_s = 6.7 - 5.5$ GHz|
|采样率|4 GSps (FPGA)|16采样点/时钟周期|
|波形长度|256 采样点|16个时钟周期FPGA$256 \times 250\text{ps} = 64\text{ns}$|
|起始地址|`0x0000`|波形仓库中的偏移地址|
波形采样点数据示例16位有符号整数大端字节序
|基带频率|1.2 GHz|$F_{baseband} = 6.7 - 5.5$ GHz|
|波形长度|256 采样点|ASIC: 32 cycles × 8 samples/cycle|
|写入地址|`0x00B00000` 起|AWG_WVE 基地址,连续写入 256 × 16 bit|
```
地址 0x0000: 0x0000, 0x0C8C, 0x18C8, 0x2400, ... (共256个采样点)
ASIC 平台每时钟周期 8 个采样点6 Gsps采样点个数需为 8 的整数倍。
FPGA 平台每时钟周期 16 个采样点4 Gsps采样点个数需为 16 的整数倍。
每个采样点为 16 位有符号整数(二进制补码),大端字节序。
波形仓库总容量 128 KB。
```
```
ASIC平台下每个时钟周期对应8个采样点采样点个数需为8的整数倍。
FPGA平台下每个时钟周期对应16个采样点采样点个数需为16的整数倍。
波形仓库总容量128 KBFPGA平台最大支持16 μs输出ASIC平台最大支持10 μs输出。
```
### 5.7.4. 步骤2配置波形索引表
### 5.7.3. 步骤2配置波形索引表
在 AWG_IDX 中建立波形ID到存储参数的映射深度256条每条32位
在波形索引表LUT中建立波形ID到波形参数的映射
|波形ID (WAVE_ID)|addr (高16位)|len (低16位)|说明|
|:-|:-|:-|:-|
|0|`0x0000`|`0x0010`|起始地址0x0000长度16个时钟周期|
|1|`0x0010`|`0x0008`|起始地址0x0010长度8个时钟周期|
|WAVE_ID|AWG_IDX地址|addr [31:16]|len [15:0]|说明|
|:-|:-|:-|:-|:-|
|0|`0x00A00000`|`0x0000`|`0x0020`|起始地址 0x0000长度 32 cycles|
|1|`0x00A00004`|`0x0020`|`0x0010`|起始地址 0x0020长度 16 cycles|
```
波形索引表深度256条1 kB每条目录宽32位。
addr 和 len 均以时钟周期为单位。
通过切换 WAVE_ID 可以在不同波形之间快速切换
AWG_IDX 每条目占用 4 字节WAVE_ID=N 的地址 = 0x00A00000 + N × 4
```
### 5.7.4. 步骤3配置EXC寄存器
### 5.7.5. 步骤3配置EXC寄存器
配置AWG模块寄存器通过SPI或MCU写入
通过SPI写AWG控制寄存器基带直出NRZ模式
|寄存器|值|说明|
|:-|:-|:-|
|`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|
|地址|寄存器|字段|值|说明|
|:-|:-|:-|:-|:-|
|`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` = 关闭)|
```
function 寄存器模式选择:
[3] INTP_SEL=0: 邻近插值FPGA平台仅支持此模式
[2] MIX_MODE=0: 基带模式(使用外部模拟混频)
[1:0] AWG_MODE=00: 直出模式(原始波形不经调制)
pump_enable = 32'h11 为硬件级使能,配置后方可响应码字 PUMP_EN 位。
pump_enable = 32'h00 时无论码字如何设置Pump 均无输出。
```
若需要使用正交调制模式(扫频应用),配置如下:
### 5.7.8. 步骤6MCU程序与触发
|寄存器|值|说明|
|:-|:-|:-|
|`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脉冲
MCU程序加载到 MCU_INS`0x00700000`触发后MCU执行程序并生成13位码字。
**触发信号由外部硬件发出**MCU响应后自动执行。
**场景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个时钟周期的读出脉冲)|
|[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=032 cycles 读出脉冲)|
完整码字值:`0x0100`
完整码字值:**`0x0100`**
**场景B仅输出Pump脉冲不输出波形)**
**场景B仅输出Pump脉冲无波形**
|码字位段|字段名|配置值|说明|
|位段|字段名|值|说明|
|:-|:-|:-|:-|
|[12]|PULSE_ONLY|1|禁用波形输出|
|[11:9]|-|0|—|
|[8]|PUMP_EN|1|触发Pump脉冲输出|
|[7:0]|WAVE_ID|0|波形索引PULSE_ONLY=1时被忽略|
|[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 激励脉冲 ────\________________
```
完整码字值:**`0x1100`**
```
注意事项:
1. Pump使能脉冲的延迟参数需确保与波形输出上升沿对齐。
2. 多个码字连续发送时,需确保前一码字的波形输出完成后再发下一码字,
否则波形索引表可能被覆盖导致输出异常。
3. 调试阶段建议使用 MARK_EN 触发Marker脉冲来辅助示波器触发捕获。
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`|