前言
提示:以下是本篇文章正文内容,下面案例可供参考
一、生成ip
1.代码
#include <stdio.h>
#include "HLS/hls.h"
#include "HLS/stdio.h"
#include "fc1_bias.h"
#include "fc2_bias.h"
#include "fc1_weight.h"
#include "fc2_weight.h"
#include "input_0.h"
#include "input_1.h"
#include "input_2.h"
#include "input_3.h"
#include "input_4.h"
#include "input_5.h"
#include "input_6.h"
#include "input_7.h"
#include "input_8.h"
#include "input_9.h"
hls_avalon_slave_component
component
int full_test(
hls_avalon_slave_memory_argument(784*sizeof(float))
float *img,
hls_avalon_slave_memory_argument(50176*sizeof(float))
float *fc1_weight,
hls_avalon_slave_memory_argument(64*sizeof(float))
float *fc1_bias,
hls_avalon_slave_memory_argument(640*sizeof(float))
float *fc2_weight,
hls_avalon_slave_memory_argument(10*sizeof(float))
float *fc2_bias
){
int i, j;
float z;
float a1[64] = {0.0};//第一层神经元
float a2[32] = {0.0};//第二层神经元
float temp = 0.0;
int ret;
//fc1, 第一次全连接神经网络,外循环64次对于64个神经元,每一个神经元处理784个数据
for(i = 0; i < 64; i++){
z = 0.0;
for(j = 0; j < 784; j++){
z += img[j] * fc1_weight[i * 784 + j];//每个神经元的值
}
z += fc1_bias[i];//加偏置
a1[i] = (z > 0) ? z : 0;//激活,赋给第一层神经元
}
for(i = 0; i < 10; i++){
z = 0.0;
for(j = 0; j < 64; j++){
z += a1[j] * fc2_weight[i * 64 + j];
}
a2[i] = z + fc2_bias[i];//第二层神经元计数结果
}
for(i = 0; i < 10; i++){
if(a2[i] > temp){
temp = a2[i];
ret = i;//最有可能的标签
}
}
return ret;
}
int main(){
float *img[10] = {input_0,input_2, input_3, input_5,input_7,input_9};
int i, ret;
for(i = 0; i < 10; i++){
ret = full_test(img[i], fc1_weight, fc1_bias, fc2_weight, fc2_bias);
printf("The result is: %d\n", ret);
}
return 0;
}
2.编译,测试
3.生成IP文件
i++ -march=CycloneV text.cpp -v -ghdl
二、添加ip生成硬件
1.将上面生成的文件放入工程文件的ip文件里
2.打开工程
3.选择qsys文件
4.双击full_test后点击finish
5.连线
6.分配基地址
6.Generate生成
7.编译
8.生成设备树
打开EDS工具
在cmd中切换到工程目录
输入make dtb生成设备树文件
9.生成rbf文件
进入outout_files目录,双击sof_to_rbf.bat
三、烧写硬件和系统
把 DE10开发板自带的系统镜像文件DE10_Standard_LXDE.img刻录到SD卡中然后把soc_system.rbf文件、soc_system.dtb文件复制到SD卡中替换原来的
四、搭建软件工程
1.生成头文件
Soc EDS Command Shell命令窗口切换到硬件工程目录,输入./generate_hps_qsys_header.sh
2.搭建工程
在黄金工程里面新建app目录,将工程目录设置到里面
Soc EDS Command Shell命令窗口输入命令eclipse&,打开eclipse
3.新建c工程
后续步骤没有记录
最后执行和运行结果