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

986 lines
37 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 读出系统历史无关的功能配置项
本文以常用的超导量子比特读出操作为例,
将读出操作可能涉及到的相关功能拆解成最小功能项,
并给出对每个功能项的历史无关配置集。
超导量子比特读出操作涉及到EXT、ACQ和Pump三类通道
本文将基于**ez-Q 2.5 FPGA平台读出子系统**的的通道为控制对象进行功能分解。
读出子系统的工作流程如下图所示:
![readout_proc](assets/readout_proc.png)
本文所指的`历史无关配置`限定为上图中历史无关实验中的**实验配置**项,
而与对读出系统的初始化例如寄存器复位、ADC、DAC、PLL等自动校准
外部参数的校准(例如通信链路校准、系统间同步、回环延时补偿)等操作不在本文讨论范围。
# 激励通道EXC
读出激励通道用于为量子比特读出产生激励信号,
对激励通道的输出控制包括模拟控制和数字控制两个部分。
ez-Q 2.5 FPGA平台变频电路沿用ez-Q 2.0的硬件,
目前不支持变频增益控制LO本振频率控制暂不开放
LO频率固定为5.5 GHz因此模拟电路无需配置。
激励通道的数字电路输入控制如下图所示
![readout_awg](assets/readout_awg.png)
配置项包括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`指令退出运行。
```{.line-numbers}
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位为16h4000`function`寄存器为32h00000000
表示采用NRZ模式直接将存储在波形仓库中的采样点输出。
### 波形映射表 + 波形仓库
编程过程中发射的波形ID必须要有对应的映射表进行转换
而编程的映射表必须要有对应的波形采样点进行匹配。
映射表的一个配置项用32比特表示高16比特对应地址低16比特对应长度
地址和长度的单位都是时钟周期在FPGA平台上一个时钟周期对应16个采样点。
例如映射表配置成
```{.line-numbers}
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](assets/sim_exc_1.png)
## EXC.2 调制波形输出功能
调制波形输出功能将用户配置以采样点经过调制处理后发到DAC
数字信号经过DAC转换成模拟基带信号
接着基带信号再经过模拟变频电路变频后得到读出激励信号。
实现波形调制输出所需的全部配置项如下表所示
|配置项|说明|
|:-:|:-|
|MCU指令|用于产生码字的指令|
|MCU数据|非必要配置配合MCU指令|
|波形映射表|配置码字到波形地址和长度的映射表|
|波形仓库|存储映射表对应的波形|
|控制寄存器|控制波形的输出模式,驱动模式,调幅|
### 编程规范
|说明项|说明内容|
|:-:|:-|
|1|MCU数据根据需要配置若存在访存指令则需配置否则可不配置|
|2|波形输出通过发出码字来控制|
|3|程序结束应该调用exit来退出运行。|
|4|指令和数据的最大容量为16 KB|
以下示例是一个用于发出码字为`0x00000400`的汇编程序,
该程序不存在访存指令可不配置MCU数据。
程序通过`send`指令发送码字信号,并通过`exit`指令退出运行。
```{.line-numbers}
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个采样点。
例如映射表配置成
```{.line-numbers}
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](assets/sim_exc_2.png)
# ACQ通道
读出采集通道用于处理来自量子比特的返回信号,
对返回信号的处理控制包括模拟调制和数字控制两个部分。
ez-Q 2.5 FPGA平台变频电路沿用ez-Q 2.0的硬件,
目前不支持变频增益控制LO本振频率控制暂不开放
LO频率固定为5.5 GHz因此模拟电路无需配置。
采集通道的数字电路输入控制如下图所示
![readout_awg](assets/readout_daq.png)
数字电路配置项包括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](assets/sim_acq_1.png)
## 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](assets/sim_acq_2.png)
## 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](assets/sim_acq_5.png)
可以看到局部反馈端口`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`指令退出运行。
由于使能了仅脉冲输出,因此没有配置波形和索引表。
```{.line-numbers}
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](assets/sim_pump_1.png)
模拟部分配置需要设置输出频率、输出功率并使能输出。
配置用例如下所示:
@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](assets/sim_pump_2.png)
# 附录
## 附录.1 参数扫描测试
参数扫描测试为了提高测试效率,
采用MCU实时修改寄存器来更新参数。
以下是mcu的测试程序
@import "sweep_test.asm"
### 扫相测试用例
<测试设置描述>16个频点
**测试结果如下**
<结果及结论描述>
### 扫频测试用例
16个频点
### 扫幅测试用例
16个频点同时扫使用寄存器控制
## 附录.2 系统功能验证
### 多比特并行读出功能
该测试同时采集读出波形、解模IQ数据、态数据、态统计数据
以验证不同截断数据的正确性。
### 参数快速切换功能
该测试以不同参数死时间≤50 ns的间隔