一起学习用Verilog在FPGA上实现CNN----(一)总体概述

这篇具有很好参考价值的文章主要介绍了一起学习用Verilog在FPGA上实现CNN----(一)总体概述。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 总体概述

为避免闭门造车,找一个不错的开源项目,学习在FPGA上实现CNN,为后续的开发奠定基础

1.1 项目链接

大佬的开源项目链接: CNN-FPGA
链接跳转界面如下:

implementation of a convolutional neural network on an fpga using verilog,笔记,一起学ZYNQ,fpga开发,cnn,Vivado,ZYNQ,神经网络
大佬的该项目已经发表论文,而且开源工程结构清晰,同时附带了硬件文档,所以对于咱们初学者来说,这个项目很友好

发表的论文:

implementation of a convolutional neural network on an fpga using verilog,笔记,一起学ZYNQ,fpga开发,cnn,Vivado,ZYNQ,神经网络

硬件文档:

implementation of a convolutional neural network on an fpga using verilog,笔记,一起学ZYNQ,fpga开发,cnn,Vivado,ZYNQ,神经网络

1.2 项目介绍

用ZYNQ FPGA搭建LeNet-5卷积神经网络(CNN),实现手写数字识别,数据集为MNIST。LeNet-5网络结构如图所示:

implementation of a convolutional neural network on an fpga using verilog,笔记,一起学ZYNQ,fpga开发,cnn,Vivado,ZYNQ,神经网络
图片来自附带的技术文档《Hardware Documentation》

1.2.1 卷积(Convolution)

LeNet-5网络有3个卷积层,每个层的卷积核大小均为5x5。本项目的实现方案权衡并行度、速度和资源占用。下图中绿色部分即为卷积层:

implementation of a convolutional neural network on an fpga using verilog,笔记,一起学ZYNQ,fpga开发,cnn,Vivado,ZYNQ,神经网络
图片来自附带的技术文档《Hardware Documentation》

1.2.2 TanH激活函数(TanH Activation)

LeNet-5网络的激活函数是双曲正切函数(TanH),如图紫色部分所示:

implementation of a convolutional neural network on an fpga using verilog,笔记,一起学ZYNQ,fpga开发,cnn,Vivado,ZYNQ,神经网络
图片来自附带的技术文档《Hardware Documentation》

1.2.3 SoftMax激活函数(SoftMax Activation)

LeNet-5网络的最后一层是SoftMax激活层,输出最终的手写数字分类结果,如图蓝色部分所示:

implementation of a convolutional neural network on an fpga using verilog,笔记,一起学ZYNQ,fpga开发,cnn,Vivado,ZYNQ,神经网络
图片来自附带的技术文档《Hardware Documentation》

1.2.4 平均池化层(Average Pooling)

LeNet-5网络有2个平均池化层,减小卷积层的输出数据的大小,如图橙色部分所示:

implementation of a convolutional neural network on an fpga using verilog,笔记,一起学ZYNQ,fpga开发,cnn,Vivado,ZYNQ,神经网络
图片来自附带的技术文档《Hardware Documentation》

1.2.5 综合网络(Integrating Network)

将上述模块综合到一起,调通控制通路和数据通路,如图所示:

implementation of a convolutional neural network on an fpga using verilog,笔记,一起学ZYNQ,fpga开发,cnn,Vivado,ZYNQ,神经网络
图片来自附带的技术文档《Hardware Documentation》

1.3 验证思路

(1)在不同软件设计语言(Python和C++)编写的脚本上运行功能相似的代码
(2)为设计模块创建相应的TestBench(激励),记录输出结果
(3)对比两组输出数据是否一致,并随机抽样进行转换验证
(4)如果有错误,修改代码逻辑

1.4 项目目录

项目完整目录如下:

implementation of a convolutional neural network on an fpga using verilog,笔记,一起学ZYNQ,fpga开发,cnn,Vivado,ZYNQ,神经网络

Final Code Files文件夹展开:

implementation of a convolutional neural network on an fpga using verilog,笔记,一起学ZYNQ,fpga开发,cnn,Vivado,ZYNQ,神经网络

Testing Scripts文件夹展开:

implementation of a convolutional neural network on an fpga using verilog,笔记,一起学ZYNQ,fpga开发,cnn,Vivado,ZYNQ,神经网络
希望本文对大家有帮助,上文若有不妥之处,欢迎指正

分享决定高度,学习拉开差距文章来源地址https://www.toymoban.com/news/detail-778680.html

到了这里,关于一起学习用Verilog在FPGA上实现CNN----(一)总体概述的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CNN的硚口实现: 由Verilog编写并在FPGA上合成

    目录 前言 一、环境设置 二、CNN的硬件设计思路 三、使用Verilog实现CNN

    2024年02月13日
    浏览(47)
  • FPGA Artix7-100T实现手写字硬件加速,纯Verilog编写的CNN神经网络加速器,有效减轻误识别问题

    fpga实现cnn神经网络加速 手写字硬件加速 FPGA artix7-100t 纯verilog编写 神经网络硬件加速 使用ov5640摄像头dvp接口 verilog实现手写字识别 包括卷积层、全连接层、池化层、softmax,有效减轻误识别问题。 注意: 该项目并未使用到arm核,是使用传统fpga的逻辑资源实现的。 ID:92299 7141

    2024年04月23日
    浏览(31)
  • JVM工作的总体机制概述

    JVM:Java Virtual Machine,翻译过来是Java虚拟机 JRE:Java Runtime Environment,翻译过来是Java运行时环境 JRE=JVM+Java程序运行时所需要的类库 JDK:Java Development Kits,翻译过来是Java开发工具包 JDK=JRE+Java开发辅助工具 Java源程序→编译→字节码文件→放到JVM上运行 总体机制的粗略描述:

    2024年02月13日
    浏览(39)
  • 【大模型】—AI大模型总体概述

    随着人工智能技术的迅猛发展,AI大模型一直被视为推动人工智能领域提升的关键因素,大模型已成为了引领技术浪潮研究和应用方向。大模型是指具有庞大规模和复杂结构的人工智能模型,它们具有数以亿计的参数和深层次的神经网络架构。这些模型通过学习海量数据和深

    2024年02月11日
    浏览(35)
  • 【云计算与大数据技术】大数据系统总体架构概述(Hadoop+MapReduce )

    企业级大数据应用框架需要满足业务的需求,一是要求能够满足基于数据容量大,数据类型多,数据流通快的大数据基本处理需求,能够支持大数据的采集,存储,处理和分析,二是要能够满足企业级应用在可用性,可靠性,可扩展性,容错性,安全性和隐私性等方面的基本

    2024年02月09日
    浏览(50)
  • 嵌入式Linux实战开发之项目总体概述(基于IMX6ULL)

    现在越来越多的智能设备融入到我们的生活,然而,丰富的设备之下也是有一套基本的运行框架,只是根据不同的需求增减相应的功能从而满足自身的需要。而电子产品量产工具项目,就是实现基础的功能,可以作为一个基础的模版,学成之后便可进行扩展,根据自身需求,

    2024年02月13日
    浏览(70)
  • 基于FPGA的电子时钟设计与实现 (在EDA开发板上实现电子时钟功能)

    开发板: 此款开发板使用的是 ALTERA 公司的 Cyclone IV 系列 FPGA,型号为 EP4CE6F17C8, 256 个引脚的 FBGA 封装。  题目:在EDA开发板上实现电子时钟功能 要求:实现电子时钟程序编写,实现在7段数码管显示时、分、秒,使用4x4矩阵按键模拟调节时钟指令输入按键,并实现整点报时

    2024年02月04日
    浏览(47)
  • 基于STM32 ARM+FPGA伺服控制系统总体设计方案(一)

    设计需求 一套完整的伺服控制方案包括了上位机、驱控一体控制器和功率板三者。操作人员 通过上位机发送各种不同指令,然后控制器解析指令后执行相应的伺服功能,其次控 制器将驱动信号传输至功率板驱动电机,最后控制器采集反馈信息进行闭环控制并上 传数据。 结

    2024年02月04日
    浏览(39)
  • 基于 RK3399+fpga 的 VME 总线控制器设计(一)总体设计

    2.1 需求分析及技术指标 2.1.1 需求分析 VME 总线控制器需要实现数据传输、中断处理、测量显示等功能。同时还需 要具有操作系统、底层驱动程序以及功能接口等,以方便用户进行上层应用软件开 发及使用。 本课题需要实现 VME 控制器的国产化开发,因此需要选择一款国产处

    2024年02月14日
    浏览(50)
  • 基于verilog的CNN搭建缓存图片数据浅析

    在编写基于verilog的的卷积神经网络实现时,需要定义一个滑窗,并与对应位置的图像像素值相乘再相加,实现单点的卷积运算,具体的操作如图1所示。 图1 卷积的实现过程 我们采用FPGA的RAM的进行图片(假设图片为5×5,滤波器的大小为3×3)数据缓存,由于图像的数据是按行

    2023年04月08日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包