rbpu_datasheet/chapters/06_theory_of_operation.md

168 lines
6.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 操作原理
## 架构与模块划分
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 模式两种工作方式。两种模式受限于资源及外部 ADC/DAC 硬件性能差异,部分功能实现存在不同,阅读时需注意区分。
</div>
## 关键数据路径
### 读出激励输出通道
读出激励输出通道RO 通道)由 AWG 模块和 Pump 模块协同工作,产生基带读出激励信号和 Pump 使能信号。
#### 编程资源
AWG 模块需编程六类数据资源:
| 资源 | 地址空间 | 说明 |
|:-|:-|:-|
| MCU 指令 (MCU_INS) | `0x700000` | MCU 执行的指令流 |
| MCU 数据 (MCU_DAT) | `0x800000` | 指令引用的初始数据 |
| 控制寄存器 (AWG_REG) | `0x900000` | AWG 工作模式与参数 |
| 波形映射表 (AWG_IDX) | `0xA00000` | 码字 → 波形段映射 |
| 波形数据 (AWG_WVE) | `0xB00000` | 波形采样点存储 |
| 模拟配置 (SYS_ANA) | — | DAC 输出模式与偏置校准 |
#### 波形输出流程
1. MCU 每 3 个时钟周期执行一条指令,发出控制码字
2. `WAVE_ID` 字段经查找表映射为波形段起始地址和长度
3. 波形数据经希尔伯特变换生成 I/Q 两路
4. I/Q 信号与 NCO 混频,实现频率搬移
5. 经数字调幅、半带插值滤波
6. 输出至 DAC 转换为模拟信号
#### 输出模式
| 模式 | 频率范围 | 应用场景 |
|:-|:-|:-|
| **NRZ 直出** | DC3 GHz | 多音基带信号,多量子比特并行读出 |
| **MIX 混频** | 0.32.4 GHz | NCO 精确频点控制,腔频扫描 |
| **NCO Only** | — | 芯片测试,连续波形输出 |
| **HBMIX 半带混频** | 高频段 | 启用半带插值,提升高频信号质量 |
**射频直出**NRZ 模式下利用高阶奈奎斯特区可实现 67 GHz 射频直出,功率平坦度约 2 dB受 sinc 滚降限制)。
**Pump 通道**MCU 码字 `PUMP_EN` 位触发 PlsGen 产生可编程脉宽信号,经 `PO_PUMP_EN` 管脚输出使能外部 Pump 上变频通道。
**软复位**:写 AWG_REG 软复位寄存器可复位 AWG 内部状态机和 FIFO复位后需重新编程所有资源。
### 读出回波信号处理
读出回波输入通道RI 通道)由 ADC 和 DAQ 模块构成,采集并处理反射基带信号。
#### 模拟前端
RF 回波信号 → 外部混频器下变频为基带 → 巴伦差分转换 → ADC 采样。
FPGA 平台8 位 @ 4 GSPSASIC 平台8 位 @ 6 GSPS。
#### 编程资源
DAQ 模块需编程五类数据资源:
| 资源 | 地址空间 | 说明 |
|:-|:-|:-|
| MCU 指令 (MCU_INS) | `0x200000` | DAQ MCU 执行指令流 |
| MCU 数据 (MCU_DAT) | `0x300000` | 指令引用的初始数据 |
| 控制寄存器 (DAQ_REG) | `0x400000` | DAQ 工作模式与参数 |
| 读出参数 (DAQ_PAR) | `0x500000` | 解模参数 |
| 匹配滤波器系数 (DAQ_FLT) | `0x580000` | 匹配滤波器权重ASIC 模式) |
| 模拟配置 (SYS_ANA) | — | ADC 参考电压选择 |
#### 数据处理流程
1. ADC 采集原始波形
2. 数字解模:原始波形与匹配滤波器相关运算 → I/Q 复数数据
3. 态判定:根据 I/Q 判定量子态0 / 1 / 2 / 未定义)
4. 态统计:多次测量结果计数
5. 结果输出:经 `RSLT_PUSH` LVDS 接口发送
#### 采集模式
| 模式 | 输出数据量 | 应用场景 |
|:-|:-|:-|
| 原始波形 | 最大 | 调试与原始数据分析 |
| IQ 数据 | 64 bit × N | 解模结果分析 |
| 态数据 | 2 bit × N | 高速态读出 |
| 态统计 | 最小 | 多次测量汇总 |
**软复位**:写 DAQ_REG 软复位寄存器可复位 DAQ 状态机。
## 接口控制协议
### SPI 配置协议
SPI 采用四线模式CPOL = 1空闲高电平CPHA = 1首沿输出、次沿采样
![spi_prot](../assets/spi_prot.png)
**帧格式:**
| 字段 | RW | ADDR | CHIP_ID | RSV | DATA |
|:-:|:-:|:-:|:-:|:-:|:-:|
| 位宽 | 1 | 25 | 5 | 1 | 32 × N |
| 说明 | 0: 读, 1: 写 | 32 MB 地址空间 | 片选 ID | 保留 | 数据 (N ≥ 1) |
协议以流模式传输:先发送 1 bit 读写标志 + 25 bit 地址 + 5 bit 片选 ID之后发送/接收 N × 32 bit 数据,直至主控端拉低 CSN 结束通信。每完成 32 bit 后地址自动递增 4 字节。
### 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
```
HEAD 字段定义:
| Bit | 说明 |
|:-|:-|
| [3] | 启动标志1 = 启动传输) |
| [2] | 保留(置 0 |
| [1:0] | 载荷长度0 = 16 bit1 = 32 bit2 = 64 bit3 = 128 bit |
CRC8 多项式:
$$x^8 + x^2 + x + 1$$
![lvds_prot](../assets/lvds_prot.png)
**同步机制**:接收端必须先与发送端同步方可接收数据。发送端发送同步码 `hfnl`32 bit达到设定次数后发送结束码 `exit`32 bit。接收端状态转移
* 初始 → **未同步**:等待同步码
* **未同步** → **确认**:收到足够次数的同步码
* **确认** → **就绪**:收到结束码
* **就绪** → **未同步**:数据接收中 CRC8 校验错误
**空闲**:无数据传输时 LVDS 电平拉高;发送数据时拉低两个数据周期后开始发送。