FPGA应用于图像处理
FPGA应用于图像处理
FPGA(Field-Programmable Gate Array)直译过来就是现场可编程门阵列。是一种可以编程的逻辑器件,具有高度的灵活性,可以根据具体需求就像编程来实现不同的功能。
FPGA器件属于专用的集成电流中的一种半定制电路,是可编程的逻辑阵列,内部有基本的逻辑单元,可配置的逻辑块,数字时钟管理模块,嵌入式RAM,以及丰富的布线资源,有的FPGA内部还集成了SDRAM、Cortex-ARM硬核。采用Verilog或者VHDL进行编程。
既然大家能用到FPGA,说明大家在学校里面都上过数字电路实验课。通俗来讲,你可以直观的认为FPGA内部的各个逻辑块就像是实验室里面的各种芯片模组,使用Verilog编程进行逻辑资源的布线就相当于你面对一大堆的电子元器件,采用面包板以及杜邦线把你需要的功能连接起来。怎么连接以及连接线的方式就是你用verilog进行定义的。是不是很简单?
优缺点:
首先说一下FPGA的优缺点,
优点:
FPGA由逻辑单元,RAM,乘法器等硬件资源构成,通过这些资源的组合,可以实现乘法,寄存器,地址发生器等硬件电路;
FPGA可以通过使用框图或者Verilog HDL来设计,从简单的门电路到复杂的FIR电路都可以实现;
FPGA可以无限的重新编程,加载一个新的设计方案只需要几百毫秒,利用重配置电路可以减少硬件开销;
FPGA的工作频率由FPGA芯片以及设计决定,可以通过修改设计或者更换更快的FPGA芯片来达到某些要求严苛的工况。
缺点:
FPGA的所有功能均依靠硬件实现,无法实现分支条件跳转等操作;
FPGA只能实现定点运算;
小结:
FPGA依靠硬件来实现所有的功能,速度上可以和专用芯片相比,但是设计灵活性和通用处理器相比还有些许不足。
FPGA可以应用的行业:
视频处理;
图像分割;
数据延迟器和存储设计;
通讯行业;
安防;
工控业;
AI:(也是当前最火的行业);
####下面就对本人相对比较熟悉的图像处理行业进行简单介绍,浅谈一下自己的看法;
我最开始学习的事51单片机,但是实际工作从事的事图像识别方向的应用开发,由于51单片机的先天性导致实际工作中很少使用,最开始使用得是ADI的Blackfin系列的DSP,随着图像分辨率的提高,以及处理算法的复杂度的上升,Blackfin处理器业渐渐不能满足实际需求;于是转向了FPGA,至此在FPGA上也使用了十多年了。
FPGA的优势之一就是流水线操作,虽然主频比CPU,GPU,NPU等低很多,但是采用流水线方式可以同时处理,也就能达到了很好的实时性。因此在一些实时性要求非常高的应用领域,做图像处理只能使用FPGA。这几年一直从事分选设备的图像处理方面的工作,目前在分选领域基本都是使用FPGA作为主处理器,不管是采用线阵传感器还是面阵传感器,FPGA从采集到图像数据开始,到下一次采集到新的图像数据,这个延时时间是固定的为行频或者帧频的间隔。这个优点是CPU无法满足的,只有FPGA的实时流水线结构才能才能满足大数据量的实时处理。
传统的采用CPU,DSP等方式进行图像运算的方式是,首先CPU或者DSP把采集到的数据通过DMA或者其他总线方式搬运到内存中,然后CPU或DSP运算部分再从内存中读取数据进行处理,处理完成后再把处理结果保存到内存中,供其他函数进行访问;如果按照线阵传感器的行频格式进行处理,按照10K的行频计算,则每行数据的实践间隔是0.1ms,也就要求在0.1ms时间内必须把这一样数据处理完成,并把处理结果保存到内存。如果CPU或者DSP的主频足够高,理论上也是可行的,但是主频不可能无限提升。
如果采用FPGA进行处理就完美的避免的频繁的访问内存了;因为FPGA对图像的处理事实时流水线的运算处理,FPGA内部的逻辑资源可以搭建若干个处理单元,每个处理单元都是同时工作的,当有足够多的处理单元时,虽然FPGA的主频较低,但是同时处理数据的能力将会非常大。

上图就是一个简单的流水线示意图,第一行时数据A进来,第一个单元处理数据A,等到第二行的时候,数据A已经进入到的下一个处理单元,同时数据B进来,这是数据A和数据B分属如不同的处理单元,因此数据A和数据B可以被同时处理;当有足够多的处理单元时,可以对很多数据进行同时处理,数据A的输出仅仅是固定延迟若干个处理单元的个数个时钟。只要处理单元数固定,那么这个输出数据的延迟时间间隔也是固定的。
例如实际应用中,FPGA直连Sensor,然后驱动Sensor,直接获取图像数据,第一个单元可以对获取的图像数据进行转换,如Bayer格式转RGB,RAW转RGB等;第二个处理单元可以对RGB数据进行差值运算、亚像素校正,第三个单元进行腐蚀/膨胀操作,第四个单元进行canny算子检测。。。。。。。
这样的流水线的处理方式时按照Sensor输出的数据流的流动方向顺序处理的,它无法像CPU或者DSP那样缓存整幅图像进行无序操作,FPGA处理图像数据就相当于每个单元处理完成后就把处理结果交给下一个处理单元,每个处理单元只对当前进入的数据负责,不在保存中间结果数据;
随着海量数据的算力需求越来越高,FPGA芯片将继续向更高密度、更高通信带宽方向发展,此外,异构计算融合等形式将越来越受推崇。并且从软件发展角度,也更注重配套的工具能力,提供高性能的AI加速能力。
FPGA的关键价值在于可编程性、灵活性,AI发展初期,很多新兴应用还在酝酿中,各类标准仍在演进,AI算法也在不断推陈出新,对于硬件的算力和灵活度要求很高,FPGA刚好契合这些需求。此外,在推理环节的小批量数据处理中,FPGA可凭借流水线并行,达到高并行、低延迟的效果。并且,受低延迟、数据隐私和带宽限制等因素驱动,FPGA能够满足低功耗、灵活以及快速响应等需求。
相关文章:
FPGA应用于图像处理
FPGA应用于图像处理 FPGA(Field-Programmable Gate Array)直译过来就是现场可编程门阵列。是一种可以编程的逻辑器件,具有高度的灵活性,可以根据具体需求就像编程来实现不同的功能。 FPGA器件属于专用的集成电流中的一种半定制电…...
vscode python 无法引入上层目录解决
在vscode 中.vscode 配置如下 { // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid830387 “version”: “0.2.0”, “configurati…...
[开发|java] java list 取某个属性最大的项
示例代码: import java.util.*;class Person {private String name;private int age;public Person(String name, int age) {this.name name;this.age age;}public int getAge() {return age;} }public class Main {public static void main(String[] args) {List<Person…...
关闭浏览器的跨域校验
首发博客地址 问题描述 当你访问资源失败,并遇到以下类似提示时: Access to script at 资源路径 from origin null has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, isolated-app, chrom…...
USRP 简介,对于NI软件无线电你所需要了解的一切
什么是 USRP 通用软件无线电外设( USRP ) 是由 Ettus Research 及其母公司National Instruments设计和销售的一系列软件定义无线电。USRP 产品系列由Matt Ettus领导的团队开发,被研究实验室、大学和业余爱好者广泛使用。 大多数 USRP 通过以太网线连接到主机&…...
RTE_Driver驱动框架和Keil下开发需要支持的xxx_DFP软件包分析
1.RTE_Driver驱动框架 RTE_Driver代表"Run-Time Environment Driver",是Keil MDK(Microcontroller Development Kit)中的一个概念。Keil MDK是一种用于嵌入式系统开发的集成开发环境,提供了开发、编译、调试等一系列工具…...
ImportError: Cannot load dynamic library. Did you compile LSD?
1、问题描述 >>> import pylsd2 Traceback (most recent call last):File "<stdin>", line 1, in <module>File "/data/data/wangzy-p-wangzy-p3-volume-pvc-0fee40a7-7013-49b4-8cfb-b4ab0394165b/.conda/envs/paddle/lib/python3.8/sit…...
音频应用编程
目录 ALSA 概述alsa-lib 简介sound 设备节点alsa-lib 移植编写一个简单地alsa-lib 应用程序一些基本概念打开PCM 设备设置硬件参数读/写数据示例代码之PCM 播放示例代码值PCM 录音 使用异步方式PCM 播放示例-异步方式PCM 录音示例-异步方式 使用poll()函数使用poll I/O 多路复用…...
软件测试/测试开发丨Python 学习笔记 之 链表
点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接:https://ceshiren.com/t/topic/26458 链表与数组的区别 复杂度分析 时间复杂度数组链表插入删除O(n)O(1)随机访问O(1)O(n) 其他角度分析 内存连续,利用CPU的机制࿰…...
Matlab 使用经验分享(常用函数介绍;矩阵常见计算)
Matlab 使用经验分享 大家好!最近有很多朋友询问我关于 Matlab 的使用,于是我决定写一篇博客来分享一下我的经验。对于数学和编程爱好者来说,Matlab 是一个非常有用的工具。我自己在数学实验和数学建模竞赛中也经常使用它。那么,…...
软件工程(十七) 行为型设计模式(三)
1、观察者模式 简要说明 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新 速记关键字 联动,广播消息 类图如下 基于上面的类图,我们来实现一个监听器。类图中的Subject对应我们的被观察对象接口(IObservable),…...
在抖音中使用语聚AI,实现自动回复用户视频评论、私信问答
您可以通过集简云数据流程,将语聚AI助手集成到抖音视频评论、抖音私信,实现自动回复用户视频评论、私信问答,大大提升账号互动与运营效率。 效果如下: 自动化流程: ● 抖音普通号评论对接语聚AI(点击可一…...
pyqt5-快捷键QShortcut
import sys from PyQt5.QtWidgets import * from PyQt5.QtCore import * from PyQt5.QtGui import *""" 下面示例揭示了,当关键字绑定的控件出现的时候,快捷键才管用, 绑定的控件没有出现的时候快捷键无效 """…...
匿名函数( lambda 表达式)
在 C 中,匿名函数也被称为 lambda 表达式。C11 引入了 lambda 表达式,使得在需要函数对象(函数符)的地方可以使用匿名函数来代替。 lambda 表达式的基本语法如下: [capture list] (parameter list) -> return typ…...
基于SSM的汽车维修管理系统——LW模板
摘要 随着人们生活水平的不断提高,私家车的数量正在逐年攀升。这带动了汽车维修行业的发展。越来越多的汽车维修厂如雨后春笋般涌现。同时,维修厂的业务操作产生了庞大的数据,这给汽车维修厂工作人员的数据管理提出了新的要求,他们…...
Ceph的纠删码特性 EC(Erasure Code)代码流程
从GitHub上Clone Ceph项目,我是基于(ceph version 12.2.11 luminous 版本)的代码来分析的 一、EC(Erasure Code)是什么? Ceph的纠删码特性EC:将写入的数据分成N份原始数据,通过这N份原始数据计算出M份效验…...
盘点那些国际知名黑客(上篇)
电影中的黑客仅靠一部电脑就可以窃取别人的信息,利用自己高超的技术让公司甚至国家都胆战心惊。“黑客”原指热心于计算机技术、水平高超的电脑高手,但逐渐区分为黑帽、白帽、灰帽。这些术语源自美国流行文化的老式西部电影,其中主角戴白色或…...
机器学习基础12-Pipeline实现自动化流程处理(基于印第安糖尿病Pima 数据集)
有一些标准的流程可以实现对机器学习问题的自动化处理,在 scikitlearn 中通过Pipeline来定义和自动化运行这些流程。本节就将介绍如何通过Pipeline实现自动化流程处理。 如何通过Pipeline来最小化数据缺失。如何构建数据准备和生成模型的Pipeline。如何构建特征选择…...
Ansible学习笔记15
1、roles:(难点) roles介绍: roles(角色):就是通过分别将variables,tasks及handlers等放置于单独的目录中,并可以便捷地调用他们的一种机制。 假设我们要写一个playbo…...
圆圈加数字的css
方式一 .circle { width: 50px; height: 50px; border-radius: 50%; background-color: #f00; color: #fff; text-align: center; line-height: 50px; } .circle::before { content: attr(data-number); display: block; } <div class"circle" data-number"…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...
STM32HAL库USART源代码解析及应用
STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...
