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"…...
SX1255和AD9361的LO泄露实测对比:为什么你的无线模块EVM总是不达标?
SX1255与AD9361本振泄露实战分析:破解EVM不达标的三大关键策略 在调试LoRa模块或小型基站射频前端时,工程师们最常遇到的"幽灵问题"莫过于EVM指标莫名劣化。上周深夜,当我的频谱仪上再次出现那个熟悉的载波泄露尖峰时,我…...
为OpenClaw智能体工作流配置Taotoken作为统一模型服务源
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为OpenClaw智能体工作流配置Taotoken作为统一模型服务源 在构建基于智能体(Agent)的自动化工作流时&#x…...
Cocos学习笔记:帧动画制作与动画编辑器使用
一、帧动画基础原理核心逻辑:帧动画本质是逐帧替换精灵(Sprite)的显示图片,通过控制图片切换频率,让静态序列图呈现连续动态效果。视觉原理:人眼存在视觉残留特性,短时间内连续播放 24 帧以上图…...
Prism Launcher:重新定义你的Minecraft启动体验
Prism Launcher:重新定义你的Minecraft启动体验 【免费下载链接】PrismLauncher A custom launcher for Minecraft that allows you to easily manage multiple installations of Minecraft at once (Fork of MultiMC) 项目地址: https://gitcode.com/gh_mirrors/…...
Pixelle-Video完整指南:5分钟掌握AI全自动短视频制作
Pixelle-Video完整指南:5分钟掌握AI全自动短视频制作 【免费下载链接】Pixelle-Video 🚀 AI 全自动短视频引擎 | AI Fully Automated Short Video Engine 项目地址: https://gitcode.com/GitHub_Trending/pi/Pixelle-Video Pixelle-Video是一款革…...
Wayback Machine 浏览器扩展:一键穿越互联网历史的终极免费工具
Wayback Machine 浏览器扩展:一键穿越互联网历史的终极免费工具 【免费下载链接】wayback-machine-webextension A web browser extension for Chrome, Firefox, Edge, and Safari 14. 项目地址: https://gitcode.com/gh_mirrors/wa/wayback-machine-webextension…...
Windows硬件指纹保护终极教程:3步掌握EASY-HWID-SPOOFER安全使用
Windows硬件指纹保护终极教程:3步掌握EASY-HWID-SPOOFER安全使用 【免费下载链接】EASY-HWID-SPOOFER 基于内核模式的硬件信息欺骗工具 项目地址: https://gitcode.com/gh_mirrors/ea/EASY-HWID-SPOOFER 在数字时代,你的硬件信息正在被悄悄收集—…...
从零到通:在华为eNSP模拟器上玩转Telnet+AAA,一篇搞定远程管理核心交换机
从零到通:在华为eNSP模拟器上玩转TelnetAAA,一篇搞定远程管理核心交换机 刚接触华为网络设备的朋友们,是否曾被密密麻麻的命令行界面吓到?其实只要掌握几个核心配置,就能像专业网管一样优雅地远程管理交换机。今天我们…...
5分钟学会LDDC:让每一首歌都有完美歌词的终极指南
5分钟学会LDDC:让每一首歌都有完美歌词的终极指南 【免费下载链接】LDDC 简单易用的精准歌词(逐字歌词/卡拉OK歌词)下载匹配工具|A simple and user-friendly tool for downloading and matching precise lyrics (word-by-word lyrics/Karaoke lyrics) 项目地址: …...
技术人如何应对职业倦怠?这4个方法让我重燃热情
一、软件测试从业者职业倦怠的“隐形陷阱”在互联网技术高速迭代的今天,软件测试从业者正面临着前所未有的职业压力。你是否也曾有过这样的时刻:盯着满屏的测试用例,手指机械地重复着点击操作,内心却毫无波澜;面对层出…...
