rbpu_datasheet/chapters/06_theory_of_operation.md

144 lines
8.6 KiB
Markdown
Raw Normal View History

2026-07-18 00:51:43 +08:00
# 操作原理
## 原理及模块划分
RBPU16 是一颗用于完成超导量子比特的态读出的 SoC 基带芯片。芯片模拟部分包括 ADC、DAC、PLL、LVDS、POR 和温度传感器;数字部分主要包括 DAQ、AWG、PlsGen、Feedback 以及 System 模块。读出芯片的总体功能组成如下图所示。
![rbpu_schematic](../assets/rbpu_schematic.png)
在激励信号生成路径上AWG 用于控制激励通道待输出的波形,接着波形经过 DAC 转换成基带读出激励信号,同时 AWG 模块触发 PlsGen 模块实时发出脉冲信号使能外部 Pump 通道。回波信号处理路径上ADC 用于采集反射的读出基带信号,接着 DAQ 对基带信号进行分析处理,结果再通过 LVDS 接口发送出去,同时 DAQ 模块触发 Feedback 模块将部分结果上报或者下发到外部芯片。
片内 PLL 用于管理整个芯片的时钟,为 ADC 采样时钟、DAC 更新时钟、数字模块主时钟等生成所需频率。POR 用于在芯片上电时对整个芯片进行复位保障芯片正常工作。温度监视模块用于实时监测芯片温度变化保障芯片稳定工作。System 模块用于管理芯片上控制的状态,为芯片运维和调试提供支撑。
<div class="important">
读出芯片不仅支持以 ASIC 芯片模式工作,也支持部分核心控制在 FPGA 内部工作。这两种工作模式受制于 ASIC 和 FPGA 资源以及外部 ADC、DAC 硬件性能不同,部分功能实现存在差异,后续阅读时需要重点关注。
</div>
## 关键数据路径
### 读出激励输出通道
<!-- MERGED from ../readout_program/ri_datapath.md -->
读出激励输出通道RO 通道)由 AWG 模块和 Pump 模块协同工作,负责产生基带读出激励信号和 Pump 使能信号。
AWG 模块需要编程六类数据:
1. **控制器指令 (MCU_INS)**:控制 MCU 执行指令流,指令位于地址空间 `0x700000`
2. **控制器数据 (MCU_DAT)**MCU 指令需要引用的初始数据,位于地址空间 `0x800000`
3. **控制寄存器 (AWG_REG)**:配置 AWG 工作模式与参数,位于地址空间 `0x900000`
4. **波形映射表 (AWG_IDX)**:码字 → 波形段的映射查找表,位于地址空间 `0xA00000`
5. **波形数据存储 (AWG_WVE)**:实际输出的波形采样点,位于地址空间 `0xB00000`
6. **模拟配置 (SYS_ANA)**DAC 输出模式NRZ/MIX/HBMIX与偏置校准
波形输出流程如下:
1. MCU 每 3 个时钟周期执行一条指令,发出控制码字
2. 码字中的 `WAVE_ID` 字段通过查找表映射为波形段的起始地址和长度
3. 波形数据从 WVE 存储中读取,经希尔伯特变换生成 I/Q 两路
4. I/Q 信号与 NCO 混频,实现频率搬移
5. 经数字调幅、半带插值滤波
6. 输出至 DAC 转换为模拟信号
AWG 支持以下输出模式:
| 模式 | 描述 | 特点 |
|:-|:-|:-|
| **直出模式 (NRZ)** | 基带波形直接输出 | 输出频率 DC3 GHz适用于直接产生多音基带信号 |
| **调制模式 (MIX)** | 基带波形与 NCO 混频 | 输出频率 0.32.4 GHz通过 NCO 频率控制精确频点定位 |
| **NCO Only 模式** | 仅 NCO 连续波形 | 方便连接外部仪器进行芯片测试 |
| **半带调制模式 (HBMIX)** | 混频 + 半带插值 | 提升高频输出信号质量 |
<div class="note">
一般情况下,直出模式用于量子实验,通过直接输出包含多个读出频率的波形,可以实现对多个量子比特的并行读出;调制模式用于腔频扫描等应用,通过实时修改 NCO 频率实现扫频功能NCO Only 模式可以输出连续波形,方便连接外部仪器上进行测试。
</div>
**射频直出**:在 NRZ 模式下利用高阶奈奎斯特区输出,可以实现 67 GHz 的射频直出,功率平坦度约 2 dB受限于 sinc 滚降特性)。
**Pump 通道**:由 MCU 码字中的 `PUMP_EN` 位触发 PlsGen 模块,产生可编程宽度的脉冲信号,通过 `PO_PUMP_EN` 管脚输出,用于使能外部 Pump 上变频通道。
**软复位**:通过写 AWG_REG 中的软复位寄存器,可复位 AWG 内部状态机和 FIFO复位后需重新编程。
### 读出回波信号处理
<!-- MERGED from ../readout_program/ro_datapath.md -->
读出回波输入通道RI 通道)由 ADC + DAQ 模块构成,负责采集和处理反射回来的基带信号。
**模拟信号路径**RF 回波信号经外部混频器下变频为基带 → 巴伦差分转换 → ADC 采样FPGA 平台 8 位 @4 GSPSASIC 平台 8 位 @6 GSPS
DAQ 模块需要编程五类数据:
1. **控制器指令 (MCU_INS)**DAQ 内部 MCU 的执行指令流,位于地址空间 `0x200000`
2. **控制器数据 (MCU_DAT)**MCU 需要引用的初始数据,位于地址空间 `0x300000`
3. **控制寄存器 (DAQ_REG)**:配置 DAQ 工作模式与参数,位于地址空间 `0x400000`
4. **读出参数与滤波器权重 (DAQ_PAR + DAQ_FLT)**:解模参数、匹配滤波器系数,位于地址空间 `0x500000``0x580000`
5. **模拟配置 (SYS_ANA)**ADC 参考电压选择
数据处理流程:
1. ADC 采集原始波形数据
2. 数字解模:原始波形与匹配滤波器进行相关运算,得到 I/Q 复数数据
3. 态判定:根据 I/Q 数据判定量子态0 态/1 态/2 态/未定义)
4. 态统计:对多次测量的态结果进行计数统计
5. 结果输出:通过 `RSLT_PUSH` LVDS 接口发送数据
DAQ 支持多种数据采集模式:
| 模式 | 输出数据量 | 适用场景 |
|:-|:-|:-|
| 原始波形 | 最大 | 调试、原始数据分析 |
| IQ 数据 | 中等 (64 bit × N) | 解模结果分析 |
| 态数据 | 小 (2 bit × N) | 高速态读出 |
| 态统计 | 最小 | 多次测量统计 |
软复位功能:通过写 DAQ_REG 中的软复位寄存器复位 DAQ 状态机。
## 接口控制协议
### SPI 配置协议
读出芯片通过 SPI 来配置内部寄存器和内存SPI 采用四线模式。时钟极性 CPOL = 1即时钟在空闲时处于高电平状态时钟相位 CPHA = 1即在第一个时钟沿输出数据第二个时钟沿采样数据。SPI 的通信数据格式采用自定义协议,支持流模式发送接收。
![spi_prot](../assets/spi_prot.png)
**SPI 帧格式:**
| 字段 | RW | ADDR | CHIP_ID | RSV | DATA |
|:-:|:-:|:-:|:-:|:-:|:-:|
| 位宽 | 1 | 25 | 5 | 1 | 32 × N |
| 含义 | 0: 读, 1: 写 | 32 MB 寻址空间 | 总线片选 | 保留位 | 数据 |
<div class="note">
协议首先发送 1 比特读写标识位,然后发送 25 比特地址位,接着再发送 5 比特的芯片选择信号,最后再发送/接收数据。数据发送/接收以 32 比特为单位,以流模式发送,支持发送/接收 N × 32 位的数据,直到主控端将 CSN 拉低后结束通信N ≥ 1。流模式要求从设备在完成 32 比特数据接收/发送后自动对地址进行 4 字节递增。
</div>
### LVDS 通信协议
从读出芯片到多功能母卡的数据推送接口 `rslt_push_[p,n]`、反馈上报接口 `glb_tx_[p,n]` 和从多功能母板到读出芯片的反馈下发接口 `glb_rx_[p,n]` 采用定制的 LVDS 通信协议。
**帧格式:**
```
+---------------------------------------+
| LVDS DATA FRAME |
+------+-------------------+------------+
| 4 | 16/32/64/128 | 8 |
+------+-------------------+------------+
| HEAD | Payload | CRC8 |
+------+-------------------+------------+
MSB LSB
```
帧头包含 4 比特数据,其中最高位比特用于指示是否启动数据传输,次高位置 0 保留最低两位用于指示本次传输的数据量0: 16 比特1: 32 比特2: 64 比特3: 128 比特)。载荷后面附带 8 比特 CRC 校验码,校验多项式为:
$$x^8 + x^2 + x + 1$$
![lvds_prot](../assets/lvds_prot.png)
**同步机制**:接收端在接收数据之前必须先和发送端同步。发送端通过发送同步码来同步接收端,当完成设定数量的同步码发送完毕后发送一个结束码结束同步过程。同步码为字符串 "hfnl" 对应的 32 比特数据,结束码为 "exit" 对应的 32 比特数据。
接收端在启动时被初始化到未同步状态,此时必须接收到足够次数的同步码之后才能进入确认状态,直到接收到结束码之后发送端和接收端同时进入就绪状态。接收端后续如果在接收数据过程中发现 CRC8 校验码出错,会再次进入未同步状态。
**空闲状态**:当处于空闲状态不用传输数据时,发送端将 LVDS 信号电平拉高。当传输数据时,发送端将 LVDS 电平拉低两个数据周期启动数据发送。