# 应用注意

## 模拟接口

### DAC 输出接口

DAC 输出 0–12 GHz 信号，内部为 50 Ω 电阻网络，外部差分 270 nH 电感到地，然后经巴伦差分转单端，注意传输线阻抗匹配。

DAC 支持三种输出模式：

* **NRZ 直出模式**：基带波形直接输出，输出频率范围 DC–3 GHz。适用于直接产生多音基带信号。
* **混频模式 (MIX)**：基带波形与 NCO 混频后输出，输出频率范围 0.3–2.4 GHz。通过 NCO 频率控制可实现精确的频点定位。
* **半带混频模式 (MIX-HB)**：在混频模式基础上启用半带插值滤波器，提升输出信号质量，适用于高频输出场景。

各模式输出频谱参考见 [DAC 特性](#dac-特性)。

### ADC 输入接口

ADC 采用差分模拟输入，包含两组独立输入通道（ADC_VINP1/ADC_VINN1, ADC_VINP2/ADC_VINN2），支持最高 6 GSPS 采样率。

* 满量程输入范围：差分 0.7 Vpp
* 输入共模电压：0.5 V
* 输入阻抗（差分）：100 Ω
* 输入带宽 (−3 dB)：3 GHz

ADC 支持内部和外部两种基准电压模式，通过 ADC_REF_SENSE 端口选择：

* 1.8 V 电平：选择内部带隙基准
* 0.52 V 电平：选择外部参考源（需提供 ADC_VR850 和 ADC_VR350）

ADC 采集波形示例参考见 [ADC 特性](#adc-特性)。

### 时钟输入接口

参考时钟通过差分端口 CLK_REF_P/CLK_REF_N 输入，支持 AC 耦合。参考时钟频率范围 50–250 MHz，典型输入为 100 MHz 或 125 MHz 低相噪时钟源。时钟信号经内部 PLL 倍频，产生 DAC 更新时钟（6–12 GHz）、ADC 采样时钟（3–6 GHz）和数字主时钟（250–500 MHz）。

PLL 及 NCO 频率特性参考见 [时钟与 NCO 特性](#时钟与-nco-特性)。

### 环路滤波器

使用内部 PLL 时，需要外接环路滤波器。

PLL 锁相环电荷泵输出电压通过 CP_OUT 端口输出至 VCTRL 端口，外接二阶环路滤波器。PLL_VREF520 端口需提供外部 520 mV 参考电压用于 PLL 内部偏置。BIAS_CAP 端口需外接 100 nF 去耦电容，RES_2K 端口需外接 2 kΩ 电阻到地。PORT_BIAS_TB 端口需外接 10 μF × 1、1 μF × 1、0.1 μF × 3 滤波电容到地。

<div class="note">
环路滤波器推荐参数（电荷泵电流、环路带宽、阻容值等）待补充。
</div>

### 基准电压输入

此端口的外接电阻决定了基准电流源的大小。其中，ADC_VBIAS_IREF_RES 端口要求外接电阻 5.2 kΩ 到地，并联 10 μF 去耦电容。DAC_VBIAS_IREF_RES 端口要求外接电阻 5.2 kΩ 到地，并联 10 μF 去耦电容。

各基准电压端口要求如下：

| 端口 | 电压/配置 | 说明 |
|:-|:-|:-|
| ADC_VR850 | 850 mV | ADC 外部参考电压，需去耦 |
| ADC_VR350 | 350 mV | ADC 外部参考电压，需去耦 |
| ADC_REF_SENSE | 1.8V / 0.52V | ADC 带隙基准内外选择 |
| PLL_VREF520 | 520 mV | PLL 外部参考电压，需去耦 |
| VREF500IN | 500 mV | DAC 外部参考电压，需去耦 |
| DAC_VBIAS_IREF_RES | 外接 5.2 kΩ + 10 μF | DAC 偏置电流基准 |
| ADC_VBIAS_IREF_RES | 外接 5.2 kΩ + 10 μF | ADC 偏置电流基准 |
| BIAS_CAP | 外接 100 nF | PLL 偏置去耦 |
| RES_2K | 外接 2 kΩ | PLL 外接电阻 |
| PORT_BIAS_TB | 外接 10 μF + 1 μF + 0.1 μF × 3 | PLL 滤波电容 |
| PLL_CP_OUT | 电荷泵输出 | 连接至外部环路滤波器后接入 VCTRL |

## 启动顺序

为了确保芯片正常工作，需要满足以下启动顺序要求：

1. 内核供电上电
2. IO 供电上电
3. 时钟配置完毕
4. 芯片复位

## 配置流程

读出芯片在上电后应该校准，校准过程用于完成片上 ADC、DAC、PLL 以及系统同步。校准过程参考附录 [运维操作手册](#运维操作手册)。

在实验中读出芯片的操作遵循**数据配置**、**实验运行**和**数据采集**三个阶段。

### 数据配置阶段

* **RO 通道配置**：外部硬件通过 SPI 接口对读出芯片的寄存器（包括输出模式，例如直发模式、NCO Only 模式、调制模型）、波形查找表、波形仓库、输出 MCU 控制程序及数据进行配置。
* **RI 通道配置**：外部硬件通过 SPI 接口对读出芯片的寄存器（包括采集模式，例如波形模式、解模模式、态结果模式等）、读出参数、匹配滤波器权重、采集控制程序及数据进行配置。
* **Pump 通道配置**：主要配置 Pump 通道输出的使能信号宽度和相对码字触发的延迟。

<div class="important">
若芯片出现异常，在实验配置前应该通过写寄存器来软复位芯片的状态机和寄存器默认值。数据配置用例参考附录 [历史无关配置集](#历史无关配置集)。
</div>

### 实验运行阶段

读出芯片的运行通过同步触发信号来启动，从而确保多个芯片间具有确定的时序关系。此外考虑到不同类型通信固有延迟不同，同步信号在芯片内部首先经过同步延迟模块，同步延迟模块能够为 DAQ 和 AWG 分别延迟不同的时间，从而确保读出芯片的 DAQ 和 AWG 模块能够协同运行。

同步信号到达 DAQ 和 AWG 模块后，DAQ 和 AWG 模块内部的 MCU 分别启动运行，MCU 从 0 地址加载指令运行，其按照每三个时钟一个指令的速度执行，MCU 根据编程指令修改控制寄存器与发出控制码字：

* 对于 AWG，控制码字驱动波形输出和 Pump 使能输出。
* 对于 DAQ，控制码字驱动数据采集和反馈上报/下发。

MCU 运行到退出指令后，退出运行并进入空闲状态。

### 实验数据采集阶段

实验数据采集与 MCU 运行是同时启动的。如果采集数据量较大，存在 MCU 运行结束但是数据还没采集完成的情况，此时数据继续写入到缓存区，主动数据上报模块继续从缓存中拿取数据并通过数据上报接口推送出去。当缓存中数据推送完毕后结束实验，此时可以通过检测推送数据量与目标数据量是否相等，控制发出读请求信号来指示实验是否完毕。

若不能提前确定采集的数据量，则只能在 MCU 运行结束后通过等待一定的时间，通过检测是否有数据返回来判断实验是否完成。

在为读出芯片设置好采集数据请求阈值后，当采集到的数据大于等于阈值便会触发一次读数据请求。由于读出芯片通过 LVDS 接口回传数据，持续进行实验时，为了避免缓存写满，需要确保数据产生速率和数据回传速率匹配。以获取解模 IQ 数据为例：

设 *T* 为数据产生时间间隔，*N* 为每次读取的 Qubit 数量，*F* 为 LVDS 的有效速率，触发间隔时间需要满足以下公式：

$$T > \frac{64 \times N}{F}$$

## 异常处理

读出芯片内部集成了中断管理和异常检测机制，通过 INT_STATUS 和 INT_MASK 寄存器进行管理。INT_STATUS 寄存器是 INT_MASK 与对应实际输入状态按位相与再与 INT_STATUS 本身按位或运算的结果，需要通过命令清零。

### 中断源

芯片支持以下中断/异常源：

| 中断源 | 触发条件 | 说明 |
|:-|:-|:-|
| EXIT_IR | MCU 执行退出指令 | MCU 程序正常退出时触发，表明任务执行完毕 |
| FORCE_AWG | 外部强制 AWG 请求 | 外部控制器通过写寄存器强制 AWG 模块进入特定状态 |
| FORCE_DAQ | 外部强制 DAQ 请求 | 外部控制器通过写寄存器强制 DAQ 模块进入特定状态 |
| ILLEGAL_ONE | 非法指令（数据为全 1） | MCU 执行到全 1 指令字 (0xFFFFFFFF) 时触发，表明指令内存异常 |
| ILLEGAL_ZERO | 非法指令（数据为全 0） | MCU 执行到全 0 指令字时触发，常见于未编程的指令空间 |
| UNALIGN_SW | 短字非对齐访问 | 16 位数据访问地址未对齐时触发 |
| UNALIGN_LW | 长字非对齐访问 | 32 位数据访问地址未对齐时触发 |
| LINK_DOWN | LVDS 链路断开 | LVDS 数据接收链路同步丢失时触发，接收端重新进入未同步状态 |

### 中断处理流程

异常发生时，建议按以下流程处理：

1. **读取 INT_STATUS 寄存器**，确认中断源
2. **记录异常信息**（中断类型、发生时间、当前运行状态）
3. **根据中断类型采取对应措施**：
   - EXIT_IR：正常退出，无需处理，可启动下一轮实验
   - ILLEGAL_ONE / ILLEGAL_ZERO：检查 MCU 程序是否正确写入指令内存，必要时重新下载程序并软复位 MCU
   - UNALIGN_SW / UNALIGN_LW：检查 MCU 程序中的内存访问指令，确保 load/store 指令地址对齐
   - LINK_DOWN：检查 LVDS 物理连接和信号完整性，重新执行 LVDS 同步流程
   - FORCE_AWG / FORCE_DAQ：根据外部控制器逻辑处理
4. **写 INT_STATUS 寄存器清零中断标志位**
5. **若需恢复运行**：通过软复位（写 SYNC_SOFT 寄存器）复位 MCU 状态机，重新配置后启动

### 异常预防

* MCU 程序写入后应通过回读比对验证写入正确性
* LVDS 数据传输前确保收发双方已完成同步
* 避免在实验运行期间访问运维寄存器
* 建议启用 INT_MASK 中需要关注的中断源，屏蔽不需要的中断源以简化处理逻辑
* MCU 程序末尾务必包含退出指令 (`exit x0, x0, 0`)，避免 MCU 从非法内存区域取指

### 典型异常波形

异常波形截图参考见 [中断与异常处理](#中断与异常处理)。
