1. 修订记录
| 版本 | 修订日期 | 修订原因 | 修订内容 | 修订人 |
|---|---|---|---|---|
| v0.1 | 2025/10/27 | 统一格式 | 初始版本:完成全部章节的 Markdown 源文件、项目结构与构建管道搭建 | 郭成 |
| v0.2 | 2025/10/31 | 评审意见 | 内容补充:新增 §4.4 匹配滤波器、§4.5 采集数据处理;完善 §4.6 与 §5.7 全流程示例的地址表与配置步骤 | 郭成 |
| v0.3 | 2026/07/27 | 用户反馈 | 内容梳理:重构 §4.3 / §5.2 寄存器描述,统一码字字段命名;新增 §80 附录(IDS 寄存器索引表,由外部 JSON 自动渲染);更新 project.yaml 版本号与章节排序 | 郭成 |
| v0.4 | 2026/07/30 | 编辑完善 | 扩充薄弱章节(§4.1 下变频、§5.5 上变频、§5.6 Pump 配置);新增 §3.3 FPGA vs ASIC 平台差异汇总矩阵;为 §4.2 增加死时间量化数据,为 §4.3 / §4.4 / §5.2 增加设计决策指导;修正引用文档表;新增 §81 故障排查附录 | 郭成 |
2. 前言
2.1. 目的与范围
本文档的目的是介绍读出子系统激励产生和采集处理相关控制, 该文档适用于ez-Q 2.5 FPGA/ASIC平台读出子系统编程。 本文档作为开放文档供大家阅读。
2.2. 阅读对象
本文档的预期读者是驱动开发工程师、使用本系统的终端用户以及对该芯片工作原理感兴趣的读者。
2.3. 文档概述
本文档首先介绍了测控系统总体的编程对象和规范, 针对读出ACQ/EXC/Pump三种类型通道对应的ACQ/EXC-Pump编程模型进行了详细介绍。
2.4. 引用文档
| 文档编号 | 标题 | 版本 | 说明 |
|---|---|---|---|
| - | 读出子系统历史无关配置集 | V1.0 | ez-Q 2.5 读出子系统历史无关配置项定义,包含多个功能使用示例 |
| ez-Q 2.5-SDD-04 | ez-Q 2.5 测控系统研制项目指令集设计报告 | V1.0 | 量子编程指令集定义,包含 MCU 指令编码、时序与编程约束 |
2.5. 术语定义
| 名字 | 全称 | 解释 |
|---|---|---|
| ACQ | Acquisition | 读出回波采集处理通道 |
| EXC | Excitation | 读出激励生成发送通道 |
| Pump | Pump | 泵浦通道,用于产生特定频率和功率的单音微波信号以辅助量子比特读出 |
| AWG | Arbitrary Waveform Generator | 任意波形发生器,EXC-Pump 通道的核心数字模块 |
| DAQ | Data Acquisition | 数据采集,ACQ 通道的核心数字模块 |
| RBPU | Readout Baseband Processing Unit | 读出基带处理单元(ASIC 芯片名) |
| MCU | Micro Controller Unit | 通道微控制器,执行码字指令序列 |
| NCO | Numerically Controlled Oscillator | 数控振荡器,用于产生数字单音信号进行调制/解调 |
| IDS | Index Data Sheet | 寄存器索引表,定义寄存器地址、位域、权限和默认值 |
| MTF | Matched Filter | 匹配滤波器,用于对采集波形进行最优解模以最大化 SNR |
| SPI | Serial Peripheral Interface | 串行外设接口,上位机通过该接口配置通道寄存器 |
| 解模 | Demodulation | 将 ADC 采集的数字波形与匹配滤波器做相关运算,提取 I/Q 分量 |
| 态判断 | State Discrimination | 通过直线方程将解模 IQ 数据映射到量子比特态(0/1/2) |
3. 编程控制模型概述
3.1. 测控系统编程概述
超导量子计算机利用微波信号来驱动量子比特和读出量子比特状态,量子比特不同类型的操作依赖不同类型的信号来控制。 ez-Q 2.5测控系统包含5种物理通道,对应5类硬件接口,分别是ACQ、EXC、Pump、XYZ/Reset和ZCP通道; 系统具有7种控制信号,对应7种编程对象,分别是EXC、ACQ、Pump、XY、Reset、Z和ZCP信号; 系统具有4种控制模型,对应4种编程类型,分别是ACQ、EXC-Pump、XY/Reset和Z/ZCP模型,分类关系如下表所示。
| 5种物理通道 | 7种控制对象 | 4种控制模型 |
|---|---|---|
| XYZ通道 | XY 信号 | XY/Reset控制模型 |
| Reset信号 | ||
| Z信号 | Z/ZCP控制模型 | |
| ZCP通道 | ZCP信号 | Z/ZCP控制模型 |
| ACQ通道 | ACQ(RO)信号 | ACQ控制模型 |
| EXC通道 | EXC(RI)信号 | EXC-Pump控制模型 |
| Pump通道 | Pump信号 |
-
测控系统中的每种控制模型实现的功能都是通过以下四类数据进行定义,
- 通道微控制器码字指令
- 通道寄存器配置数据
- 通道SRAM配置数据
- 通道模拟电路配置
-
测控系统的寄存器、配置数据和模拟电路配置返回数据统一采用大端字节序。
通道寄存器配置数据支持微控制器实时修改,从而让通道的输入/输出控制具备动态控制能力。 ACQ和EXC-Pump通道配置寄存器的地址索引定义详见附录A. IDS寄存器索引表的 A.2 DAQ_REG 和 A.3 AWG_REG 节。
本文档通过对不同编程模型下码字指令、通道寄存器配置数据、通道SRAM配置数据和通道模拟电路配置进行介绍, 旨在让用户掌握对读出激励信号的产生和采集信号处理的编程方法。 其中码字指令通过MCU来产生,MCU的编程关键参数如下:
- ACQ通道和EXC-Pump通道使用相同MCU;
- MCU分别使用16 KB的ITCM和DTCM;
- FPGA平台MCU主时钟频率为250 MHz,
- ASIC平台MCU主时钟频率为750 MHz;
- MCU以固定的3个时钟周期每指令的速度运行;
- MCU通过0x100000地址访问MCU数据空间;
- MCU通过0x200000地址访问通道配置寄存器空间;
针对具体的指令定义和使用方法, 读者可查看《量子编程指令集》了解相关信息。
3.2. 读者阅读路径
本文档按"先总览、再分通道、最后附录"的结构组织,建议按以下路径阅读:
- 新用户快速上手:先读 §3(本章)了解系统全貌 → 跳到 §4.6(ACQ 全流程示例)或 §5.7(EXC-Pump 全流程示例)获取端到端编程体验 → 再回头查阅具体章节了解细节
- 驱动开发工程师:按章节顺序阅读,重点关注 §4.3/§4.4(ACQ 寄存器与匹配滤波器)和 §5.2~§5.4(EXC 寄存器、索引表、波形仓库),附录 A 为日常编程的寄存器速查参考
- FPGA/ASIC 平台移植:先读 §3.3 FPGA vs ASIC 平台差异汇总 了解全局差异,再逐章核对各模块的平台相关标注
- 问题排查:直接访问 附录 B. 故障排查 查找常见问题及解决方案
3.3. FPGA vs ASIC 平台差异汇总
ez-Q 2.5 同时支持 FPGA 和 ASIC 两种硬件平台,二者在时钟、采样率、数据处理模式等方面存在显著差异。 下表汇总了所有影响编程的关键差异,各差异点在正文对应章节均有详细说明。
3.3.1. 全局参数差异
| 参数 | FPGA 平台 | ASIC 平台 | 参考章节 |
|---|---|---|---|
| MCU 主时钟频率 | 250 MHz | 750 MHz | §3.1 |
| ADC/DAC 采样率 | 4 Gsps | 6 Gsps | §3.4 |
| 每时钟周期采样点数 | 16 samples/cycle | 8 samples/cycle | §4.5.1 / §5.4 |
| ADC/DAC 实现 | 外部商用芯片 | RBPU 片内集成 | §3.4 |
| PLL | 外部商用芯片 | RBPU 片内集成 | §3.4 |
| 波形仓库最大输出时长 | ~16 μs | ~10 μs | §5.4 |
3.3.2. ACQ 通道差异
| 功能 | FPGA 平台 | ASIC 平台 | 参考章节 |
|---|---|---|---|
| 匹配滤波器模式 | 系数直读模式(DAQ_FLT 预存系数) | 系数计算模式(DDS×权重实时计算) | §4.4 |
| dds_fpw 寄存器 | 无实际效果 | 有效:控制解模载波频率/相位 | §4.3 |
| WEIGHT_IQ / CONST_EN / STEP_CTRL | 无实际效果 | 有效:控制常数权重与步长 | §4.3 |
| 匹配滤波器系数存储 | 需要 DAQ_FLT (0x00580000),I/Q 各 16 KB/Qubit | 不需要 DAQ_FLT,系数由 DAQ_PAR 权重 + DDS 实时计算 | §4.4.2 |
3.3.3. EXC-Pump 通道差异
| 功能 | FPGA 平台 | ASIC 平台 | 参考章节 |
|---|---|---|---|
| 半带插值滤波器 (INTP_SEL) | 不支持(DSP 资源受限) | 支持,可优化输出平坦度 | §5.2 |
| 混频模式 (MIX_MODE) | 仅基带模式(外部模拟混频) | 支持基带+MIX 模式(可射频直出) | §5.2 |
编程提示:为 FPGA 平台编写 MCU 程序时,注意规避标注为"无实际效果"的寄存器位段——写入这些位段不会报错,但不会产生预期效果,可能导致调试困惑。
3.4. 读出子系统编程
ez-Q 2.5 读出子系统包含三类硬件功能单元:读出基带板、读出混频板和读出泵浦板。 这三类功能单元在物理上存在两种硬件形态:
- 分离形态:基带板、混频板、泵浦板为三个独立 PXIe 板卡,安装在机箱中相邻槽位(混频板槽位 = 基带板槽位 + 1,泵浦板槽位 = 基带板槽位 − 1);
- 合并形态:混频与泵浦功能集成在一个 PXIe 板卡上,与基带板相邻安装。
两种形态在编程模型上完全一致——软件通过指定基带板槽位号定位混频和泵浦功能单元,寄存器接口无差异。 下文以分离形态为例进行描述,除槽位布局外所有内容对两种形态均适用。
- 读出基带板负责产生、输出、采集和处理基带信号以及为泵浦通道产生使能信号;
- 读出混频板自身产生一个本振信号,用于实现基带信号与射频信号之间的转换;
- 而读出泵浦板负责产生一个指定功率频率的单音信号,并在外部使能信号控制下输出;
当软件需要对不同通道编程时,其通过ip地址指定机箱、通过槽位号指定板卡、 通过扩展地址指定同一个板卡内的多个通道、通过地址指定一个通道内的不同配置项。
索引基地址定义详见附录A. IDS寄存器索引表的 A.1 地址空间映射 节。
本文所述的三类编程通道具体定义如下:
- ACQ 编程通道定义从混频板
rf_in输入端口到基带板卡内部DAQ模块; - EXC 编程通道定义为从基带板内部AWG模块混频板到
rf_out接口; - Pump 编程通道定义为从基带板卡内部AWG模块到泵浦板
pump_out接口;
ASIC和FPGA平台具有以下区别:
- ez-Q 2.5 FPGA平台将读出基带芯片RBPU和FPGA集成在一个FPGA中。
- ez-Q 2.5 FPGA平台使用外部商用ADC、DAC和PLL来替换RBPU的对应功能。
- ez-Q 2.5 FPGA平台ADC、DAC采样率为4 Gsps, ASIC平台暂定为6 Gsps
4. 处理器ACQ通道编程模型
来自量子芯片RO端口的射频信号首先经过混频板调理后再进入读出基带处理单元采集处理。 混频板负责将输入功率和频率的信号转换成基带板卡能够处理的频率功率合适的信号, 因此对混频板的编程主要包括本振频率设置(增益为预留接口)。
模拟信号进入基带处理单元后,先经过巴伦将单端信号转换成ADC所需的差分信号。
接着基带板上的读出芯片RBPU利用ADC(FPGA平台为8 bit@4 Gsps,ASIC 平台为8 bit@6 Gsps)采样,
然后将量化后的数字信号送到数字电路进行处理。
数字电路对数据进行处理后将结果通过推送接口rslt_push发送到上位机。
对读出数字电路的编程包括:MCU的指令、MCU的数据、ACQ通道控制寄存器、解模参数,结合模拟电路配置,则ACQ通道编程项如下: - MCU指令+MCU数据可用于编程发出触发码字以及实时修改控制寄存器; - DAQ控制寄存器用于指定解模频率、相位、权重/系数数据的索引等参数; - 解模参数数据定义了具体的权重数据和量子态判断参数等数据。 - 模拟电路配置用于设置本振频率(增益为预留接口,支持情况取决于混频板硬件形态)。
下图是ACQ通道数字部分编程控制模型。
- 射频信号经过混频板下变频后进入到ADC
- ADC采集的原始波形数据①从图中右侧端口输入,接着输入到解模模块中
- 解模模块利用匹配滤波器模块存储的解模参数对输入波形进行解模运算得到IQ数据②
- 接着解模IQ数据②输入到态判断模块中,经过态判定后得到态数据④
- 最后态数据④经过态统计后得到态统计结果⑤
上述过程中,数据①②③④⑤都可以在数据转发模块缓存后通过rslt_push接口发送出去,
需要注意到的是数据②是解模求和数据③在求和次数为1的特殊情况。
ACQ通道有且仅有基带处理单元存在状态机,
考虑到异常状态恢复,需要ACQ通道提供了软复位功能。
当RO通道由于上位机强制中断或者MCU配置了错误指令而产生异常时,
可以通过调用驱动API函数执行复位操作,
其能够将状态机从异常中复位(同时也复位部分寄存器的默认值),
从而使得下一次历史无关配置项能够正确执行。
4.1. 下变频电路配置
来自量子比特 RO 端口的射频信号需要经过前端模拟电路处理后才能够被读出基带处理单元采集处理。 前端下变频电路将射频信号下变频到 ADC 可采样的中频范围。
4.1.1. 配置项
| 配置名 | 描述 | 访问方式 |
|---|---|---|
lo_freq | 变频本振频率设置 | SPI(基地址 0x00100000) |
dn_gain | 下变频增益设置 | SPI(预留) |
4.1.2. 本振频率配置
lo_freq 是下变频的核心参数,决定输入射频信号被搬移到哪个中频。
| 参数 | 说明 |
|---|---|
| 位宽 | 32 比特整数 |
| 单位 | kHz |
| 支持范围 | 5,400,000 ~ 5,600,000(即 5.4 ~ 5.6 GHz) |
频率关系:
其中 $F_{RF}$ 为量子比特读出谐振腔频率(射频输入),$F_{LO}$ 为本振频率,$F_{IF}$ 为进入 ADC 的中频信号频率。
4.1.3. 共享本振约束
重要:同一块混频板上的 4 个通道共享同一个本振信号。这意味着:
- 一块混频板上的全部 4 个 ACQ 通道必须使用相同的 $F_{LO}$;
- 上变频和下变频通道也共享同一个本振(见 §5.5);
- 多比特实验时,所有 qubit 的中频 $F_{IF}$ 由同一个 $F_{LO}$ 决定,需在选择 $F_{LO}$ 时综合考虑所有 qubit 的频率分布。
4.1.4. 增益设置
dn_gain 为预留接口,其支持情况取决于混频板硬件形态。
4.1.5. 配置时序
下变频电路配置应在 ACQ 通道触发采集之前通过 SPI 完成。配置写入后需等待本振锁相环(PLL)锁定,建议在初始化阶段完成配置。
配置顺序:SPI 写混频板寄存器 → 等待 PLL 锁定 → 配置 DAQ 寄存器 → 加载 MCU 程序 → 等待触发。
4.2. ACQ码字功能定义
ACQ通道利用MCU产生32位的码字来控制读出行为,32位的操控码字功能定义如下表所示。
| 比特位 | 名字 | 功能描述 |
|---|---|---|
| [31:16] | QUBIT_EN | 16个量子比特使能,高电平使能对应位量子比特 |
| [15] | COUNT_SAVE_EN | 态计数数据存储使能, 高电平使能态计数存储 |
| [14] | STATE_SAVE_EN | 态数据存储使能, 高电平使能态数据存储 |
| [13] | IQ_SAVE_EN | 解模数据存储使能, 高电平使能解模数据存储 |
| [12] | WAVE_SAVE_EN | 波形数据存储使能, 高电平使能波形数据存储 |
| [11] | MTF_IDX_SEL | 匹配滤波器索引选择,1:寄存器,0:查找表 |
| [10] | DDS_FPW_SEL | 解模频率相位控制字选择, 1:寄存器,0:查找表 |
| [9] | STATE_CLR_VAL | 态统计清零有效, 高电平清零计数 |
| [8] | DEMOD_CLR_VAL | 解模求和清零有效, 高电平清零求和值 |
| [7] | GLB_FB_VAL | 全局反馈触发有效, 高电平使能全局反馈 |
| [6] | LOC_FB_VAL | 局部反馈命令有效, 高电平使能局部反馈 |
| [5] | STATE_STS_VAL | 态统计命令有效, 高电平使能态计数功能 |
| [4] | DEMOD_SUM_VAL | 解模求和命令有效, 高电平使能解模求和功能 |
| [3:0] | PARA_ID | 读出参数查找表索引, 总共支持最大16组参数 |
- 码字比特 [31:16]用于使能对对每个比特的控制,读出芯片最大支持16个量子比特。
- 码字比特[15:12]使能要存储数据,同时存储多种数据将导致死时间增加,推荐仅使能一种数据;
- 码字比特[11]用于使能寄存器索引权重/系数,可通过MCU实时控制,突破参数个数限制。
- 码字比特[10]用于使能寄存器控制NCO,可通过MCU实时控制,突破参数个数限制。
- 码字比特[9]用于对态计数数据进行清零,清零后可开启新一轮统计;
- 码字比特[8]用于对IQ求和数据进行清零,清零后可开启新一轮统计;
- 码字比特[7]用于使能读出比特数据通过串行接口发出,用于支持系统全局反馈功能;
- 码字比特[6]用于使能读出比特数据通过并行接口发出,用于支持系统局部反馈功能;
- 码字比特[5]用于对态判断结果进行计数统计,通过采集计数结果可降低芯片推送数据量;
- 码字比特[4]用于对解模数据进行求和操作,通过采集求和数据可降低芯片推送数据量;
- 码字比特[3:0]用于选择要实时从存储中加载的解模和态判断参数,总共支持16组参数进行快速切换;
注意码字存在优先级和时序:
- 当同一个指令中同时对多个量子比特解模/读出时,
- 解模时间等于最长那个比特的解模时间
- 读出时间等于最长那个比特的读出时间
- 在一个指令中同时使能四种数据存储时,存储的先后顺序为:
- 波形数据
- 解模IQ数据
- 态判断数据
- 态计数数据
- 在一个指令中同时使能了解模求和清零、解模求和和求和存储时,顺序为:
- 先执行IQ结果清零,
- 再执行IQ结果求和
- 最后执行IQ结果存储
- 在一个指令中同时使能了态计数清零、态计数和计数存储时,顺序为:
- 先执行态计数清零
- 再执行态计数
- 最后执行计数结果存储
死时间与存储选择
同时使能多种数据存储将引入额外的死时间(dead time),即硬件在完成当前数据推送之前无法响应下一触发的时间间隔。不同存储类型的相对数据量如下:
| 存储类型 | 单次数据量 | 特点 |
|---|---|---|
| 波形数据 (WAVE_SAVE_EN) | 取决于 sample_depth(时钟周期数 × 每周期采样点数 × 8 bit) | 数据量最大 |
| 解模 IQ 数据 (IQ_SAVE_EN) | 8 字节/qubit(I 4B + Q 4B) | 数据量较小 |
| 态数据 (STATE_SAVE_EN) | 4 字节/全部 qubit(每 qubit 2 bit) | 数据量最小 |
| 态计数 (COUNT_SAVE_EN) | 16 字节/全部 qubit(4 个计数器各 4B) | 数据量较小 |
推荐实践:
- 同时使能多种存储类型时,存储顺序为:波形数据 → 解模 IQ 数据 → 态判断数据 → 态计数数据;
- 同时使能多种存储会叠加死时间并增加数据帧解析复杂度。建议每次仅使能一种存储类型;
- 实际死时间取决于使能数据类型、qubit 数量和平台时钟频率,具体数值应通过实验测定。
4.3. ACQ寄存器功能定义
ACQ通道寄存器的地址空间可以被SPI和MCU同时访问, 因此用户可通过SPI或者MCU设置参数,建议:
建议: 静态参数通过SPI配置完成就保持不变, 需要动态控制的参数通过MCU来实时更新。
| 名字 | 功能描述 |
|---|---|
| function | DAQ功能控制,控制运行模式等 |
| sample_depth | 波形采样深度控制,单位是时钟周期个数 |
| mtf_idx_q[15:0] | 解模参数控制,分别对应16个频点 |
| dds_fpw_q[15:0] | 解模频率相位控制,分别对应16个频点 |
- sample_depth用于控制波形采集模式下采集波形的长度,单位是时钟周期;
- mtf_idx_q在使能寄存器控制情况下,用于直接索引匹配滤波器权重/系数;
- 高16比特对应索引地址,单位是时钟周期
- 低16比特对应索引长度,单位是时钟周期
- dds_fpw_q在使能寄存器控制情况下,用于控制解模载波的频率和相位;
- 高20位对应载波频率控制字fcw,$F_{c}=fcw/2^{20}*sample\\_rate$
- 低12位对应载波相位控制字pcw,$\phi_{c} = pcw/2^{12}*2*\pi$
- function用来控制整个读出基带板数据处理行为;
function功能寄存器与实验控制相关的具体控制位包括:
| 比特位 | 名字 | 功能描述 |
|---|---|---|
| [15:8] | WEIGHT_IQ | 常数权重值,8比特有符号数 |
| [7] | CONST_EN | 常数权重使能, 高有效 |
| [6:4] | STEP_CTRL | 计算权重模式步长控制 |
| [3] | IQ_SCALE | 解模动态范围设置 |
| [2] | TWO_STA_EN | 两态读出使能, 高电平使能 |
- WEIGHT_IQ 常数权重值,可用于长时间解模
- CONST_EN 常数权重使能
CONST_EN=0时,权重数据通过mtf_idx_q来索引得到CONST_EN=1来启用常量权重功能,此时权重值为WEIGHT_IQ。
- STEP_CTRL 权重点步长控制
STEP_CTRL==01个权重数据点可对应1个时钟周期采样点。STEP_CTRL==11个权重数据点可对应2个时钟周期采样点。STEP_CTRL==21个权重数据点可对应4个时钟周期采样点。STEP_CTRL==31个权重数据点可对应8个时钟周期采样点。STEP_CTRL==41个权重数据点可对应16个时钟周期采样点。
- IQ_SCALE 解模结果截断位置控制
IQ_SCALE =0IQ结果截位[27:8]IQ_SCALE =1IQ结果截位[31:12]
- TWO_STA_EN 两态读出使能
TWO_STA_EN==0默认三态读出TWO_STA_EN==1使能二态读出
注意: ez-Q 2.5 FPGA平台采用系数直读模式,因此不支持系数生产相关功能。 即在ez-Q 2.5 FPGA平台下,dds_fpw 寄存器无实际效果; function寄存器WEIGHT_IQ,CONST_EN, STEP_CTRL 位无实际效果
解模完成后,可以通过TWO_STA_EN来控制是否启动2态判定,
当TWO_STA_EN=1时,可以只配置一组直线方程系数进行态判断。
参数选择指南
查找表模式 vs 寄存器模式
ACQ 通道提供两种参数索引方式,由码字位 MTF_IDX_SEL 和 DDS_FPW_SEL 分别控制:
| 模式 | 控制位值 | 参数来源 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|---|
| 查找表 (LUT) | 0 | DAQ_PAR 中预存的 16 组参数(PARA_ID 0~15) | 切换速度快(一条码字即可切换)、参数经过预校验 | 最多 16 组,需提前加载 | 推荐:常规多比特轮询实验 |
| 寄存器 | 1 | DAQ_REG 中的 mtf_idx_q / dds_fpw_q 寄存器 | 参数数量不限,MCU 可实时写入任意值 | 切换需 MCU 先写寄存器再发码字(多指令开销) | 需要超过 16 组参数、或参数需动态计算的高灵活度场景 |
建议:大多数实验使用查找表模式即可满足需求(16 组参数 × 16 qubit = 256 种组合)。仅在参数空间超过 16 组时(如扫频实验中频率步进 > 16 步)才启用寄存器模式。
权重步长 (STEP_CTRL) 选择
STEP_CTRL 控制一个权重点覆盖的时钟周期数,直接影响解模精度和最大可支持的解模长度:
| STEP_CTRL | 时钟周期 / 权重点 | 解模精度 | 最大解模长度(时钟周期) | 适用场景 |
|---|---|---|---|---|
| 0 | 1 | 最高 | 最短(受权重区容量限制) | 需要精确波形匹配、解模长度较短的场景 |
| 1 | 2 | 高 | 2× | 常规读出(推荐起点) |
| 2 | 4 | 中等 | 4× | 包络缓变信号,平衡精度与覆盖长度 |
| 3 | 8 | 较低 | 8× | 长解模窗口,精度要求不高的场景 |
| 4 | 16 | 最低 | 16× | 极长解模窗口,粗粒度解模 |
- 每个时钟周期对应 8 个采样点(ASIC,6 Gsps)或 16 个采样点(FPGA,4 Gsps)。
- 选择原则:STEP_CTRL 越大,相同权重存储空间可覆盖的解模长度越长,但时间分辨率越低。建议从
STEP_CTRL=1(1:2)开始,根据所需的解模窗口长度和解模 SNR 是否满足需求逐步调整。- STEP_CTRL 仅 ASIC 平台(系数计算模式)有效,FPGA 平台(系数直读模式)下该位无实际效果。
IQ 动态范围 (IQ_SCALE) 选择
IQ_SCALE 控制解模结果从累加器(32 位以上)截取到输出位宽时的截位位置:
| IQ_SCALE | 截取位段 | 数值范围 | 适用场景 |
|---|---|---|---|
| 0 | [27:8] | 20 位有符号数 | 低增益/短解模长度(推荐默认值) |
| 1 | [31:12] | 20 位有符号数(高位移位) | 高增益/长解模长度,避免溢出 |
选择原则:若解模结果频繁溢出(I/Q 值达到 ±524287 附近),切换到
IQ_SCALE=1;若解模结果幅值过小(有效位数不足),切换到IQ_SCALE=0。可通过采集原始 IQ 数据观察其分布来优化此设置。
两态 vs 三态判定
| TWO_STA_EN | 模式 | 所需直线方程 | 态值 | 适用场景 |
|---|---|---|---|---|
| 0 | 三态 | line0, line1, line2(3 组) | 0, 1, 2, 3(错误态) | 量子比特三能级读出(含泄漏态检测) |
| 1 | 两态 | line0(1 组) | 0, 1 | 标准 0/1 态读出(数据量更小、延迟更低) |
建议:若实验只关心 |0⟩ 和 |1⟩ 两种状态,使能
TWO_STA_EN=1仅配置 line0 即可,可减少配置工作。
4.4. 匹配滤波器
匹配滤波器在FPGA/ASIC两种平台下由于资源不同实现的形式也不同,区别如下:
- 由于ASIC多计算少存储,因而ASIC平台使用系数计算模式以节省存储资源。
- 由于FPGA 多存储少计算,因此FPGA平台使用系数直读模式以节省DSP资源。
4.4.1. 读出参数存储
DAQ_PAR 模块(基地址 0x00500000,总容量 32 KB)存储解模所需的全部参数,
每个量子比特独占 2 KB 子空间(控制区 512 B + 权重区 1536 B):
控制区(每比特偏移 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 | 权重数据起始地址(单位:4字节) |
| [15:0] len | 解模积分时间(单位:时钟周期,8个采样点) | ||
0x08 | line0_ab | [31:16] a0 | 直线0 斜率系数 a(16位有符号数) |
| [15:0] b0 | 直线0 斜率系数 b(16位有符号数) | ||
0x0C | line0_c | [31:0] c0 | 直线0 截距系数 c(32位有符号数) |
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。
权重区(每比特偏移 0x200 起,共 1536 字节)
权重区存储匹配滤波器权重系数,最大 1536 个 8 位有符号系数,I 路和 Q 路权重分开存储。 详细布局见下方存储格式图。
- 系数的粒度由
func_ctrl.step_ctrl控制,一个权重样本点可对应 1/2/4/8/16 个时钟周期采样点; - 权重数据由
mtf_idx中的 addr 和 len 字段索引,len的长度为权重数据的采样点数乘以系数粒度。
读出参数存储格式如下图所示。
系数计算模式(ASIC)下,匹配滤波器系数 = DDS 载波 × 权重参数。FPGA 平台使用系数直读模式,仅使用
Ctrl部分(mtf_idx)索引 DAQ_FLT(0x00580000)中预存储的匹配滤波器系数,忽略 dds_fpw 控制字。
4.4.2. 匹配滤波器系数
ez-Q 2.5 FPGA平台使用系数直读模式,其需要额外的存储空间来配置匹配滤波器系数。
- 其中mtf_idx的含义从索引权重数据变为索引匹配滤波器系数。
- 匹配滤波器系数索引的粒度是时钟周期,
- 在FPGA平台下每个时钟周期对应16个采样点数据。
- 匹配滤波器系数采样点采用8比特数据位宽,因此1个周期数据位宽为128 bit,
匹配滤波器系数存储结构如下图所示。 - 匹配滤波器的I和Q数据分开存储,每个比特的I、Q数据容量分别为16 KB。 - I路数据偏移地址为 x × 32 KB,Q路数据偏移地址为 x × 32 KB + 16 KB,其中 x 为 Qubit 序号,范围为 0~15。
4.4.3. 匹配滤波器系数设计原则
匹配滤波器系数直接影响解模信噪比(SNR)。本小节提供系数设计的基本指导原则。
系数计算模式(ASIC 平台)
ASIC 平台下,匹配滤波器系数由 DDS 载波与权重参数实时计算:
其中 $Weight[n]$ 为下载数据经STEP_CTRL控制临近插值后权重,$f_{IF}$ 为中频频率(由 dds_fpw.fcw 决定),$F_s$ 为采样率。
权重设计要点:
- 权重的包络应匹配输入信号的幅度包络。理想情况下,权重是输入脉冲波形的时域反转复共轭;
- 权重长度(
mtf_idx.len)应覆盖输入信号从开始到完全衰减的时间窗口。过短 → SNR 损失;过长 → 引入额外噪声且增加解模延迟; - STEP_CTRL 优化:若信号包络变化缓慢,增大
STEP_CTRL可在相同权重存储空间下覆盖更长的解模窗口(见 §4.3 参数选择指南); - 权重归一化:建议权重系数峰值设为 ±127(8 位有符号数最大值),以充分利用动态范围。
典型设计流程:
1. 采集原始波形数据(WAVE_SAVE_EN=1),观察信号幅度和持续时间
2. 提取信号的幅度包络作为权重初始值
3. 根据 SNR 需求调整权重长度和 STEP_CTRL
4. 通过解模 IQ 数据的 SNR 验证权重设计效果
系数直读模式(FPGA 平台)
FPGA 平台下,匹配滤波器系数需预计算并直接存入 DAQ_FLT(0x00580000),每 qubit 的 I/Q 各 16 KB。
系数预计算:
由于FPGA每个时钟周期对应16个采样点,解模系数I_Coeff[n]和Q_Coeff[n]长度需要为16的整数倍。
存储布局注意:每个时钟周期的 128 位数据(16 samples × 8 bit)需按大端字节序排列,I/Q 分开存储且地址偏移为 16 KB(见 §4.4.2 存储结构图)。
跨平台一致性:对于同一组解模参数,ASIC 和 FPGA 平台应产生相同的解模结果(在量化误差范围内)。建议在平台移植时,用相同的输入波形验证两个平台的 IQ 输出一致性。
4.5. 采集数据处理
ACQ通道采集的数据以流的形式按照先后顺序缓存, 缓存到设定数据量后或者计时器超时后数据被打包成帧上传, 上位机驱动解帧后以流模式将数据返回给调用接口。 当采集多种数据时,用户需要维护采集数据的顺序, 从而解析返回数据的含义。 建议一个实验仅仅采集一种类型数据以简化数据处理。
4.5.1. 采集波形数据
波形数据为模拟信号经ADC量化和符号转换后结果, 用8比特二进制补码表示,范围对应-128~127;
- ASIC平台1个时钟周期对应8个采样点(8个字节)
- FPGA平台1个时钟周期对应16个采样点(16字节)
- 数据采用大端字节序,数据遵循先采先到顺序
4.5.2. 采集IQ数据
解模计算公式如下:
- $m$表示解模次数,$n$表示解模的采样点个数;
- $S_{i,j}$为输入波形的第i次解模第j个采样点,8比特有符号数
- $iw_{i,j}$、$qw_{i,j}$为i、q权重的第i次解模第j个采样点,8比特有符号数
- $\omega_i$、$\phi_i$分别为第i次解模的频率和相位
- $scale_i$为第i次解模的范围选择,可设置为1或者16
解模频率应设置为输入波形对应频率使得解模结果频率为0, 解模结果相位等于解模设置相位设置减去输入波形相位。 若解模相位为0,则结果相位等于波形相位取反。
解模求和结果I、Q分别用32比特二进制补码表示,解模的结果存储格式如下:
- 1个完整的数据包含I,Q(8字节)
- I先到达,Q后到达
- I, Q数据采用大端字节,都占用4个字节
4.5.3. 采集态数据
态判断计算
态判断利用解模IQ数据,通过三组直线方程将 IQ 平面划分为三个区域,判定量子比特状态。
三组直线方程定义在 DAQ_PAR 参数区(见 §4.4.1), 每组包含三个系数(a, b, c),直线方程为 $ax + by = c$, 其中 a、b 为 16 位有符号数,c 为 32 位有符号数,I、Q 为 20 位截位后的解模结果。
对于每条直线,位置判定公式为:
得到三条直线的位置判定结果后,通过优先级电路确定态信息:
| 优先级 | 态值 | 判定条件 |
|---|---|---|
| 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}
4.5.4. 采态计数数据
- 1个完整数据包含4个计数器数据(16字节)
- 4个计数数据顺序为0态计数器、1态计数器、2态计数器、3态计数器
- 计数器采用大端字节序,为32比特无符号数
4.6. ACQ通道全流程控制示例
本节通过一个完整的端到端示例说明ACQ通道的编程配置流程。 示例基于 ASIC 平台(ADC 8 bit@6 Gsps),场景为对2个量子比特(q0, q1)执行单次读出,采集解模IQ数据。
4.6.1. 端到端配置流程
ACQ通道的工作流程如下:
| 阶段 | 操作 | 说明 |
|---|---|---|
| 初始化 | 配置模拟前端、解模参数、ACQ寄存器 | 通过SPI写入,步骤1~3无先后顺序要求 |
| 初始化 | 加载MCU程序 | 写入MCU_INS,定义触发后要发出的码字 |
| 运行 | 外部触发 → MCU执行 → 产生码字 | 触发由其它硬件发出,MCU响应后执行程序并生成32位码字 |
| 运行 | 码字解码 → 采集 → 解模 → 推送数据 | 硬件自动流水线执行 |
| 运行 | 上位机接收数据 | 从 rslt_push 接口读取并解帧 |
关键理解:
触发信号来自外部硬件(非MCU),MCU是被动响应方。
MCU 程序加载到 MCU_INS 后处于待命状态,收到触发后执行并生成码字。
初始化配置可在任意时刻通过 SPI 完成,只需在触发前生效即可。
4.6.2. 地址空间速查
以下配置基于ACQ通道0(Exaddr=0),各模块基地址如下(完整地址映射见 附录A.1.1):
| 模块 | 基地址 | 用途 |
|---|---|---|
| MCU_INS | 0x00200000 | MCU指令存储 |
| MCU_DAT | 0x00300000 | MCU数据存储 |
| DAQ_REG | 0x00400000 | DAQ控制寄存器 |
| DAQ_PAR | 0x00500000 + N×0x800 | 解模参数查找表(每比特 2 KB,N = qubit 序号) |
| MIXER_REG | 0x00100000 | 混频板本振配置 |
FPGA 平台额外使用 DAQ_FLT(
0x00580000)存储匹配滤波器系数(系数直读模式)。ASIC 平台使用系数计算模式,无需此项。
4.6.3. 步骤1:配置模拟前端
通过SPI写混频板本振频率寄存器:
| 地址 | 寄存器 | 字段 | 值 | 说明 |
|---|---|---|---|---|
0x00100000 |
lo_freq | fcw [31:0] | 5_500_000 |
本振 5.5 GHz,单位 kHz |
本振频率根据目标量子比特频率确定:中频 = 量子比特频率 − 本振频率。同一混频板4个通道共享本振。
4.6.4. 步骤2:加载解模参数
DAQ_PAR 每比特独占 2 KB 子空间(q0 基地址 = 0x00500000,q1 基地址 = 0x00500800),详见 §4.4.1。
控制区配置(每组 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 |
三组直线方程系数(a,b,c)需通过量子比特校准实验确定,此处以"校准值"代替。
若实验不需要态判断(如仅采集 IQ 数据),直线方程系数可填 0。
权重区配置(偏移 0x200 起,布局见 §4.4.1 存储格式图):
本例 q0 使用 16 个时钟周期的权重数据(写入 q0 权重区 0x00500200 起),
q1 同样 16 个时钟周期(写入 q1 权重区 0x00500A00 起)。
权重系数为 8 位有符号数,I 路和 Q 路分开存储,具体偏移以 readout_para.png 图示为准。
ASIC 平台下匹配滤波器系数 = DDS 载波 × 权重参数(系数计算模式),
权重数据只需存储缓变包络,一个权重点可对应多个时钟周期采样点(由 `step_ctrl` 控制)。
MCU 可通过切换 PARA_ID 在运行时快速切换目标比特。
mtf_idx 的 addr 和 len 单位为时钟周期(ASIC 平台每周期 8 采样点)。
本例 len=16 时钟周期 = 128 采样点。
4.6.5. 步骤3:配置ACQ寄存器
通过SPI写DAQ控制寄存器:
| 地址 | 寄存器 | 字段 | 值 | 说明 |
|---|---|---|---|---|
0x00400044 | func_ctrl | iq_scale [3] | 0 | IQ 结果截位 [27:8] |
| two_sta_en [2] | 0 | 三态读出模式 | ||
| 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. 步骤4:MCU程序与触发
MCU程序加载到 MCU_INS(0x00200000),触发后MCU执行程序并生成32位码字。
触发信号由外部硬件发出,MCU响应后自动执行。
码字示例(使能 q0、q1 解模,仅存储IQ数据):
| 位段 | 字段名 | 值 | 说明 |
|---|---|---|---|
| [31:16] | QUBIT_EN | 0x0003 | 使能 q0, q1(bit0=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 | 参数组索引(各比特独立查找) |
完整码字值:0x0003_2000
一个码字可同时使能多个比特(通过 QUBIT_EN 位段),
各比特使用各自的 DAQ_PAR 子空间(基地址 = 0x00500000 + N×0x800),
因此 q0 和 q1 可共用 PARA_ID=0 且互不干扰。
若同一比特需要使用不同的解模参数(如不同频率/权重),
可在不同触发中切换 PARA_ID 来实现。
4.6.7. 步骤5:数据接收
采集完成后硬件通过 rslt_push 推送上位机。IQ数据帧格式(2比特 × 8字节):
| 字节偏移 | 字段 | 长度 | 格式 |
|---|---|---|---|
| 0 | I (q0) | 4 字节 | 32位有符号整数,大端 |
| 4 | Q (q0) | 4 字节 | 32位有符号整数,大端 |
| 8 | I (q1) | 4 字节 | 32位有符号整数,大端 |
| 12 | Q (q1) | 4 字节 | 32位有符号整数,大端 |
若码字同时使能多种数据存储,帧内顺序为:
波形数据 → 解模IQ数据 → 态判断数据 → 态计数数据
推荐每次仅使能一种数据类型以简化解析。
4.6.8. 配置清单汇总
| 地址 | 寄存器/区域 | 关键值 |
|---|---|---|
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) |
0x00200000 | MCU_INS | MCU程序 → 码字 0x0003_2000 |
5. 处理器EXC-Pump编程模型
EXC-Pump通道的编程包括: MCU的指令、MCU的数据、控制寄存器、波形索引表、波形仓库、混频板与泵浦板配置7类数据。
- MCU指令+MCU数据可用于编程发出触发码字以及实时修改控制寄存器;
- 控制寄存器可用于指定调制频率、调制相位、工作模式等参数;
- 波形索引表定义了从波形ID到波形地址和长度的映射;
- 波形仓库定义了波形具体的采样点数据;
- 混频板配置用于设置本振频率(增益为预留接口);
- 泵浦板配置用于配置Pump通道的频率和功率等;
混频板上下变频通道共享同一个本振设置。增益为预留接口,支持情况取决于混频板硬件形态。
数字部分(MCU的指令、MCU的数据、控制寄存器、波形索性表、波形仓库)的编程模型如下图所示:
- EXC-Pump通道的波形输出由AWG模块MCU发出的码字触发。 对于输出波形而言,MCU发出的码字定义波形的索引ID,
- 索引ID输入到波形索引表之后输出波形在波形仓库中的起始地址和长度, 接着波形仓库利用起始地址和长度将对应采样点的原始数据输出。
- 原始数据经过希尔伯特变换后增加了虚部数据(滤除了负频), 接着数据进入正交数字混频模块,与NCO产生的单音信号混频后得到调频数据。
- 经过模式选择器后,数据首先经过调幅模块,接着经过半带滤波器进行插值、然后再经过MIX模块进行采样频率搬移
- 最后数字信号经过DAC转换后输出基带信号,基带信号经过上变频输出读出系统
上述过程中模式选择器可以选择原始波形数据、希尔伯特虚部数据、正交调制数据以及NCO自身产生的单音数据。
- 原始波形模式:用于量子实验,通过直接输出包含多个读出频率的波形,可以实现对多个量子比特的并行读出;
- 正交调制模式:用于腔频扫描等应用,通过实时修改NCO频率,可以实时改变输出频率,配合DAQ进行实时读取,可以实现扫频功能。若基带信号包含多个频点,还能实现多频点并行扫描功能;
- NCO Only模式:可以输出连续波形,方便连接外部仪器上进行测试,用于芯片本身性能的测试。
- 希尔伯特虚部模式:输出波形经过希尔伯特变换后的正交部分,仅用于调试。
最后数字信号经过DAC转换成基带信号,基带信号再和外部本振信号模拟混频后输出读出激励波形。 读出芯片不同模式输出的频响曲线如下图所示:
为了兼容混频输出和射频直出两种工作模式以及在FPGA和ASIC平台上实现,半带滤波器和MIX模块都支持旁路功能,因此最终波形输出支持NRZ、MIX、HBNRZ和HBMIX四种模式。
- NRZ模式:适合低频输出,可用于外部混频情况,无需插值滤波器,ASIC和FPGA平台可用。
- MIX模式:适合高频输出,可用于射频直出情况,无需插值滤波器,ASIC和FPGA平台可用。
- HBNRZ模式:在NRZ模式的基础上增加了插值滤波器,优化了输出平坦度,仅ASIC平台支持。
- HBMIX模式:在MIX模式的基础上增加了插值滤波器,优化了输出平坦读,仅ASIC平台支持。
射频直出主要为ASIC平台预留,使用HBMIX模式时,读取激励信号使用了高阶奈奎斯特域频率,考虑DAC采样率超频到8 GSps,使用mix-mode模式时等价采样率为16 GSps。6~7 GHz的输入频率会由于0阶保持输出功率存在sinc滚降,归一化的信号输出功率如上图绿色曲线所示。可以看到7 GHz输出相比直流输出功率下降了6.5 dB,6~7GHz工作范围内,功率平坦度约为2 dB。
Pump通道输出的使能信号由MCU码字触发输出, 当MCU输出码字的对应位使能后,脉冲发生模块从寄存器或波形索引表得到脉冲长度控制数据, 并将指定长度的脉冲信号通过I/O直接输出。
ez-Q 2.5 FPGA/ASIC平台的Pump通道需要提前配置频率、功率和输出使能
由于EXC-Pump通道有且仅有数字部分存在状态机, 为了清除EXC-Pump通道由于上位机强制中断程序或者MCU配置了错误指令而产生异常, EXC-Pump通道提供了软复位功能,支持通过调用驱动API来执行软复位操作, 软复位可使得状态机从异常中恢复,从而使得下一次历史无关配置项能够正确执行。
5.1. 码字功能定义
AWG模块仅使用码字指令的低13位,其余位保留, 控制码字功能定义如下表所示。
| 比特位 | 名字 | 功能描述 |
|---|---|---|
| [12] | PULSE_ONLY | 波形输出禁用使能,高电平不输出波形 |
| [11] | PARAMETER_SEL | 波形索引选择,1:寄存器,0:查找表 |
| [10] | NCO_CLR_EN | NCO清零使能, 高有效 |
| [9] | MARK_EN | 标记脉冲输出使能, 高有效 |
| [8] | PUMP_EN | 泵浦脉冲输出使能, 高有效 |
| [7:0] | WAVE_ID | 波形编号, 最大索引256个波形输出 |
- 码字比特[12]用于禁用波形输出,通过使能该比特可以仅输出Pump或者Marker脉冲而不输出该指令码字[7:0]索引的波形。
- 码字比特[11]用于使能动态波形输出功能,该功能直接使用wave_ctrl寄存器中来索引波形,暂不使用该功能;
- 码字比特[10]用作内部NCO清零信号,该功能可以在调制输出模式下,复位NCO的累积相位;
- 码字比特[9]用于触发Marker脉冲输出,该脉冲能够触发外部仪器,可协同控制与外部芯片或者仪器,方便调试;
- 码字比特[8]用于触发发出Pump脉冲输出,该脉冲可用于使能外部开关,避免Pump信号持续输出加热制冷机;
- 码字比特[7:0]用作波形索引,总共可以索引256种波形,能够实现多个比特不同排列组合下的读取操作;
5.2. 寄存器功能定义
EXC-Pump通道的全部寄存器可以被SPI和MCU同时访问, 用户可以根据需要决定使用SPI还是MCU来控制寄存器的值。
| 名字 | 功能描述 |
|---|---|
| wave_ctrl | 寄存器索引波形,包含地址和长度信息 |
| amplitude | 波形输出调制幅度 |
| Frequency | 调制载波频率 |
| Phase | 调制载波相位 |
| Function | AWG工作模式定义 |
| pump_ctrl | pump使能脉冲控制 |
| mark_ctrl | 标记使能脉冲控制 |
wave_ctrl波形输出直接控制,可直接从波形仓库取采样点输出。- 高16位为索引地址,单位是时钟周期
- 低16位为索引长度,单位是时钟周期
amplitude调制幅度控制字- 高16位为幅度控制字acw,范围-32768~32767,归一化幅度$Amp = acw/2^{14}$
frequency调制频率控制- 32比特频率控制字fcw,$F_{nco}= fcw/2^{32}*F_s$,其中$F_s$是输出采样率。
phase调制相位控制- 高16位相位控制字pcw: $\phi_{nco} = pcw/2^{16}*2*\pi$。
function寄存器用于设置AWG的工作模式pump_ctrl泵浦脉冲使能控制- 高16位控制输出延迟时钟周期,范围(1~65535)
- 低16位控制附加持续时钟周期,范围(1~65535)
mark_ctrl标记脉冲使能控制- 高16位控制输出延迟时钟周期,范围(1~65535)
- 低16位控制脉冲持续时钟周期,范围(1~65535)
function的详细控制如下所示:
| 比特位 | 名字 | 功能描述 |
|---|---|---|
| [3] | INTP_SEL | 插值模式选择,1:半带插值,0:邻近插值 |
| [2] | MIX_MODE | 混频模式选择,1:混频模式,0:基带模式 |
| [1:0] | AWG_MODE | AWG模式, 00:直出,01:调制,10:Hilbert,11:NCO |
INTP_SEL在FPGA平台下受限于DSP资源,只能设置为邻近插值模式。MIX_MODE用于直接输出射频信号,由于采用了模拟混频方案,仅使用基带模式。AWG_MODE设置AWG模式,实验选用直出模式或者调制模式,其余两种模式用于调试。
AWG 工作模式选择指南
func_ctrl 寄存器的 AWG_MODE 字段定义了 AWG 模块的四种工作模式,不同模式适用于不同的实验场景:
| AWG_MODE | 模式名称 | 数据路径 | 典型用途 | 频率灵活性 |
|---|---|---|---|---|
00 | 直出模式 (Direct) | 波形仓库 → DAC | 量子比特操作:直接输出包含多频点的基带波形,配合外部模拟混频实现多比特并行读出 | 频率固定(由波形数据决定) |
01 | 调制模式 (Modulation) | 波形仓库 → NCO 混频 → DAC | 腔频扫描:基带波形为 DC 包络,NCO 频率可由寄存器实时切换实现扫频 | 频率灵活(MCU 实时改 NCO) |
10 | Hilbert 模式 | 波形仓库 → Hilbert 变换 → DAC | 调试:输出波形的正交分量,用于验证 Hilbert 变换实现 | — |
11 | NCO Only 模式 | NCO → DAC | 性能测试:输出纯净单音连续波,连接外部仪器测试芯片性能 | 仅输出 NCO 频率 |
模式选择决策树:
-
实验需要输出量子门操作波形 → 使用直出模式 (
00)- 波形包含多个读出频率分量,可并行读出多个 qubit
- 频率由预计算的基带波形确定,触发后不可实时改变
-
实验需要扫频(如腔频扫描、Rabi 振荡) → 使用调制模式 (
01)- 基带波形仅定义脉冲包络,NCO 提供频率灵活性
- MCU 可通过写
frequency寄存器实时改变输出频率,无需重新加载波形
-
芯片本身性能验证(如相噪、杂散测试) → 使用NCO Only 模式 (
11)- 输出连续波,不受波形仓库长度限制
-
验证 Hilbert 变换硬件实现 → 使用Hilbert 模式 (
10)- 仅用于调试,正常实验不使用
建议:常规量子实验使用直出模式(
00);需要频率扫描的实验使用调制模式(01);Hilbert 和 NCO Only 模式仅在调试和测试阶段使用。
输出模式 (NRZ/MIX/HBNRZ/HBMIX) 选择
结合 MIX_MODE 和 INTP_SEL,AWG 支持四种最终输出模式:
| 输出模式 | MIX_MODE | INTP_SEL | 特点 | 平台支持 | 适用场景 |
|---|---|---|---|---|---|
| NRZ | 0(基带) | 0(邻近插值) | 基带直出,无插值滤波 | FPGA + ASIC | 外部模拟混频,低频输出 |
| MIX | 1(混频) | 0(邻近插值) | 混频输出,无插值滤波 | FPGA + ASIC | 射频直出,高频输出 |
| HBNRZ | 0(基带) | 1(半带插值) | 基带 + 半带插值,平坦度优化 | 仅 ASIC | 外部模拟混频 + 高平坦度要求 |
| HBMIX | 1(混频) | 1(半带插值) | 混频 + 半带插值,最佳高频性能 | 仅 ASIC | 射频直出 + 最优平坦度(推荐 ASIC 高频场景) |
当前推荐:ez-Q 2.5 采用模拟混频方案,所有平台使用 NRZ 模式(
MIX_MODE=0, INTP_SEL=0)。MIX/HBMIX/HBNRZ 模式为 ASIC 平台射频直出方案预留。
5.3. 波形索引表定义
波形查找表的深度为256条(1 kB),每个条目的位宽为32比特, 其通过8比特的波形id来索引输出波形的参数(地址和长度),最大支持256种不同的输出波形。
索引表格式定义如下图所示: wave_id是mcu产生的码字,其可以作为地址索引波形控制参数。
波形控制参数包括波形地址addr和波形长度len参数,颗粒度是时钟周期。
5.4. 波形仓库定义
- ASIC平台下,每个时钟周期对应8个采样点,采样点个数需要为8的整数倍,数据更新率为6 Gsps,每个采样点持续时间为167 皮秒(6 GS/s)。
- 在FPGA平台下,每个时钟周期对应16个采样点,采样点个数需要为16的整数倍,数据更新率为 4 GSps,每个采样点持续时间为250皮秒。
- 每个采样点通过16比特的二进制补码数据表示;
- 波形仓库的容量为128 KB,在FPGA平台和ASIC平台下最大分别支持16 us和10 us波形输出。
对于EXC输出频率$F_{out}$(例如6.7 GHz),在本振为$F_{LO}$(例如5.5GHz)本振频率下, 则存储区描绘的基带波形频率$F_{IF}$为1.2 GHz ,$F_{IF} = F_{out} - F_{LO}$。
5.5. EXC 上变频电路配置
来自读出基带板输出端口的中频信号需要经过混频板上变频电路处理后才能够被发送到量子芯片。 上变频电路将 DAC 输出的基带/中频信号搬移到量子比特工作频段。
5.5.1. 配置项
| 配置名 | 描述 | 访问方式 |
|---|---|---|
lo_freq | 变频本振频率设置 | SPI(基地址 0x00100000) |
up_gain | 上变频增益设置 | SPI(预留) |
5.5.2. 本振频率配置
lo_freq 设置上变频本振频率,输出射频频率由下式确定:
或当使用正交调制模式时:
其中 $F_{baseband}$ 为波形仓库中存储的基带波形频率,$F_{NCO}$ 为 AWG 内部 NCO 调制频率,$F_{LO}$ 为本振频率。
| 参数 | 说明 |
|---|---|
| 位宽 | 32 比特整数 |
| 单位 | kHz |
| 支持范围 | 5,400,000 ~ 5,600,000(即 5.4 ~ 5.6 GHz) |
配置示例:输出 $F_{RF\_out}$ = 6.7 GHz 的单音激励信号:
- 若使用基带直出模式(awg_mode=0),基带波形频率 $F_{baseband}$ = 1.2 GHz,$F_{LO}$ = 5.5 GHz → $F_{RF\_out}$ = 6.7 GHz
- 若使用调制模式(awg_mode=1),基带波形为 DC 包络,$F_{NCO}$ = 1.2 GHz,$F_{LO}$ = 5.5 GHz → $F_{RF\_out}$ = 6.7 GHz
5.5.3. 共享本振约束
重要:同一块混频板上的上下变频通道共享同一个本振信号(寄存器地址同为
0x00100000)。这意味着:
- 同一混频板的 ACQ(下变频)和 EXC(上变频)使用相同的 $F_{LO}$;
- 量子比特的读出频率 $F_{RO}$ 和激励频率 $F_{RI}$ 必须能够用同一个本振覆盖;
- 若 $F_{RO}$ 和 $F_{RI}$ 差距过大导致无法共用本振,需将它们分配到不同混频板(不同槽位)。
5.5.4. 增益设置
up_gain 为预留接口,其支持情况取决于混频板硬件形态。
5.5.5. 配置时序
上变频配置应在 MCU 触发之前通过 SPI 完成。配置写入后需等待本振锁相环(PLL)锁定,建议在初始化阶段完成配置。
配置顺序:SPI 写混频板寄存器 → 等待 PLL 锁定 → 配置 AWG 寄存器 → 加载波形 → 加载 MCU 程序 → 等待触发。
5.6. Pump 模拟电路配置
对处理器 Pump 通道的编程包括模拟电路配置项和使能配置项。模拟电路用于将 Pump 通道配置输出一个指定功率和频率的微波信号,而使能配置项用于控制微波信号的实时开关。
5.6.1. 配置项
| 配置名 | 描述 | 访问方式 |
|---|---|---|
pump_freq | Pump 信号输出频率 | SPI(ch0 基址 0x00200000) |
pump_power | Pump 信号输出功率 | SPI(ch0 基址 0x00300000) |
pump_enable | Pump 信号输出使能 | SPI(ch0 基址 0x00400000) |
5.6.2. 频率配置
| 参数 | 说明 |
|---|---|
| 位宽 | 32 比特整数 |
| 单位 | kHz |
| 取值范围 | 7,000,000 ~ 9,000,000(即 7.0 ~ 9.0 GHz) |
5.6.3. 功率配置
| 参数 | 说明 |
|---|---|
| 位宽 | 32 比特整数 |
| 取值范围 | -1100 ~ -300 |
注意:
pump_power的值与最终输出功率之间的映射关系取决于泵浦板的硬件校准数据,实际使用时应参照具体硬件的校准表进行修正。不同槽位的 Pump 板可能有不同的校准曲线。
5.6.4. 使能控制
Pump 输出采用两级使能机制:
| 级别 | 控制方式 | 说明 |
|---|---|---|
| 硬件使能 | pump_enable 寄存器(SPI 配置) | 32'h11 = 使能输出通道,32'h00 = 完全关闭。设为 32'h00 时,无论 MCU 码字如何设置,Pump 均无输出 |
| 脉冲使能 | MCU 码字 PUMP_EN 位(实时控制) | 在硬件使能开启的前提下,每帧触发时通过码字实时控制 Pump 脉冲的发出与关闭 |
建议:初始化阶段通过 SPI 设置
pump_enable = 32'h11打开硬件使能,实验中通过 MCU 码字的PUMP_EN位控制 Pump 脉冲的实时输出,避免 Pump 信号持续输出加热制冷机。仅在长期不需要 Pump 输出时(如设备维护)才将pump_enable设为32'h00完全关闭。
5.6.5. Pump 脉冲时序
Pump 脉冲的时序由 AWG 模块的 pump_ctrl 寄存器控制(见 §5.2):
- 延迟 (delay):从 MCU 码字触发到 Pump 脉冲开始的时钟周期数
- 宽度 (width):Pump 脉冲持续的时钟周期数
Pump 脉冲应在激励波形输出前开始(提前稳定),在激励波形结束后关闭(保证完整覆盖)。delay 和 width 根据实际波形的持续时长和 Pump 通道的开启稳定时间来确定。
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 | 16384 |
| 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 |
附录A. IDS寄存器索引表
本附录提供读出子系统通道配置寄存器的地址索引(IDS, Index Data Sheet), 供软件编程时通过基地址 + 偏移地址访问具体寄存器。
以下所有表格数据来源于 IDS JSON 数据文件(对应2509批次读出芯片), 由构建时自动渲染生成,确保与硬件设计数据库保持同步。
A.1. 地址空间映射
读出子系统的配置访问采用四级寻址层级,从网络到寄存器的完整链路如下:
-
网络地址(IP) — 定位机箱。软件通过指定目标机箱的 IP 地址来确定与哪个机箱内的板卡通信。一个机箱内可安装多块 PXIe 板卡,IP 地址是整个通信链路的起点。
-
扩展地址(Exaddr) — 定位槽位和总线。[7:3]对应槽位号,exaddr[2:0]对应总线号。读出基带板允许安装在4或者15槽,混频和泵浦功能单元位于基带板相邻槽位(分离形态下混频板和泵浦板分别在基带板左右两侧;合并形态下混频/泵浦合板位于基带板右侧槽位)。软件仅需指定基带板槽位号即可定位全部功能单元。
-
片选地址(Cid) — 定位总线上芯片ID。采用5比特编码最大支持32颗芯片挂载到同一个spi总线上,在当前的实现中,直接使用总线编址通道号,每个芯片独占一个总线,因此Cid固定为0。
-
配置基地址(Base) — 定位具体配置项。采用25比特编码,其中高5比特用来定位不同模块,配合20比特的偏移地址用来具体指定配置项目。
芯片控制存在MCU视角和配置视角,区别是基地址不同。从MCU操控视角来看,AWG和DAQ模块寄存器统一映射在对应 MCU 的 0x200000 地址空间。从上位机配置视角看,基地址和偏移地址定义如下表所示:
A.1.1. ACQ 通道模块基地址
对应 msmt_acq 通道类型(采集通道),共 4 个通道(ch0~ch3),
每个通道包含 5 个功能模块:
| 通道 | Exaddr | Cid | 模块 | 起始地址 | 大小 | 说明 |
|---|---|---|---|---|---|---|
| ch0 | 0 | 0 | MCU_INS | 0x00200000 | 16KB | 采集通道MCU运行指令配置 |
| ch1 | 1 | 0 | MCU_INS | 0x00200000 | 16KB | 采集通道MCU运行指令配置 |
| ch2 | 2 | 0 | MCU_INS | 0x00200000 | 16KB | 采集通道MCU运行指令配置 |
| ch3 | 3 | 0 | MCU_INS | 0x00200000 | 16KB | 采集通道MCU运行指令配置 |
| ch0 | 0 | 0 | MCU_DAT | 0x00300000 | 16KB | 采集通道MCU初始数据配置 |
| ch1 | 1 | 0 | MCU_DAT | 0x00300000 | 16KB | 采集通道MCU初始数据配置 |
| ch2 | 2 | 0 | MCU_DAT | 0x00300000 | 16KB | 采集通道MCU初始数据配置 |
| ch3 | 3 | 0 | MCU_DAT | 0x00300000 | 16KB | 采集通道MCU初始数据配置 |
| ch0 | 0 | 0 | DAQ_REG | 0x00400000 | 256B | 采集通道控制寄存器配置 |
| ch1 | 1 | 0 | DAQ_REG | 0x00400000 | 256B | 采集通道控制寄存器配置 |
| ch2 | 2 | 0 | DAQ_REG | 0x00400000 | 256B | 采集通道控制寄存器配置 |
| ch3 | 3 | 0 | DAQ_REG | 0x00400000 | 256B | 采集通道控制寄存器配置 |
| ch0 | 0 | 0 | DAQ_PAR | 0x00500000 | 32KB | 采集通道读出参数配置 |
| ch1 | 1 | 0 | DAQ_PAR | 0x00500000 | 32KB | 采集通道读出参数配置 |
| ch2 | 2 | 0 | DAQ_PAR | 0x00500000 | 32KB | 采集通道读出参数配置 |
| ch3 | 3 | 0 | DAQ_PAR | 0x00500000 | 32KB | 采集通道读出参数配置 |
| ch0 | 0 | 0 | DAQ_FLT | 0x00580000 | 512KB | 采集通道匹配滤波器系数配置 |
| ch1 | 1 | 0 | DAQ_FLT | 0x00580000 | 512KB | 采集通道匹配滤波器系数配置 |
| ch2 | 2 | 0 | DAQ_FLT | 0x00580000 | 512KB | 采集通道匹配滤波器系数配置 |
| ch3 | 3 | 0 | DAQ_FLT | 0x00580000 | 512KB | 采集通道匹配滤波器系数配置 |
A.1.2. EXC 通道模块基地址
对应 msmt_exc 通道类型(激励通道),共 4 个通道(ch0~ch3),
每个通道包含 5 个功能模块:
| 通道 | Exaddr | Cid | 模块 | 起始地址 | 大小 | 说明 |
|---|---|---|---|---|---|---|
| ch0 | 0 | 0 | MCU_INS | 0x00700000 | 16KB | 激励通道MCU运行指令配置 |
| ch1 | 1 | 0 | MCU_INS | 0x00700000 | 16KB | 激励通道MCU运行指令配置 |
| ch2 | 2 | 0 | MCU_INS | 0x00700000 | 16KB | 激励通道MCU运行指令配置 |
| ch3 | 3 | 0 | MCU_INS | 0x00700000 | 16KB | 激励通道MCU运行指令配置 |
| ch0 | 0 | 0 | MCU_DAT | 0x00800000 | 16KB | 激励通道MCU初始数据配置 |
| ch1 | 1 | 0 | MCU_DAT | 0x00800000 | 16KB | 激励通道MCU初始数据配置 |
| ch2 | 2 | 0 | MCU_DAT | 0x00800000 | 16KB | 激励通道MCU初始数据配置 |
| ch3 | 3 | 0 | MCU_DAT | 0x00800000 | 16KB | 激励通道MCU初始数据配置 |
| ch0 | 0 | 0 | AWG_REG | 0x00900000 | 256B | 激励通道控制寄存器配置 |
| ch1 | 1 | 0 | AWG_REG | 0x00900000 | 256B | 激励通道控制寄存器配置 |
| ch2 | 2 | 0 | AWG_REG | 0x00900000 | 256B | 激励通道控制寄存器配置 |
| ch3 | 3 | 0 | AWG_REG | 0x00900000 | 256B | 激励通道控制寄存器配置 |
| ch0 | 0 | 0 | AWG_IDX | 0x00A00000 | 1KB | 激励通道波形索引表配置 |
| ch1 | 1 | 0 | AWG_IDX | 0x00A00000 | 1KB | 激励通道波形索引表配置 |
| ch2 | 2 | 0 | AWG_IDX | 0x00A00000 | 1KB | 激励通道波形索引表配置 |
| ch3 | 3 | 0 | AWG_IDX | 0x00A00000 | 1KB | 激励通道波形索引表配置 |
| ch0 | 0 | 0 | AWG_WVE | 0x00B00000 | 128KB | 激励通道输出波形数据配置 |
| ch1 | 1 | 0 | AWG_WVE | 0x00B00000 | 128KB | 激励通道输出波形数据配置 |
| ch2 | 2 | 0 | AWG_WVE | 0x00B00000 | 128KB | 激励通道输出波形数据配置 |
| ch3 | 3 | 0 | AWG_WVE | 0x00B00000 | 128KB | 激励通道输出波形数据配置 |
A.2. DAQ_REG — ACQ 寄存器
ACQ 通道配置寄存器,对应采集通道的 DAQ 模块。寄存器基地址参见
A.1.1 节 中 DAQ_REG 行。
各寄存器通过偏移地址在模块内部索引,如下表所示。
| 寄存器名 | 偏移地址 | 权限 | 描述 |
|---|---|---|---|
| mcu_timer | 0x20 | RO | mcu运行时间计数器 |
| mcu_counter | 0x24 | RO | mcu运行指令计数器 |
| loc_state | 0x28 | RW | 局部反馈状态 |
| glb_state | 0x2c | RW | 全局反馈状态 |
| qubit_state | 0x30 | RO | 当前读出态信息监视 |
| amplitude | 0x34 | RW | DAQ幅度控制寄存器 |
| sram_count | 0x38 | RO | SRAM缓存数据量 |
| push_count | 0x3c | RO | 芯片数据推送量 |
| command | 0x40 | WC | DAQ命令寄存器,读为芯片温度码 |
| func_ctrl | 0x44 | RW | DAQ功能寄存器 |
| sample_depth | 0x48 | RW | 波形采样深度控制 |
| coefficient | 0x4c | RW | 模值乘法系数;读为计算结果 |
| int_threshold | 0x50 | RW | 数据中断阈值控制 |
| read_req_ctrl | 0x54 | RW | 读数据请求脉冲控制 |
| mtf_idx_q0 | 0x80 | RW | q0匹配滤波器系数索引 |
| mtf_idx_q1 | 0x84 | RW | q1匹配滤波器系数索引 |
| mtf_idx_q2 | 0x88 | RW | q2匹配滤波器系数索引 |
| mtf_idx_q3 | 0x8C | RW | q3匹配滤波器系数索引 |
| mtf_idx_q4 | 0x90 | RW | q4匹配滤波器系数索引 |
| mtf_idx_q5 | 0x94 | RW | q5匹配滤波器系数索引 |
| mtf_idx_q6 | 0x98 | RW | q6匹配滤波器系数索引 |
| mtf_idx_q7 | 0x9C | RW | q7匹配滤波器系数索引 |
| mtf_idx_q8 | 0xA0 | RW | q8匹配滤波器系数索引 |
| mtf_idx_q9 | 0xA4 | RW | q9匹配滤波器系数索引 |
| mtf_idx_q10 | 0xA8 | RW | q10匹配滤波器系数索引 |
| mtf_idx_q11 | 0xAC | RW | q11匹配滤波器系数索引 |
| mtf_idx_q12 | 0xB0 | RW | q12匹配滤波器系数索引 |
| mtf_idx_q13 | 0xB4 | RW | q13匹配滤波器系数索引 |
| mtf_idx_q14 | 0xB8 | RW | q14匹配滤波器系数索引 |
| mtf_idx_q15 | 0xBC | RW | q15匹配滤波器系数索引 |
| dds_fpw_q0 | 0xC0 | RW | q0解模频率相位控制字 |
| dds_fpw_q1 | 0xC4 | RW | q1解模频率相位控制字 |
| dds_fpw_q2 | 0xC8 | RW | q2解模频率相位控制字 |
| dds_fpw_q3 | 0xCC | RW | q3解模频率相位控制字 |
| dds_fpw_q4 | 0xD0 | RW | q4解模频率相位控制字 |
| dds_fpw_q5 | 0xD4 | RW | q5解模频率相位控制字 |
| dds_fpw_q6 | 0xD8 | RW | q6解模频率相位控制字 |
| dds_fpw_q7 | 0xDC | RW | q7解模频率相位控制字 |
| dds_fpw_q8 | 0xE0 | RW | q8解模频率相位控制字 |
| dds_fpw_q9 | 0xE4 | RW | q9解模频率相位控制字 |
| dds_fpw_q10 | 0xE8 | RW | q10解模频率相位控制字 |
| dds_fpw_q11 | 0xEC | RW | q11解模频率相位控制字 |
| dds_fpw_q12 | 0xF0 | RW | q12解模频率相位控制字 |
| dds_fpw_q13 | 0xF4 | RW | q13解模频率相位控制字 |
| dds_fpw_q14 | 0xF8 | RW | q14解模频率相位控制字 |
| dds_fpw_q15 | 0xFC | RW | q15解模频率相位控制字 |
mcu_timer(0x20)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:0] | mcu_timer | 32'h00000000 | mcu运行时间计数器 |
mcu_counter(0x24)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:0] | mcu_counter | 32'h00000000 | mcu运行指令计数器 |
loc_state(0x28)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:0] | loc_state | 32'hFFFFFFFF | 读写分离,读接收,写发送 |
glb_state(0x2c)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:0] | glb_state | 32'h00000000 | 读写分离,读接收,写发送 |
qubit_state(0x30)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:0] | qubit_state | 32'hFFFFFFFF | 读出量子态信息监视 |
amplitude(0x34)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:16] | acw | 16'h4000 | 反馈给AWG的幅度控制字 |
[11:8] | gpio_t | 4'h0 | DAQ GPIO输出三态控制 |
[3:0] | gpio_o | 4'h0 | DAQ GPIO输入/输出电平 |
sram_count(0x38)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:0] | sram_count | 32'h0 | 采集数据缓存到SRAM中的数据量,4字节单位 |
push_count(0x3c)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:0] | push_count | 32'h0 | 采集数据通过LVDS接口推送数据量,4字节单位 |
command(0x40)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[5] | force_cal | 1'b0 | 强制推送链路发出同步码,高有效 |
[4] | force_req | 1'h0 | 强制发出读请求,高有效 |
[0] | force_int | 1'h0 | 强制发出中断请求,高有效 |
func_ctrl(0x44)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[19:16] | tx_pat_ctrl | 4'h0 | 推送链路同步码数量控制 数量为: 2^(TX_PAT_CTRL+4) |
[15:8] | weight_iq | 8'h80 | 常数权重数据,二进制补码 |
[7] | const_en | 1'h0 | 常数权重数据使能 0: 选择数组权重 1: 选择常数权重 |
[6:4] | step_ctrl | 3'h0 | 每个权重采样点对应时钟周期 0: 1个时钟周期 1: 2个时钟周期 2: 4个时钟周期 3: 8个时钟周期 4: 16个时钟周期 |
[3] | iq_scale | 1'h0 | 解模截断范围选择 0: 截取原始IQ数据[27:8]作为结果 1: 截取原始IQ数据[31:12]作为结果 |
[2] | two_sta_en | 1'h0 | 二态判定模式使能 1: 使能两态判定模式 0: 使能三态判定模式 |
[0] | spi_rd_en | 1'b0 | SPI读数据使能,否则主动推送 0: 主动数据推送模式 1: 被动SPI回读模式 |
sample_depth(0x48)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[15:0] | sample_depth | 16'h100 | 采样深度控制,单位是时钟周期 |
coefficient(0x4c)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[15:0] | coefficient | 16'h100 | 用于计算实时幅度的系数,有符号数 |
int_threshold(0x50)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:0] | int_threshold | 32'h100 | 读请求数据触发阈值,单位是4字节 |
read_req_ctrl(0x54)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:16] | delay | 16'h0004 | 读请求脉冲延迟控制,单位时钟周期 |
[15:0] | width | 16'h0004 | 读请求脉冲宽度控制,单位时钟周期 |
mtf_idx_q0(0x80)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:16] | addr | 16'h0008 | 波形地址,单位存储条目(16个采样点) |
[15:0] | len | 16'h0100 | 波形长度,单位存储条目(16个采样点) |
mtf_idx_q1(0x84)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:16] | addr | 16'h0008 | 波形地址,单位存储条目(16个采样点) |
[15:0] | len | 16'h0100 | 波形长度,单位存储条目(16个采样点) |
mtf_idx_q2(0x88)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:16] | addr | 16'h0008 | 波形地址,单位存储条目(16个采样点) |
[15:0] | len | 16'h0100 | 波形长度,单位存储条目(16个采样点) |
mtf_idx_q3(0x8C)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:16] | addr | 16'h0008 | 波形地址,单位存储条目(16个采样点) |
[15:0] | len | 16'h0100 | 波形长度,单位存储条目(16个采样点) |
mtf_idx_q4(0x90)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:16] | addr | 16'h0008 | 波形地址,单位存储条目(16个采样点) |
[15:0] | len | 16'h0100 | 波形长度,单位存储条目(16个采样点) |
mtf_idx_q5(0x94)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:16] | addr | 16'h0008 | 波形地址,单位存储条目(16个采样点) |
[15:0] | len | 16'h0100 | 波形长度,单位存储条目(16个采样点) |
mtf_idx_q6(0x98)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:16] | addr | 16'h0008 | 波形地址,单位存储条目(16个采样点) |
[15:0] | len | 16'h0100 | 波形长度,单位存储条目(16个采样点) |
mtf_idx_q7(0x9C)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:16] | addr | 16'h0008 | 波形地址,单位存储条目(16个采样点) |
[15:0] | len | 16'h0100 | 波形长度,单位存储条目(16个采样点) |
mtf_idx_q8(0xA0)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:16] | addr | 16'h0008 | 波形地址,单位存储条目(16个采样点) |
[15:0] | len | 16'h0100 | 波形长度,单位存储条目(16个采样点) |
mtf_idx_q9(0xA4)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:16] | addr | 16'h0008 | 波形地址,单位存储条目(16个采样点) |
[15:0] | len | 16'h0100 | 波形长度,单位存储条目(16个采样点) |
mtf_idx_q10(0xA8)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:16] | addr | 16'h0008 | 波形地址,单位存储条目(16个采样点) |
[15:0] | len | 16'h0100 | 波形长度,单位存储条目(16个采样点) |
mtf_idx_q11(0xAC)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:16] | addr | 16'h0008 | 波形地址,单位存储条目(16个采样点) |
[15:0] | len | 16'h0100 | 波形长度,单位存储条目(16个采样点) |
mtf_idx_q12(0xB0)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:16] | addr | 16'h0008 | 波形地址,单位存储条目(16个采样点) |
[15:0] | len | 16'h0100 | 波形长度,单位存储条目(16个采样点) |
mtf_idx_q13(0xB4)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:16] | addr | 16'h0008 | 波形地址,单位存储条目(16个采样点) |
[15:0] | len | 16'h0100 | 波形长度,单位存储条目(16个采样点) |
mtf_idx_q14(0xB8)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:16] | addr | 16'h0008 | 波形地址,单位存储条目(16个采样点) |
[15:0] | len | 16'h0100 | 波形长度,单位存储条目(16个采样点) |
mtf_idx_q15(0xBC)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:16] | addr | 16'h0008 | 波形地址,单位存储条目(16个采样点) |
[15:0] | len | 16'h0100 | 波形长度,单位存储条目(16个采样点) |
dds_fpw_q0(0xC0)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:12] | fcw | 20'h10000 | 频率控制字,fcw/2^20*sample_rate |
[11:0] | pcw | 12'h000 | 相位控制字,pcw/2^12*2*pi |
dds_fpw_q1(0xC4)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:12] | fcw | 20'h10000 | 频率控制字,fcw/2^20*sample_rate |
[11:0] | pcw | 12'h000 | 相位控制字,pcw/2^12*2*pi |
dds_fpw_q2(0xC8)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:12] | fcw | 20'h10000 | 频率控制字,fcw/2^20*sample_rate |
[11:0] | pcw | 12'h000 | 相位控制字,pcw/2^12*2*pi |
dds_fpw_q3(0xCC)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:12] | fcw | 20'h10000 | 频率控制字,fcw/2^20*sample_rate |
[11:0] | pcw | 12'h000 | 相位控制字,pcw/2^12*2*pi |
dds_fpw_q4(0xD0)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:12] | fcw | 20'h10000 | 频率控制字,fcw/2^20*sample_rate |
[11:0] | pcw | 12'h000 | 相位控制字,pcw/2^12*2*pi |
dds_fpw_q5(0xD4)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:12] | fcw | 20'h10000 | 频率控制字,fcw/2^20*sample_rate |
[11:0] | pcw | 12'h000 | 相位控制字,pcw/2^12*2*pi |
dds_fpw_q6(0xD8)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:12] | fcw | 20'h10000 | 频率控制字,fcw/2^20*sample_rate |
[11:0] | pcw | 12'h000 | 相位控制字,pcw/2^12*2*pi |
dds_fpw_q7(0xDC)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:12] | fcw | 20'h10000 | 频率控制字,fcw/2^20*sample_rate |
[11:0] | pcw | 12'h000 | 相位控制字,pcw/2^12*2*pi |
dds_fpw_q8(0xE0)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:12] | fcw | 20'h10000 | 频率控制字,fcw/2^20*sample_rate |
[11:0] | pcw | 12'h000 | 相位控制字,pcw/2^12*2*pi |
dds_fpw_q9(0xE4)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:12] | fcw | 20'h10000 | 频率控制字,fcw/2^20*sample_rate |
[11:0] | pcw | 12'h000 | 相位控制字,pcw/2^12*2*pi |
dds_fpw_q10(0xE8)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:12] | fcw | 20'h10000 | 频率控制字,fcw/2^20*sample_rate |
[11:0] | pcw | 12'h000 | 相位控制字,pcw/2^12*2*pi |
dds_fpw_q11(0xEC)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:12] | fcw | 20'h10000 | 频率控制字,fcw/2^20*sample_rate |
[11:0] | pcw | 12'h000 | 相位控制字,pcw/2^12*2*pi |
dds_fpw_q12(0xF0)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:12] | fcw | 20'h10000 | 频率控制字,fcw/2^20*sample_rate |
[11:0] | pcw | 12'h000 | 相位控制字,pcw/2^12*2*pi |
dds_fpw_q13(0xF4)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:12] | fcw | 20'h10000 | 频率控制字,fcw/2^20*sample_rate |
[11:0] | pcw | 12'h000 | 相位控制字,pcw/2^12*2*pi |
dds_fpw_q14(0xF8)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:12] | fcw | 20'h10000 | 频率控制字,fcw/2^20*sample_rate |
[11:0] | pcw | 12'h000 | 相位控制字,pcw/2^12*2*pi |
dds_fpw_q15(0xFC)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:12] | fcw | 20'h10000 | 频率控制字,fcw/2^20*sample_rate |
[11:0] | pcw | 12'h000 | 相位控制字,pcw/2^12*2*pi |
mtf_idx_q<>跟随平台有所不同,详细参见§4.4章节,上表是以FPGA平台为例
A.3. AWG_REG — EXC-Pump 寄存器
EXC-Pump 通道配置寄存器,对应激励通道的 AWG 模块。寄存器基地址参见
A.1.2 节 中 AWG_REG 行。
各寄存器通过偏移地址在模块内部索引,如下表所示。
| 寄存器名 | 偏移地址 | 权限 | 描述 |
|---|---|---|---|
| mcu_timer | 0x20 | RO | mcu运行时间计数器 |
| mcu_counter | 0x24 | RO | mcu运行指令计数器 |
| loc_state | 0x28 | RO | 读写分离,读接收,写发送 |
| glb_state | 0x2c | RO | 读写分离,读接收,写发送 |
| wave_ctrl | 0x30 | RW | 波形索引寄存器 |
| amplitude | 0x34 | RW | AWG幅度控制寄存器 |
| frequency | 0x38 | RW | 调制频率控制字 |
| phase | 0x3c | RW | 调制相位控制字 |
| command | 0x40 | WC | AWG命令寄存器 |
| func_ctrl | 0x44 | RW | AWG功能寄存器 |
| pump_ctrl | 0x48 | RW | 泵浦脉冲控制 |
| mark_ctrl | 0x4c | RW | 标记脉冲控制 |
mcu_timer(0x20)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:0] | mcu_timer | 32'h00000000 | mcu运行时间计数器 |
mcu_counter(0x24)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:0] | mcu_counter | 32'h00000000 | mcu运行指令计数器 |
loc_state(0x28)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:0] | loc_state | 32'hFFFFFFFF | 读写分离,读接收,写发送 |
glb_state(0x2c)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:0] | glb_state | 32'h00000000 | 读写分离,读接收,写发送 |
wave_ctrl(0x30)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:0] | addr | 16'h0 | 波形输出地址,单位时钟周期 |
[15:0] | len | 16'h0 | 波形输出长度,单位时钟周期 |
amplitude(0x34)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:16] | acw | 16'h4000 | AWG的调幅幅度控制字 |
[11:8] | gpio_t | 4'h0 | AWG GPIO输出三态控制 |
[3:0] | gpio_o | 4'h0 | AWG GPIO输入输出电平 |
frequency(0x38)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:0] | fcw | 32'h00000000 | 调制频率控制字 |
phase(0x3c)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:16] | pcw | 16'h0000 | 调制相位控制字 |
command(0x40)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[0] | force_int | 1'h0 | 强制AWG模块发出中断请求 |
func_ctrl(0x44)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[8] | amp_sel | 1'b0 | 调幅参数选择 1: 选择来自外部的幅度 0: 选择来自AWG的幅度 |
[7] | nco_sw_en | 1'b0 | NCO Only模式开关使能 1: 使能开关控制 0: 关闭开关控制 |
[6] | nco_sw_sel | 1'h0 | NCO Only模式开关选择 1: PUMP_EN控制开关 0: MARK_EN控制开关 |
[5] | mark_inv | 1'h0 | MARK_EN输出极性翻转 1: 脉冲低有效 0: 脉冲高有效 |
[4] | pump_inv | 1'h0 | PUMP_EN输出极性翻转 1: 脉冲低有效 0: 脉冲高有效 |
[3] | intp_sel | 1'h0 | 插值模式选择 1: 半带插值滤波器 0: 邻近插值滤波器 |
[2] | mix_mode | 1'h0 | DAC MIX模式选择 0: NRZ MODE 1: MIX MODE |
[1:0] | awg_mode | 2'h0 | AWG工作模式选择 0: 直接波形输出 1: 调制波形输出 2: Quadrature输出 3: NCO Only输出 |
pump_ctrl(0x48)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:16] | delay | 16'h0001 | 泵浦信号脉冲延迟,单位时钟周期 |
[15:0] | width | 16'h0010 | 泵浦信号脉冲宽度,单位时钟周期 |
mark_ctrl(0x4c)
| 位段 | 字段名 | 复位值 | 描述 |
|---|---|---|---|
[31:16] | delay | 16'h0001 | 调试信号脉冲延迟,单位时钟周期 |
[15:0] | width | 16'h0010 | 调试信号脉冲宽度,单位时钟周期 |
A.4. 寄存器访问说明
- 所有寄存器支持 SPI 和 MCU 双端口访问
- 静态参数建议通过 SPI 配置后保持不变,动态参数通过 MCU 实时更新
- 寄存器位宽均为 32 位(不足 32 位的高位保留)
- 返回数据统一采用 大端字节序
- MCU 以固定 3 个时钟周期/指令 的速率执行
- 权限缩写:
RW= 读写,RO= 只读,WC= 只写(写清除)
附录B. 故障排查
本附录汇总了读出子系统编程中的常见问题、可能原因及排查步骤。
B.1. 解模结果异常
B.1.1. 解模 IQ 数据全为零
| 可能原因 | 排查步骤 |
|---|---|
| 本振频率未配置或配置错误 | 检查混频板 lo_freq 寄存器(0x00100000)是否正确写入 |
| 码字未使能解模功能 | 检查码字 DEMOD_SUM_VAL(bit[4])是否为 1 |
| 匹配滤波器参数未加载 | 检查 DAQ_PAR 中目标 PARA_ID 对应的 dds_fpw 和 mtf_idx 是否已正确写入 |
IQ_SCALE 选择不当导致截位全零 | 尝试切换 IQ_SCALE 位(见 §4.3 参数选择指南),观察是否有非零输出 |
| DAQ_REG 寄存器未复位 | 执行软复位后重新加载配置(见 §B.4) |
| 输入信号功率过低 | 检查射频线缆连接,确认混频板输入端有信号 |
B.1.2. 解模 IQ 数据幅值异常(过大或过小)
| 可能原因 | 排查步骤 |
|---|---|
| 解模频率与输入信号频率不匹配 | 验证 dds_fpw.fcw 计算公式:$F_c = fcw / 2^{20} \times F_s$,确保 $F_c$ 等于输入中频 $F_{IF}$ |
| 权重系数幅度不合理 | 检查 DAQ_PAR 权重区数据,权重系数为 8 位有符号数(范围 -128~127) |
IQ_SCALE 位置不当 | 幅值过大时切到 IQ_SCALE=1(截高位),过小时切到 IQ_SCALE=0 |
STEP_CTRL 不匹配 | 若 STEP_CTRL 过大导致权重点稀疏,解模 SNR 下降,表现为幅值抖动增大 |
B.1.3. FPGA 平台解模结果与 ASIC 平台不一致
| 可能原因 | 排查步骤 |
|---|---|
| 系数直读模式 vs 计算模式的固有差异 | 验证两个平台使用相同的权重数据和频率参数 |
| DAQ_FLT 系数计算方式错误 | FPGA 平台需预计算 I/Q 系数(见 §4.4.3),检查系数是否按公式 $\text{Weight}[n] \times e^{j\omega n}$ 生成 |
| 采样点/时钟周期差异 | FPGA 每周期 16 采样点,ASIC 每周期 8 采样点,确保 mtf_idx.addr 和 mtf_idx.len 单位一致 |
B.2. 态判断异常
B.2.1. 频繁出现错误态(态值 = 3)
| 可能原因 | 排查步骤 |
|---|---|
| 三条直线不交于同一点 | 检查 line0/line1/line2 的系数(a, b, c)是否满足共点条件。若仅需两态判断,设置 TWO_STA_EN=1 |
| IQ 平面分布漂移 | 量子比特状态分布可能随时间漂移,需重新校准直线方程系数 |
| 解模 IQ 数据 SNR 不足 | 检查权重设计是否合理、解模长度是否足够(见 §B.1.2) |
B.2.2. 两态模式下态值始终为 0 或 1
| 可能原因 | 排查步骤 |
|---|---|
| 直线方程系数未校准 | line0 的 (a, b, c) 需通过校准实验确定,不能使用默认值 0 |
TWO_STA_EN 未正确设置 | 确认 func_ctrl 寄存器 bit[2] 为 1 |
B.3. MCU 与触发问题
B.3.1. MCU 程序不生效(无输出、无数据)
| 可能原因 | 排查步骤 |
|---|---|
| MCU 程序未正确加载 | 验证 MCU_INS 基地址(ACQ: 0x00200000, EXC: 0x00700000)已写入正确的指令序列 |
| 触发信号未到达 | 确认外部触发源已正确连接和使能。MCU 是被动响应方——无触发则无执行 |
| 码字位段值错误 | 逐位检查码字定义(ACQ: 32 位,EXC: 低 13 位),确保关键使能位(如 DEMOD_SUM_VAL、PUMP_EN)正确设置 |
| 软复位未执行 | 异常中断后需先执行软复位(见 §B.4),再加载 MCU 程序 |
| 寄存器配置未在触发前完成 | SPI 配置和 MCU 程序加载存在时序要求——配置必须在触发到达前完成(见 §4.6.1 / §5.7.1 流程表) |
B.3.2. MCU 执行正常但数据推送异常
| 可能原因 | 排查步骤 |
|---|---|
| 码字使能了多种存储类型 | 同时使能多种存储导致数据帧变长、解析复杂。建议仅使能一种存储类型进行调试 |
| 数据帧解析顺序错误 | 多 qubit + 多存储类型时,确认帧内数据顺序(波形 → IQ → 态 → 计数)与码字使能位一致 |
B.4. 软复位
ACQ 和 EXC-Pump 通道均提供软复位功能,用于从上位机强制中断或 MCU 错误指令导致的异常状态中恢复。
| 通道 | 复位方式 | 复位范围 |
|---|---|---|
| ACQ | 调用驱动 API 复位函数 | 状态机 + 部分寄存器默认值(详见 IDS 表中各寄存器的复位值列) |
| EXC-Pump | 调用驱动 API 复位函数 | 状态机 + 部分寄存器默认值(详见 IDS 表中各寄存器的复位值列) |
复位后恢复流程: 1. 执行软复位 2. 验证关键寄存器值是否正确 3. 重新加载 MCU 程序 4. 发送测试触发,验证数据通路正常工作
注意:软复位不会恢复所有寄存器到上电默认值。对于被复位的寄存器,需在复位后重新配置。建议在每次软复位后执行完整的初始化序列。
B.5. Pump 通道问题
B.5.1. Pump 无输出
| 可能原因 | 排查步骤 |
|---|---|
| 硬件使能未打开 | 检查 pump_enable 寄存器是否为 32'h11(32'h00 时完全关闭) |
MCU 码字 PUMP_EN 位未置 1 | 检查码字 bit[8] 是否为 1 |
pump_ctrl 配置不当 | 检查 delay 和 width 参数,确保 width > 0 且 delay 不过大 |
pump_freq 或 pump_power 未配置 | 这两个寄存器需要在 Pump 触发前通过 SPI 写入有效值 |
B.6. 数据帧解析
B.6.1. 数据帧解析错位
| 可能原因 | 排查步骤 |
|---|---|
| 码字使能的存储类型与解析代码不匹配 | 确保解析代码的数据类型顺序与码字使能位(WAVE→IQ→STATE→COUNT)一致 |
| 多 qubit 数据顺序混淆 | IQ 数据按 qubit 序号从小到大排列(q0 → q1 → ... → q15),验证解析代码的偏移计算 |
| 字节序错误 | 所有数据采用大端字节序(Big-Endian),确认解析代码的字节序设置正确 |
| 帧头/帧尾未正确识别 | 确认上位机驱动解帧逻辑与硬件推送的帧格式一致 |
调试方法:先使能单一存储类型 + 单 qubit 确认帧格式,再逐步增加复杂度。