NNACC示例

源码路径:example/hal/nnacc

支持的平台

例程可以运行在以下开发板.

  • sf32lb58-lcd_a128r32n1_dsi

概述

NNACC ( Neural Network Accelerator) 的缩写,是 Sifli 芯片中提供的一个专用硬件模块,专门用于加速以下任务:

  • 卷积计算(Conv2D)

  • 深度可分离卷积(Depthwise Conv2D)

  • 高斯滤波

  • 其他 AI 推理相关运算

本例程示例:验证芯片上的硬件加速器是否能正确执行深度可分离卷积(Depthwise Convolution)操作。

例程的使用

\\例程核心流程
main()
├── 定义卷积参数(尺寸、通道数、步长、填充等)
├── 分配输入缓冲区:input, wt, bias
├── 分配输出缓冲区:output
├── 初始化 NN Accelerator 硬件
├── 填入随机数据模拟真实输入
├── 启动硬件推理:HAL_NNACC_Start()
├── 等待完成并校验结果
└── 输出测试结果(pass or fail)

编译和烧录

切换到例程project目录,运行scons命令执行编译(board=版型):

scons --board=sf32lb58-lcd_a128r32n1_dsi -j8

build_sf32lb58-lcd_a128r32n1_dsi_hcpu\uart_download.bat,按提示选择端口即可进行下载:

build_sf32lb58-lcd_a128r32n1_dsi_hcpu\uart_download.bat

Uart Download

please input the serial port num:5

关于编译、下载的详细步骤,请参考上手指南的相关介绍。

硬件需求

运行该例程前,需要准备一块本例程支持的开发板(支持nnacc)

**注意**: 
1.在sf32lb58x当中大核默认使用hwp_nnacc1,小核默认使用hwp_nnacc2,具体芯片配置可查看对应register.h文件
2.sf32lb56x只有大核有一个hwp_nnacc1,小核没有nnacc,具体芯片配置可查看对应register.h文件

验证结果

例程输出结果展示:

  • log输出:

SFBL
```开机log```
```例程log: ```
Buffers initialized successfully.
testcase start.
fill_with_random_data. 2000fc60 20012808 20012894  200182bc, sp=2000e35f
HAL_NNACC_Start.
Test passed: NNACC result is correct.
msh />

异常诊断

如果未能出现预期的log,可以从以下方面进行故障排除:

  • 硬件是否支持nnacc

参考文档

更新记录

版本

日期

发布说明

0.0.1

7/2025

初始版本