卷积神经网络(CNN)电路设计规范(2026版)
1. 课程设计核心目标¶
面对不同的应用场景,基于提供的CNN网络架构、性能要求及芯片设计模板(含Verilog代码、逻辑综合和物理实现脚本),完成一款CNN加速器芯片全流程设计,覆盖架构设计、Verilog代码设计、逻辑仿真、性能分析、逻辑综合、时序分析与验证、物理设计全链路,并完成设计结果分析。
2. 设计核心指标与应用要求¶
2.1 基础功能要求¶
- 完整实现指定的CNN网络结构;
- 网络模型参数采用片上SRAM存储;
- 网络中间层计算结果可根据设计需求,采用片上SRAM或寄存器存储。
- 性能根据不同应用场景确定
2.2 通用评价指标¶
设计完成后,需从以下维度完成设计评估:
- 芯片功能完整性
- 芯片实时处理能力达标情况
- 乘累加电路的硬件利用率
- 芯片PPA指标(Performance or frequency, Power, Area)
- 芯片能效:每1W功耗可处理的输入特征图数量
- 芯片面效:每平方毫米面积可处理的输入特征图数量
- 输入/输出数据带宽及带宽利用效率
2.3 分场景设计要求与核心评价指标¶
本课程设计面向两种应用场景,自选一种实现。
场景一:边缘端应用场景¶
- 应用场景描述:面向边缘端硬件资源受限应用场景,基于现有芯片的设计模版,重复利用核心计算单元以降低计算单元数量,在牺牲一定延迟的情况下,实现硬件资源的压缩;
- 实时处理要求:每秒 100K 个输入特征图的处理能力(即 Speed = 100K,输入特征图尺寸\((1,30,10)\));
- 硬件压缩要求:芯片面积小于修改前芯片面积的 \(1/4\);
- 重点评价指标:芯片资源,\(\text{FoM} = 1/(\text{Power}\times \text{Area})\),单位\(1/(W\cdot \text{mm}^2)\)
场景二:高性能应用场景¶
- 应用场景描述:面向高实时性应用场景,基于现有芯片的设计模版,进一步提升芯片核心计算并行度,实现芯片性能的提升;
- 实时处理要求:每秒 1000K 个输入特征图的处理能力(即 Speed = 1000K,输入特征图尺寸\((1,30,10)\));
- 重点评价指标:芯片面效,\(\text{FoM} = \text{Speed}/\text{Area}\),单位\(1/\text{mm}^2\)
3. 目标CNN网络结构与层参数详解¶
3.1 网络整体说明¶
本次设计的 CNN 网络为语音关键词识别二分类网络,输入为语音 MFCC(Mel-Frequency Cepstral Coefficients) 特征图,输入尺寸为(1,30,10),三个维度分别对应通道数、特征图长度、特征图宽度。
网络整体链路:
输入特征图 → Conv1 → Activation1(Relu) → Depthwise Conv → Activation2(Relu) → Pointwise Conv → Activation3(Relu) → Maxpool → Flatten → FC全连接层 → Sigmoid → 二分类输出
3.2 各网络层详细参数¶
(1) 第一卷积层 Conv(常规卷积)¶
- 计算公式:
- 输入特征图I:尺寸
(1,30,10),位宽INT8 - 权重W:尺寸
(32,1,11,7),位宽INT8 - 偏置B:尺寸
(32),位宽INT16 - 输出特征图O:尺寸
(32,20,4),输出图在计算过程
中使用 INT32 保存,计算完成后重量化至 INT8,重量化过程见后文解释 - 卷积参数:
stride=1,padding=0
(2) 激活层 Activation1(Relu)¶
- 计算公式:
- 输入特征图I:尺寸
(32,20,4),位宽INT8 - 输出特征图O:尺寸
(32,20,4),位宽INT8
(3) 第二卷积层 Depthwise Conv(深度可分离卷积)¶
- 计算公式:
- 输入特征图I:尺寸
(32,20,4),位宽INT8 - 权重W:尺寸
(32,1,3,3),位宽INT8 - 偏置B:尺寸
(32),位宽INT16 - 输出特征图O:尺寸
(32,18,2),输出图在计算过程
中使用 INT32 保存,计算完成后重量化至 INT8,重量化过程见后文解释 - 卷积参数:
stride=1,padding=0
(4) 激活层 Activation2(Relu)¶
- 计算公式:
- 输入特征图I:尺寸
(32,18,2),位宽INT8 - 输出特征图O:尺寸
(32,18,2),位宽INT8
(5) 第三卷积层 Pointwise Conv(逐点卷积)¶
- 计算公式:
- 输入特征图I:尺寸
(32,18,2),位宽INT8 - 权重W:尺寸
(32,32,1,1),位宽INT8 - 偏置B:尺寸
(32),位宽INT16 - 输出特征图O:尺寸
(32,18,2),输出图在计算过程
中使用 INT32 保存,计算完成后重量化至 INT8,重量化过程见后文解释 - 卷积参数:
stride=1,padding=0
(6) 激活层 Activation3(Relu)¶
- 计算公式:
- 输入特征图I:尺寸
(32,18,2),位宽INT8 - 输出特征图O:尺寸
(32,18,2),位宽INT8
(7) 池化层 Maxpool(最大值池化)¶
- 计算公式:
- 输入特征图I:尺寸
(32,18,2),位宽INT8 - 输出特征图O:尺寸
(32,9,1),位宽INT8 - 池化参数:核尺寸
(2,2),stride=2,padding=0
(8) 展平层 Flatten¶
- 计算公式:
- 输入特征图I:尺寸
(32,9,1),位宽INT8 - 输出一维向量O:尺寸
(288),位宽INT8
(9) 全连接层 FC¶
- 计算公式:
- 输入向量I:尺寸
(288,1),位宽INT8 - 权重W:尺寸
(2,288),位宽INT8 - 偏置B:尺寸
(2,1),位宽INT16 - 输出向量O:尺寸
(2,1),输出图在计算过程中使用 INT32 保存,计算完成后重量化至 INT8,重量化过程见后文解释
(10) 输出层 Sigmoid¶
- 计算公式:
- 输入向量I:尺寸
(2),位宽INT8 - 输出向量O:尺寸
(2),位宽FP32 - 参数说明:
scale为FP32固定值,用于INT8输入反量化至FP32范围,固定网络下scale值固定;助教提供scale数值及\(I[i]\)到\(O[i]\)的映射关系,可自主选择Sigmoid电路实现方式。
4. 核心算子与计算规范¶
4.1 常规卷积(Conv)¶
卷积核在特征图上滑动,完成卷积核与对应输入特征图数据的乘累加运算;卷积核通道数与输入特征图通道数一致,卷积核个数与输出特征图通道数一致。
4.2 深度可分离卷积(Depthwise Conv)¶
每个卷积核仅包含1个通道,卷积核个数与输入、输出特征图通道数一致;单通道内完成卷积计算,无跨通道信息融合,可大幅减少卷积核参数量。
4.3 逐点卷积(Pointwise Conv)¶
卷积核尺寸固定为1×1,卷积核通道数与输入特征图通道数一致,卷积核个数与输出特征图通道数一致;用于完成特征图跨通道的信息融合,通常与深度可分离卷积配合使用。
4.4 重量化操作规范¶
卷积层与全连接层输入、输出均为INT8位宽,计算中间值采用INT32位宽存储以避免精度损失,计算完成后需通过重量化将INT32结果转换为INT8输出。
1. 基础重量化公式:\(O_{INT8}=M \times I_{INT32}\)
其中,M为0~1之间的浮点数。
2. 定点化实现公式:\(M=2^{-n} \times M_0\)
其中,\(M_0\)为INT16定点数,\(2^{-n}\)可通过移位运算实现;每一层网络的重量化参数n与\(M_0\)固定,具体数值由助教提供。
5. 电路验证要求¶
- 需自主设计Testbench完成电路全功能验证;
- 助教提供网络所有权重、偏置参数;
- 助教提供指定输入下,网络每一层的参考输出结果,用于功能正确性对比验证。
6. 设计评价指标补充说明¶
- 电路处理能力:定义为电路每秒钟能够处理的
(1,30,10)规格输入特征图的个数; - 电路时钟频率、面积、功耗:均以物理设计完成后的最终结果为准。
Enjoy Reading This Article?
Here are some more articles you might like to read next: