2026-07-24 20:24:39 +08:00
|
|
|
|
## 4.4. 匹配滤波器
|
|
|
|
|
|
|
|
|
|
|
|
匹配滤波器在FPGA/ASIC两种平台下由于资源不同实现的形式也不同,区别如下:
|
2026-07-28 14:32:35 +08:00
|
|
|
|
|
2026-07-24 20:24:39 +08:00
|
|
|
|
* 由于ASIC多计算少存储,因而ASIC平台使用系数计算模式以节省存储资源。
|
|
|
|
|
|
* 由于FPGA 多存储少计算,因此FPGA平台使用系数直读模式以节省DSP资源。
|
|
|
|
|
|
|
|
|
|
|
|
### 4.4.1. 读出参数存储
|
|
|
|
|
|
|
2026-07-28 15:50:19 +08:00
|
|
|
|
DAQ_PAR 模块(基地址 `0x00500000`,总容量 32 KB)存储解模所需的全部参数,
|
|
|
|
|
|
每个量子比特独占 2 KB 子空间(控制区 512 B + 权重区 1536 B):
|
2026-07-28 14:32:35 +08:00
|
|
|
|
|
2026-07-28 15:50:19 +08:00
|
|
|
|
$$ \text{Qubit }N\text{ DAQ\_PAR 基地址} = \mathtt{0x00500000} + N \times \mathtt{0x800},\quad N = 0,1,\ldots,15 $$
|
2026-07-24 20:24:39 +08:00
|
|
|
|
|
2026-07-28 15:50:19 +08:00
|
|
|
|
**控制区**(每比特偏移 0x000 ~ 0x1FF,共 512 字节)
|
|
|
|
|
|
|
|
|
|
|
|
控制区最多支持 16 组参数(PARA_ID = 0~15),每组占用 8 个 32 位寄存器(32 字节),
|
|
|
|
|
|
各组基地址 = Qubit 基地址 + PARA_ID × `0x20`。
|
|
|
|
|
|
|
|
|
|
|
|
每组包含以下 8 个寄存器:
|
|
|
|
|
|
|
|
|
|
|
|
|组内偏移|寄存器|位段|说明|
|
|
|
|
|
|
|:-|:-|:-|:-|
|
|
|
|
|
|
|`0x00`|dds_fpw|[31:12] fcw|解模载波频率控制字:$F_c = fcw / 2^{20} \times F_s$|
|
|
|
|
|
|
|^|^|[11:0] pcw|解模载波相位控制字:$\phi_c = pcw / 2^{12} \times 2\pi$|
|
|
|
|
|
|
|`0x04`|mtf_idx|[31:16] addr|权重数据起始地址(单位:时钟周期|
|
|
|
|
|
|
|^|^|[15:0] len|权重数据样本长度(单位:时钟周期)|
|
|
|
|
|
|
|`0x08`|line0_ab|[31:16] a0|直线0 斜率系数 a(16位有符号数)|
|
|
|
|
|
|
|^|^|[15:0] b0|直线0 斜率系数 b(16位有符号数)|
|
|
|
|
|
|
|`0x0C`|line0_c|[31:0] c0|直线0 截距系数 c(32位有符号数)|
|
|
|
|
|
|
|`0x10`|line1_ab|[31:16] a1|直线1 斜率系数 a|
|
|
|
|
|
|
|^|^|[15:0] b1|直线1 斜率系数 b|
|
|
|
|
|
|
|`0x14`|line1_c|[31:0] c1|直线1 截距系数 c|
|
|
|
|
|
|
|`0x18`|line2_ab|[31:16] a2|直线2 斜率系数 a|
|
|
|
|
|
|
|^|^|[15:0] b2|直线2 斜率系数 b|
|
|
|
|
|
|
|`0x1C`|line2_c|[31:0] c2|直线2 截距系数 c|
|
|
|
|
|
|
|
|
|
|
|
|
> 三组直线方程用于三态判断,将 IQ 平面划分为三个区间。判定公式:$a \times I < c \times 2^4 - b \times Q$。三条直线的交点应重合于一点,否则产生错误态(3态)。详见 [§4.5.3](#453-采集态数据)。
|
|
|
|
|
|
|
|
|
|
|
|
**权重区**(每比特偏移 0x200 起,共 1536 字节)
|
|
|
|
|
|
|
|
|
|
|
|
权重区存储匹配滤波器权重系数,最大 1536 个 8 位有符号系数,I 路和 Q 路权重分开存储。
|
|
|
|
|
|
详细布局见下方存储格式图。
|
|
|
|
|
|
|
|
|
|
|
|
- 系数的粒度由 `func_ctrl.step_ctrl` 控制,一个权重样本点可对应 1/2/4/8/16 个时钟周期采样点;
|
|
|
|
|
|
- 权重数据由 `mtf_idx` 中的 addr 和 len 字段索引。
|
|
|
|
|
|
|
|
|
|
|
|
**读出参数存储格式**如下图所示。
|
2026-07-24 20:24:39 +08:00
|
|
|
|
|
2026-07-28 15:00:19 +08:00
|
|
|
|

|
2026-07-24 20:24:39 +08:00
|
|
|
|
|
2026-07-28 15:50:19 +08:00
|
|
|
|
> 系数计算模式(ASIC)下,匹配滤波器系数 = DDS 载波 × 权重参数。FPGA 平台使用系数直读模式,仅使用 `Ctrl` 部分(mtf_idx)索引 DAQ_FLT(`0x00580000`)中预存储的匹配滤波器系数,忽略 dds_fpw 控制字。
|
|
|
|
|
|
|
2026-07-24 20:24:39 +08:00
|
|
|
|
### 4.4.2. 匹配滤波器系数
|
|
|
|
|
|
|
|
|
|
|
|
ez-Q 2.5 FPGA平台使用系数直读模式,其需要额外的存储空间来配置匹配滤波器系数。
|
2026-07-28 14:32:35 +08:00
|
|
|
|
|
2026-07-24 20:24:39 +08:00
|
|
|
|
- 其中mtf_idx的含义从索引权重数据变为索引匹配滤波器系数。
|
|
|
|
|
|
- 匹配滤波器系数索引的粒度是时钟周期,
|
|
|
|
|
|
- 在FPGA平台下每个时钟周期对应16个采样点数据。
|
|
|
|
|
|
- 匹配滤波器系数采样点采用8比特数据位宽,因此1个周期数据位宽为128 bit,
|
|
|
|
|
|
|
|
|
|
|
|
匹配滤波器系数存储结构如下图所示。
|
|
|
|
|
|
- 匹配滤波器的I和Q数据分开存储,每个比特的I、Q数据容量分别为16 KB。
|
|
|
|
|
|
- I路数据偏移地址为x*32KB,Q路数据偏移地址为x*32KB+16 KB,其中x为Qubit序号,范围为0~15。
|
|
|
|
|
|
|
2026-07-28 15:00:19 +08:00
|
|
|
|

|