# 4. 处理器ACQ通道编程模型

来自量子芯片RO端口的射频信号首先经过混频板调理后再进入读出基带处理单元采集处理。
混频板负责将输入功率和频率的信号转换成基带板卡能够处理的频率功率合适的信号，
因此对混频板的编程主要包括本振频率设置（增益为预留接口）。

模拟信号进入基带处理单元后，先经过巴伦将单端信号转换成ADC所需的差分信号。
接着基带板上的读出芯片`RBPU`利用ADC(FPGA平台为8 bit@4 Gsps，ASIC 平台为8 bit@6 Gsps）采样,
然后将量化后的数字信号送到数字电路进行处理。
数字电路对数据进行处理后将结果通过推送接口`rslt_push`发送到上位机。


对读出数字电路的编程包括：MCU的指令、MCU的数据、ACQ通道控制寄存器、解模参数，结合模拟电路配置，则ACQ通道编程项如下：
- MCU指令+MCU数据可用于编程发出触发码字以及实时修改控制寄存器；
- DAQ控制寄存器用于指定解模频率、相位、权重/系数数据的索引等参数；
- 解模参数数据定义了具体的权重数据和量子态判断参数等数据。
- 模拟电路配置用于设置本振频率（增益为预留接口，支持情况取决于混频板硬件形态）。

下图是ACQ通道数字部分编程控制模型。

![读出ACQ通道控制模型](../assets/readout_ro.png)

- 射频信号经过混频板下变频后进入到ADC
- ADC采集的原始波形数据①从图中右侧端口输入，接着输入到解模模块中
- 解模模块利用匹配滤波器模块存储的解模参数对输入波形进行解模运算得到IQ数据②
- 接着解模IQ数据②输入到态判断模块中，经过态判定后得到态数据④
- 最后态数据④经过态统计后得到态统计结果⑤

上述过程中，数据①②③④⑤都可以在数据转发模块缓存后通过`rslt_push`接口发送出去，
需要注意到的是数据②是解模求和数据③在求和次数为1的特殊情况。
ACQ通道有且仅有基带处理单元存在状态机，
考虑到异常状态恢复，需要ACQ通道提供了软复位功能。
当RO通道由于上位机强制中断或者MCU配置了错误指令而产生异常时，
可以通过调用驱动API函数执行复位操作，
其能够将状态机从异常中复位（同时也复位部分寄存器的默认值），
从而使得下一次历史无关配置项能够正确执行。
