readout_config_set/读出子系统历史无关配置集.md

37 KiB
Raw Blame History

读出系统历史无关的功能配置项

本文以常用的超导量子比特读出操作为例, 将读出操作可能涉及到的相关功能拆解成最小功能项, 并给出对每个功能项的历史无关配置集。 超导量子比特读出操作涉及到EXT、ACQ和Pump三类通道 本文将基于ez-Q 2.5 FPGA平台读出子系统的的通道为控制对象进行功能分解。 读出子系统的工作流程如下图所示:

readout_proc

本文所指的历史无关配置限定为上图中历史无关实验中的实验配置项, 而与对读出系统的初始化例如寄存器复位、ADC、DAC、PLL等自动校准、 外部参数的校准(例如通信链路校准、系统间同步、回环延时补偿)等操作不在本文讨论范围。

激励通道EXC

读出激励通道用于为量子比特读出产生激励信号, 对激励通道的输出控制包括模拟控制和数字控制两个部分。 ez-Q 2.5 FPGA平台变频电路沿用ez-Q 2.0的硬件, 目前不支持变频增益控制LO本振频率控制暂不开放 LO频率固定为5.5 GHz因此模拟电路无需配置。 激励通道的数字电路输入控制如下图所示 readout_awg 配置项包括MCU指令、MCU数据、波形索引、波形仓库和若干基带输出控制寄存器。 相应的功能如下所示:

  • MCU指令+MCU数据用于控制实验流程和产生执行命令
  • 波形索引+波形仓库用于完成从命令到数字波形信号的翻译;
  • 基带输出控制寄存器用于控制数字波形信号处理过程;

其中输出控制寄存器可以通过上位机直接配置, 此外输出控制寄存器也被映射到了MCU的访存空间 MCU也可以通过修改寄存器来实时控制波形输出行为。 本文暂未涉及到需要实时修改控制寄存器的用例, 默认都是通过上位机直接配置输出控制寄存器。

EXC.1 直接波形输出功能

直接波形输出功能将用户配置以采样点配置的波形数据直接发到DAC 数字信号经过DAC转换成模拟基带信号 接着基带信号再经过模拟变频电路变频后得到读出激励信号。 实现直接波形所需的全部配置项如下表所示

配置项 说明
MCU指令 用于产生码字的指令
MCU数据 非必要配置配合MCU指令
波形映射表 配置码字到波形地址和长度的映射表
波形仓库 存储映射表对应的波形
控制寄存器 控制波形的输出模式

编程规范

用户通过编程MCU来生成码字指令编程需要满足以下规范

说明项 说明内容
1 MCU数据根据需要配置若存在访存指令则需配置否则可不配置
2 波形输出通过发出码字来控制
3 程序结束应该调用exit来退出运行。
4 指令和数据的最大容量为16 KB

以下示例是一个用于发出码字为0x00000000的汇编程序, 该程序不存在访存指令可不配置MCU数据。 程序通过send指令发送码字信号,并通过exit指令退出运行。

send x0, x0, 0 
exit x0, x0, 0

码字约束

对直接波形输出功能有影响的码字如下表所示:

配置项 说明
CODEWORD[12] 0 允许波形输出
CODEWORD[11] 0 使用码字索引波形
CODEWORD[7:0] ID 设置用于指定的波形的ID

例如码字0x00000000可以触发输出形索引ID为0对应的波形。

控制寄存器配置

对直接波形输出功能有影响的寄存器如下表所示:

配置项 说明
ACW 0x4000 设置归一化幅度为1
AMP_SEL 0 使用AWG内部调幅值
INTP_SEL 0 使用邻近插值滤波器
MIX_MODE 0 NRZ输出模式
AWG_MODE 0 直接波形输出模式

例如设置amplitude寄存器高16位为16h4000function寄存器为32h00000000 表示采用NRZ模式直接将存储在波形仓库中的采样点输出。

波形映射表 + 波形仓库

编程过程中发射的波形ID必须要有对应的映射表进行转换 而编程的映射表必须要有对应的波形采样点进行匹配。 映射表的一个配置项用32比特表示高16比特对应地址低16比特对应长度 地址和长度的单位都是时钟周期在FPGA平台上一个时钟周期对应16个采样点。

例如映射表配置成

0x00000080
0x00800040

ID==0是从0地址输出128个时钟周期的波形对应2048个采样点ID==1从128地址开始输出一个长度为64个时钟周期的波形对应1024个采样点波形起始地址和波形长度。波形地址加上波形长度的访问范围是12比特对应最大4096个时钟周期波形输出。

S1S2S3...S16
...
S2033...S2048
...
S3057...S3072

此时波形仓库中的数据应该如上所示,总共存储了192个时钟周期FPGA的主频为250 MHzDAC的更新率为4Gsps192个时钟周期对应3072个采样点数据其中S1-2048采样点对应ID==0时输出,S2049-S3072采样点对应ID==1时输出.

配置示例

以下是直接输出一个高斯包络波形的配置示例, 由于激励和采集在一个芯片上,并被同步信号触发, 为了避免仿采集通道使用未定义数据, 本例为采集通道MCU配置了一条退出指令。

@import "exc_1_config.txt"

仿真结果如下图所示:

sim_exc_1

EXC.2 调制波形输出功能

调制波形输出功能将用户配置以采样点经过调制处理后发到DAC 数字信号经过DAC转换成模拟基带信号 接着基带信号再经过模拟变频电路变频后得到读出激励信号。 实现波形调制输出所需的全部配置项如下表所示

配置项 说明
MCU指令 用于产生码字的指令
MCU数据 非必要配置配合MCU指令
波形映射表 配置码字到波形地址和长度的映射表
波形仓库 存储映射表对应的波形
控制寄存器 控制波形的输出模式,驱动模式,调幅

编程规范

说明项 说明内容
1 MCU数据根据需要配置若存在访存指令则需配置否则可不配置
2 波形输出通过发出码字来控制
3 程序结束应该调用exit来退出运行。
4 指令和数据的最大容量为16 KB

以下示例是一个用于发出码字为0x00000400的汇编程序, 该程序不存在访存指令可不配置MCU数据。 程序通过send指令发送码字信号,并通过exit指令退出运行。

send x0, x0, 0x400 
exit x0, x0, 0

码字约束

对波形调制输出功能有影响的码字如下表所示:

配置项 说明
CODEWORD[12] 0 允许波形输出
CODEWORD[11] 0 使用码字索引波形
CODEWORD[10] EN 清零NCO相位
CODEWORD[7:0] ID 设置用于指定的波形的ID

例如码字0x00000400可以触发输出形索引ID为0对应的波形使能NCO相位清零。

控制寄存器配置

配置项 说明
ACW acw 设置输出波形的调幅值amp = acw/2^14
FCW fcw 设置NCO调制频率freq = fcw/2^32*sample_rate
PCW pcw 相位控制字phi = pcw/2^16*2*pi
AMP_SEL 0 使用AWG内部调幅值
INTP_SEL 0 使用邻近插值滤波器
MIX_MODE 0 NRZ输出模式
AWG_MODE 1 波形调制输出模式

例如设置Amplitude寄存器高16位为16h4000 Frequency为32'h10000000, Phase高16位为16h0000 Function寄存器为32h00000001 采用NRZ模式将存储在波形仓库中的采样点输出 经过希尔伯特变换后然后再与频率为250 MHz相位为0的NCO载波调制后输出。

波形映射表 + 波形仓库

编程过程中发射的波形ID必须要有对应的映射表进行转换 而编程的映射表必须要有对应的波形进行匹配。 映射表的一个配置项用32比特表示高16比特对应地址 低16比特对应长度地址和长度的单位都是时钟周期 在FPGA平台上一个时钟周期对应16个采样点。

例如映射表配置成

0x00000080
0x00800040

ID==0是从0地址输出128个时钟周期的波形对应2048个采样点ID==1从128地址开始输出一个长度为64个时钟周期的波形对应1024个采样点波形起始地址和波形长度。波形地址加上波形长度的访问范围是12比特对应最大4096个时钟周期波形输出。

S1S2S3...S16
...
S2033...S2048
...
S3057...S3072

此时波形仓库中的数据应该如上所示,总共存储了192个时钟周期 FPGA的主频为250 MHzDAC的更新率为4Gsps 192个时钟周期对应3072个采样点数据 其中S1-2048采样点对应ID==0时输出,S2049-S3072采样点对应ID==1时输出。 调制模式输出时,波形需要经过希尔伯特变换, 而希尔伯特变换器的归一化通带频率为0.06~0.44 因此采样点的频率需要处于240~1760 MHz 否则波形会发生显著的畸变。

配置示例

以下是直接输出一个312.5 MHz波形调制上一个-250 MHz频率的配置示例 由于激励和采集在一个芯片上,并被同步信号触发, 为了避免仿采集通道使用未定义数据, 本例为采集通道MCU配置了一条退出指令。

@import "exc_2_config.txt"

仿真结果如下图所示,输出频率为 312.5MHz-250MHz=62.5MHz 32ns输出显示了2个周期波形符合预期。

sim_exc_2

ACQ通道

读出采集通道用于处理来自量子比特的返回信号, 对返回信号的处理控制包括模拟调制和数字控制两个部分。 ez-Q 2.5 FPGA平台变频电路沿用ez-Q 2.0的硬件, 目前不支持变频增益控制LO本振频率控制暂不开放 LO频率固定为5.5 GHz因此模拟电路无需配置。 采集通道的数字电路输入控制如下图所示

readout_awg

数字电路配置项包括MCU指令、MCU数据、参数查找表、滤波器系数表和若干控制寄存器。 相应的功能如下所示:

  • MCU指令+MCU数据用于控制实验流程和产生执行命令
  • 参数表+滤波器系数用于获取指定匹配滤波器系数和提供态判断参数;
  • 基带输入控制寄存器用于控制采集处理过程;

其中输出控制寄存器可以通过上位机直接配置, 此外基带输出控制寄存器也被映射到了MCU的访存空间 MCU也可以通过修改寄存器来实时控制信号处理行为。 本文暂未涉及到需要实时修改控制寄存器的用例, 默认都是通过上位机直接配置控制寄存器。

ACQ.1 波形采集功能

波形采集功能将ADC采集到的原始波形数据采集并上传到上位机。

配置项 说明
MCU指令 用于产生码字的指令
MCU数据 非必要配置配合MCU指令
控制寄存器 控制采集参数
模拟寄存器 控制变频增益和频率

编程规范

不同于激励信号输出可以做到背靠背输出, 波形采集需要保证两次采集之间预留50ns的死时间。 其中死时间定义为两次触发的间隔时间减去波形持续的时间。

说明项 说明内容
1 MCU数据根据需要配置若存在访存指令则需配置否则可不配置
2 波形采集通过发出码字来控制
3 程序结束应该调用exit来退出运行。
4 指令和数据的最大容量为16 KB
5 生成触发码字的死时间应≥50 ns
6 波形持续采集数据速率应≤ 200 Mbps数据上报速率
7 波形突发采集数据量≤ 128 KB片内缓存容量

以下示例是一个用于发出码字为0x00001000的汇编程序, 该程序不存在访存指令可不配置MCU数据。 程序通过send指令发送码字信号,并通过exit指令退出运行。

lui x1, 0x1
send x0, x1, 0x0 
exit x0, x0, 0

码字约束

与波形采集相关的码字如下表所示:

配置项 说明
CODEWORD[12] 1'h1 采集波形数据

建议通过设置0来关闭其它采集功能选项, 例如码字为0x00001000时,表示仅触发波形采集功能, 若开启其它采集选项,采集死时间受不同的功能组合而改变。

控制寄存器配置

在波形采集实验中,主要配置的寄存器参数包括波形采集的深度和数据回传方式。 下表设置采用数据自动推送,该模式先采集的数据先推送,数据以流模式返回。

配置项 说明
spi_rd_en 1'h0 设置为主动数据推送模式
sample_depth sample_depth 要采集数据的深度16bit, 单位是时钟周期

配置示例

以下是采集一段长度为64ns波形的示例 为了方便观察信号,我们将EXC.1示例的输出环回到采集通道。 本示例额外配置了数据阈值请求量int_threshold 以告知仿真器在采集到足够数据后停止运行 并将采集到的数据写入文件。

@import "acq_1_config.txt"

以下是推送的数据(含帧头) @import "acq_1_pack.txt"

去除帧头的波形数据如下图所示 daq_wave

ACQ.2 IQ采集功能

IQ采集功能利用解模算法计算输入信号的IQ值 并将IQ值采集并推送到上位机。 受限于FPGA的计算资源FPGA平台仅支持系数直读模式不支持权重计算模式 因此FPGA平台下需要配置匹配滤波器系数。 而ASIC平台滤波器系数是自动生成的无该配置项。 以下是ez-Q 2.5 FPGA平台下所需的配置项

配置项 说明
MCU指令 用于产生码字的指令
MCU数据 非必要配置配合MCU指令
控制寄存器 控制解模采集相关参数
读出控制参数表 定义了解模所用的参数索引
匹配滤波器系数 定义了解模匹配滤波器系数
模拟寄存器 控制变频增益和频率

编程规范

解模采集需要保证两次采集之间预留50ns的死时间。 其中死时间定义为两次触发的间隔时间减去比特最大解模时间。

说明项 说明内容
1 MCU数据根据需要配置若存在访存指令则需配置否则可不配置
2 IQ解模数据采集通过发出码字来控制
3 程序结束应该调用exit来退出运行。
4 指令和数据的最大容量为16 KB
5 生成触发码字的死时间应≥50 ns
6 IQ数据持续采集数据速率应≤ 200 Mbps数据上报速率
7 IQ数据突发采集数据量≤ 128 KB片内缓存容量

以下示例是一个用于发出码字为0xFFFF2110的汇编程序, 该程序不存在访存指令可不配置MCU数据。 程序通过send指令发送码字信号,并通过exit指令退出运行。

lui x1, 0xFFFF2
send x0, x1, 0x110 
exit x0, x0, 0

码字约束

与IQ解模采集相关的码字如下表所示:

配置项 说明
CODEWORD[31:16] QUBIT_EN 需要采集的频点最大16个
CODEWORD[13] 1'h1 使能IQ数据采集
CODEWORD[11:10] 2'h0 使用参数表中配置
CODEWORD[8] DEMOD_CLR_VAL IQ数据求和清零
CODEWORD[4] DEMOD_SUM_VAL IQ数据求和使能
CODEWORD[3:0] PARA_ID IQ解模选择的参数

例如码字为0xFFFF2110表示仅触发IQ采集功能 该码字使能了全部16个频点的IQ数据采集功能 同时使能了IQ求和和IQ求和清零操作 此时会先执行清零再执行求和,得到单次解模结果, 解模使用的参数为PARA_ID=0索引参数。 建议通过设置0来关闭其它功能选项, 若开启其它选项,采集死时间受不同的功能组合而改变。

如果需要对N次解模IQ进行求和 那么第一次操作应该使能求和清零和解模求和不使能存储, 中间N-2次使能解模求和不使能清零和存储, 最后一次使能存储和解模求和不使能清零。 当需要采集多次求和结果时,重复上述过程即可。

控制寄存器配置

在IQ采集实验中主要配置的寄存器参数为采集的深度和数据回传方式和IQ数据的截取范围。

配置项 说明
spi_rd_en 1'h0 设置为主动数据推送模式
iq_scale 1h0 选择小iq范围

上述设置数据自动推送,先采集的数据先推送,仅使能的频点数据返回, 同时采集的多个频点数据先返回频点序号较小的数据,数据以流模式持续推送直至推送完成。

解模参数配置

码字为0xFFFF2110使用了PARA_ID为0的解模参数 对于每个比特而言由于只执行解模仅需要配置参数组中的mtf_idx域。 下表为qubit0的配置结构由于只用了一组参数因此只需要配置一组参数。 由于使能了16个qubit因此每个qubit都需要配置 不同qubit配置格式相同仅偏移地址不同这里不再赘述。

地址 说明
0x00500000 dds_pfw 无需配置
0x00500004 mtf_idx 需要配置

匹配滤波器系数配置

由于解模使用参数配置表中的mtf_idx来索引匹配滤波器系数, 因此匹配滤波器系数对应区域需要配置。 例如当mtf_idx等于0x00000020时, 表示使用从0偏移地址开始的32个地址内存储的匹配滤波器系数。 每个地址i、q数据分别存储16个系数每个系数占用1个字节 下图是qubit0解模i、q系数的存储示意图 不同qubit配置格式相同仅偏移地址不同这里不再赘述。

地址
0x00580000 I0...I15
... ...
0x005801FC I496...I511
0x00584000 Q0...Q15
... ...
0x005841FC Q496...Q511

配置示例

以下是采集q0到q3解模结果的示例 为了方便观察信号,我们将EXC.1示例的输出环回到采集通道。 并将波形改成包含[407666666,437533333,467800000,499600000]四个频点的多音信号。 本示例额外配置了数据阈值请求量int_threshold 以告知仿真器在采集到足够数据后停止运行 并将采集到的数据写入文件。

@import "acq_2_config.txt"

推送的数据结果如下所示 @import "acq_2_pack.txt"

绘制到iq平面上的结果如下图所示 sim_acq_2

ACQ.3 态采集功能

态采集功能首先利用解模算法计算IQ值 接着用态判断算法计算IQ值对应的比特状态 最后将计算出来的态信息采集并推送到上位机。 态采集功能会利用IQ解模结果 除配置解模所需参数外还需要额外配置态判断所需参数。 以下是ez-Q 2.5 FPGA平台下所需的配置项

配置项 说明
MCU指令 用于产生码字的指令
MCU数据 非必要配置配合MCU指令
控制寄存器 采集的相关配置
读出控制参数表 定义了读出所用的参数索引
匹配滤波器系数 定义了解模匹配滤波器系数
模拟寄存器 控制变频增益和频率

编程规范

态采集需要保证两次态采集之间预留50ns的死时间。 其中死时间定义为两次触发的间隔时间减去比特解模解模时间。

说明项 说明内容
1 MCU数据根据需要配置若存在访存指令则需配置否则可不配置
2 IQ解模数据采集通过发出码字来控制
3 程序结束应该调用exit来退出运行。
4 指令和数据的最大容量为16 KB
5 生成触发码字的死时间应≥50 ns
6 态持续采集数据速率应≤ 200 Mbps数据上报速率
7 态数据突发采集数据量≤ 128 KB片内缓存容量

以下示例是一个用于发出码字为0xFFFF4000的汇编程序, 该程序不存在访存指令可不配置MCU数据。 程序通过send指令发送码字信号,并通过exit指令退出运行。

lui x1, 0xFFFF4
send x0, x1, 0x0 
exit x0, x0, 0

码字约束

与态采集相关的码字如下表所示:

配置项 说明
CODEWORD[31:16] QUBIT_EN 需要采集的频点最大16个
CODEWORD[14] 1'h1 使能态数据采集
CODEWORD[11:10] 2'h0 使用参数表中配置
CODEWORD[3:0] PARA_ID IQ解模选择的参数

例如码字为0xFFFF4000时,表示仅触发态采集功能, 该码字使能了全部16个频点的态数据采集功能 解模使用的参数为PARA_ID=0索引参数。 建议通过设置0来关闭其它功能选项, 若开启其它选项,采集死时间受不同的功能组合而改变。

控制寄存器配置

在IQ采集实验中主要配置的寄存器参数为采集的深度和数据回传方式和IQ数据的截取范围。

配置项 说明
spi_rd_en 1'h0 设置为主动数据推送模式
iq_scale 1h0 选择小iq范围
two_state_en 1b0 不用两态判定

上述设置数据自动推送,先采集的数据先推送, 只要发生采集操作即将全部16个qubit数据推送 数据以流模式持续推送直至推送完成。

解模参数配置

码字为0xFFFF4000使用了PARA_ID为0的解模参数 对于每个比特而言,需要执行解模和态判断, 因此需要配置参数组中的mtf_idx、ab[0,1,2]、c[0,1,2]域。 下表为qubit0的配置结构由于只用了一组参数因此只需要配置一组参数。 由于使能了16个qubit因此每个qubit都需要配置 不同qubit配置格式相同仅偏移地址不同这里不再赘述。

地址 说明
0x00500000 dds_pfw 无需配置
0x00500004 mtf_idx 需要配置
0x00500008 ab0 需要配置
0x0050000c c0 需要配置
0x00500010 ab1 需要配置
0x00500014 c1 需要配置
0x00500018 ab2 需要配置
0x0050001c c2 需要配置

匹配滤波器系数配置

由于解模使用参数配置表中的mtf_idx来索引匹配滤波器系数, 因此匹配滤波器系数对应区域需要配置。 例如当mtf_idx等于0x00000020时, 表示使用从0偏移地址开始的32个地址内存储的匹配滤波器系数。 每个地址i、q数据分别存储16个系数每个系数占用1个字节 下图是qubit0解模i、q系数的存储示意图 不同qubit配置格式相同仅偏移地址不同这里不再赘述。

地址
0x00580000 I0...I15
... ...
0x005801FC I496...I511
0x00584000 Q0...Q15
... ...
0x005841FC Q496...Q511

配置示例

以下是采集q0到q3态结果的示例 为了方便观察信号,我们将EXC.1示例的输出环回到采集通道。 并将波形改成包含[407666666,437533333,467800000,499600000]四个频点的多音信号。 本示例额外配置了数据阈值请求量int_threshold 以告知仿真器在采集到足够数据后停止运行 并将采集到的数据写入文件。

@import "acq_3_config.txt"

推送的数据结果如下所示 @import "acq_3_pack.txt"

上述结果显示q0~q3分别处于2、1、0、1态 其余未测量的比特处于错误未定义的3态。

ACQ.4 计数采集功能

态计数采集功能利用解模算法计算输入信号的IQ值 接着利用态判断算法到量子比特的状态, 最后对0态、1态、2态和3态进行计数统计 最后将将每个比特的四个计数值采集并推送到上位机。 受限于FPGA的计算资源FPGA平台解模仅支持系数直读模式不支持权重计算模式 因此FPGA平台下需要配置匹配滤波器系数。 而ASIC平台滤波器系数是自动生成的无该配置项。 以下是ez-Q 2.5 FPGA平台下所需的配置项

配置项 说明
MCU指令 用于产生码字的指令
MCU数据 非必要配置配合MCU指令
控制寄存器 控制态统计采集相关参数
读出控制参数表 定义了解模所用的参数索引
匹配滤波器系数 定义了解模匹配滤波器系数
模拟寄存器 控制变频增益和频率

编程规范

解模采集需要保证两次采集之间预留50ns的死时间。 其中死时间定义为两次触发的间隔时间减去比特最大解模时间。

说明项 说明内容
1 MCU数据根据需要配置若存在访存指令则需配置否则可不配置
2 IQ解模数据采集通过发出码字来控制
3 程序结束应该调用exit来退出运行。
4 指令和数据的最大容量为16 KB
5 生成触发码字的死时间应≥50 ns
6 IQ数据持续采集数据速率应≤ 200 Mbps数据上报速率
7 IQ数据突发采集数据量≤ 128 KB片内缓存容量

以下示例是一个用于发出码字为0xFFFF8220的汇编程序, 该程序不存在访存指令可不配置MCU数据。 程序通过send指令发送码字信号,并通过exit指令退出运行。

lui x1, 0xFFFF8
send x0, x1, 0x220 
exit x0, x0, 0

码字约束

与态计数采集相关的码字如下表所示:

配置项 说明
CODEWORD[31:16] QUBIT_EN 需要采集的频点最大16个
CODEWORD[15] 1'h1 使能态计数数据采集
CODEWORD[11:10] 2'h0 使用参数表中配置
CODEWORD[9] STATE_CLR_VAL 态计数统计清零
CODEWORD[5] STATE_STS_VAL 态计数统计使能
CODEWORD[3:0] PARA_ID IQ解模选择的参数

例如码字为0xFFFF8220时,表示仅触发态计数采集功能, 该码字使能了全部16个频点的IQ数据采集功能 同时使能了计数统计和计数清零操作, 此时会先执行清零再执行统计,得到单次计数结果, 解模使用的参数为PARA_ID=0索引参数。 建议通过设置0来关闭其它功能选项, 若开启其它选项,采集死时间受不同的功能组合而改变。

态计数一般应用存在多次读出过程的实验中, 对于需要对N次读出进行态计数统计的实验, 那么第一次操作应该使能计数清零和计数统计且不使能计数存储, 中间N-2次使能计数统计不使能计数清零和计数存储, 最后一次使能计数存储和计数统计不使能计数清零。 当需要采集多次计数统计结果时,重复上述过程即可。

控制寄存器配置

在态计数采集实验中主要配置的寄存器参数为数据回传方式和IQ数据的截取范围以及是否使能2态判定。

配置项 说明
spi_rd_en 1'h0 设置为主动数据推送模式
iq_scale 1h0 选择小iq范围
two_state_en 1b0 不用两态判定

上述设置数据自动推送,先采集的数据先推送,仅使能的频点数据返回, 同时采集的多个频点数据先返回频点序号较小的数据,数据以流模式持续推送直至推送完成。

解模参数配置

码字为0xFFFF8220使用了PARA_ID为0的解模参数 对于每个比特而言,由于只执行解模和态判断, 因此需要配置参数组中的mtf_idx、ab[0,1,2]、c[0,1,2]域。 下表为qubit0的配置结构由于只用了一组参数因此只需要配置一组参数。 由于使能了16个qubit因此每个qubit都需要配置 不同qubit配置格式相同仅偏移地址不同这里不再赘述。

地址 说明
0x00500000 dds_pfw 无需配置
0x00500004 mtf_idx 需要配置
0x00500008 ab0 需要配置
0x0050000c c0 需要配置
0x00500010 ab1 需要配置
0x00500014 c1 需要配置
0x00500018 ab2 需要配置
0x0050001c c2 需要配置

匹配滤波器系数配置

由于解模使用参数配置表中的mtf_idx来索引匹配滤波器系数, 因此匹配滤波器系数对应区域需要配置。 例如当mtf_idx等于0x00000020时, 表示使用从0偏移地址开始的32个地址内存储的匹配滤波器系数。 每个地址i、q数据分别存储16个系数每个系数占用1个字节 下图是qubit0解模i、q系数的存储示意图 不同qubit配置格式相同仅偏移地址不同这里不再赘述。

地址
0x00580000 I0...I15
... ...
0x005801FC I496...I511
0x00584000 Q0...Q15
... ...
0x005841FC Q496...Q511

配置示例

以下是采集q0到q3态统计结果的示例 该示例在acq.3示例的基础上仅修改了码字和采集数据量。 码字从000f4000改成了000f8220 阈值数据量从000000001改成了00000010

采集到的数据如下所示:

@import "acq_4_pack.txt"

上述数据分析如下与acq.3实验结果吻合。

  • q0出现了1次2态其余态出现0次
  • q1出现了1次1态其余态出现0次
  • q2出现了1次0态其余态出现0次
  • q3出现了1次1态其余态出现0次

ACQ.5 读出反馈功能

态读出反馈功能首先利用解模算法得到IQ值 接着利用态判断算法计算IQ值对应的比特状态 最后将计算出来的态信息通过上行和下行反馈端口发出。 以下是ez-Q 2.5 FPGA平台下所需的配置项

配置项 说明
MCU指令 用于产生码字的指令
MCU数据 非必要配置配合MCU指令
控制寄存器 读出的相关配置
读出控制参数表 定义了读出所用的参数索引
匹配滤波器系数 定义了解模匹配滤波器系数
模拟寄存器 控制变频增益和频率

编程规范

态读出反馈需要保证两次态采集之间预留50ns的死时间。 其中死时间定义为两次触发的间隔时间减去比特解模解模时间。

说明项 说明内容
1 MCU数据根据需要配置若存在访存指令则需配置否则可不配置
2 IQ解模数据采集通过发出码字来控制
3 程序结束应该调用exit来退出运行。
4 指令和数据的最大容量为16 KB
5 生成触发码字的死时间应≥50 ns

以下示例是一个用于发出码字为0xFFFF00C0的汇编程序, 该程序不存在访存指令可不配置MCU数据。 程序通过send指令发送码字信号,并通过exit指令退出运行。

lui x1, 0xFFFF0
send x0, x1, 0x0C0 
exit x0, x0, 0

码字约束

与态采集相关的码字如下表所示:

配置项 说明
CODEWORD[31:16] QUBIT_EN 需要采集的频点最大16个
CODEWORD[11:10] 2'h0 使用参数表中配置
CODEWORD[7] 上行端口发送使能
CODEWORD[6] 下行端口发送使能
CODEWORD[3:0] PARA_ID IQ解模选择的参数

例如码字为0xFFFF00C0时,表示仅触发反馈读出功能, 该码字使能了全部16个频点的态数据读出上下行反馈功能 解模使用的参数为PARA_ID=0索引参数。 建议通过设置0来关闭其它功能选项, 若开启其它选项,采集死时间受不同的功能组合而改变。

控制寄存器配置

在态读出反馈实验中主要配置的寄存器参数为IQ数据的截取范围和态判断的模式。

配置项 说明
iq_scale 1h0 选择小iq范围
two_state_en 1b0 不用两态判定

解模参数配置

码字为0xFFFF00C0使用了PARA_ID为0的解模参数 对于每个比特而言,需要执行解模和态判断, 因此需要配置参数组中的mtf_idx、ab[0,1,2]、c[0,1,2]域。 下表为qubit0的配置结构由于只用了一组参数因此只需要配置一组参数。 由于使能了16个qubit因此每个qubit都需要配置 不同qubit配置格式相同仅偏移地址不同这里不再赘述。

地址 说明
0x00500000 dds_pfw 无需配置
0x00500004 mtf_idx 需要配置
0x00500008 ab0 需要配置
0x0050000c c0 需要配置
0x00500010 ab1 需要配置
0x00500014 c1 需要配置
0x00500018 ab2 需要配置
0x0050001c c2 需要配置

匹配滤波器系数配置

由于解模使用参数配置表中的mtf_idx来索引匹配滤波器系数, 因此匹配滤波器系数对应区域需要配置。 例如当mtf_idx等于0x00000020时, 表示使用从0偏移地址开始的32个地址内存储的匹配滤波器系数。 每个地址i、q数据分别存储16个系数每个系数占用1个字节 下图是qubit0解模i、q系数的存储示意图 不同qubit配置格式相同仅偏移地址不同这里不再赘述。

地址
0x00580000 I0...I15
... ...
0x005801FC I496...I511
0x00584000 Q0...Q15
... ...
0x005841FC Q496...Q511

配置示例

以下是反馈q0到q3态读出结果的示例 该示例在acq.4示例的基础上仅修改了码字。 将码字从000f8220,改成000f82e0

仿真结果如下图所示: sim_acq_5 可以看到局部反馈端口loc_lvcmos_t上的态结果与acq.3实验相同, 全局反馈回环接收数据glb_fd_in与acq.3实验相同,符合预期。

Pump通道

Pump通道用于为参量放大器提供能量对Pump通道的输出控制包括模拟电路配置。 模拟电路通过小数分配锁相环来合成指定频率,并通过功率驱动电路后输出。

Pump.1 Pump开关输出功能

Pump开关输出功能使用与激励信号同一个MCU来产生码字 通道利用码字来触发产生一个指定脉冲宽度的数字信号, 并利用这个数字信号使能Pump通道微波信号输出 从而实现泵浦通道与激励信号实时同步输出。

配置项 说明
MCU指令 用于产生码字的指令
MCU数据 非必要配置配合MCU指令
控制寄存器 控制脉冲输出的宽度
模拟寄存器 控制Pump的频率和功率

编程规范

说明项 说明内容
1 MCU数据根据需要配置若存在访存指令则需配置否则可不配置
2 波形输出通过发出码字来控制
3 程序结束应该调用exit来退出运行
4 指令和数据的最大容量为16 KB

以下示例是一个用于发出码字为0x00000300的汇编程序, 该程序不存在访存指令可不配置MCU数据。 程序通过send指令发送码字信号,并通过exit指令退出运行。 由于使能了仅脉冲输出,因此没有配置波形和索引表。

lui  x1, 0x00001
send x0, x1, 0x300
exit x0, x0, 0

码字约束

与使能脉冲输出相关的控制码字如下:

配置项 说明
CODEWORD[12] 1 仅使能脉冲输出
CODEWORD[8] 1 使能Pump脉冲输出

例如码字0x00001100可以触发输出pump通道使能控制脉冲而不触发波形输出 此时脉冲的宽度等于pump_width指定的长度。 用户也可以通过设置CODEWORD[12]=0来同时输出波形, 当允许波形输出时使能脉冲的长度等于波形长度加上pump_width指定的长度。 允许波形输出时必须同时配置好RI通道相关配置。

控制寄存器配置

控制器寄存器主要包括对使能脉冲的延迟和宽度的配置。

配置项 说明
pump_inv 0 不反转极性,默认低电平输出
pump_ctrl {delay,width} pump脉冲输出延迟和宽度

模拟寄存器

模拟寄存器用于配置模拟电路生成pump信号的参数

配置项 说明
pump_freq FCW 输出频率控制字freq = FCW*1000
pump_power PCW PCW范围[-1300,-200],码值与输出功率正相关
pump_enable 32'h11 使能pump通道模拟输出

配置示例

数字部分配置 @import "pump_1_dig_cfg.txt" 数字部分仿真结果如下图所示,可以看到脉冲输出持续了96ns24个时钟周期 其中8个时钟周期是波形输出时间16个时钟周期是附加持续时间与预期符合。 sim_pump_1

模拟部分配置需要设置输出频率、输出功率并使能输出。 配置用例如下所示:

@import "pump_1_ana_cfg.txt"

注意:受制于混频板的硬件设计, 对混频板的参数配置需要预留一定等待时间, 建议每执行一项配置后等待10毫秒再执行。

Pump.2 Pump连续输出功能

Pump连续输出功能通过配置寄存器令使能脉冲始终处于高电平 从而允许pump通道始终输出微波信号。 连续输出所需配置项如下表所示:

配置项 说明
控制寄存器 控制脉冲输出的极性
模拟寄存器 控制Pump的频率和功率

码字约束

Pump通道连续输出功能本身无需编程MCU 但是当需要触发RI波形输出时 必须禁止码字Pump脉冲输出功能

控制寄存器配置

控制器寄存器主要包括对使能脉冲的延迟和宽度的配置。

配置项 说明
pump_inv 1 反转极性,控制脉冲默认输出高电平

模拟寄存器

配置项 说明
pump_freq FCW 输出频率控制字freq = FCW*1000
pump_power PCW PCW范围[-1300,-200],码值与输出功率正相关
pump_enable 32'h11 使能pump通道模拟输出

配置示例

数字部分配置仅需要设置pump_en的极性为取反 并且生成码字时不能使能pump_en。 数字部分配置用例如下所示:

@import "pump_2_dig_cfg.txt"

仿真结果如下图所示,将极性取反后, pump_en输出始终为高电平, 模拟部分配置保持与pump.1相同, 此时模拟开关始终打开, pump信号保持持续输出。 sim_pump_2

附录

附录.1 参数扫描测试

参数扫描测试为了提高测试效率, 采用MCU实时修改寄存器来更新参数。 以下是mcu的测试程序

@import "sweep_test.asm"

扫相测试用例

<测试设置描述>16个频点

测试结果如下

<结果及结论描述>

扫频测试用例

16个频点

扫幅测试用例

16个频点同时扫使用寄存器控制

附录.2 系统功能验证

多比特并行读出功能

该测试同时采集读出波形、解模IQ数据、态数据、态统计数据 以验证不同截断数据的正确性。

参数快速切换功能

该测试以不同参数死时间≤50 ns的间隔