当前位置: 首页 > news >正文

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

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

相关文章:

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

数字IC实践项目(7)—基于Verilog的CNN加速器(付费项目) 写在前面的话项目整体框图神经网络框图完整电路框图 项目简介和学习目的软件环境要求 资源占用&板载功耗总结 写在前面的话 项目介绍: 卷积神经网络硬件加速…...

基于深度学习的高精度80类动物目标检测系统(PyTorch+Pyside6+YOLOv5模型)

摘要:基于深度学习的高精度80类动物目标检测识别系统可用于日常生活中或野外来检测与定位80类动物目标,利用深度学习算法可实现图片、视频、摄像头等方式的80类动物目标检测识别,另外支持结果可视化与图片或视频检测结果的导出。本系统采用YO…...

海康摄像头开发笔记(一):连接防爆摄像头、配置摄像头网段、设置rtsp码流、播放rtsp流、获取rtsp流、调优rtsp流播放延迟以及录像存储

文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/131679108 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结…...

【NCNN】NCNN中Mat与CV中Mat的使用区别及相互转换方法

目录 相同点与不同点cv::Mat转ncnn::Matcv::Mat CV_8UC3 -> ncnn::Mat 3 channel swap RGB/BGRcv::Mat CV_8UC3 -> ncnn::Mat 1 channel do RGB2GRAY/BGR2GRAYcv::Mat CV_8UC1 -> ncnn::Mat 1 channel ncnn::Mat转cv::Mancnn::Mat 3 channel -> cv::Mat CV_8UC3 …...

Android 13 设置自动进入wifi adb模式

Android 13 设置自动进入wifi adb模式 文章目录 Android 13 设置自动进入wifi adb模式一、前言:二、解决Android 13 wifi adb每次重启自动重置问题方法1、分析系统中每次重置wifi adb属性的代码2、在开机广播里面进行设置wifi adb 相关属性(1&#xff09…...

(笔记)插入排序

插入排序 插入排序是一种简单且常见的排序算法,它通过重复将一个元素插入到已经排好序的一组元素中,来达到排序的目的。在插入排序算法中,将待排序序列分为已排序和未排序两个部分。初始时,已排序部分只包含一个记录,…...

结构型模式 - 组合模式

概述 对于这个图片肯定会非常熟悉,上图我们可以看做是一个文件系统,对于这样的结构我们称之为树形结构。在树形结构中可以通过调用某个方法来遍历整个树,当我们找到某个叶子节点后,就可以对叶子节点进行相关的操作。可以将这颗树理…...

EDM营销过时了?不,这才是跨境电商成功的最佳工具

根据最近的一项研究,电子邮件仍然是最具说服力的营销工具和沟通形式之一。虽然即时通讯等其他渠道正在扎根,但电子邮件仍然是影响最深远的商业交流形式。到2023年,每天发送和接收的电子邮件总数可能会超过333亿封。所以,如果您希望…...

【大数据之Hive】二十五、HQL语法优化之小文件合并

1 优化说明 小文件优化可以从两个方面解决,在Map端输入的小文件合并,在Reduce端输出的小文件合并。 1.1 Map端输入文件合并 合并Map端输入的小文件是指将多个小文件分到同一个切片中,由一个Map Task处理,防止单个小文件启动一个M…...

spring 连接oracle数据库报错{dataSource-1} init error解决,电脑用户名问题

错误描述: 连接oracle数据就报错,同样的代码其他电脑不会报错。 报错如下: {dataSource-1} init error java.sql.SQLRecoverableException: IO 错误: Undefined Error com.alibaba.druid.pool.DruidDataSource-1049[main]ERROR: {dataSourc…...

行业视野::人工智能与机器人

控制和机器人领域非常重要的quote:莫拉维克悖论(Moravecs paradox) It is comparatively easy to make computers exhibit adult level performance on intelligence tests or playing checkers,and difficult or impossible to give them th…...

【Python入门系列】第十七篇:Python大数据处理和分析

【Python入门系列】第十七篇:Python大数据处理和分析 文章目录 前言一、数据处理和分析步骤二、Python大数据处理和分析库三、Python大数据处理和分析应用1、数据清洗和转换2、数据分析和统计3、数据可视化4、机器学习模型训练和预测5、大规模数据处理和分布式计算6…...

spring.profiles的使用详解

本文来说下spring.profiles.active和spring.profiles.include的使用与区别 文章目录 业务场景spring.profiles.active属性启动时指定 spring.profiles.include属性配置方法配置位置配置区别 用示例来使用和区分测试一测试二测试三 编写程序查看激活的yml文件本文小结 业务场景 …...

Docker使用总结

Docker 1.什么是 Docker 官网的介绍是“Docker is the world’s leading software container platform.” 官方给Docker的定位是一个应用容器平台。 Docker 是一个容器平台的领导者 Docker 容器平台 Docker 应用容器平台 application项目 Mysql Redis MongoDB ElasticSeacrh …...

MySQL 数据库的备份与还原案例分享 2023.07.12

/** 素材一 备份与还原 **/ 1 创建数据库booksDB mysql> create database booksDB; Query OK, 1 row affected (0.00 sec)2.1 创建booksDB表 mysql> use booksDB Database changed mysql> CREATE TABLE books-> (-> bk_id INT NOT NULL PRIMARY KEY,-> …...

verilog实现数码管静态显示

文章目录 verilog实现数码管静态显示一、任务要求二、实验代码三、仿真代码四、仿真结果五、总结 verilog实现数码管静态显示 一、任务要求 六个数码管同时间隔0.5s显示0-f。要求:使用一个顶层模块,调用计时器模块和数码管静态显示模块。 二、实验代码…...

MySQL-DML-添加数据insert

目录 添加数据:insert insert语法 注意事项 修改数据:update update语法 注意事项: 删除数据:delete 删除语法 注意事项 总结 DML英文全称Data Manipulation Language(数据操作语言),…...

Prometheus、Grafana使用

文章目录 系统性能监控相关命令lscputopfreehtopdstatglancesiftopiptrafnethogs 监控软件Prometheus安装、使用将promethues做成服务监控其他机器 exportergrafana配置、使用密码忘记重置 系统性能监控 相关命令 lscpu lscpu 是一个 Linux 命令,用于显示关于 CP…...

UG\NX二次开发 使用throw重新抛出异常

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 简介: 在异常处理代码中,可以使用 throw 关键字来抛出异常。如果希望在捕获异常后重新抛出该异常,可以使用类似以下的代码: 在 …...

为什么单片机可以直接烧录程序的原因是什么?

单片机(Microcontroller)可以直接烧录程序的原因主要有以下几点: 集成性:单片机是一种高度集成的芯片,内部包含了处理器核心(CPU)、存储器(如闪存、EEPROM、RAM等)、输入…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

华为OD机试-最短木板长度-二分法(A卷,100分)

此题是一个最大化最小值的典型例题&#xff0c; 因为搜索范围是有界的&#xff0c;上界最大木板长度补充的全部木料长度&#xff0c;下界最小木板长度&#xff1b; 即left0,right10^6; 我们可以设置一个候选值x(mid)&#xff0c;将木板的长度全部都补充到x&#xff0c;如果成功…...

Visual Studio Code 扩展

Visual Studio Code 扩展 change-case 大小写转换EmmyLua for VSCode 调试插件Bookmarks 书签 change-case 大小写转换 https://marketplace.visualstudio.com/items?itemNamewmaurer.change-case 选中单词后&#xff0c;命令 changeCase.commands 可预览转换效果 EmmyLua…...

规则与人性的天平——由高考迟到事件引发的思考

当那位身着校服的考生在考场关闭1分钟后狂奔而至&#xff0c;他涨红的脸上写满绝望。铁门内秒针划过的弧度&#xff0c;成为改变人生的残酷抛物线。家长声嘶力竭的哀求与考务人员机械的"这是规定"&#xff0c;构成当代中国教育最尖锐的隐喻。 一、刚性规则的必要性 …...

React从基础入门到高级实战:React 实战项目 - 项目五:微前端与模块化架构

React 实战项目&#xff1a;微前端与模块化架构 欢迎来到 React 开发教程专栏 的第 30 篇&#xff01;在前 29 篇文章中&#xff0c;我们从 React 的基础概念逐步深入到高级技巧&#xff0c;涵盖了组件设计、状态管理、路由配置、性能优化和企业级应用等核心内容。这一次&…...

前端工具库lodash与lodash-es区别详解

lodash 和 lodash-es 是同一工具库的两个不同版本&#xff0c;核心功能完全一致&#xff0c;主要区别在于模块化格式和优化方式&#xff0c;适合不同的开发环境。以下是详细对比&#xff1a; 1. 模块化格式 lodash 使用 CommonJS 模块格式&#xff08;require/module.exports&a…...