## 4.5. 采集数据处理 ACQ通道采集的数据以流的形式按照先后顺序缓存, 缓存到设定数据量后或者计时器超时后数据被打包成帧上传, 上位机驱动解帧后以流模式将数据返回给调用接口。 当采集多种数据时,用户需要维护采集数据的顺序, 从而解析返回数据的含义。 建议一个实验仅仅采集一种类型数据以简化数据处理。 ### 4.5.1. 采集波形数据 波形数据为模拟信号经ADC量化和符号转换后结果, 用8比特二进制补码表示,范围对应-128~127; * ASIC平台1个时钟周期对应8个采样点(8个字节) * FPGA平台1个时钟周期对应16个采样点(16字节) * 数据采用大端字节序,数据遵循先采先到顺序 ### 4.5.2. 采集IQ数据 解模计算公式如下: $$ I = \sum_{i=1}^{m}{\sum_{j=1}^n{\frac{S_{i,j} * iw_{i,j} * \cos(\omega_i t+\phi_i)}{scale_i} }} $$ $$ Q = \sum_{i=1}^{m}{\sum_{j=1}^n{\frac{S_{i,j} * qw_{i,j} * \sin(\omega_i t+\phi_i)}{scale_i} }} $$ * $m$表示解模次数,$n$表示解模的采样点个数; * $S_{i,j}$为输入波形的第i次解模第j个采样点,8比特有符号数 * $iw_{i,j}$、$qw_{i,j}$为i、q权重的第i次解模第j个采样点,8比特有符号数 * $\omega_i$、$\phi_i$分别为第i次解模的频率和相位 * $scale_i$为第i次解模的范围选择,可设置为1或者16 >解模频率应设置为输入波形对应频率使得解模结果频率为0, 解模结果相位等于解模设置相位设置减去输入波形相位。 若解模相位为0,则结果相位等于波形相位取反。 解模求和结果I、Q分别用32比特二进制补码表示,解模的结果存储格式如下: * 1个完整的数据包含I,Q(8字节) * I先到达,Q后到达 * I, Q数据采用大端字节,都占用4个字节 ### 4.5.3. 采集态数据 #### 态判断计算 态判断利用解模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,仅使用一组直线方程。 ``` #### 态数据存储格式 * 1个完整数据包含16个qubit态信息(4字节) * 每个量子比特态信息用2个比特表示 * 高位表示高序号,即32比特对应 {q15, q14, ..., q0} ### 4.5.4. 采态计数数据 * 1个完整数据包含4个计数器数据(16字节) * 4个计数数据顺序为0态计数器、1态计数器、2态计数器、3态计数器 * 计数器采用大端字节序,为32比特无符号数