# 寄存器定义

## 寄存器摘要

读出芯片偏移地址空间分配如下所示，用户可以通过读写相应地址来控制读出芯片功能和访问芯片状态。读出芯片地址空间包含系统配置状态、模拟配置状态、DAQ 配置状态、AWG 配置状态以及 PLL 配置状态五个部分。

@import "data/seg_define.csv" using render_address.py

<div class="note">

**注 1：** DAQ 和 AWG 各自包含一个 MCU 模块，MCU 模块仅能够访问模块内部的控制器指令、控制器数据和寄存器配置，访问基地址分别重新映射到了 `0x000000`、`0x100000` 和 `0x200000`。

**注 2：** MCU 仅能够显示访问控制器数据和对应寄存器配置数据。对于控制器指令空间，控制器自动读取指令并运行，无法显式访问和修改数据。

**注 3：** 匹配滤波器参数和匹配滤波器权重分别对应 FPGA 和 ASIC 平台。FPGA 平台受限于计算资源有限，采用系数直接存储的方案，需要额外配置 `0x580000` 地址数据，此时 `0x500000` 地址中仅包络参数有效。

**注 4：** 系统状态配置、模拟配置状态、PLL 配置状态属于运维寄存器，实验时禁止修改。实验只需要修改 DAQ 配置状态和 AWG 配置状态。

</div>

## 操作码字定义

### 激励输出控制码字

AWG MCU 发出的控制码字格式（13 位）：

| Bit | 字段名 | 说明 |
|:-:|:-|:-|
| [12] | PULSE_ONLY | 仅脉冲输出模式。置 1 时仅输出 Pump 脉冲，不输出波形 |
| [11] | PARAMETER_SEL | 参数选择。0: 使用默认参数；1: 使用码字携带的参数 |
| [10] | NCO_CLR_EN | NCO 相位清零使能。置 1 时清零 NCO 相位累加器 |
| [9] | MARK_EN | 标记输出使能。置 1 时在当前波形段输出期间使能标记信号 |
| [8] | PUMP_EN | Pump 使能。置 1 时触发 Pump 脉冲输出 |
| [7:0] | WAVE_ID | 波形段 ID。通过波形映射表查找对应的波形段起始地址和长度 |

### 采集处理控制码字

DAQ MCU 发出的控制码字格式（32 位）：

| Bit | 字段名 | 说明 |
|:-:|:-|:-|
| [31:16] | QUBIT_EN | 16 量子比特使能。每比特对应一个量子比特，1 表示使能对应通道 |
| [15] | COUNT_SAVE_EN | 计数统计保存使能 |
| [14] | STATE_SAVE_EN | 态结果保存使能 |
| [13] | IQ_SAVE_EN | IQ 数据保存使能 |
| [12] | WAVE_SAVE_EN | 原始波形保存使能 |
| [11] | MTF_IDX_SEL | 匹配滤波器索引选择 |
| [10] | DDS_FPW_SEL | DDS 频率/相位字选择 |
| [9] | STATE_CLR_VAL | 态统计清零值 |
| [8] | DEMOD_CLR_VAL | 解模累加器清零值 |
| [7] | GLB_FB_VAL | 全局反馈值（下发到外部芯片） |
| [6] | LOC_FB_VAL | 局部反馈值（片上反馈控制） |
| [5] | STATE_STS_VAL | 态统计状态值 |
| [4] | DEMOD_SUM_VAL | 解模求和值 |
| [3:0] | PARA_ID | 读出参数 ID。指向 DAQ_PAR 中的参数组 |

<div class="note">
对于多比特解模，DAQ 按每个量子比特通道执行解模运算，运算顺序为 Qubit 0 → Qubit 15。数据存储顺序与解模顺序一致。态判定在解模完成后进行，态统计在态判定完成后进行。
</div>

## 寄存器/存储详细定义

读出芯片的详细寄存器/存储定义参考 [读出芯片 IDS 表](../script/读出子系统IDS表.xls)。相应的驱动软件配置文件参考 [读出芯片 IDS 表 JSON](../data/ids.json)。

@import "data/ids.json" using render_registers.py
