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

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…...

关闭浏览器的跨域校验

首发博客地址 问题描述 当你访问资源失败&#xff0c;并遇到以下类似提示时&#xff1a; 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领导的团队开发&#xff0c;被研究实验室、大学和业余爱好者广泛使用。 大多数 USRP 通过以太网线连接到主机&…...

RTE_Driver驱动框架和Keil下开发需要支持的xxx_DFP软件包分析

1.RTE_Driver驱动框架 RTE_Driver代表"Run-Time Environment Driver"&#xff0c;是Keil MDK&#xff08;Microcontroller Development Kit&#xff09;中的一个概念。Keil MDK是一种用于嵌入式系统开发的集成开发环境&#xff0c;提供了开发、编译、调试等一系列工具…...

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 学习笔记 之 链表

点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接&#xff1a;https://ceshiren.com/t/topic/26458 链表与数组的区别 复杂度分析 时间复杂度数组链表插入删除O(n)O(1)随机访问O(1)O(n) 其他角度分析 内存连续&#xff0c;利用CPU的机制&#xff0…...

Matlab 使用经验分享(常用函数介绍;矩阵常见计算)

Matlab 使用经验分享 大家好&#xff01;最近有很多朋友询问我关于 Matlab 的使用&#xff0c;于是我决定写一篇博客来分享一下我的经验。对于数学和编程爱好者来说&#xff0c;Matlab 是一个非常有用的工具。我自己在数学实验和数学建模竞赛中也经常使用它。那么&#xff0c;…...

软件工程(十七) 行为型设计模式(三)

1、观察者模式 简要说明 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新 速记关键字 联动,广播消息 类图如下 基于上面的类图,我们来实现一个监听器。类图中的Subject对应我们的被观察对象接口(IObservable),…...

在抖音中使用语聚AI,实现自动回复用户视频评论、私信问答

您可以通过集简云数据流程&#xff0c;将语聚AI助手集成到抖音视频评论、抖音私信&#xff0c;实现自动回复用户视频评论、私信问答&#xff0c;大大提升账号互动与运营效率。 效果如下&#xff1a; 自动化流程&#xff1a; ● 抖音普通号评论对接语聚AI&#xff08;点击可一…...

pyqt5-快捷键QShortcut

import sys from PyQt5.QtWidgets import * from PyQt5.QtCore import * from PyQt5.QtGui import *""" 下面示例揭示了&#xff0c;当关键字绑定的控件出现的时候&#xff0c;快捷键才管用&#xff0c; 绑定的控件没有出现的时候快捷键无效 """…...

匿名函数( lambda 表达式)

在 C 中&#xff0c;匿名函数也被称为 lambda 表达式。C11 引入了 lambda 表达式&#xff0c;使得在需要函数对象&#xff08;函数符&#xff09;的地方可以使用匿名函数来代替。 lambda 表达式的基本语法如下&#xff1a; [capture list] (parameter list) -> return typ…...

基于SSM的汽车维修管理系统——LW模板

摘要 随着人们生活水平的不断提高&#xff0c;私家车的数量正在逐年攀升。这带动了汽车维修行业的发展。越来越多的汽车维修厂如雨后春笋般涌现。同时&#xff0c;维修厂的业务操作产生了庞大的数据&#xff0c;这给汽车维修厂工作人员的数据管理提出了新的要求&#xff0c;他们…...

Ceph的纠删码特性 EC(Erasure Code)代码流程

从GitHub上Clone Ceph项目&#xff0c;我是基于(ceph version 12.2.11 luminous 版本)的代码来分析的 一、EC&#xff08;Erasure Code&#xff09;是什么&#xff1f; Ceph的纠删码特性EC&#xff1a;将写入的数据分成N份原始数据&#xff0c;通过这N份原始数据计算出M份效验…...

盘点那些国际知名黑客(上篇)

电影中的黑客仅靠一部电脑就可以窃取别人的信息&#xff0c;利用自己高超的技术让公司甚至国家都胆战心惊。“黑客”原指热心于计算机技术、水平高超的电脑高手&#xff0c;但逐渐区分为黑帽、白帽、灰帽。这些术语源自美国流行文化的老式西部电影&#xff0c;其中主角戴白色或…...

机器学习基础12-Pipeline实现自动化流程处理(基于印第安糖尿病Pima 数据集)

有一些标准的流程可以实现对机器学习问题的自动化处理&#xff0c;在 scikitlearn 中通过Pipeline来定义和自动化运行这些流程。本节就将介绍如何通过Pipeline实现自动化流程处理。 如何通过Pipeline来最小化数据缺失。如何构建数据准备和生成模型的Pipeline。如何构建特征选择…...

Ansible学习笔记15

1、roles&#xff1a;&#xff08;难点&#xff09; roles介绍&#xff1a; roles&#xff08;角色&#xff09;&#xff1a;就是通过分别将variables&#xff0c;tasks及handlers等放置于单独的目录中&#xff0c;并可以便捷地调用他们的一种机制。 假设我们要写一个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"…...

opencv利用freetype写中文

1、ubuntu需要安装环境 sudo apt install libfreetype6-dev libharfbuzz-dev 2、opencv和opencv_contril编译&#xff0c;勾选下面按钮 3、下载字体库 https://github.com/StellarCN/scp_zh/tree/master/fonts 下载SimHei.ttf 4、代码 #include <opencv2/freetype.hpp…...

面试回答第十五问:类加载

类加载简介 类加载是JVM能够识别类信息&#xff0c;分配空间创建对象实例的基础。 类加载一共分为五阶段&#xff0c;分别是加载&#xff0c;验证&#xff0c;准备&#xff0c;解析&#xff0c;初始化五阶段。这不是顺序&#xff0c;不是加载之后才能验证&#xff0c;验证之后才…...

UE4蓝图插件推荐:这5款免费工具让你的开发效率翻倍(附详细使用技巧)

UE4蓝图插件推荐&#xff1a;5款免费工具解锁高效开发新姿势 第一次在虚幻引擎中搭建复杂交互逻辑时&#xff0c;我盯着满屏纠缠的连线发呆了半小时——这简直比解毛线团还令人崩溃。直到发现那些藏在社区角落的蓝图效率神器&#xff0c;才意识到原来80%的重复劳动都可以交给插…...

BilibiliDown:三分钟掌握跨平台B站视频批量下载终极方案

BilibiliDown&#xff1a;三分钟掌握跨平台B站视频批量下载终极方案 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mirrors…...

手把手教你排查PCIe设备异常:从`Malformed TLP`错误看MPS/MRRS配置

深度解析PCIe设备异常&#xff1a;从Malformed TLP错误到MPS/MRRS调优实战 当你在嵌入式Linux系统中接入一块高性能FPGA加速卡时&#xff0c;突然在系统日志中发现Malformed TLP错误&#xff0c;设备性能骤降甚至完全无法工作——这种场景对任何嵌入式开发者都不陌生。PCIe总线…...

STK 实战:多类型传感器(Sensor)协同探测与可见性分析

1. STK与多传感器协同探测基础 STK&#xff08;Systems Tool Kit&#xff09;是航天领域广泛使用的仿真分析软件&#xff0c;它能够对复杂系统中的传感器进行高精度建模。在实际应用中&#xff0c;单个传感器往往难以满足全方位监测需求&#xff0c;这时就需要多传感器协同工作…...

虚拟机异常断电后卡在initramfs阶段?手把手教你用xfs_repair修复系统分区

1. 虚拟机异常断电的常见后果 最近在调试一个基于KVM的虚拟机集群时&#xff0c;遇到了一个典型问题&#xff1a;机房突然断电后&#xff0c;几台虚拟机重启时卡在了initramfs阶段&#xff0c;屏幕上不断刷出"generating /run/initramfs/rdsosreport.txt"的提示。这种…...

Linux文件IO编程实战:用GEC6818开发板上的C程序玩转open/read/write/lseek

Linux文件IO编程实战&#xff1a;GEC6818开发板上的C语言文件操作精要 在嵌入式Linux开发中&#xff0c;文件操作是最基础也是最重要的技能之一。GEC6818作为一款广泛应用于教学和工业场景的开发板&#xff0c;其Linux系统编程能力尤为关键。本文将带你深入理解Linux"一切…...

百川2-13B模型辅助C语言学习:从语法答疑到代码调试

百川2-13B模型辅助C语言学习&#xff1a;从语法答疑到代码调试 学C语言&#xff0c;尤其是刚入门那会儿&#xff0c;你是不是也经历过这样的时刻&#xff1f;面对指针、内存这些概念&#xff0c;感觉像在看天书&#xff1b;自己写的代码编译报错&#xff0c;满屏的红色提示让人…...

Phi-4-reasoning-vision-15B高算力适配:双GPU显存占用监控与低并发稳定性验证

Phi-4-reasoning-vision-15B高算力适配&#xff1a;双GPU显存占用监控与低并发稳定性验证 1. 模型概述与技术背景 Phi-4-reasoning-vision-15B是微软推出的视觉多模态推理模型&#xff0c;专为复杂视觉理解任务设计。作为2026年发布的重要模型&#xff0c;它在图像理解、文档…...