数字IC实践项目(7)—CNN加速器的设计和实现(付费项目)

news2024/11/28 10:36:06

数字IC实践项目(7)—基于Verilog的CNN加速器(付费项目)

  • 写在前面的话
    • 项目整体框图
    • 神经网络框图
    • 完整电路框图
  • 项目简介和学习目的
    • 软件环境要求
  • 资源占用&板载功耗
  • 总结

写在前面的话

项目介绍:
卷积神经网络硬件加速器是一种专门设计用于提高神经网络计算性能的硬件设备。它通过在硬件级别上对神经网络模型的计算任务进行优化,以实现更快、更高效的计算,并显著减少能耗和计算成本。硬件加速器通常包括专用的处理单元、存储器和并行计算架构等组件,可以在较短的时间内处理大规模的神经网络计算任务。整个项目是基于先前相关的研究工作展开的,整体包含涵盖了算法设计、Verilog代码设计、仿真验证以及通过FPGA完成了最终验证。

重要性:

  1. 神经网络模型的复杂度不断增加,需要庞大的计算资源来训练和推断。传统的通用计算硬件无法满足这种需求,而神经网络硬件加速器则能够充分利用并行计算和专门优化的算法,提供高效的计算能力,加速神经网络模型的训练和推断过程。
  2. 其次,神经网络硬件加速器可以显著降低能耗和计算成本。由于神经网络模型的计算量很大,传统的计算设备在进行神经网络计算时会消耗大量的能源,导致高昂的运行成本。而神经网络硬件加速器通过专门的架构设计和算法优化,能够以更高的能效执行计算任务,降低功耗和运行成本,对于大规模的神经网络应用具有重要的经济意义。

对于找工作的帮助:

  1. 随着人工智能技术的广泛应用,越来越多的企业和研究机构对拥有神经网络硬件加速器相关知识和经验的人才需求增加。掌握神经网络硬件加速器的原理和应用,能够帮助个人在就业市场上脱颖而出。
  2. 此外,神经网络硬件加速器在云计算和边缘计算等领域得到广泛应用,特别是在处理大规模数据和实时决策的场景下。因此,拥有神经网络硬件加速器的相关背景和实践经验,将为求职者在云计算和智能设备等领域的工作机会带来更多选择。对于找工作而言,拥有神经网络硬件加速器相关知识和经验,不仅可以增加个人竞争力,还能为求职者提供更广阔的职业发展机会。

项目整体框图

项目整体框图如下,以CNN硬件加速器为核心,输入数据可为传感器阵列数据或者摄像头采集的图片信息,采用MNIST作为训练和测试数据。整个网络包含两层卷积、两层最大池化以及一层全连接层,经过CNN加速器后的识别结果回同步输出到显示器上。
在这里插入图片描述

神经网络框图

整体采用的神经网络架构如下:共包含两层卷积和两层最大池化以及最后一层全连接层。
1)代码使用Pytorch架构完成
2)数据集为MNIST,大小为2828
3)采用三个5
5大小的卷积核
4)采用最大池化和Relu激活函数
在这里插入图片描述

完整电路框图

整个电路结构如下,主要分为五个部分,分别为:
1、CLK _Unit:时钟管理模块,将200MHz的差分时钟分频为148.5MHz、100MHz、50MHz以及20MHz,其中50MHz的时钟作为系统主时钟,CNN计算核心同步时钟。
2、Data_IN&Buffer:数据输入和缓冲模块,将阵列数据和图像数据通过串口传输并缓存在RAM里,为CNN计算进行缓冲。
3、CNN_Core:卷积计算核心,包含神经网络的所有硬件化加速器电路。
4、Hdmi_Display:Hdmi视频传输芯片控制模块,将卷积神经网络的识别结果和采集的图像进行输出显示。
5、For_Debug:用于外部调试,包含串口发送,将是实时的识别结果输出至上位机和其余外设,协助完成调试工作。
在这里插入图片描述

项目难度:⭐⭐⭐⭐⭐
项目推荐度:⭐⭐⭐⭐
项目推荐天数:21~35天

项目简介和学习目的

使用Pytorch完成卷积神经网络的搭建,并移植到Verilog平台完成电路设计、综合以及最终的下板测试环节。整个项目耗时长达半年之久,其中遇见不是Bug,也是花费不少精力进行解决的,感兴趣的同学可以私信我,整个项目还有很多可以优化改进的地方,大家可以在完成学习的基础上进行改进,希望可以帮助大家更好的完成求职!

软件环境要求

整个项目对于初学者要求较高,完成复现需要花费较长的时间搭建软件环境,这里建议大家按需完成学习,循序渐进,可以从神经网络、CNN硬件加速器、RTL代码以及综合调试等方面进行展开,掌握每个模块的功能和相互连接,有条件的可以尝试购买相关的硬件FPGA板,完成整个系统的调试和移植。

要求的软件和EDA环境:
(1)操作系统要求:
Window&Centos

(2)EDA 软件要求:
Vivadao2020、Modelsim、Anaconda
(3)硬件要求:
电脑运行内存 >= 16Gb(便于综合)
FPGA开发板:>= xczu5ev

前仿: Vivadao2020、Modelsim
综合:Vivadao2020

项目学习目的:
(1)熟练掌握复杂项目的工程管理;
(2)熟悉 Verilog HDL仿真、FPGA综合工具以及了解数字IC设计工具及流程;
(3)学习CNN网络的基本结构和基础原理;
(4)学习CNN硬件加速器;
(5)熟练掌握Verilog语法和验证方法;

资源占用&板载功耗

整体资源占用约为20%
在这里插入图片描述
卷积核心模块占用如下,其中ila为片上逻辑分析仪,后续可以进行优化,进一步降低资源消耗。
在这里插入图片描述
板载功耗如下,采用的FPGA开发板包含PS和PL两大模块,其中主要采用PL端,PS端为辅助程序烧录固化,总功耗0.652W。
在这里插入图片描述

综合后占用资源如下,其中蓝色部分为占用的资源分布,绿色为走线。
在这里插入图片描述
局部放大如下:
在这里插入图片描述

总结

整个项目涵盖了完整的卷积神经网络设计,CNN硬化加速器的Verilog实现和仿真和测试所需脚本和环境配置。需要搭建完整的软件和硬件环境,相对先前列出的开源和初级项目来说,整体难度偏高,适合缺少系统项目经验的求职者。
特地注明:整个项目耗费较长的周期和个人精力,项目收费并且保证独一无二(性价比肯定是重要因素,毕竟都有过学生时代)。感兴趣的同学可以通过私信联系,我始终相信好的知识和项目肯定是收费的,网上也有很多类似的课程和项目,但大多数没有从完整的项目需求出发,代码和工程重复率高,不少同学往往是花了很多钱,却没有学到真正的东西。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/779885.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于深度学习的高精度六类海船检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要:基于深度学习的高精度六类海船检测识别系统可用于日常生活中检测与定位海船目标(散装货船(bulk cargo carrier)、集装箱船(container ship)、渔船(fishing boat)、普通货船&…

[golang gin框架] 41.Gin商城项目-微服务实战之后台Rbac微服务(用户登录 、Gorm数据库配置单独抽离、 Consul配置单独抽离)

上一节抽离了captcha验证码功能,集成了验证码微服务功能,这一节来看看后台Rbac功能,并抽离其中的用户登录,管理员管理,角色管理,权限管理等功能作为微服务来调用 一.引入 后台操作从登录到后台首页,然后其中的管理员管理,角色管理,权限管理等功能可以抽离出来作为 一个Rbac微服…

视频画面尺寸怎么裁剪?裁剪视频画面方法分享

如果我们的视频将在不同的平台或设备上播放,而这些设备具有不同的屏幕比例(如16:9、4:3、1:1等),则可能需要裁剪来适应目标屏幕。这样观看起来会体验效果更佳,但是该怎么裁剪视频的画面呢?给大家分享几种裁…

力扣热门100题之最长连续序列【中等】

题目描述 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 输入:nums [100,4,200,1,3,2] 输出&…

Kotlin多平台最佳架构指南

在这篇文章中,我们将对 Kotlin 多平台移动端的最佳架构进行深入探讨。在2023年,作为 Android 开发者,我们会倾向于采用 MVVM 架构,因为它简单、灵活且易于测试。而作为 iOS 开发者,我们可能会选择 MVC、Viper 等架构。…

解决FLink:Missing required options are: slot.name

[ERROR] Could not execute SQL statement. Reason: org.apache.flink.table.api.ValidationException: One or more required options are missing.Missing required options are:slot.name解决 https://ververica.github.io/flink-cdc-connectors/release-2.4/content/connec…

JSR 规范详解和概述

JSR 规范详解 目录概述需求: 设计思路实现思路分析1.JSR 规范详解 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge …

Python计算特征值与特征向量案例+传统方法+雅可比Jacobi迭代法

目录 {1}几个例子🌰 {2}特征值 {3}奇异矩阵 {4}特征向量 {5}特征值和特征向量的计算方法 特征值性质 特征向量性质 {6}巩固练习 {7}迭代法 什么时候收敛?收敛速度如何? {8}雅可比迭代法 {1}几个例子🌰 例1&#xff…

Moshi Vs Gson Vs Kotlin Serialisation性能PK

Moshi Vs Gson Vs Kotlin Serialisation 定义 Gson Gson 是一个Java序列化/反序列化库,用于将Java对象转换为JSON格式,以及将JSON格式转换回Java对象。 Moshi Moshi 是一个现代化的JSON库,适用于Android和Java。它使得将JSON解析为Java对…

Django基本数据库操作

Django基本数据库操作 文章目录 Django基本数据库操作👨‍🏫内容一:基本数据库配置👨‍🔬内容二:ORM基本操作 👨‍🏫内容一:基本数据库配置 👉Django是一个流…

整车总线系列——FlexRay 四

整车总线系列——FlexRay 四 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 没有人关注你。也无需有人关注你。你必须承认自己的价值,你不能…

机器学习方法与原则

机器学习方法与原则 评价指标 TODO 训练集、验证集与测试集 训练集与测试集 训练集(作业): 模型可见样本标签,用于训练模型,样本数量有限。 在训练集上表现好的模型, 在其它未见样本上一定表现好么&am…

【Java】Clonable 接口

如何克隆一个引用所指的对象呢?首先一个前提,他是可克隆的,我们要实现一个Clonable 接口。我们来看一个这个接口: 可以发现里面是空的,我们把这种空接口叫做标记接口,作用就是表示当前对象是可以被克隆的。…

面试 | 双法妙解压缩字符串【遍历统计 + 双指针】

一、题目描述 原题传送门 二、思路分析 首先我们来分析一下解决本题所需要的思路 题目的意思很简单,就是统计原本的字符串中的每个字符出现的次数,然后以【字符,出现的次数】这样的结构来字符串,以起到一个压缩的效果&#xff0c…

Fiddler抓包实战,彻底打通接口测试(二)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 请求查看 Inspec…

Spring简述IOC入门案例

文章目录 Spring学习笔记Spring:Spriing framework:IoC(控制反转)对象的创建控制权由程序转移到外部:DI( Dependency Injection )依赖注入: IoC入门案例:项目结构:applicationContext.xml:bookD…

mysql-5.7 Linux安装教程

通过命令下载: 下载到 cd /usr/local 这个路径下 wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz 解压: tar -zxvf mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz 将解压的 重命名 为mysql mv mysql-5…

B/S架构的云HIS系统源码 技术架构:Angular+Nginx+ Java+Spring

基于云计算技术的B/S架构的HIS系统源码,为基层医疗机构提供标准化的、信息化的、可共享的医疗信息管理系统,实现医患事务管理和临床诊疗管理等标准医疗管理信息系统的功能。系统利用云计算平台的技术优势,建立统一的健康档案存储平台&#xf…

seatunnel hive source 未设置分隔符导致多个字段合并成一个的问题定位解决

seatunnel hive source 未设置分隔符导致多个字段没有切分全保存在一个字段中了,翻看源码发现分隔符是是通过delimiter设置的,只要设置这个delimiter","就可以了。 设置这个属性 delimiter“,” 他的默认值是\u0001,如果没有设置delimiter属性则会根据文件类型判断…

Flink写入数据到Doris

文章目录 1.Doris建表2.Doris依赖3.Bean实体类4.Doris业务写入逻辑5.测试写入类6.发送数据 1.Doris建表 Doris中建表 CREATE TABLE IF NOT EXISTS demo.user (id INT NOT NULL,name VARCHAR(255),age INT ) DISTRIBUTED BY HASH(id) PROPERTIES ("replication_num&qu…