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

2190 lines
61 KiB
Markdown
Raw Permalink Normal View History

2025-11-04 21:14:03 +08:00
---
export_on_save:
html: true
html:
toc: true
embed_local_images: true
embed_svg: true
title: 读出子系统历史无关功能配置项
author: 郭成
date:
---
# 1. 修订记录
2025-10-29 18:21:19 +08:00
|版本|修订日期|修订原因|修订内容|修订人|
|:-|:-|:-|:-|:-|
|v0.1|2025/10/27|统一格式|初始版本|郭成|
2025-11-04 21:14:03 +08:00
|v0.2|2025/10/31|评审意见|内容补充|郭成|
2025-10-29 18:21:19 +08:00
2025-11-04 21:14:03 +08:00
# 2. 读出系统历史无关的功能配置项
## 2.1. 前言
2025-10-29 18:21:19 +08:00
2025-10-24 12:10:32 +08:00
本文以常用的超导量子比特读出操作为例,
将读出操作可能涉及到的相关功能拆解成最小功能项,
并给出对每个功能项的历史无关配置集。
2025-11-04 21:14:03 +08:00
超导量子比特读出操作涉及到EXCT、ACQ和Pump三类通道
本文将基于**ez-Q 2.5 FPGA平台读出子系统**的的通道为控制对象进行功能分解,
2025-10-24 12:10:32 +08:00
读出子系统的工作流程如下图所示:
![readout_proc](assets/readout_proc.png)
本文所指的`历史无关配置`限定为上图中历史无关实验中的**实验配置**项,
而与对读出系统的初始化例如寄存器复位、ADC、DAC、PLL等自动校准
外部参数的校准(例如通信链路校准、系统间同步、回环延时补偿)等操作不在本文讨论范围。
2025-11-04 21:14:03 +08:00
若历史无关实验未得到预期结果,
需要排查历史无关实验依赖的**运维状态**以修复故障。
## 2.2. 目的与范围
2025-10-29 18:21:19 +08:00
本文档的目的是介绍读出芯片激励产生和采集处理相关控制,
用户可依据本文档用例在任意实验状态下完成对应实验,
本文档作为开放文档供大家阅读。
2025-11-04 21:14:03 +08:00
## 2.3. 阅读对象
2025-10-29 18:21:19 +08:00
本文档的预期读者是所有使用本芯片的用户以及对该芯片工作原理感兴趣的读者。
2025-11-04 21:14:03 +08:00
## 2.4. 文档概述
2025-10-29 18:21:19 +08:00
本文档首先介绍了测控系统总体的编程对象和规范,
针对读出相关的三种类型通道的编程进行了详细介绍。
2025-11-04 21:14:03 +08:00
## 2.5. 引用文档
2025-10-29 18:21:19 +08:00
|文档编号|标题|版本|
|:-|:-|:-|
2025-11-04 21:14:03 +08:00
|TODO|读出子系统编程控制模型.md|V1.0|
|ez-Q 2.5-SDD-06|ez-Q 2.5 测控系统内部通信协议.docx|-|
2025-10-29 18:21:19 +08:00
2025-11-04 21:14:03 +08:00
## 2.6. 术语定义
2025-10-29 18:21:19 +08:00
|名字|全称|解释|
|:-|:-|:-|
2025-11-04 21:14:03 +08:00
|EXCT|Excitation|读出激励生成发送通道|
2025-10-29 18:21:19 +08:00
|ACQ|Acquisition|读出回波采集处理通道|
2025-10-24 12:10:32 +08:00
2025-11-04 21:14:03 +08:00
# 3. 激励通道EXCT
2025-10-24 12:10:32 +08:00
读出激励通道用于为量子比特读出产生激励信号,
对激励通道的输出控制包括模拟控制和数字控制两个部分。
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也可以通过修改寄存器来实时控制波形输出行为。
本文暂未涉及到需要实时修改控制寄存器的用例,
默认都是通过上位机直接配置输出控制寄存器。
2025-11-04 21:14:03 +08:00
## 3.1. EXCT.1 直接波形输出
2025-09-19 11:20:06 +08:00
直接波形输出功能将用户配置以采样点配置的波形数据直接发到DAC
数字信号经过DAC转换成模拟基带信号
接着基带信号再经过模拟变频电路变频后得到读出激励信号。
实现直接波形所需的全部配置项如下表所示
|配置项|说明|
|:-:|:-|
|MCU指令|用于产生码字的指令|
|MCU数据|非必要配置配合MCU指令|
|波形映射表|配置码字到波形地址和长度的映射表|
|波形仓库|存储映射表对应的波形|
|控制寄存器|控制波形的输出模式|
2025-11-04 21:14:03 +08:00
### 3.1.1. 编程约束
用户通过编程MCU来生成码字指令编程需要满足以下约束
2025-09-19 11:20:06 +08:00
|说明项|说明内容|
|:-:|:-|
|1|MCU数据根据需要配置若存在访存指令则需配置否则可不配置|
|2|波形输出通过发出码字来控制|
|3|程序结束应该调用exit来退出运行。|
|4|指令和数据的最大容量为16 KB|
以下示例是一个用于发出码字为`0x00000000`的汇编程序,
该程序不存在访存指令可不配置MCU数据。
程序通过`send`指令发送码字信号,并通过`exit`指令退出运行。
```{.line-numbers}
send x0, x0, 0
exit x0, x0, 0
```
2025-11-04 21:14:03 +08:00
### 3.1.2. 码字约束
2025-09-19 11:20:06 +08:00
对直接波形输出功能有影响的码字如下表所示:
|配置项|值|说明|
|:-|:-:|:-|
|CODEWORD[12]|0|允许波形输出|
|CODEWORD[11]|0|使用码字索引波形|
|CODEWORD[7:0]|ID|设置用于指定的波形的ID|
例如码字`0x00000000`可以触发输出形索引ID为`0`对应的波形。
2025-11-04 21:14:03 +08:00
### 3.1.3. 控制寄存器配置
2025-09-19 11:20:06 +08:00
对直接波形输出功能有影响的寄存器如下表所示:
|配置项|值|说明|
|:-:|:-:|:-|
2025-11-04 21:14:03 +08:00
|AMPLITUDE|0x4000|设置归一化幅度为1|
2025-09-19 11:20:06 +08:00
|AMP_SEL|0|使用AWG内部调幅值|
|INTP_SEL|0|使用邻近插值滤波器|
|MIX_MODE|0|NRZ输出模式|
|AWG_MODE|0|直接波形输出模式|
例如设置`amplitude`寄存器高16位为16h4000`function`寄存器为32h00000000
表示采用NRZ模式直接将存储在波形仓库中的采样点输出。
2025-11-04 21:14:03 +08:00
### 3.1.4. 波形映射表 + 波形仓库
2025-09-19 11:20:06 +08:00
编程过程中发射的波形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`时输出.
2025-11-04 21:14:03 +08:00
### 3.1.5. 配置示例
2025-10-24 12:10:32 +08:00
2025-11-04 21:14:03 +08:00
以下是直接输出一个高斯包络波形的配置示例。
完整配置示例可参考[exc_1_config.txt](./exc_1_config.txt)。
2025-10-24 12:10:32 +08:00
由于激励和采集在一个芯片上,并被同步信号触发,
2025-11-04 21:14:03 +08:00
本例为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
```
2025-09-19 11:20:06 +08:00
2025-11-04 21:14:03 +08:00
* **配置项:** 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
```
2025-10-24 12:10:32 +08:00
仿真结果如下图所示:
![sim_exc_1](assets/sim_exc_1.png)
2025-11-04 21:14:03 +08:00
## 3.2. EXCT.2 调制波形输出
2025-09-19 11:20:06 +08:00
调制波形输出功能将用户配置以采样点经过调制处理后发到DAC
数字信号经过DAC转换成模拟基带信号
接着基带信号再经过模拟变频电路变频后得到读出激励信号。
实现波形调制输出所需的全部配置项如下表所示
|配置项|说明|
|:-:|:-|
|MCU指令|用于产生码字的指令|
|MCU数据|非必要配置配合MCU指令|
|波形映射表|配置码字到波形地址和长度的映射表|
|波形仓库|存储映射表对应的波形|
|控制寄存器|控制波形的输出模式,驱动模式,调幅|
2025-11-04 21:14:03 +08:00
### 3.2.1. 编程约束
2025-09-19 11:20:06 +08:00
|说明项|说明内容|
|:-:|:-|
|1|MCU数据根据需要配置若存在访存指令则需配置否则可不配置|
|2|波形输出通过发出码字来控制|
|3|程序结束应该调用exit来退出运行。|
|4|指令和数据的最大容量为16 KB|
以下示例是一个用于发出码字为`0x00000400`的汇编程序,
该程序不存在访存指令可不配置MCU数据。
程序通过`send`指令发送码字信号,并通过`exit`指令退出运行。
```{.line-numbers}
send x0, x0, 0x400
exit x0, x0, 0
```
2025-11-04 21:14:03 +08:00
### 3.2.2. 码字约束
2025-09-19 11:20:06 +08:00
对波形调制输出功能有影响的码字如下表所示:
|配置项|值|说明|
|:-|:-:|:-|
|CODEWORD[12]|0|允许波形输出|
|CODEWORD[11]|0|使用码字索引波形|
|CODEWORD[10]|EN|清零NCO相位|
|CODEWORD[7:0]|ID|设置用于指定的波形的ID|
例如码字`0x00000400`可以触发输出形索引ID为`0`对应的波形使能NCO相位清零。
2025-11-04 21:14:03 +08:00
### 3.2.3. 控制寄存器配置
2025-09-19 11:20:06 +08:00
|配置项|值|说明|
|:-:|:-:|:-|
|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载波调制后输出。
2025-11-04 21:14:03 +08:00
### 3.2.4. 波形映射表 + 波形仓库
2025-09-19 11:20:06 +08:00
编程过程中发射的波形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
```
2025-10-24 12:10:32 +08:00
此时波形仓库中的数据应该如上所示,总共存储了192个时钟周期
FPGA的主频为250 MHzDAC的更新率为4Gsps
192个时钟周期对应3072个采样点数据
其中`S1-2048`采样点对应`ID==0`时输出,`S2049-S3072`采样点对应`ID==1`时输出。
调制模式输出时,波形需要经过希尔伯特变换,
而希尔伯特变换器的归一化通带频率为0.06~0.44
因此采样点的频率需要处于240~1760 MHz
否则波形会发生显著的畸变。
2025-11-04 21:14:03 +08:00
### 3.2.5. 配置示例
2025-10-24 12:10:32 +08:00
以下是直接输出一个312.5 MHz波形调制上一个-250 MHz频率的配置示例
2025-11-04 21:14:03 +08:00
完整配置示例可参考[exc_2_config.txt](./exc_2_config.txt)。
2025-10-24 12:10:32 +08:00
由于激励和采集在一个芯片上,并被同步信号触发,
为了避免仿采集通道使用未定义数据,
本例为采集通道MCU配置了一条退出指令。
2025-11-04 21:14:03 +08:00
* **配置项:** 系统配置
* **描述:** 对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
```
2025-10-24 12:10:32 +08:00
仿真结果如下图所示,输出频率为
312.5MHz-250MHz=62.5MHz
32ns输出显示了2个周期波形符合预期。
2025-09-19 11:20:06 +08:00
2025-10-24 12:10:32 +08:00
![sim_exc_2](assets/sim_exc_2.png)
2025-11-04 21:14:03 +08:00
# 4. ACQ通道
2025-10-24 12:10:32 +08:00
读出采集通道用于处理来自量子比特的返回信号,
对返回信号的处理控制包括模拟调制和数字控制两个部分。
2025-09-19 11:20:06 +08:00
ez-Q 2.5 FPGA平台变频电路沿用ez-Q 2.0的硬件,
目前不支持变频增益控制LO本振频率控制暂不开放
2025-10-24 12:10:32 +08:00
LO频率固定为5.5 GHz因此模拟电路无需配置。
采集通道的数字电路输入控制如下图所示
![readout_awg](assets/readout_daq.png)
2025-09-19 11:20:06 +08:00
2025-10-24 12:10:32 +08:00
数字电路配置项包括MCU指令、MCU数据、参数查找表、滤波器系数表和若干控制寄存器。
相应的功能如下所示:
2025-09-19 11:20:06 +08:00
2025-10-24 12:10:32 +08:00
* MCU指令+MCU数据用于控制实验流程和产生执行命令
* 参数表+滤波器系数用于获取指定匹配滤波器系数和提供态判断参数;
* 基带输入控制寄存器用于控制采集处理过程;
2025-09-19 11:20:06 +08:00
2025-10-24 12:10:32 +08:00
其中输出控制寄存器可以通过上位机直接配置,
此外基带输出控制寄存器也被映射到了MCU的访存空间
MCU也可以通过修改寄存器来实时控制信号处理行为。
本文暂未涉及到需要实时修改控制寄存器的用例,
默认都是通过上位机直接配置控制寄存器。
2025-11-04 21:14:03 +08:00
## 4.1. ACQ.1 波形采集
2025-09-19 11:20:06 +08:00
波形采集功能将ADC采集到的原始波形数据采集并上传到上位机。
|配置项|说明|
|:-:|:-|
|MCU指令|用于产生码字的指令|
|MCU数据|非必要配置配合MCU指令|
|控制寄存器|控制采集参数|
|模拟寄存器|控制变频增益和频率|
2025-11-04 21:14:03 +08:00
### 4.1.1. 编程约束
2025-09-19 11:20:06 +08:00
不同于激励信号输出可以做到背靠背输出,
波形采集需要保证两次采集之间预留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
```
2025-11-04 21:14:03 +08:00
### 4.1.2. 码字约束
2025-09-19 11:20:06 +08:00
与波形采集相关的码字如下表所示:
|配置项|值|说明|
|:-|:-:|:-|
|CODEWORD[12]|1'h1|采集波形数据|
2025-10-24 12:10:32 +08:00
建议通过设置`0`来关闭其它采集功能选项,
2025-09-19 11:20:06 +08:00
例如码字为`0x00001000`时,表示仅触发波形采集功能,
2025-10-24 12:10:32 +08:00
若开启其它采集选项,采集死时间受不同的功能组合而改变。
2025-09-19 11:20:06 +08:00
2025-11-04 21:14:03 +08:00
### 4.1.3. 控制寄存器配置
2025-09-19 11:20:06 +08:00
在波形采集实验中,主要配置的寄存器参数包括波形采集的深度和数据回传方式。
下表设置采用数据自动推送,该模式先采集的数据先推送,数据以流模式返回。
|配置项|值|说明|
|:-|:-:|:-|
|spi_rd_en|1'h0|设置为主动数据推送模式|
2025-10-24 12:10:32 +08:00
|sample_depth|sample_depth|要采集数据的深度16bit, 单位是时钟周期|
2025-09-19 11:20:06 +08:00
2025-11-04 21:14:03 +08:00
### 4.1.4. 配置示例
2025-10-24 12:10:32 +08:00
以下是采集一段长度为64ns波形的示例
2025-11-04 21:14:03 +08:00
完整配置示例可参考[acq_1_config.txt](./acq_1_config.txt)。
为了方便观察信号,我们将`EXCT.1`示例的输出环回到采集通道。
2025-10-24 12:10:32 +08:00
本示例额外配置了数据阈值请求量`int_threshold`
以告知仿真器在采集到足够数据后停止运行
并将采集到的数据写入文件。
2025-11-04 21:14:03 +08:00
* **配置项:** 系统配置
* **描述:** 对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相同,不再赘述。
2025-10-24 12:10:32 +08:00
以下是推送的数据(含帧头)
@import "acq_1_pack.txt"
2025-09-19 11:20:06 +08:00
2025-10-24 12:10:32 +08:00
去除帧头的波形数据如下图所示
![daq_wave](assets/sim_acq_1.png)
2025-11-04 21:14:03 +08:00
## 4.2. ACQ.2 IQ数据采集
2025-09-19 11:20:06 +08:00
IQ采集功能利用解模算法计算输入信号的IQ值
并将IQ值采集并推送到上位机。
受限于FPGA的计算资源FPGA平台仅支持系数直读模式不支持权重计算模式
因此FPGA平台下需要配置匹配滤波器系数。
而ASIC平台滤波器系数是自动生成的无该配置项。
以下是ez-Q 2.5 FPGA平台下所需的配置项
|配置项|说明|
|:-:|:-|
|MCU指令|用于产生码字的指令|
|MCU数据|非必要配置配合MCU指令|
|控制寄存器|控制解模采集相关参数|
|读出控制参数表|定义了解模所用的参数索引|
|匹配滤波器系数|定义了解模匹配滤波器系数|
|模拟寄存器|控制变频增益和频率|
2025-11-04 21:14:03 +08:00
### 4.2.1. 编程约束
2025-09-19 11:20:06 +08:00
解模采集需要保证两次采集之间预留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
```
2025-11-04 21:14:03 +08:00
### 4.2.2. 码字约束
2025-09-19 11:20:06 +08:00
与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`次使能解模求和不使能清零和存储,
最后一次使能存储和解模求和不使能清零。
当需要采集多次求和结果时,重复上述过程即可。
2025-11-04 21:14:03 +08:00
### 4.2.3. 控制寄存器配置
2025-09-19 11:20:06 +08:00
在IQ采集实验中主要配置的寄存器参数为采集的深度和数据回传方式和IQ数据的截取范围。
|配置项|值|说明|
|:-|:-:|:-|
|spi_rd_en|1'h0|设置为主动数据推送模式|
|iq_scale|1h0|选择小iq范围|
上述设置数据自动推送,先采集的数据先推送,仅使能的频点数据返回,
同时采集的多个频点数据先返回频点序号较小的数据,数据以流模式持续推送直至推送完成。
2025-11-04 21:14:03 +08:00
### 4.2.4. 解模参数配置
2025-09-19 11:20:06 +08:00
码字为`0xFFFF2110`使用了PARA_ID为0的解模参数
对于每个比特而言由于只执行解模仅需要配置参数组中的mtf_idx域。
下表为qubit0的配置结构由于只用了一组参数因此只需要配置一组参数。
由于使能了16个qubit因此每个qubit都需要配置
不同qubit配置格式相同仅偏移地址不同这里不再赘述。
|地址|值|说明|
|:-|:-:|:-|
|0x00500000|dds_pfw|无需配置|
|0x00500004|mtf_idx|需要配置|
2025-11-04 21:14:03 +08:00
### 4.2.5. 匹配滤波器系数配置
2025-09-19 11:20:06 +08:00
由于解模使用参数配置表中的`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|
2025-11-04 21:14:03 +08:00
### 4.2.6. 配置示例
2025-10-24 12:10:32 +08:00
2025-11-04 21:14:03 +08:00
本例是采集q0到q3解模结果的示例
2025-10-24 12:10:32 +08:00
本示例额外配置了数据阈值请求量`int_threshold`
以告知仿真器在采集到足够数据后停止运行
并将采集到的数据写入文件。
2025-11-04 21:14:03 +08:00
完整配置示例可参考[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
```
2025-10-24 12:10:32 +08:00
2025-09-19 11:20:06 +08:00
2025-10-24 12:10:32 +08:00
推送的数据结果如下所示
@import "acq_2_pack.txt"
绘制到iq平面上的结果如下图所示
![sim_acq_2](assets/sim_acq_2.png)
2025-11-04 21:14:03 +08:00
## 4.3. ACQ.3 态数据采集
2025-09-19 11:20:06 +08:00
态采集功能首先利用解模算法计算IQ值
接着用态判断算法计算IQ值对应的比特状态
最后将计算出来的态信息采集并推送到上位机。
态采集功能会利用IQ解模结果
除配置解模所需参数外还需要额外配置态判断所需参数。
以下是ez-Q 2.5 FPGA平台下所需的配置项
|配置项|说明|
|:-:|:-|
|MCU指令|用于产生码字的指令|
|MCU数据|非必要配置配合MCU指令|
|控制寄存器|采集的相关配置|
|读出控制参数表|定义了读出所用的参数索引|
|匹配滤波器系数|定义了解模匹配滤波器系数|
|模拟寄存器|控制变频增益和频率|
2025-11-04 21:14:03 +08:00
### 4.3.1. 编程约束
2025-09-19 11:20:06 +08:00
态采集需要保证两次态采集之间预留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
```
2025-11-04 21:14:03 +08:00
### 4.3.2. 码字约束
2025-09-19 11:20:06 +08:00
与态采集相关的码字如下表所示:
|配置项|值|说明|
|:-|:-|:-|
|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`来关闭其它功能选项,
若开启其它选项,采集死时间受不同的功能组合而改变。
2025-11-04 21:14:03 +08:00
### 4.3.3. 控制寄存器配置
2025-09-19 11:20:06 +08:00
在IQ采集实验中主要配置的寄存器参数为采集的深度和数据回传方式和IQ数据的截取范围。
|配置项|值|说明|
|:-|:-:|:-|
|spi_rd_en|1'h0|设置为主动数据推送模式|
|iq_scale|1h0|选择小iq范围|
|two_state_en|1b0|不用两态判定|
上述设置数据自动推送,先采集的数据先推送,
只要发生采集操作即将全部16个qubit数据推送
数据以流模式持续推送直至推送完成。
2025-11-04 21:14:03 +08:00
### 4.3.4. 解模参数配置
2025-09-19 11:20:06 +08:00
码字为`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|需要配置|
2025-11-04 21:14:03 +08:00
### 4.3.5. 匹配滤波器系数配置
2025-09-19 11:20:06 +08:00
由于解模使用参数配置表中的`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|
2025-11-04 21:14:03 +08:00
### 4.3.6. 配置示例
2025-09-19 11:20:06 +08:00
2025-11-04 21:14:03 +08:00
本例是采集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
```
2025-10-24 12:10:32 +08:00
2025-11-04 21:14:03 +08:00
* **配置项:** 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
```
2025-10-24 12:10:32 +08:00
推送的数据结果如下所示
@import "acq_3_pack.txt"
上述结果显示q0~q3分别处于2、1、0、1态
2025-11-04 21:14:03 +08:00
其余未测量的比特处于未定义的3态。
2025-10-24 12:10:32 +08:00
2025-11-04 21:14:03 +08:00
## 4.4. ACQ.4 计数数据采集
2025-09-19 11:20:06 +08:00
态计数采集功能利用解模算法计算输入信号的IQ值
接着利用态判断算法到量子比特的状态,
最后对0态、1态、2态和3态进行计数统计
最后将将每个比特的四个计数值采集并推送到上位机。
受限于FPGA的计算资源FPGA平台解模仅支持系数直读模式不支持权重计算模式
因此FPGA平台下需要配置匹配滤波器系数。
而ASIC平台滤波器系数是自动生成的无该配置项。
以下是ez-Q 2.5 FPGA平台下所需的配置项
|配置项|说明|
|:-:|:-|
|MCU指令|用于产生码字的指令|
|MCU数据|非必要配置配合MCU指令|
|控制寄存器|控制态统计采集相关参数|
|读出控制参数表|定义了解模所用的参数索引|
|匹配滤波器系数|定义了解模匹配滤波器系数|
|模拟寄存器|控制变频增益和频率|
2025-11-04 21:14:03 +08:00
### 4.4.1. 编程约束
2025-09-19 11:20:06 +08:00
解模采集需要保证两次采集之间预留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
```
2025-11-04 21:14:03 +08:00
### 4.4.2. 码字约束
2025-09-19 11:20:06 +08:00
与态计数采集相关的码字如下表所示:
|配置项|值|说明|
|:-|:-|:-|
|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`次使能计数统计不使能计数清零和计数存储,
最后一次使能计数存储和计数统计不使能计数清零。
当需要采集多次计数统计结果时,重复上述过程即可。
2025-11-04 21:14:03 +08:00
### 4.4.3. 控制寄存器配置
2025-09-19 11:20:06 +08:00
在态计数采集实验中主要配置的寄存器参数为数据回传方式和IQ数据的截取范围以及是否使能2态判定。
|配置项|值|说明|
|:-|:-:|:-|
|spi_rd_en|1'h0|设置为主动数据推送模式|
|iq_scale|1h0|选择小iq范围|
|two_state_en|1b0|不用两态判定|
上述设置数据自动推送,先采集的数据先推送,仅使能的频点数据返回,
同时采集的多个频点数据先返回频点序号较小的数据,数据以流模式持续推送直至推送完成。
2025-11-04 21:14:03 +08:00
### 4.4.4. 解模参数配置
2025-09-19 11:20:06 +08:00
码字为`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|需要配置|
2025-11-04 21:14:03 +08:00
### 4.4.5. 匹配滤波器系数配置
2025-09-19 11:20:06 +08:00
由于解模使用参数配置表中的`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|
2025-11-04 21:14:03 +08:00
### 4.4.6. 配置示例
本例是采集q0到q3态统计结果的示例
完整配置示例可参考[acq_4_config.txt](./acq_4_config.txt)。
2025-10-24 12:10:32 +08:00
该示例在acq.3示例的基础上仅修改了码字和采集数据量。
2025-11-04 21:14:03 +08:00
* 码字: 从`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
```
2025-10-24 12:10:32 +08:00
采集到的数据如下所示:
2025-09-19 11:20:06 +08:00
2025-10-24 12:10:32 +08:00
@import "acq_4_pack.txt"
2025-09-19 11:20:06 +08:00
2025-10-24 12:10:32 +08:00
上述数据分析如下与acq.3实验结果吻合。
* q0出现了1次2态其余态出现0次
* q1出现了1次1态其余态出现0次
* q2出现了1次0态其余态出现0次
* q3出现了1次1态其余态出现0次
2025-11-04 21:14:03 +08:00
## 4.5. ACQ.5 读出态反馈
2025-09-19 11:20:06 +08:00
态读出反馈功能首先利用解模算法得到IQ值
接着利用态判断算法计算IQ值对应的比特状态
最后将计算出来的态信息通过上行和下行反馈端口发出。
以下是ez-Q 2.5 FPGA平台下所需的配置项
|配置项|说明|
|:-:|:-|
|MCU指令|用于产生码字的指令|
|MCU数据|非必要配置配合MCU指令|
|控制寄存器|读出的相关配置|
|读出控制参数表|定义了读出所用的参数索引|
|匹配滤波器系数|定义了解模匹配滤波器系数|
|模拟寄存器|控制变频增益和频率|
2025-11-04 21:14:03 +08:00
### 4.5.1. 编程约束
2025-09-19 11:20:06 +08:00
态读出反馈需要保证两次态采集之间预留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
```
2025-11-04 21:14:03 +08:00
### 4.5.2. 码字约束
2025-09-19 11:20:06 +08:00
与态采集相关的码字如下表所示:
|配置项|值|说明|
|:-|:-|:-|
|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`来关闭其它功能选项,
若开启其它选项,采集死时间受不同的功能组合而改变。
2025-11-04 21:14:03 +08:00
### 4.5.3. 控制寄存器配置
2025-09-19 11:20:06 +08:00
在态读出反馈实验中主要配置的寄存器参数为IQ数据的截取范围和态判断的模式。
|配置项|值|说明|
|:-|:-:|:-|
|iq_scale|1h0|选择小iq范围|
|two_state_en|1b0|不用两态判定|
2025-11-04 21:14:03 +08:00
### 4.5.4. 解模参数配置
2025-09-19 11:20:06 +08:00
码字为`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|需要配置|
2025-11-04 21:14:03 +08:00
### 4.5.5. 匹配滤波器系数配置
2025-09-19 11:20:06 +08:00
由于解模使用参数配置表中的`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|
2025-11-04 21:14:03 +08:00
### 4.5.6. 配置示例
本例是反馈q0到q3态读出结果的示例
完整配置示例可参考[acq_5_config.txt](./acq_5_config.txt)。
2025-10-24 12:10:32 +08:00
该示例在acq.4示例的基础上仅修改了码字。
2025-11-04 21:14:03 +08:00
* 码字: 从`0x000f8220`,改成`0x000f82e0`, 将读出结果反馈到局部和全局接口。
差异配置如下所示:
* **配置项:** ACQ MCU数据配置
* **描述:** 向ACQ通道MCU数据空间写入配置数据
* **Transaction** 向0x00300000地址写入4 Byte数据
```{.line-numbers}
00300000 // address = 0x00300000
00200004 // slot=4, length = 4 Byte
000f82e0 // codeword = 0x000f82e0
```
2025-10-24 12:10:32 +08:00
仿真结果如下图所示:
![sim_acq_5](assets/sim_acq_5.png)
可以看到局部反馈端口`loc_lvcmos_t`上的态结果与acq.3实验相同,
全局反馈回环接收数据`glb_fd_in`与acq.3实验相同,符合预期。
2025-09-19 11:20:06 +08:00
2025-11-04 21:14:03 +08:00
# 5. Pump通道
2025-09-19 11:20:06 +08:00
2025-10-24 12:10:32 +08:00
Pump通道用于为参量放大器提供能量对Pump通道的输出控制包括模拟电路配置。
模拟电路通过小数分配锁相环来合成指定频率,并通过功率驱动电路后输出。
2025-09-19 11:20:06 +08:00
2025-11-04 21:14:03 +08:00
## 5.1. Pump.1 开关输出
2025-09-19 11:20:06 +08:00
Pump开关输出功能使用与激励信号同一个MCU来产生码字
通道利用码字来触发产生一个指定脉冲宽度的数字信号,
并利用这个数字信号使能Pump通道微波信号输出
从而实现泵浦通道与激励信号实时同步输出。
|配置项|说明|
|:-:|:-|
|MCU指令|用于产生码字的指令|
|MCU数据|非必要配置配合MCU指令|
|控制寄存器|控制脉冲输出的宽度|
|模拟寄存器|控制Pump的频率和功率|
2025-11-04 21:14:03 +08:00
### 5.1.1. 编程约束
2025-09-19 11:20:06 +08:00
|说明项|说明内容|
|:-:|:-|
|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
```
2025-11-04 21:14:03 +08:00
### 5.1.2. 码字约束
2025-09-19 11:20:06 +08:00
与使能脉冲输出相关的控制码字如下:
|配置项|值|说明|
|:-|:-:|:-|
2025-11-04 21:14:03 +08:00
|CODEWORD[12]|PULSE_ONLY|仅使能脉冲输出|
2025-09-19 11:20:06 +08:00
|CODEWORD[8]|1|使能Pump脉冲输出|
2025-11-04 21:14:03 +08:00
CODEWORD[12]控制了是否在输出脉冲时输出波形,
当使能波形输出时需要同时配置好EXCT通道相关配置。
* 码字`0x00001100`可以触发输出pump通道使能控制脉冲而不触发波形输出
2025-09-19 11:20:06 +08:00
此时脉冲的宽度等于pump_width指定的长度。
2025-11-04 21:14:03 +08:00
* 码字`0x00000100`可以触发输出Pump通道使能脉冲并同时输出波形
此时使能脉冲的长度等于波形长度加上pump_width指定的长度。
2025-09-19 11:20:06 +08:00
2025-11-04 21:14:03 +08:00
### 5.1.3. 控制寄存器配置
2025-09-19 11:20:06 +08:00
控制器寄存器主要包括对使能脉冲的延迟和宽度的配置。
|配置项|值|说明|
|:-:|:-:|:-|
|pump_inv|0|不反转极性,默认低电平输出|
|pump_ctrl|{delay,width}|pump脉冲输出延迟和宽度|
2025-11-04 21:14:03 +08:00
### 5.1.4. 模拟寄存器
2025-09-19 11:20:06 +08:00
模拟寄存器用于配置模拟电路生成pump信号的参数
|配置项|值|说明|
|:-|:-|:-|
|pump_freq|FCW|输出频率控制字freq = FCW*1000|
2025-10-29 18:21:19 +08:00
|pump_power|PCW|PCW范围[-1100,-300],码值与输出功率正相关|
2025-09-19 11:20:06 +08:00
|pump_enable|32'h11|使能pump通道模拟输出|
2025-11-04 21:14:03 +08:00
### 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
```
2025-10-24 12:10:32 +08:00
数字部分仿真结果如下图所示,可以看到脉冲输出持续了96ns24个时钟周期
其中8个时钟周期是波形输出时间16个时钟周期是附加持续时间与预期符合。
![sim_pump_1](assets/sim_pump_1.png)
模拟部分配置需要设置输出频率、输出功率并使能输出。
2025-11-04 21:14:03 +08:00
模拟完整配置示例可参考[pump_1_ana_cfg.txt](./pump_1_ana_cfg.txt)。
2025-10-24 12:10:32 +08:00
2025-11-04 21:14:03 +08:00
* **配置项:** 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
```
2025-10-24 12:10:32 +08:00
2025-11-04 21:14:03 +08:00
* **配置项:** Pump 通道模拟配置
* **描述:** 设置Pump通道输出开启
* **Transaction** 向0x00400000地址写入4 Byte数据
```{.line-numbers}
00400000 // address = 0x00400000
00280004 // slot=5, length = 4 Byte
00000011 // pump output enable
```
注意:受制于混频板的硬件限制,
```
2025-10-24 12:10:32 +08:00
对混频板的参数配置需要预留一定等待时间,
建议每执行一项配置后等待10毫秒再执行。
2025-11-04 21:14:03 +08:00
```
## 5.2. Pump.2 连续输出
2025-09-19 11:20:06 +08:00
Pump连续输出功能通过配置寄存器令使能脉冲始终处于高电平
从而允许pump通道始终输出微波信号。
连续输出所需配置项如下表所示:
|配置项|说明|
|:-:|:-|
|控制寄存器|控制脉冲输出的极性|
|模拟寄存器|控制Pump的频率和功率|
2025-11-04 21:14:03 +08:00
### 5.2.1. 码字约束
2025-09-19 11:20:06 +08:00
Pump通道连续输出功能本身无需编程MCU
但是当需要触发RI波形输出时
必须禁止码字Pump脉冲输出功能
2025-11-04 21:14:03 +08:00
### 5.2.2. 控制寄存器配置
2025-09-19 11:20:06 +08:00
控制器寄存器主要包括对使能脉冲的延迟和宽度的配置。
|配置项|值|说明|
|:-:|:-:|:-|
|pump_inv|1|反转极性,控制脉冲默认输出高电平|
2025-11-04 21:14:03 +08:00
### 5.2.3. 模拟寄存器
2025-09-19 11:20:06 +08:00
|配置项|值|说明|
|:-|:-|:-|
|pump_freq|FCW|输出频率控制字freq = FCW*1000|
|pump_power|PCW|PCW范围[-1300,-200],码值与输出功率正相关|
2025-10-24 12:10:32 +08:00
|pump_enable|32'h11|使能pump通道模拟输出|
2025-11-04 21:14:03 +08:00
### 5.2.4. 配置示例
本用例模拟配置与Pump.1用例相同,示例可参考[pump_1_ana_cfg.txt](./pump_1_ana_cfg.txt)。
2025-10-24 12:10:32 +08:00
数字部分配置仅需要设置pump_en的极性为取反
并且生成码字时不能使能pump_en。
2025-11-04 21:14:03 +08:00
数字完整配置示例可参考[pump_2_dig_cfg.txt](./pump_2_dig_cfg.txt)。
2025-10-24 12:10:32 +08:00
2025-11-04 21:14:03 +08:00
* **配置项:** 系统配置
* **描述:** 对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
```
2025-10-24 12:10:32 +08:00
仿真结果如下图所示,将极性取反后,
`pump_en`输出始终为高电平,
模拟部分配置保持与pump.1相同,
此时模拟开关始终打开,
pump信号保持持续输出。
![sim_pump_2](assets/sim_pump_2.png)
2025-11-26 11:02:54 +08:00
# 6. 功能项汇总
## 6.1. 激励通道功能汇总
@import "激励通道.csv"
## 6.2. 采集通道功能汇总
@import "采集通道.csv"
## 6.3. 采集通道功能汇总
@import "泵浦通道.csv"