2182 lines
61 KiB
Markdown
2182 lines
61 KiB
Markdown
---
|
||
export_on_save:
|
||
html: true
|
||
|
||
html:
|
||
toc: true
|
||
embed_local_images: true
|
||
embed_svg: true
|
||
|
||
title: 读出子系统历史无关功能配置项
|
||
author: 郭成
|
||
date:
|
||
---
|
||
|
||
# 1. 修订记录
|
||
|版本|修订日期|修订原因|修订内容|修订人|
|
||
|:-|:-|:-|:-|:-|
|
||
|v0.1|2025/10/27|统一格式|初始版本|郭成|
|
||
|v0.2|2025/10/31|评审意见|内容补充|郭成|
|
||
|
||
# 2. 读出系统历史无关的功能配置项
|
||
## 2.1. 前言
|
||
|
||
本文以常用的超导量子比特读出操作为例,
|
||
将读出操作可能涉及到的相关功能拆解成最小功能项,
|
||
并给出对每个功能项的历史无关配置集。
|
||
超导量子比特读出操作涉及到EXCT、ACQ和Pump三类通道,
|
||
本文将基于**ez-Q 2.5 FPGA平台读出子系统**的的通道为控制对象进行功能分解,
|
||
读出子系统的工作流程如下图所示:
|
||
|
||

|
||
|
||
本文所指的`历史无关配置`限定为上图中历史无关实验中的**实验配置**项,
|
||
而与对读出系统的初始化(例如寄存器复位、ADC、DAC、PLL等自动校准)、
|
||
外部参数的校准(例如通信链路校准、系统间同步、回环延时补偿)等操作不在本文讨论范围。
|
||
若历史无关实验未得到预期结果,
|
||
需要排查历史无关实验依赖的**运维状态**以修复故障。
|
||
|
||
## 2.2. 目的与范围
|
||
本文档的目的是介绍读出芯片激励产生和采集处理相关控制,
|
||
用户可依据本文档用例在任意实验状态下完成对应实验,
|
||
本文档作为开放文档供大家阅读。
|
||
|
||
## 2.3. 阅读对象
|
||
本文档的预期读者是所有使用本芯片的用户以及对该芯片工作原理感兴趣的读者。
|
||
|
||
## 2.4. 文档概述
|
||
本文档首先介绍了测控系统总体的编程对象和规范,
|
||
针对读出相关的三种类型通道的编程进行了详细介绍。
|
||
|
||
## 2.5. 引用文档
|
||
|文档编号|标题|版本|
|
||
|:-|:-|:-|
|
||
|TODO|读出子系统编程控制模型.md|V1.0|
|
||
|ez-Q 2.5-SDD-06|ez-Q 2.5 测控系统内部通信协议.docx|-|
|
||
|
||
## 2.6. 术语定义
|
||
|名字|全称|解释|
|
||
|:-|:-|:-|
|
||
|EXCT|Excitation|读出激励生成发送通道|
|
||
|ACQ|Acquisition|读出回波采集处理通道|
|
||
|
||
# 3. 激励通道(EXCT)
|
||
|
||
读出激励通道用于为量子比特读出产生激励信号,
|
||
对激励通道的输出控制包括模拟控制和数字控制两个部分。
|
||
ez-Q 2.5 FPGA平台变频电路沿用ez-Q 2.0的硬件,
|
||
目前不支持变频增益控制,LO本振频率控制暂不开放,
|
||
LO频率固定为5.5 GHz,因此模拟电路无需配置。
|
||
激励通道的数字电路输入控制如下图所示
|
||

|
||
配置项包括MCU指令、MCU数据、波形索引、波形仓库和若干基带输出控制寄存器。
|
||
相应的功能如下所示:
|
||
|
||
* MCU指令+MCU数据用于控制实验流程和产生执行命令;
|
||
* 波形索引+波形仓库用于完成从命令到数字波形信号的翻译;
|
||
* 基带输出控制寄存器用于控制数字波形信号处理过程;
|
||
|
||
其中输出控制寄存器可以通过上位机直接配置,
|
||
此外输出控制寄存器也被映射到了MCU的访存空间,
|
||
MCU也可以通过修改寄存器来实时控制波形输出行为。
|
||
本文暂未涉及到需要实时修改控制寄存器的用例,
|
||
默认都是通过上位机直接配置输出控制寄存器。
|
||
|
||
## 3.1. EXCT.1 直接波形输出
|
||
直接波形输出功能将用户配置以采样点配置的波形数据直接发到DAC,
|
||
数字信号经过DAC转换成模拟基带信号,
|
||
接着基带信号再经过模拟变频电路变频后得到读出激励信号。
|
||
实现直接波形所需的全部配置项如下表所示
|
||
|
||
|配置项|说明|
|
||
|:-:|:-|
|
||
|MCU指令|用于产生码字的指令|
|
||
|MCU数据|非必要配置,配合MCU指令|
|
||
|波形映射表|配置码字到波形地址和长度的映射表|
|
||
|波形仓库|存储映射表对应的波形|
|
||
|控制寄存器|控制波形的输出模式|
|
||
|
||
### 3.1.1. 编程约束
|
||
用户通过编程MCU来生成码字指令,编程需要满足以下约束:
|
||
|说明项|说明内容|
|
||
|:-:|:-|
|
||
|1|MCU数据根据需要配置,若存在访存指令则需配置,否则可不配置|
|
||
|2|波形输出通过发出码字来控制|
|
||
|3|程序结束应该调用exit来退出运行。|
|
||
|4|指令和数据的最大容量为16 KB|
|
||
|
||
以下示例是一个用于发出码字为`0x00000000`的汇编程序,
|
||
该程序不存在访存指令,可不配置MCU数据。
|
||
程序通过`send`指令发送码字信号,并通过`exit`指令退出运行。
|
||
|
||
```{.line-numbers}
|
||
send x0, x0, 0
|
||
exit x0, x0, 0
|
||
```
|
||
|
||
### 3.1.2. 码字约束
|
||
对直接波形输出功能有影响的码字如下表所示:
|
||
|
||
|配置项|值|说明|
|
||
|:-|:-:|:-|
|
||
|CODEWORD[12]|0|允许波形输出|
|
||
|CODEWORD[11]|0|使用码字索引波形|
|
||
|CODEWORD[7:0]|ID|设置用于指定的波形的ID|
|
||
|
||
例如码字`0x00000000`可以触发输出形索引ID为`0`对应的波形。
|
||
|
||
### 3.1.3. 控制寄存器配置
|
||
对直接波形输出功能有影响的寄存器如下表所示:
|
||
|
||
|配置项|值|说明|
|
||
|:-:|:-:|:-|
|
||
|AMPLITUDE|0x4000|设置归一化幅度为1|
|
||
|AMP_SEL|0|使用AWG内部调幅值|
|
||
|INTP_SEL|0|使用邻近插值滤波器|
|
||
|MIX_MODE|0|NRZ输出模式|
|
||
|AWG_MODE|0|直接波形输出模式|
|
||
|
||
例如设置`amplitude`寄存器高16位为16‘h4000,`function`寄存器为32’h00000000,
|
||
表示采用NRZ模式直接将存储在波形仓库中的采样点输出。
|
||
|
||
### 3.1.4. 波形映射表 + 波形仓库
|
||
编程过程中发射的波形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 MHz,DAC的更新率为4Gsps,192个时钟周期对应3072个采样点数据,其中`S1-2048`采样点对应`ID==0`时输出,`S2049-S3072`采样点对应`ID==1`时输出.
|
||
|
||
|
||
### 3.1.5. 配置示例
|
||
|
||
以下是直接输出一个高斯包络波形的配置示例。
|
||
完整配置示例可参考[exc_1_config.txt](./exc_1_config.txt)。
|
||
由于激励和采集在一个芯片上,并被同步信号触发,
|
||
本例为ACQ通道MCU配置了一条退出指令以避免仿采集通道使用未定义数据。
|
||
|
||
* **配置项:** 系统配置
|
||
* **描述:** 对daq(ACQ)与awg(EXCT-Pump)进行软复位
|
||
* **Transaction:** 向0x00000018地址写入4 Byte数据
|
||
```{.line-numbers}
|
||
00000018 // address = 0x00000018
|
||
00200004 // slot=4, length = 4 Byte
|
||
00000003 // {daq_rst, awg_rst}
|
||
```
|
||
|
||
* **配置项:** ACQ MCU指令配置
|
||
* **描述:** 向ACQ通道MCU指令空间写入配置指令
|
||
* **Transaction:** 向0x00200000地址写入4 Byte数据
|
||
```{.line-numbers}
|
||
00200000 // address = 0x00200000
|
||
00200004 // slot=4, length = 4 Byte
|
||
0000002B // exit x0,x0,0
|
||
```
|
||
|
||
* **配置项:** EXCT-Pump MCU指令配置
|
||
* **描述:** 向EXCT-Pump通道MCU指令空间写入配置指令
|
||
* **Transaction:** 向0x00700000地址写入16 Byte数据
|
||
```{.line-numbers}
|
||
00700000 // address = 0x00700000
|
||
00200010 // slot=4, length = 16 Byte
|
||
001007B7 // lui x15, 0x100
|
||
0007A083 // lw x1, 0x00(x15)
|
||
0000A00B // send x0,x1,0
|
||
0000002B // exit x0,x0,0
|
||
```
|
||
|
||
* **配置项:** EXCT-Pump MCU数据配置
|
||
* **描述:** 向EXCT-Pump通道MCU数据空间写入配置数据
|
||
* **Transaction:** 向0x00800000地址写入4 Byte数据
|
||
```{.line-numbers}
|
||
00800000 // address = 0x00800000
|
||
00200004 // slot=4, length = 4 Byte
|
||
00000000 // codeword = 0
|
||
```
|
||
|
||
* **配置项:** 通道控制寄存器配置
|
||
* **描述:** 配置波形调制幅度
|
||
* **Transaction:** 向0x00900034地址写入4 Byte数据
|
||
```{.line-numbers}
|
||
00900034 // address = 0x00900034
|
||
00200004 // slot=4, length = 4 Byte
|
||
40000000 // amplitud = 0x4000, 归一化值为1
|
||
```
|
||
|
||
* **配置项:** 通道控制寄存器配置
|
||
* **描述:** 配置波形输出模式
|
||
* **Transaction:** 向0x00900034地址写入4 Byte数据
|
||
```{.line-numbers}
|
||
00900044 // address = 0x00900044
|
||
00200004 // slot=4, length = 4 Byte
|
||
00000000 // AMP_SEL=0, INTP_SEL=0, MIX_MODE=0, AWG_MODE = 0
|
||
```
|
||
|
||
* **配置项:** 波形查找表配置
|
||
* **描述:** 向EXCT通道波形查找表写入查找表数据
|
||
* **Transaction:** 向0x00A00000地址写入4 Byte数据
|
||
```{.line-numbers}
|
||
00A00000 // address = 0x00A00000
|
||
00200004 // slot=4, length = 4 Byte
|
||
00000008 // addr = 0, len = 8 clk
|
||
```
|
||
|
||
* **配置项:** 波形仓库配置
|
||
* **描述:** 向EXCT通道波形仓库写入采样点数据
|
||
* **Transaction:** 向0x00B00000地址写入256 Byte数据
|
||
```{.line-numbers}
|
||
00B00000 // address = 0x00B00000
|
||
00200100 // slot=4, length = 256 Byte
|
||
00470013 // 128 samples, 8 clk
|
||
0076007B
|
||
FEF60000
|
||
FB91FD65
|
||
F91FF9F2
|
||
FBEFF9A8
|
||
057AFFFF
|
||
11100B8C
|
||
154E14B6
|
||
0ABA1208
|
||
F33B0000
|
||
DBFFE673
|
||
D698D622
|
||
EC8ADE31
|
||
15D0FFFF
|
||
3A682A80
|
||
40294256
|
||
1CF0334C
|
||
E0BD0000
|
||
AF14C422
|
||
A9D6A58B
|
||
DA3EBC1E
|
||
27B1FFFF
|
||
642A4B0A
|
||
681C6E9C
|
||
2C945112
|
||
D226FFFF
|
||
8EBDAA40
|
||
8CAF8439
|
||
CF9AA71B
|
||
30CDFFFF
|
||
763C5A63
|
||
76187FFA
|
||
30A05A2C
|
||
CFE4FFFF
|
||
8DA5A7BD
|
||
8FF68568
|
||
D2C2AB48
|
||
2BE0FFFF
|
||
66304FAE
|
||
620B6C6B
|
||
26BD4958
|
||
DB43FFFF
|
||
AC6DBE0D
|
||
B1C8A869
|
||
E1E4C63C
|
||
1BC3FFFF
|
||
3D49311B
|
||
37873F38
|
||
14A1284D
|
||
EDB4FFFF
|
||
D952E04F
|
||
DE9ED908
|
||
F444E869
|
||
09C2FFFF
|
||
1323104E
|
||
0F171278
|
||
04BF0A1E
|
||
FC91FFFF
|
||
FA68FABC
|
||
FC98FB33
|
||
FF46FE14
|
||
0042FFFF
|
||
00110036
|
||
```
|
||
|
||
仿真结果如下图所示:
|
||
|
||

|
||
|
||
## 3.2. EXCT.2 调制波形输出
|
||
调制波形输出功能将用户配置以采样点经过调制处理后发到DAC,
|
||
数字信号经过DAC转换成模拟基带信号,
|
||
接着基带信号再经过模拟变频电路变频后得到读出激励信号。
|
||
实现波形调制输出所需的全部配置项如下表所示
|
||
|
||
|配置项|说明|
|
||
|:-:|:-|
|
||
|MCU指令|用于产生码字的指令|
|
||
|MCU数据|非必要配置,配合MCU指令|
|
||
|波形映射表|配置码字到波形地址和长度的映射表|
|
||
|波形仓库|存储映射表对应的波形|
|
||
|控制寄存器|控制波形的输出模式,驱动模式,调幅|
|
||
|
||
### 3.2.1. 编程约束
|
||
|说明项|说明内容|
|
||
|:-:|:-|
|
||
|1|MCU数据根据需要配置,若存在访存指令则需配置,否则可不配置|
|
||
|2|波形输出通过发出码字来控制|
|
||
|3|程序结束应该调用exit来退出运行。|
|
||
|4|指令和数据的最大容量为16 KB|
|
||
|
||
以下示例是一个用于发出码字为`0x00000400`的汇编程序,
|
||
该程序不存在访存指令,可不配置MCU数据。
|
||
程序通过`send`指令发送码字信号,并通过`exit`指令退出运行。
|
||
|
||
```{.line-numbers}
|
||
send x0, x0, 0x400
|
||
exit x0, x0, 0
|
||
```
|
||
|
||
### 3.2.2. 码字约束
|
||
对波形调制输出功能有影响的码字如下表所示:
|
||
|
||
|配置项|值|说明|
|
||
|:-|:-:|:-|
|
||
|CODEWORD[12]|0|允许波形输出|
|
||
|CODEWORD[11]|0|使用码字索引波形|
|
||
|CODEWORD[10]|EN|清零NCO相位|
|
||
|CODEWORD[7:0]|ID|设置用于指定的波形的ID|
|
||
|
||
例如码字`0x00000400`可以触发输出形索引ID为`0`对应的波形,使能NCO相位清零。
|
||
|
||
### 3.2.3. 控制寄存器配置
|
||
|配置项|值|说明|
|
||
|:-:|:-:|:-|
|
||
|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位为16‘h4000,
|
||
Frequency为32'h10000000,
|
||
Phase高16位为16’h0000,
|
||
Function寄存器为32’h00000001,
|
||
采用NRZ模式将存储在波形仓库中的采样点输出,
|
||
经过希尔伯特变换后然后再与频率为250 MHz相位为0的NCO载波调制后输出。
|
||
|
||
### 3.2.4. 波形映射表 + 波形仓库
|
||
编程过程中发射的波形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 MHz,DAC的更新率为4Gsps,
|
||
192个时钟周期对应3072个采样点数据,
|
||
其中`S1-2048`采样点对应`ID==0`时输出,`S2049-S3072`采样点对应`ID==1`时输出。
|
||
调制模式输出时,波形需要经过希尔伯特变换,
|
||
而希尔伯特变换器的归一化通带频率为0.06~0.44,
|
||
因此采样点的频率需要处于240~1760 MHz,
|
||
否则波形会发生显著的畸变。
|
||
|
||
### 3.2.5. 配置示例
|
||
|
||
以下是直接输出一个312.5 MHz波形调制上一个-250 MHz频率的配置示例,
|
||
完整配置示例可参考[exc_2_config.txt](./exc_2_config.txt)。
|
||
由于激励和采集在一个芯片上,并被同步信号触发,
|
||
为了避免仿采集通道使用未定义数据,
|
||
本例为采集通道MCU配置了一条退出指令。
|
||
|
||
* **配置项:** 系统配置
|
||
* **描述:** 对daq(ACQ)与awg(EXCT-Pump)进行软复位
|
||
* **Transaction:** 向0x00000018地址写入4 Byte数据
|
||
```{.line-numbers}
|
||
00000018 // address = 0x00000018
|
||
00200004 // slot=4, length = 4 Byte
|
||
00000003 // {daq_rst, awg_rst}
|
||
```
|
||
|
||
* **配置项:** ACQ MCU指令配置
|
||
* **描述:** 向ACQ通道MCU指令空间写入配置指令
|
||
* **Transaction:** 向0x00200000地址写入4 Byte数据
|
||
```{.line-numbers}
|
||
00200000 // address = 0x00200000
|
||
00200004 // slot=4, length = 4 Byte
|
||
0000002B // exit x0,x0,0
|
||
```
|
||
|
||
* **配置项:** EXCT-Pump MCU指令配置
|
||
* **描述:** 向EXCT-Pump通道MCU指令空间写入配置指令
|
||
* **Transaction:** 向0x00700000地址写入16 Byte数据
|
||
```{.line-numbers}
|
||
00700000 // address = 0x00700000
|
||
00200010 // slot=4, length = 16 Byte
|
||
001007B7 // lui x15, 0x100
|
||
0007A083 // lw x1, 0x00(x15)
|
||
0000A00B // send x0,x1,0
|
||
0000002B // exit x0,x0,0
|
||
```
|
||
|
||
* **配置项:** EXCT-Pump MCU数据配置
|
||
* **描述:** 向EXCT-Pump控通道MCU数据空间写入配置数据
|
||
* **Transaction:** 向0x00800000地址写入4 Byte数据
|
||
```{.line-numbers}
|
||
00800000 // address = 0x00800000
|
||
00200004 // slot=4, length = 4 Byte
|
||
00000000 // codeword = 0
|
||
```
|
||
|
||
* **配置项:** 通道控制寄存器配置
|
||
* **描述:** 配置波形调制幅度
|
||
* **Transaction:** 向0x00900034地址写入12 Byte数据
|
||
```{.line-numbers}
|
||
00900034 // address = 0x00900034
|
||
0020000C // slot=4, length = 12 Byte
|
||
40000000 // amplitud = 0x4000, 归一化值为1
|
||
F0000000 // frequency = -250 MHz @4 Gsps
|
||
00000000 // phase = 0
|
||
```
|
||
|
||
* **配置项:** 通道控制寄存器配置
|
||
* **描述:** 配置波形输出模式
|
||
* **Transaction:** 向0x00900044地址写入4 Byte数据
|
||
```{.line-numbers}
|
||
00900044 // address = 0x00900044
|
||
00200004 // slot=4, length = 4 Byte
|
||
00000001 // AMP_SEL=0, INTP_SEL=0, MIX_MODE=0, AWG_MODE = 1
|
||
```
|
||
|
||
* **配置项:** 波形查找表配置
|
||
* **描述:** 向EXCT通道波形查找表写入查找表数据
|
||
* **Transaction:** 向0x00A00000地址写入4 Byte数据
|
||
```{.line-numbers}
|
||
00A00000 // address = 0x00A00000
|
||
00200004 // slot=4, length = 4 Byte
|
||
00000008 // addr = 0, len = 8 clk
|
||
```
|
||
|
||
* **配置项:** 波形仓库配置
|
||
* **描述:** 向EXCT通道波形仓库写入采样点数据
|
||
* **Transaction:** 向0x00B00000地址写入256 Byte数据
|
||
```{.line-numbers}
|
||
00B00000 // address = 0x00B00000
|
||
00200100 // slot=4, length = 256 Byte
|
||
004C000F // 128 samples, 8 clk
|
||
00D800A6
|
||
FF6E0085
|
||
FB8AFD9F
|
||
F9DEF9FC
|
||
0025FBE2
|
||
0C020600
|
||
10F61046
|
||
042E0CEA
|
||
EBE6F841
|
||
DF60E28A
|
||
F197E464
|
||
196A04AF
|
||
32D62A79
|
||
1F002F2F
|
||
E6FE050E
|
||
BBB4CC23
|
||
CB47BAE1
|
||
110DEA37
|
||
5161369E
|
||
4CCF59E2
|
||
FE9F2C10
|
||
A8F5CF08
|
||
9C6C9641
|
||
EB8FBB08
|
||
538422CF
|
||
752A7198
|
||
2D535CA7
|
||
B936F225
|
||
818C9050
|
||
BAA490C8
|
||
329FF53F
|
||
7DB4640D
|
||
58967980
|
||
E5C12304
|
||
8CFFAF7A
|
||
9C1F862E
|
||
01A6C901
|
||
60353858
|
||
65967049
|
||
133F439A
|
||
B76CE081
|
||
A21EA133
|
||
DE8EB8BD
|
||
300309CD
|
||
4EAA4892
|
||
27744230
|
||
E5C205D7
|
||
C4E4CE93
|
||
DA6AC9B1
|
||
09FBF1EB
|
||
26E61CE9
|
||
1DC126B9
|
||
FF920F4F
|
||
EA99F270
|
||
ECF9E905
|
||
FD09F47B
|
||
08E40458
|
||
08C50A35
|
||
023C05AF
|
||
FDE9FF76
|
||
FE1CFD96
|
||
FFA1FEF0
|
||
0007FFF9
|
||
```
|
||
|
||
仿真结果如下图所示,输出频率为
|
||
312.5MHz-250MHz=62.5MHz,
|
||
32ns输出显示了2个周期波形,符合预期。
|
||
|
||

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

|
||
|
||
数字电路配置项包括MCU指令、MCU数据、参数查找表、滤波器系数表和若干控制寄存器。
|
||
相应的功能如下所示:
|
||
|
||
* MCU指令+MCU数据用于控制实验流程和产生执行命令;
|
||
* 参数表+滤波器系数用于获取指定匹配滤波器系数和提供态判断参数;
|
||
* 基带输入控制寄存器用于控制采集处理过程;
|
||
|
||
其中输出控制寄存器可以通过上位机直接配置,
|
||
此外基带输出控制寄存器也被映射到了MCU的访存空间,
|
||
MCU也可以通过修改寄存器来实时控制信号处理行为。
|
||
本文暂未涉及到需要实时修改控制寄存器的用例,
|
||
默认都是通过上位机直接配置控制寄存器。
|
||
|
||
## 4.1. ACQ.1 波形采集
|
||
波形采集功能将ADC采集到的原始波形数据采集并上传到上位机。
|
||
|
||
|配置项|说明|
|
||
|:-:|:-|
|
||
|MCU指令|用于产生码字的指令|
|
||
|MCU数据|非必要配置,配合MCU指令|
|
||
|控制寄存器|控制采集参数|
|
||
|模拟寄存器|控制变频增益和频率|
|
||
|
||
### 4.1.1. 编程约束
|
||
不同于激励信号输出可以做到背靠背输出,
|
||
波形采集需要保证两次采集之间预留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
|
||
```
|
||
|
||
### 4.1.2. 码字约束
|
||
|
||
与波形采集相关的码字如下表所示:
|
||
|配置项|值|说明|
|
||
|:-|:-:|:-|
|
||
|CODEWORD[12]|1'h1|采集波形数据|
|
||
|
||
建议通过设置`0`来关闭其它采集功能选项,
|
||
例如码字为`0x00001000`时,表示仅触发波形采集功能,
|
||
若开启其它采集选项,采集死时间受不同的功能组合而改变。
|
||
|
||
### 4.1.3. 控制寄存器配置
|
||
|
||
在波形采集实验中,主要配置的寄存器参数包括波形采集的深度和数据回传方式。
|
||
下表设置采用数据自动推送,该模式先采集的数据先推送,数据以流模式返回。
|
||
|
||
|配置项|值|说明|
|
||
|:-|:-:|:-|
|
||
|spi_rd_en|1'h0|设置为主动数据推送模式|
|
||
|sample_depth|sample_depth|要采集数据的深度,16bit, 单位是时钟周期|
|
||
|
||
### 4.1.4. 配置示例
|
||
以下是采集一段长度为64ns波形的示例,
|
||
完整配置示例可参考[acq_1_config.txt](./acq_1_config.txt)。
|
||
为了方便观察信号,我们将`EXCT.1`示例的输出环回到采集通道。
|
||
本示例额外配置了数据阈值请求量`int_threshold`,
|
||
以告知仿真器在采集到足够数据后停止运行
|
||
并将采集到的数据写入文件。
|
||
|
||
* **配置项:** 系统配置
|
||
* **描述:** 对daq(ACQ)与awg(EXCT-Pump)进行软复位
|
||
* **Transaction:** 向0x00000018地址写入4 Byte数据
|
||
```{.line-numbers}
|
||
00000018 // address = 0x00000018
|
||
00200004 // slot=4, length = 4 Byte
|
||
00000003 // {daq_rst, awg_rst}
|
||
```
|
||
|
||
* **配置项:** ACQ MCU指令配置
|
||
* **描述:** 向ACQ通道MCU指令空间写入配置指令
|
||
* **Transaction:** 向0x00200000地址写入16 Byte数据
|
||
```{.line-numbers}
|
||
00200000 // address = 0x00200000
|
||
00200010 // slot=4, length = 16 Byte
|
||
001007B7 // lui x15, 0x100
|
||
0007A083 // lw x1, 0x00(x15)
|
||
0000A00B // send x0,x1,0
|
||
0000002B // exit x0,x0,0
|
||
```
|
||
|
||
* **配置项:** ACQ MCU数据配置
|
||
* **描述:** 向ACQ通道MCU数据空间写入配置数据
|
||
* **Transaction:** 向0x00300000地址写入4 Byte数据
|
||
```{.line-numbers}
|
||
00300000 // address = 0x00300000
|
||
00200004 // slot=4, length = 4 Byte
|
||
00001000 // codeword = 00001000
|
||
```
|
||
|
||
* **配置项:** ACQ 通道控制寄存器配置
|
||
* **描述:** 配置数据模式和采样深度
|
||
* **Transaction:** 向0x00400044地址写入8 Byte数据
|
||
```{.line-numbers}
|
||
00400044 // address = 0x00400044
|
||
00200008 // slot=4, length = 8 Byte
|
||
00000000 // spi_rd_en = 0
|
||
00000010 // sample_depth = 16 clk
|
||
```
|
||
|
||
* **配置项:** ACQ 通道控制寄存器配置
|
||
* **描述:** 配置数据请求阈值
|
||
* **Transaction:** 向0x00400050地址写入4 Byte数据
|
||
```{.line-numbers}
|
||
00400050 // address = 0x00400050
|
||
00200004 // slot=4, length = 4 Byte
|
||
00000040 // int_threshold = 64
|
||
```
|
||
|
||
`EXCT`通道的**MCU指令配置**、**MCU数据配置**、**通道控制寄存器配置**、**波形查找表配置**、**波形仓库配置**
|
||
保持与EXCT.1相同,不再赘述。
|
||
|
||
以下是推送的数据(含帧头)
|
||
@import "acq_1_pack.txt"
|
||
|
||
去除帧头的波形数据如下图所示
|
||

|
||
|
||
## 4.2. ACQ.2 IQ数据采集
|
||
IQ采集功能利用解模算法计算输入信号的IQ值,
|
||
并将IQ值采集并推送到上位机。
|
||
受限于FPGA的计算资源,FPGA平台仅支持系数直读模式,不支持权重计算模式,
|
||
因此FPGA平台下需要配置匹配滤波器系数。
|
||
而ASIC平台滤波器系数是自动生成的,无该配置项。
|
||
以下是ez-Q 2.5 FPGA平台下所需的配置项:
|
||
|
||
|配置项|说明|
|
||
|:-:|:-|
|
||
|MCU指令|用于产生码字的指令|
|
||
|MCU数据|非必要配置,配合MCU指令|
|
||
|控制寄存器|控制解模采集相关参数|
|
||
|读出控制参数表|定义了解模所用的参数索引|
|
||
|匹配滤波器系数|定义了解模匹配滤波器系数|
|
||
|模拟寄存器|控制变频增益和频率|
|
||
|
||
### 4.2.1. 编程约束
|
||
解模采集需要保证两次采集之间预留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
|
||
```
|
||
|
||
### 4.2.2. 码字约束
|
||
与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`次使能解模求和不使能清零和存储,
|
||
最后一次使能存储和解模求和不使能清零。
|
||
当需要采集多次求和结果时,重复上述过程即可。
|
||
|
||
### 4.2.3. 控制寄存器配置
|
||
|
||
在IQ采集实验中,主要配置的寄存器参数为采集的深度和数据回传方式和IQ数据的截取范围。
|
||
|
||
|配置项|值|说明|
|
||
|:-|:-:|:-|
|
||
|spi_rd_en|1'h0|设置为主动数据推送模式|
|
||
|iq_scale|1’h0|选择小iq范围|
|
||
|
||
上述设置数据自动推送,先采集的数据先推送,仅使能的频点数据返回,
|
||
同时采集的多个频点数据先返回频点序号较小的数据,数据以流模式持续推送直至推送完成。
|
||
|
||
### 4.2.4. 解模参数配置
|
||
码字为`0xFFFF2110`使用了PARA_ID为0的解模参数,
|
||
对于每个比特而言,由于只执行解模,仅需要配置参数组中的mtf_idx域。
|
||
下表为qubit0的配置结构,由于只用了一组参数,因此只需要配置一组参数。
|
||
由于使能了16个qubit,因此每个qubit都需要配置,
|
||
不同qubit配置格式相同,仅偏移地址不同,这里不再赘述。
|
||
|
||
|地址|值|说明|
|
||
|:-|:-:|:-|
|
||
|0x00500000|dds_pfw|无需配置|
|
||
|0x00500004|mtf_idx|需要配置|
|
||
|
||
### 4.2.5. 匹配滤波器系数配置
|
||
由于解模使用参数配置表中的`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|
|
||
|
||
### 4.2.6. 配置示例
|
||
|
||
本例是采集q0到q3解模结果的示例,
|
||
本示例额外配置了数据阈值请求量`int_threshold`,
|
||
以告知仿真器在采集到足够数据后停止运行
|
||
并将采集到的数据写入文件。
|
||
完整配置示例可参考[acq_2_config.txt](./acq_2_config.txt)。
|
||
为了方便观察信号,我们将`EXCT.1`示例的输出环回到采集通道。
|
||
`EXCT`通道的**MCU指令配置**、**MCU数据配置**、**通道控制寄存器配置**、**波形查找表配置**
|
||
保持与EXCT.1相同。此外为了方便观察4个频点解模结果,
|
||
波形改成了包含[407666666, 437533333, 467800000, 499600000]四个频点的多音信号。
|
||
激励通道相关配置不再赘述。
|
||
|
||
* **配置项:** 系统配置
|
||
* **描述:** 对daq(ACQ)与awg(EXCT-Pump)进行软复位
|
||
* **Transaction:** 向0x00000018地址写入4 Byte数据
|
||
```{.line-numbers}
|
||
00000018 // address = 0x00000018
|
||
00200004 // slot=4, length = 4 Byte
|
||
00000003 // {daq_rst, awg_rst}
|
||
```
|
||
|
||
* **配置项:** ACQ MCU指令配置
|
||
* **描述:** 向ACQ通道MCU指令空间写入配置指令
|
||
* **Transaction:** 向0x00200000地址写入16 Byte数据
|
||
```{.line-numbers}
|
||
00200000 // address = 0x00200000
|
||
00200010 // slot=4, length = 16 Byte
|
||
001007B7 // lui x15, 0x100
|
||
0007A083 // lw x1, 0x00(x15)
|
||
0000A00B // send x0,x1,0
|
||
0000002B // exit x0,x0,0
|
||
```
|
||
|
||
* **配置项:** ACQ MCU数据配置
|
||
* **描述:** 向ACQ通道MCU数据空间写入配置数据
|
||
* **Transaction:** 向0x00300000地址写入4 Byte数据
|
||
```{.line-numbers}
|
||
00300000 // address = 0x00300000
|
||
00200004 // slot=4, length = 4 Byte
|
||
000f2110 // codeword = 0x000f2110
|
||
```
|
||
|
||
* **配置项:** ACQ 通道控制寄存器配置
|
||
* **描述:** 配置数据模式和采样深度
|
||
* **Transaction:** 向0x00400044地址写入4 Byte数据
|
||
```{.line-numbers}
|
||
00400044 // address = 0x00400044
|
||
00200004 // slot=4, length = 4 Byte
|
||
00000000 // spi_rd_en = 0, iq_scale = 0, two_sta_en = 0
|
||
```
|
||
|
||
* **配置项:** ACQ 通道控制寄存器配置
|
||
* **描述:** 配置数据请求阈值
|
||
* **Transaction:** 向0x00400050地址写入4 Byte数据
|
||
```{.line-numbers}
|
||
00400050 // address = 0x00400050
|
||
00200004 // slot=4, length = 4 Byte
|
||
00000008 // int_threshold = 8
|
||
```
|
||
|
||
* **配置项:** ACQ 参数查找表配置
|
||
* **描述:** 配置q0匹配滤波器系数查找表
|
||
* **Transaction:** 向0x00500004地址写入4 Byte数据
|
||
```{.line-numbers}
|
||
00500004 // address = 0x00500004
|
||
00200004 // slot=4, length = 4 Byte
|
||
00000010 // qubit 0 group 0 para mtf_idx
|
||
```
|
||
|
||
* **配置项:** ACQ 参数查找表配置
|
||
* **描述:** 配置q1匹配滤波器系数查找表
|
||
* **Transaction:** 向0x00500804地址写入4 Byte数据
|
||
```{.line-numbers}
|
||
00500804 // address = 0x00500804
|
||
00200004 // slot=4, length = 4 Byte
|
||
00000010 // qubit 1 group 0 para mtf_idx
|
||
```
|
||
|
||
* **配置项:** ACQ 参数查找表配置
|
||
* **描述:** 配置q2匹配滤波器系数查找表
|
||
* **Transaction:** 向0x00501004地址写入4 Byte数据
|
||
```{.line-numbers}
|
||
00501004 // address = 0x00501004
|
||
00200004 // slot=4, length = 4 Byte
|
||
00000010 // qubit 2 group 0 para mtf_idx
|
||
```
|
||
|
||
* **配置项:** ACQ 参数查找表配置
|
||
* **描述:** 配置q3匹配滤波器系数查找表
|
||
* **Transaction:** 向0x00501804地址写入4 Byte数据
|
||
```{.line-numbers}
|
||
00501804 // address = 0x00501804
|
||
00200004 // slot=4, length = 4 Byte
|
||
00000010 // qubit 3 group 0 para mtf_idx
|
||
```
|
||
|
||
* **配置项:** ACQ 匹配滤波器系数
|
||
* **描述:** 配置q0匹配滤波器系数实部
|
||
* **Transaction:** 向0x00580000地址写入256 Byte数据
|
||
```{.line-numbers}
|
||
00580000 // address = 0x00580000
|
||
00200100 // slot=4, length = 256 Byte
|
||
95D42465 // qubit 0 256 mtf_i samples
|
||
32E39E81
|
||
155B7E6E
|
||
A9838EC6
|
||
7B7440F2
|
||
88B90650
|
||
4C01B586
|
||
F644767A
|
||
C28C84AD
|
||
707D5810
|
||
81A2E737
|
||
621FCF93
|
||
D928687E
|
||
DE9B8198
|
||
5F7E6B2E
|
||
8290CA1A
|
||
733CEDA5
|
||
BD0B547C
|
||
FCB18589
|
||
48787849
|
||
8A85B0FB
|
||
7C550BBD
|
||
A5EC3B72
|
||
1ACB9082
|
||
2D6B7E5F
|
||
98819BDD
|
||
7E6929D9
|
||
92CF1E62
|
||
37E8A281
|
||
0F587D70
|
||
AD848BC1
|
||
797745F7
|
||
86B4004C
|
||
5106B988
|
||
F13F747B
|
||
C78E82A8
|
||
6D7E5C16
|
||
819EE232
|
||
6625D596
|
||
D323657E
|
||
E39F8195
|
||
5B7D6E33
|
||
838DC514
|
||
7540F2A9
|
||
B805507B
|
||
02B58687
|
||
43767A4D
|
||
8C83ACF6
|
||
7D5911C2
|
||
A1E73670
|
||
20D09381
|
||
28687E63
|
||
9C8198D8
|
||
7E6C2EDF
|
||
90CA195E
|
||
3CEEA682
|
||
0A537C73
|
||
B18589BC
|
||
787849FD
|
||
84B0FB47
|
||
550CBE8A
|
||
EB3A727C
|
||
CC9182A4
|
||
6A7E601B
|
||
```
|
||
|
||
* **配置项:** ACQ 匹配滤波器系数
|
||
* **描述:** 配置q0匹配滤波器系数虚部
|
||
* **Transaction:** 向0x00584000地址写入256 Byte数据
|
||
```{.line-numbers}
|
||
00584000 // address = 0x00584000
|
||
00200100 // slot=4, length = 256 Byte
|
||
4577794B // qubit 0 128 mtf_q samples
|
||
8B84AEF8
|
||
7D570FC0
|
||
A3E93871
|
||
1ECE9281
|
||
2A697E61
|
||
9B8199DA
|
||
7E6A2CDD
|
||
91CC1B60
|
||
3AEBA482
|
||
0C557C72
|
||
B0858ABE
|
||
787847FB
|
||
85B1FD49
|
||
530ABC89
|
||
ED3C737C
|
||
CA9082A6
|
||
6C7E5E19
|
||
819CDF2E
|
||
6828D898
|
||
D020637E
|
||
E7A18193
|
||
597D7036
|
||
838CC211
|
||
7643F6AC
|
||
B5024D7A
|
||
05B88886
|
||
40757B50
|
||
8D83A9F2
|
||
7D5B14C5
|
||
9FE3336E
|
||
23D39581
|
||
24667E65
|
||
9E8196D5
|
||
7E6D32E2
|
||
8EC6165C
|
||
3FF1A882
|
||
06517B74
|
||
B48688B9
|
||
77794C00
|
||
84ADF745
|
||
580FC18B
|
||
E837707D
|
||
CF9281A2
|
||
697E621F
|
||
8198D929
|
||
6B2DDD9B
|
||
CB1A5F7E
|
||
ECA58290
|
||
547C723B
|
||
858ABD0B
|
||
7848FBB0
|
||
B1FC4978
|
||
0BBD8985
|
||
3C727C54
|
||
9082A5ED
|
||
7E5F1ACA
|
||
9BDE2E6B
|
||
29D99881
|
||
1F627E68
|
||
A28193CF
|
||
7D7037E7
|
||
8CC21058
|
||
44F7AD84
|
||
```
|
||
|
||
* **配置项:** ACQ 匹配滤波器系数
|
||
* **描述:** 配置q1匹配滤波器系数实部
|
||
* **Transaction:** 向0x00588000地址写入256 Byte数据
|
||
```{.line-numbers}
|
||
00588000 // address = 0x00588000
|
||
00200100 // slot=4, length = 256 Byte
|
||
8AC41862 // qubit 1 128 mtf_i samples
|
||
590CB986
|
||
CF24697E
|
||
00AF838F
|
||
306F7C50
|
||
A68196DB
|
||
757946F3
|
||
819DE73B
|
||
753CE79D
|
||
A6F34679
|
||
30DB9681
|
||
FF507C70
|
||
CF9083AF
|
||
597E6925
|
||
8A86B90C
|
||
7E6219C4
|
||
8AC31861
|
||
5A0CB986
|
||
CE24697E
|
||
00AF838F
|
||
306F7C50
|
||
A68196DA
|
||
757947F4
|
||
819DE63B
|
||
753CE79E
|
||
A5F24579
|
||
31DB9681
|
||
FF4F7C70
|
||
D09083AE
|
||
597E6A25
|
||
8A86B80B
|
||
7E6219C4
|
||
8AC31761
|
||
5A0DBA86
|
||
CE23697E
|
||
00B0838F
|
||
2F6F7C51
|
||
A68195DA
|
||
747947F4
|
||
819DE63A
|
||
753CE89E
|
||
A5F24579
|
||
31DC9781
|
||
FE4F7C70
|
||
D09083AE
|
||
587E6A26
|
||
8B86B80B
|
||
7E621AC5
|
||
8AC21761
|
||
5A0DBA86
|
||
CE23687E
|
||
01B0838F
|
||
2F6F7C51
|
||
A78195D9
|
||
747947F4
|
||
819CE53A
|
||
753DE89E
|
||
A5F24579
|
||
32DC9781
|
||
FE4F7C70
|
||
D09083AE
|
||
587E6A26
|
||
8B85B80A
|
||
7E631AC5
|
||
```
|
||
|
||
* **配置项:** ACQ 匹配滤波器系数
|
||
* **描述:** 配置q1匹配滤波器系数虚部
|
||
* **Transaction:** 向0x0058C000地址写入256 Byte数据
|
||
```{.line-numbers}
|
||
0058C000 // address = 0x0058C000
|
||
00200100 // slot=4, length = 256 Byte
|
||
306F7C50 // qubit 1 128 mtf_q samples
|
||
A68196DB
|
||
757946F3
|
||
819DE73B
|
||
753BE79D
|
||
A6F34679
|
||
30DB9681
|
||
FF507C70
|
||
CF9083AF
|
||
597E6925
|
||
8A86B90C
|
||
7E6219C4
|
||
8AC31861
|
||
5A0CB986
|
||
CF24697E
|
||
00AF838F
|
||
306F7C50
|
||
A68196DA
|
||
757946F4
|
||
819DE63B
|
||
753CE79E
|
||
A5F24679
|
||
31DB9681
|
||
FF507C70
|
||
D09083AE
|
||
597E6925
|
||
8A86B80B
|
||
7E6219C4
|
||
8AC31861
|
||
5A0DBA86
|
||
CE24697E
|
||
00B0838F
|
||
2F6F7C51
|
||
A68195DA
|
||
747947F4
|
||
819DE63B
|
||
753CE89E
|
||
A5F24579
|
||
31DC9681
|
||
FE4F7C70
|
||
D09083AE
|
||
597E6A25
|
||
8B86B80B
|
||
7E6219C5
|
||
8AC31761
|
||
5A0DBA86
|
||
CE23687E
|
||
01B0838F
|
||
2F6F7C51
|
||
A78195D9
|
||
747947F4
|
||
819CE53A
|
||
753DE89E
|
||
A5F24579
|
||
31DC9781
|
||
FE4F7C70
|
||
D09083AE
|
||
587E6A26
|
||
8B86B80A
|
||
7E631AC5
|
||
8AC21761
|
||
5A0EBA86
|
||
CD23687E
|
||
01B0838F
|
||
```
|
||
|
||
* **配置项:** ACQ 匹配滤波器系数
|
||
* **描述:** 配置q2匹配滤波器系数实部
|
||
* **Transaction:** 向0x00590000地址写入256 Byte数据
|
||
```{.line-numbers}
|
||
00590000 // address = 0x00590000
|
||
00200100 // slot=4, length = 256 Byte
|
||
83B40C5E // qubit 2 128 mtf_i samples
|
||
7435DA92
|
||
97E33D78
|
||
5703AD82
|
||
BC16647E
|
||
2CD18E85
|
||
EC457A70
|
||
F9A6819D
|
||
1F697D50
|
||
C88A88C4
|
||
4D7C6C23
|
||
A081A3F5
|
||
6E7B49F0
|
||
878CCD28
|
||
7E661AC0
|
||
81AAFF54
|
||
7941E79A
|
||
90D63173
|
||
6010B884
|
||
B1085B7E
|
||
38DD9482
|
||
DF397676
|
||
07B08295
|
||
12617E5A
|
||
D48F84B9
|
||
42797230
|
||
A9819AE8
|
||
677E53FE
|
||
8B87C11B
|
||
7C6E27CC
|
||
81A0F14A
|
||
7C4CF4A2
|
||
8AC9246C
|
||
691EC388
|
||
A7FB517D
|
||
44EB9C81
|
||
D22D717A
|
||
14BB858E
|
||
04587E63
|
||
E19682AE
|
||
3675773C
|
||
B38393DB
|
||
5F7E5D0B
|
||
9183B50E
|
||
787433D8
|
||
8198E43E
|
||
7E5602AC
|
||
86BD1765
|
||
702BCF8D
|
||
9EED467B
|
||
4FF8A581
|
||
C5206A7D
|
||
22C78989
|
||
F74E7D6B
|
||
EF9F81A4
|
||
296F7B48
|
||
BF868CCE
|
||
557E6619
|
||
9981AB00
|
||
737940E5
|
||
8491D732
|
||
7E600FB7
|
||
83B2095C
|
||
7537DC94
|
||
```
|
||
|
||
* **配置项:** ACQ 匹配滤波器系数
|
||
* **描述:** 配置q2匹配滤波器系数虚部
|
||
* **Transaction:** 向0x00594000地址写入256 Byte数据
|
||
```{.line-numbers}
|
||
00594000 // address = 0x00594000
|
||
00200100 // slot=4, length = 256 Byte
|
||
19667E55 // qubit 2 128 mtf_q samples
|
||
CE8C86BF
|
||
487B6F29
|
||
A4819FEF
|
||
6B7D4DF6
|
||
8989C722
|
||
7D6A20C5
|
||
81A5F94F
|
||
7B46ED9D
|
||
8DD02B70
|
||
6416BD86
|
||
AC02577E
|
||
3EE39881
|
||
D9347478
|
||
0DB58392
|
||
0C5D7E5E
|
||
DA9283B4
|
||
3C777535
|
||
AD8297E2
|
||
637E5804
|
||
8E85BC15
|
||
7A712DD1
|
||
819CEB45
|
||
7D51FAA6
|
||
88C41E69
|
||
6C24C98A
|
||
A3F54C7C
|
||
49F1A081
|
||
CC276E7C
|
||
1AC0878C
|
||
FE547E67
|
||
E79A81A9
|
||
30727941
|
||
B88490D5
|
||
5A7E6111
|
||
9582B008
|
||
767639DE
|
||
8295DE39
|
||
7E5B08B1
|
||
84B81161
|
||
7230D590
|
||
9AE74179
|
||
54FEA981
|
||
C01A677E
|
||
28CC8C87
|
||
F1497B6E
|
||
F5A381A0
|
||
236C7C4C
|
||
C4888AC8
|
||
507D691E
|
||
9D81A6FA
|
||
707A45EB
|
||
858ED12C
|
||
7E6315BC
|
||
82AD0358
|
||
773DE297
|
||
92DA3574
|
||
5D0CB483
|
||
B50D5E7E
|
||
34D99283
|
||
E33D7874
|
||
02AD8197
|
||
16647E57
|
||
D08D85BD
|
||
```
|
||
|
||
* **配置项:** ACQ 匹配滤波器系数
|
||
* **描述:** 配置q3匹配滤波器系数实部
|
||
* **Transaction:** 向0x00598000地址写入256 Byte数据
|
||
```{.line-numbers}
|
||
00598000 // address = 0x00598000
|
||
00200100 // slot=4, length = 256 Byte
|
||
81A60059 // qubit 3 128 mtf_i samples
|
||
7E59FFA5
|
||
81A6005A
|
||
7E58FEA5
|
||
81A7015A
|
||
7E58FEA5
|
||
81A7025B
|
||
7E58FDA4
|
||
81A8025B
|
||
7E57FCA4
|
||
81A8035C
|
||
7E57FCA3
|
||
81A9035C
|
||
7E56FBA3
|
||
81A9045C
|
||
7E56FBA2
|
||
81AA055D
|
||
7E55FAA2
|
||
81AA055D
|
||
7E55F9A1
|
||
81AB065E
|
||
7E54F9A1
|
||
81AB075E
|
||
7E54F8A1
|
||
81AB075F
|
||
7E53F7A0
|
||
81AC085F
|
||
7E53F7A0
|
||
81AC095F
|
||
7E52F69F
|
||
81AD0960
|
||
7E52F59F
|
||
81AD0A60
|
||
7E51F59F
|
||
81AE0A61
|
||
7E51F49E
|
||
81AE0B61
|
||
7E50F49E
|
||
81AF0C62
|
||
7E50F39D
|
||
81AF0C62
|
||
7E4FF29D
|
||
81B00D62
|
||
7E4FF29C
|
||
81B00E63
|
||
7E4EF19C
|
||
81B10E63
|
||
7E4EF09C
|
||
81B10F64
|
||
7D4DF09B
|
||
82B21064
|
||
7D4DEF9B
|
||
82B21064
|
||
7D4CEE9B
|
||
82B31165
|
||
7D4CEE9A
|
||
82B31165
|
||
7D4BED9A
|
||
82B41265
|
||
7D4BED99
|
||
82B41366
|
||
7D4AEC99
|
||
82B51366
|
||
7D4AEB99
|
||
```
|
||
|
||
* **配置项:** ACQ 匹配滤波器系数
|
||
* **描述:** 配置q3匹配滤波器系数虚部
|
||
* **Transaction:** 向0x0059C000地址写入256 Byte数据
|
||
```{.line-numbers}
|
||
0059C000 // address = 0x0059C000
|
||
00200100 // slot=4, length = 256 Byte
|
||
00597E59 // qubit 3 128 mtf_q samples
|
||
FFA581A6
|
||
005A7E59
|
||
FEA581A6
|
||
015A7E58
|
||
FEA481A7
|
||
025B7E58
|
||
FDA481A7
|
||
025B7E57
|
||
FCA481A8
|
||
035C7E57
|
||
FCA381A8
|
||
045C7E56
|
||
FBA381A9
|
||
045D7E56
|
||
FAA281A9
|
||
055D7E56
|
||
FAA281AA
|
||
065D7E55
|
||
F9A181AA
|
||
065E7E55
|
||
F8A181AB
|
||
075E7E54
|
||
F8A181AB
|
||
075F7E54
|
||
F7A081AC
|
||
085F7E53
|
||
F7A081AC
|
||
09607E53
|
||
F69F81AD
|
||
09607E52
|
||
F59F81AD
|
||
0A607E52
|
||
F59E81AE
|
||
0B617E51
|
||
F49E81AE
|
||
0B617E51
|
||
F39E81AE
|
||
0C627E50
|
||
F39D81AF
|
||
0D627E50
|
||
F29D81AF
|
||
0D627E4F
|
||
F19C81B0
|
||
0E637E4F
|
||
F19C81B0
|
||
0E637E4E
|
||
F09C81B1
|
||
0F647E4E
|
||
F09B81B1
|
||
10647D4D
|
||
EF9B82B2
|
||
10647D4D
|
||
EE9A82B2
|
||
11657D4C
|
||
EE9A82B3
|
||
12657D4C
|
||
ED9A82B4
|
||
12667D4B
|
||
EC9982B4
|
||
13667D4B
|
||
EC9982B5
|
||
14667D4A
|
||
EB9982B5
|
||
```
|
||
|
||
|
||
推送的数据结果如下所示
|
||
@import "acq_2_pack.txt"
|
||
|
||
绘制到iq平面上的结果如下图所示
|
||

|
||
|
||
## 4.3. ACQ.3 态数据采集
|
||
态采集功能首先利用解模算法计算IQ值,
|
||
接着用态判断算法计算IQ值对应的比特状态,
|
||
最后将计算出来的态信息采集并推送到上位机。
|
||
态采集功能会利用IQ解模结果,
|
||
除配置解模所需参数外还需要额外配置态判断所需参数。
|
||
以下是ez-Q 2.5 FPGA平台下所需的配置项:
|
||
|
||
|配置项|说明|
|
||
|:-:|:-|
|
||
|MCU指令|用于产生码字的指令|
|
||
|MCU数据|非必要配置,配合MCU指令|
|
||
|控制寄存器|采集的相关配置|
|
||
|读出控制参数表|定义了读出所用的参数索引|
|
||
|匹配滤波器系数|定义了解模匹配滤波器系数|
|
||
|模拟寄存器|控制变频增益和频率|
|
||
|
||
|
||
### 4.3.1. 编程约束
|
||
态采集需要保证两次态采集之间预留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
|
||
```
|
||
|
||
### 4.3.2. 码字约束
|
||
与态采集相关的码字如下表所示:
|
||
|配置项|值|说明|
|
||
|:-|:-|:-|
|
||
|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`来关闭其它功能选项,
|
||
若开启其它选项,采集死时间受不同的功能组合而改变。
|
||
|
||
### 4.3.3. 控制寄存器配置
|
||
|
||
在IQ采集实验中,主要配置的寄存器参数为采集的深度和数据回传方式和IQ数据的截取范围。
|
||
|
||
|配置项|值|说明|
|
||
|:-|:-:|:-|
|
||
|spi_rd_en|1'h0|设置为主动数据推送模式|
|
||
|iq_scale|1’h0|选择小iq范围|
|
||
|two_state_en|1‘b0|不用两态判定|
|
||
|
||
上述设置数据自动推送,先采集的数据先推送,
|
||
只要发生采集操作即将全部16个qubit数据推送,
|
||
数据以流模式持续推送直至推送完成。
|
||
|
||
### 4.3.4. 解模参数配置
|
||
码字为`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|需要配置|
|
||
|
||
### 4.3.5. 匹配滤波器系数配置
|
||
由于解模使用参数配置表中的`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|
|
||
|
||
### 4.3.6. 配置示例
|
||
|
||
本例是采集q0到q3态结果的示例,
|
||
完整配置示例可参考[acq_3_config.txt](./acq_3_config.txt)。
|
||
本示例相比ACQ.2 仅ACQ码字、触发阈值和参数查找表不同。
|
||
* 码字差别: 采集数据从IQ数据变为态数据
|
||
* 触发阈值:数据量从8个四字节变为1个四字节
|
||
* 参数查找表: 由于要进行态判断,需要配置态判断参数
|
||
|
||
具体差异配置如下所示:
|
||
* **配置项:** ACQ MCU数据配置
|
||
* **描述:** 向ACQ通道MCU数据空间写入配置数据
|
||
* **Transaction:** 向0x00300000地址写入4 Byte数据
|
||
```{.line-numbers}
|
||
00300000 // address = 0x00300000
|
||
00200004 // slot=4, length = 4 Byte
|
||
000f4000 // codeword = 0x000f4000
|
||
```
|
||
|
||
* **配置项:** ACQ 通道控制寄存器配置
|
||
* **描述:** 配置数据请求阈值
|
||
* **Transaction:** 向0x00400050地址写入4 Byte数据
|
||
```{.line-numbers}
|
||
00400050 // address = 0x00400050
|
||
00200004 // slot=4, length = 4 Byte
|
||
00000001 // int_threshold = 1
|
||
```
|
||
|
||
* **配置项:** ACQ 参数查找表配置
|
||
* **描述:** 配置q0匹配滤波器系数查找表
|
||
* **Transaction:** 向0x00500004地址写入28 Byte数据
|
||
```{.line-numbers}
|
||
00500004 // address = 0x00500004
|
||
0020001C // slot=4, length = 28 Byte
|
||
00000010 // qubit 0 group 0 para mtf_idx
|
||
80018001
|
||
00000000
|
||
00007FFF
|
||
00000000
|
||
7FFF8001
|
||
00000000
|
||
```
|
||
|
||
* **配置项:** ACQ 参数查找表配置
|
||
* **描述:** 配置q1匹配滤波器系数查找表
|
||
* **Transaction:** 向0x00500804地址写入28 Byte数据
|
||
```{.line-numbers}
|
||
00500804 // address = 0x00500804
|
||
0020001C // slot=4, length = 28 Byte
|
||
00000010 // qubit 1 group 0 para mtf_idx
|
||
80018001
|
||
00000000
|
||
00007FFF
|
||
00000000
|
||
7FFF8001
|
||
00000000
|
||
```
|
||
|
||
* **配置项:** ACQ 参数查找表配置
|
||
* **描述:** 配置q2匹配滤波器系数查找表
|
||
* **Transaction:** 向0x00501004地址写入28 Byte数据
|
||
```{.line-numbers}
|
||
00501004 // address = 0x00501004
|
||
0020001C // slot=4, length = 28 Byte
|
||
00000010 // qubit 2 group 0 para mtf_idx
|
||
80018001
|
||
00000000
|
||
00007FFF
|
||
00000000
|
||
7FFF8001
|
||
00000000
|
||
```
|
||
|
||
* **配置项:** ACQ 参数查找表配置
|
||
* **描述:** 配置q3匹配滤波器系数查找表
|
||
* **Transaction:** 向0x00501804地址写入28 Byte数据
|
||
```{.line-numbers}
|
||
00501804 // address = 0x00501804
|
||
0020001C // slot=4, length = 28 Byte
|
||
00000010 // qubit 3 group 0 para mtf_idx
|
||
80018001
|
||
00000000
|
||
00007FFF
|
||
00000000
|
||
7FFF8001
|
||
00000000
|
||
```
|
||
|
||
推送的数据结果如下所示
|
||
@import "acq_3_pack.txt"
|
||
|
||
上述结果显示q0~q3分别处于2、1、0、1态,
|
||
其余未测量的比特处于未定义的3态。
|
||
|
||
## 4.4. ACQ.4 计数数据采集
|
||
|
||
态计数采集功能利用解模算法计算输入信号的IQ值,
|
||
接着利用态判断算法到量子比特的状态,
|
||
最后对0态、1态、2态和3态进行计数统计,
|
||
最后将将每个比特的四个计数值采集并推送到上位机。
|
||
受限于FPGA的计算资源,FPGA平台解模仅支持系数直读模式,不支持权重计算模式,
|
||
因此FPGA平台下需要配置匹配滤波器系数。
|
||
而ASIC平台滤波器系数是自动生成的,无该配置项。
|
||
以下是ez-Q 2.5 FPGA平台下所需的配置项:
|
||
|
||
|配置项|说明|
|
||
|:-:|:-|
|
||
|MCU指令|用于产生码字的指令|
|
||
|MCU数据|非必要配置,配合MCU指令|
|
||
|控制寄存器|控制态统计采集相关参数|
|
||
|读出控制参数表|定义了解模所用的参数索引|
|
||
|匹配滤波器系数|定义了解模匹配滤波器系数|
|
||
|模拟寄存器|控制变频增益和频率|
|
||
|
||
### 4.4.1. 编程约束
|
||
解模采集需要保证两次采集之间预留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
|
||
```
|
||
|
||
### 4.4.2. 码字约束
|
||
与态计数采集相关的码字如下表所示:
|
||
|配置项|值|说明|
|
||
|:-|:-|:-|
|
||
|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`次使能计数统计不使能计数清零和计数存储,
|
||
最后一次使能计数存储和计数统计不使能计数清零。
|
||
当需要采集多次计数统计结果时,重复上述过程即可。
|
||
|
||
### 4.4.3. 控制寄存器配置
|
||
|
||
在态计数采集实验中,主要配置的寄存器参数为数据回传方式和IQ数据的截取范围以及是否使能2态判定。
|
||
|
||
|配置项|值|说明|
|
||
|:-|:-:|:-|
|
||
|spi_rd_en|1'h0|设置为主动数据推送模式|
|
||
|iq_scale|1’h0|选择小iq范围|
|
||
|two_state_en|1‘b0|不用两态判定|
|
||
|
||
上述设置数据自动推送,先采集的数据先推送,仅使能的频点数据返回,
|
||
同时采集的多个频点数据先返回频点序号较小的数据,数据以流模式持续推送直至推送完成。
|
||
|
||
### 4.4.4. 解模参数配置
|
||
码字为`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|需要配置|
|
||
|
||
### 4.4.5. 匹配滤波器系数配置
|
||
由于解模使用参数配置表中的`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|
|
||
|
||
### 4.4.6. 配置示例
|
||
本例是采集q0到q3态统计结果的示例,
|
||
完整配置示例可参考[acq_4_config.txt](./acq_4_config.txt)。
|
||
该示例在acq.3示例的基础上仅修改了码字和采集数据量。
|
||
* 码字: 从`0x000f4000`改成了`0x000f8220`,采集数据不同
|
||
* 阈值: 从`0x000000001`改成了`0x00000010`,数据量不同。
|
||
|
||
差异配置如下所示:
|
||
* **配置项:** ACQ MCU数据配置
|
||
* **描述:** 向ACQ通道MCU数据空间写入配置数据
|
||
* **Transaction:** 向0x00300000地址写入4 Byte数据
|
||
```{.line-numbers}
|
||
00300000 // address = 0x00300000
|
||
00200004 // slot=4, length = 4 Byte
|
||
000f8220 // codeword = 0x000f8220
|
||
```
|
||
|
||
* **配置项:** ACQ 通道控制寄存器配置
|
||
* **描述:** 配置数据请求阈值
|
||
* **Transaction:** 向0x00400050地址写入4 Byte数据
|
||
```{.line-numbers}
|
||
00400050 // address = 0x00400050
|
||
00200004 // slot=4, length = 4 Byte
|
||
00000010 // int_threshold = 16
|
||
```
|
||
|
||
采集到的数据如下所示:
|
||
|
||
@import "acq_4_pack.txt"
|
||
|
||
上述数据分析如下,与acq.3实验结果吻合。
|
||
* q0出现了1次2态,其余态出现0次
|
||
* q1出现了1次1态,其余态出现0次
|
||
* q2出现了1次0态,其余态出现0次
|
||
* q3出现了1次1态,其余态出现0次
|
||
|
||
## 4.5. ACQ.5 读出态反馈
|
||
态读出反馈功能首先利用解模算法得到IQ值,
|
||
接着利用态判断算法计算IQ值对应的比特状态,
|
||
最后将计算出来的态信息通过上行和下行反馈端口发出。
|
||
以下是ez-Q 2.5 FPGA平台下所需的配置项:
|
||
|
||
|配置项|说明|
|
||
|:-:|:-|
|
||
|MCU指令|用于产生码字的指令|
|
||
|MCU数据|非必要配置,配合MCU指令|
|
||
|控制寄存器|读出的相关配置|
|
||
|读出控制参数表|定义了读出所用的参数索引|
|
||
|匹配滤波器系数|定义了解模匹配滤波器系数|
|
||
|模拟寄存器|控制变频增益和频率|
|
||
|
||
### 4.5.1. 编程约束
|
||
态读出反馈需要保证两次态采集之间预留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
|
||
```
|
||
|
||
### 4.5.2. 码字约束
|
||
与态采集相关的码字如下表所示:
|
||
|配置项|值|说明|
|
||
|:-|:-|:-|
|
||
|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`来关闭其它功能选项,
|
||
若开启其它选项,采集死时间受不同的功能组合而改变。
|
||
|
||
### 4.5.3. 控制寄存器配置
|
||
|
||
在态读出反馈实验中,主要配置的寄存器参数为IQ数据的截取范围和态判断的模式。
|
||
|
||
|配置项|值|说明|
|
||
|:-|:-:|:-|
|
||
|iq_scale|1’h0|选择小iq范围|
|
||
|two_state_en|1‘b0|不用两态判定|
|
||
|
||
|
||
### 4.5.4. 解模参数配置
|
||
码字为`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|需要配置|
|
||
|
||
### 4.5.5. 匹配滤波器系数配置
|
||
由于解模使用参数配置表中的`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|
|
||
|
||
### 4.5.6. 配置示例
|
||
本例是反馈q0到q3态读出结果的示例,
|
||
完整配置示例可参考[acq_5_config.txt](./acq_5_config.txt)。
|
||
该示例在acq.4示例的基础上仅修改了码字。
|
||
* 码字: 从`0x000f8220`,改成`0x000f82e0`, 将读出结果反馈到局部和全局接口。
|
||
|
||
差异配置如下所示:
|
||
* **配置项:** ACQ MCU数据配置
|
||
* **描述:** 向ACQ通道MCU数据空间写入配置数据
|
||
* **Transaction:** 向0x00300000地址写入4 Byte数据
|
||
```{.line-numbers}
|
||
00300000 // address = 0x00300000
|
||
00200004 // slot=4, length = 4 Byte
|
||
000f82e0 // codeword = 0x000f82e0
|
||
```
|
||
|
||
仿真结果如下图所示:
|
||

|
||
可以看到局部反馈端口`loc_lvcmos_t`上的态结果与acq.3实验相同,
|
||
全局反馈回环接收数据`glb_fd_in`与acq.3实验相同,符合预期。
|
||
|
||
# 5. Pump通道
|
||
|
||
Pump通道用于为参量放大器提供能量,对Pump通道的输出控制包括模拟电路配置。
|
||
模拟电路通过小数分配锁相环来合成指定频率,并通过功率驱动电路后输出。
|
||
|
||
## 5.1. Pump.1 开关输出
|
||
Pump开关输出功能使用与激励信号同一个MCU来产生码字,
|
||
通道利用码字来触发产生一个指定脉冲宽度的数字信号,
|
||
并利用这个数字信号使能Pump通道微波信号输出,
|
||
从而实现泵浦通道与激励信号实时同步输出。
|
||
|
||
|配置项|说明|
|
||
|:-:|:-|
|
||
|MCU指令|用于产生码字的指令|
|
||
|MCU数据|非必要配置,配合MCU指令|
|
||
|控制寄存器|控制脉冲输出的宽度|
|
||
|模拟寄存器|控制Pump的频率和功率|
|
||
|
||
### 5.1.1. 编程约束
|
||
|说明项|说明内容|
|
||
|:-:|:-|
|
||
|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
|
||
```
|
||
### 5.1.2. 码字约束
|
||
与使能脉冲输出相关的控制码字如下:
|
||
|
||
|配置项|值|说明|
|
||
|:-|:-:|:-|
|
||
|CODEWORD[12]|PULSE_ONLY|仅使能脉冲输出|
|
||
|CODEWORD[8]|1|使能Pump脉冲输出|
|
||
|
||
CODEWORD[12]控制了是否在输出脉冲时输出波形,
|
||
当使能波形输出时,需要同时配置好EXCT通道相关配置。
|
||
* 码字`0x00001100`可以触发输出pump通道使能控制脉冲而不触发波形输出,
|
||
此时脉冲的宽度等于pump_width指定的长度。
|
||
* 码字`0x00000100`可以触发输出Pump通道使能脉冲并同时输出波形,
|
||
此时使能脉冲的长度等于波形长度加上pump_width指定的长度。
|
||
|
||
### 5.1.3. 控制寄存器配置
|
||
控制器寄存器主要包括对使能脉冲的延迟和宽度的配置。
|
||
|配置项|值|说明|
|
||
|:-:|:-:|:-|
|
||
|pump_inv|0|不反转极性,默认低电平输出|
|
||
|pump_ctrl|{delay,width}|pump脉冲输出延迟和宽度|
|
||
|
||
|
||
### 5.1.4. 模拟寄存器
|
||
模拟寄存器用于配置模拟电路生成pump信号的参数
|
||
|配置项|值|说明|
|
||
|:-|:-|:-|
|
||
|pump_freq|FCW|输出频率控制字,freq = FCW*1000|
|
||
|pump_power|PCW|PCW范围[-1100,-300],码值与输出功率正相关|
|
||
|pump_enable|32'h11|使能pump通道模拟输出|
|
||
|
||
### 5.1.5. 配置示例
|
||
本示例是配置Pump通道输出,
|
||
数字部分配置在EXCT.1的基础上存在以下修改,
|
||
以下是差异项配置:
|
||
* 码字:使能Pump脉冲输出
|
||
* 控制寄存器: 设置Pump脉冲的延迟和附加宽度
|
||
|
||
数字完整配置示例可参考[pump_1_dig_cfg.txt](./pump_1_dig_cfg.txt)。
|
||
|
||
* **配置项:** EXCT-Pump MCU数据配置
|
||
* **描述:** 向EXCT-Pump通道MCU数据空间写入配置数据
|
||
* **Transaction:** 向0x00800000地址写入4 Byte数据
|
||
```{.line-numbers}
|
||
00800000 // address = 0x00800000
|
||
00200004 // slot=4, length = 4 Byte
|
||
00000100 // codeword = 0x000000100
|
||
```
|
||
|
||
* **配置项:** Pump 通道控制寄存器
|
||
* **描述:** 设置Pump通道脉冲控制寄存器
|
||
* **Transaction:** 向0x00900044地址写入8 Byte数据
|
||
```{.line-numbers}
|
||
00900044 // address = 0x00900044
|
||
00200008 // slot=4, length = 8 Byte
|
||
00000000 // PUMP_INV=0
|
||
00010010 // delay = 1, width = 16
|
||
```
|
||
|
||
数字部分仿真结果如下图所示,可以看到脉冲输出持续了96ns(24个时钟周期),
|
||
其中8个时钟周期是波形输出时间,16个时钟周期是附加持续时间,与预期符合。
|
||

|
||
|
||
模拟部分配置需要设置输出频率、输出功率并使能输出。
|
||
模拟完整配置示例可参考[pump_1_ana_cfg.txt](./pump_1_ana_cfg.txt)。
|
||
|
||
* **配置项:** Pump 通道模拟配置
|
||
* **描述:** 设置Pump通道输出频率
|
||
* **Transaction:** 向0x00200000地址写入4 Byte数据
|
||
```{.line-numbers}
|
||
00200000 // address = 0x00200000
|
||
00280004 // slot=5, length = 4 Byte
|
||
006ACFC0 // pump frequency = 7GHz
|
||
```
|
||
|
||
* **配置项:** Pump 通道模拟配置
|
||
* **描述:** 设置Pump通道输出功率
|
||
* **Transaction:** 向0x00300000地址写入4 Byte数据
|
||
```{.line-numbers}
|
||
00300000 // address = 0x00300000
|
||
00280004 // slot=5, length = 4 Byte
|
||
FFFFFF38 // pump power = 15 dbm
|
||
```
|
||
|
||
* **配置项:** Pump 通道模拟配置
|
||
* **描述:** 设置Pump通道输出开启
|
||
* **Transaction:** 向0x00400000地址写入4 Byte数据
|
||
```{.line-numbers}
|
||
00400000 // address = 0x00400000
|
||
00280004 // slot=5, length = 4 Byte
|
||
00000011 // pump output enable
|
||
```
|
||
|
||
注意:受制于混频板的硬件限制,
|
||
```
|
||
对混频板的参数配置需要预留一定等待时间,
|
||
建议每执行一项配置后等待10毫秒再执行。
|
||
```
|
||
## 5.2. Pump.2 连续输出
|
||
Pump连续输出功能通过配置寄存器令使能脉冲始终处于高电平,
|
||
从而允许pump通道始终输出微波信号。
|
||
连续输出所需配置项如下表所示:
|
||
|配置项|说明|
|
||
|:-:|:-|
|
||
|控制寄存器|控制脉冲输出的极性|
|
||
|模拟寄存器|控制Pump的频率和功率|
|
||
|
||
### 5.2.1. 码字约束
|
||
Pump通道连续输出功能本身无需编程MCU,
|
||
但是当需要触发RI波形输出时,
|
||
必须禁止码字Pump脉冲输出功能
|
||
|
||
### 5.2.2. 控制寄存器配置
|
||
控制器寄存器主要包括对使能脉冲的延迟和宽度的配置。
|
||
|配置项|值|说明|
|
||
|:-:|:-:|:-|
|
||
|pump_inv|1|反转极性,控制脉冲默认输出高电平|
|
||
|
||
### 5.2.3. 模拟寄存器
|
||
|配置项|值|说明|
|
||
|:-|:-|:-|
|
||
|pump_freq|FCW|输出频率控制字,freq = FCW*1000|
|
||
|pump_power|PCW|PCW范围[-1300,-200],码值与输出功率正相关|
|
||
|pump_enable|32'h11|使能pump通道模拟输出|
|
||
|
||
### 5.2.4. 配置示例
|
||
本用例模拟配置与Pump.1用例相同,示例可参考[pump_1_ana_cfg.txt](./pump_1_ana_cfg.txt)。
|
||
数字部分配置仅需要设置pump_en的极性为取反,
|
||
并且生成码字时不能使能pump_en。
|
||
数字完整配置示例可参考[pump_2_dig_cfg.txt](./pump_2_dig_cfg.txt)。
|
||
|
||
* **配置项:** 系统配置
|
||
* **描述:** 对daq(ACQ)与awg(EXCT-Pump)进行软复位
|
||
* **Transaction:** 向0x00000018地址写入4 Byte数据
|
||
```{.line-numbers}
|
||
00000018 // address = 0x00000018
|
||
00200004 // slot=4, length = 4 Byte
|
||
00000003 // {daq_rst, awg_rst}
|
||
```
|
||
|
||
* **配置项:** ACQ 通道MCU指令配置
|
||
* **描述:** 退出MCU运行
|
||
* **Transaction:** 向0x00200000地址写入4 Byte数据
|
||
```{.line-numbers}
|
||
00200000 // address = 0x00200000
|
||
00200004 // slot=4, length = 4 Byte
|
||
0000002B // exit x0, x0, 0
|
||
```
|
||
|
||
* **配置项:** EXCT-Pump 通道MCU指令配置
|
||
* **描述:** 退出MCU运行
|
||
* **Transaction:** 向0x00700000地址写入4 Byte数据
|
||
```{.line-numbers}
|
||
00700000 // address = 0x00700000
|
||
00200004 // slot=4, length = 4 Byte
|
||
0000002B // exit x0, x0, 0
|
||
```
|
||
|
||
* **配置项:** EXCT-Pump 通道控制寄存器配置
|
||
* **描述:** 配置Pump脉冲极性
|
||
* **Transaction:** 向0x00900044地址写入4 Byte数据
|
||
```{.line-numbers}
|
||
00900044 // address = 00900044
|
||
00200004 // slot=4, length = 4 Byte
|
||
00000010 // PUMP_INV = 1
|
||
```
|
||
|
||
仿真结果如下图所示,将极性取反后,
|
||
`pump_en`输出始终为高电平,
|
||
模拟部分配置保持与pump.1相同,
|
||
此时模拟开关始终打开,
|
||
pump信号保持持续输出。
|
||

|
||
|