readout_program/chapters/04-06-acq-pipeline-demo.md

4.6 KiB
Raw Blame History

4.6. ACQ通道全流程控制示例

本节通过一个完整的示例演示ACQ通道从码字生成到采集数据获取的全流程编程控制。 示例场景对2个量子比特q0, q1执行单次读出采集解模IQ数据。

4.6.1. 流程总览

ACQ通道读出全流程包含以下步骤

  1. 配置模拟前端 — 设置下变频本振频率
  2. 加载解模参数 — 配置匹配滤波器权重和DDS参数查找表
  3. 配置ACQ寄存器 — 设置解模频率/相位/缩放等控制参数
  4. 生成并发送码字 — MCU发出采集触发码字
  5. 接收处理数据 — 固件打包上传上位机解帧获取IQ数据

ACQ全流程控制

4.6.2. 步骤1配置模拟前端

配置混频板下变频本振频率,将射频信号转换到中频:

配置项 说明
lo_freq 5_500_000 本振频率 5.5 GHz单位 kHz
本振频率需根据目标量子比特频率确定。
例如量子比特频率为 6.7 GHz则下变频后中频为 1.2 GHz。

4.6.3. 步骤2加载解模参数

将解模参数匹配滤波器权重、DDS频率/相位控制字)写入参数查找表。 本例配置2组参数对应2个量子比特

权重数据(匹配滤波器系数)

参数索引 目标比特 权重长度 iw示例 qw示例
0 q0 128 采样点 cos(ω·t) 包络采样 sin(ω·t) 包络采样
1 q1 128 采样点 cos(ω·t) 包络采样 sin(ω·t) 包络采样

DDS参数频率/相位控制字)

参数索引 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
参数查找表共支持16组参数PARA_ID = 0~15
每组包含独立的权重系数和DDS参数。
MCU可通过修改PARA_ID在运行时快速切换目标比特。

4.6.4. 步骤3配置ACQ寄存器

配置解模相关寄存器通过SPI或MCU写入

寄存器 说明
demod_len 128 解模采样点数,与权重长度一致
result_scale 1 解模结果缩放因子1 或 16
dds_fcw fcw_q0 初始DDS频率控制字可通过查找表覆盖
dds_pcw 0 初始DDS相位控制字可通过查找表覆盖
当码字中 DDS_FPW_SEL = 0查找表模式
实际解模参数由 PARA_ID 索引的查找表决定,
寄存器中的初始值作为 fallback。

4.6.5. 步骤4生成并发送码字

MCU生成32位ACQ码字触发一次完整的读出采集

码字位段 字段名 配置值 说明
[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参数

完整码字值: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

4.6.6. 步骤5接收处理数据

ACQ通道完成采集后将数据打包成帧通过rslt_push接口推送上位机。 上位机驱动解帧后按流模式返回:

IQ数据帧格式

字节偏移 字段 长度 格式
0 I (q0) 4 字节 32位有符号整数大端
4 Q (q0) 4 字节 32位有符号整数大端
8 I (q1) 4 字节 32位有符号整数大端
12 Q (q1) 4 字节 32位有符号整数大端
若码字同时使能多种数据存储,帧内数据按以下顺序排列:
波形数据 → 解模IQ数据 → 态判断数据 → 态计数数据
推荐每次仅使能一种数据类型以简化上位机解析。

4.6.7. 时序总结

单次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。