HLS手写体识别实验

该文详细介绍了如何利用HLS(hardwaredescriptionlanguage)生成IP,包括编写代码、编译、生成IP文件,以及将IP集成到硬件工程中,涉及Qsys系统、连线、基地址分配和设备树生成。接着,文章阐述了硬件烧写过程,涉及DE10开发板和系统镜像的准备。最后,文章提到了搭建软件工程的步骤,包括生成头文件、在Eclipse中创建C工程等。
摘要由CSDN通过智能技术生成

前言

提示:以下是本篇文章正文内容,下面案例可供参考

一、生成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工程
在这里插入图片描述
在这里插入图片描述
后续步骤没有记录
最后执行和运行结果
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值