2026-07-24 20:24:39 +08:00
|
|
|
|
## 4.5. 采集数据处理
|
|
|
|
|
|
|
|
|
|
|
|
ACQ通道采集的数据以流的形式按照先后顺序缓存,
|
|
|
|
|
|
缓存到设定数据量后或者计时器超时后数据被打包成帧上传,
|
|
|
|
|
|
上位机驱动解帧后以流模式将数据返回给调用接口。
|
|
|
|
|
|
当采集多种数据时,用户需要维护采集数据的顺序,
|
|
|
|
|
|
从而解析返回数据的含义。
|
|
|
|
|
|
建议一个实验仅仅采集一种类型数据以简化数据处理。
|
|
|
|
|
|
|
|
|
|
|
|
### 4.5.1. 采集波形数据
|
|
|
|
|
|
|
|
|
|
|
|
波形数据为模拟信号经ADC量化和符号转换后结果,
|
|
|
|
|
|
用8比特二进制补码表示,范围对应-128~127;
|
|
|
|
|
|
|
|
|
|
|
|
* ASIC平台1个时钟周期对应8个采样点(8个字节)
|
|
|
|
|
|
* FPGA平台1个时钟周期对应16个采样点(16字节)
|
|
|
|
|
|
* 数据采用大端字节序,数据遵循先采先到顺序
|
|
|
|
|
|
|
|
|
|
|
|
### 4.5.2. 采集IQ数据
|
|
|
|
|
|
|
|
|
|
|
|
解模计算公式如下:
|
2026-07-28 14:32:35 +08:00
|
|
|
|
|
2026-07-24 20:24:39 +08:00
|
|
|
|
$$
|
2026-07-28 14:32:35 +08:00
|
|
|
|
I = \sum_{i=1}^{m}{\sum_{j=1}^n{\frac{S_{i,j} * iw_{i,j} * \cos(\omega_i t+\phi_i)}{scale_i} }}
|
2026-07-24 20:24:39 +08:00
|
|
|
|
$$
|
2026-07-28 14:32:35 +08:00
|
|
|
|
|
2026-07-24 20:24:39 +08:00
|
|
|
|
$$
|
2026-07-28 14:32:35 +08:00
|
|
|
|
Q = \sum_{i=1}^{m}{\sum_{j=1}^n{\frac{S_{i,j} * qw_{i,j} * \sin(\omega_i t+\phi_i)}{scale_i} }}
|
2026-07-24 20:24:39 +08:00
|
|
|
|
$$
|
|
|
|
|
|
|
|
|
|
|
|
* $m$表示解模次数,$n$表示解模的采样点个数;
|
|
|
|
|
|
* $S_{i,j}$为输入波形的第i次解模第j个采样点,8比特有符号数
|
|
|
|
|
|
* $iw_{i,j}$、$qw_{i,j}$为i、q权重的第i次解模第j个采样点,8比特有符号数
|
2026-07-28 14:32:35 +08:00
|
|
|
|
* $\omega_i$、$\phi_i$分别为第i次解模的频率和相位
|
2026-07-24 20:24:39 +08:00
|
|
|
|
* $scale_i$为第i次解模的范围选择,可设置为1或者16
|
|
|
|
|
|
|
2026-07-28 14:32:35 +08:00
|
|
|
|
>解模频率应设置为输入波形对应频率使得解模结果频率为0,
|
2026-07-24 20:24:39 +08:00
|
|
|
|
解模结果相位等于解模设置相位设置减去输入波形相位。
|
|
|
|
|
|
若解模相位为0,则结果相位等于波形相位取反。
|
2026-07-28 14:32:35 +08:00
|
|
|
|
|
2026-07-24 20:24:39 +08:00
|
|
|
|
解模求和结果I、Q分别用32比特二进制补码表示,解模的结果存储格式如下:
|
|
|
|
|
|
|
|
|
|
|
|
* 1个完整的数据包含I,Q(8字节)
|
|
|
|
|
|
* I先到达,Q后到达
|
|
|
|
|
|
* I, Q数据采用大端字节,都占用4个字节
|
|
|
|
|
|
|
|
|
|
|
|
### 4.5.3. 采集态数据
|
|
|
|
|
|
|
2026-07-28 15:50:19 +08:00
|
|
|
|
#### 态判断计算
|
|
|
|
|
|
|
|
|
|
|
|
态判断利用解模IQ数据,通过三组直线方程将 IQ 平面划分为三个区域,判定量子比特状态。
|
|
|
|
|
|
|
|
|
|
|
|
三组直线方程定义在 DAQ_PAR 参数区(见 [§4.4.1](#441-读出参数存储)),
|
|
|
|
|
|
每组包含三个系数(a, b, c),直线方程为 $ax + by = c$,
|
|
|
|
|
|
其中 a、b 为 16 位有符号数,c 为 32 位有符号数,I、Q 为 20 位截位后的解模结果。
|
|
|
|
|
|
|
|
|
|
|
|
对于每条直线,位置判定公式为:
|
|
|
|
|
|
|
|
|
|
|
|
$$
|
|
|
|
|
|
compare[i] = (a_i \times I < c_i \times 2^4 - b_i \times Q),\quad i = 0, 1, 2
|
|
|
|
|
|
$$
|
|
|
|
|
|
|
|
|
|
|
|
得到三条直线的位置判定结果后,通过优先级电路确定态信息:
|
|
|
|
|
|
|
|
|
|
|
|
|优先级|态值|判定条件|
|
|
|
|
|
|
|:-|:-|:-|
|
|
|
|
|
|
|1|0|compare[0] = 1 且 compare[1] = 0|
|
|
|
|
|
|
|2|1|compare[1] = 1 且 compare[2] = 0|
|
|
|
|
|
|
|3|2|compare[2] = 1 且 compare[0] = 0|
|
|
|
|
|
|
|—|3(错误态)|其它情况|
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
三态判断要求三条直线交于同一点,否则 IQ 平面被划分为 4 个以上区域,
|
|
|
|
|
|
部分 IQ 点将落入未定义区域,产生错误态(3态)。
|
|
|
|
|
|
仅需两态判断时,设置 func_ctrl.TWO_STA_EN = 1,仅使用一组直线方程。
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### 态数据存储格式
|
|
|
|
|
|
|
2026-07-24 20:24:39 +08:00
|
|
|
|
* 1个完整数据包含16个qubit态信息(4字节)
|
|
|
|
|
|
* 每个量子比特态信息用2个比特表示
|
2026-07-28 15:50:19 +08:00
|
|
|
|
* 高位表示高序号,即32比特对应 {q15, q14, ..., q0}
|
2026-07-24 20:24:39 +08:00
|
|
|
|
|
|
|
|
|
|
### 4.5.4. 采态计数数据
|
|
|
|
|
|
|
|
|
|
|
|
* 1个完整数据包含4个计数器数据(16字节)
|
|
|
|
|
|
* 4个计数数据顺序为0态计数器、1态计数器、2态计数器、3态计数器
|
|
|
|
|
|
* 计数器采用大端字节序,为32比特无符号数
|