我是靠谱客的博主 冷傲芹菜,最近开发中收集的这篇文章主要介绍方寸知识篇 - 数字图像处理(四)- FPGA与图像处理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

随着图像分辨率大幅提升,和图像算法复杂度的推动,传统的串行处理器已经无法满足实时处理的需求了。因此多核处理器、GPU以及FPGA很快在实时图像处理领域得到了迅速的发展。FPGA通过每个功能建立单独的硬件来实现整个应用程序所需要的逻辑功能,这就使得FPGA很适合做图像处理,尤其是采用流水线来处理视频流。

现场可编程门阵列简称FPGA(Field Programmable Gate Array),是基于PAL、GAL、CPLD等可编程器件上发展起来的。PAL是 与阵列可编程或阵列固定,缺点就是采用熔丝工艺,只能做单次编程,并且输出是固定的无法编程----一旦芯片选定,那么输出结构将不会改变。GAL可重复编程,与PAL最大的区别就是输出结构可以由用户自己定义,缺点是结构简单且IO数量有限。CPLD是IO控制单元、宏单元和互联矩阵组成,它只有512个宏单元,大部分是组合逻辑,难以实现复杂的时序逻辑设计,并且功耗很大。

随着工艺的发展,FPGA登上了历史舞台,它是作为专用集成电路领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数量有限的缺点。FPGA内部资源丰富,时序电路和组合电路都非常丰富,且体积小功耗低,从数码设备到航空航天都能见到FPGA的身影。

FPGA是可编程的硅芯片,使用预建的逻辑块和可重新编程的布线资源,就能配置这些芯片来实现自定义的硬件功能。用户在软件中开发数字计算任务,并将它们编译成配置文件或比特流。其中,包含元器件相互连接的信息。此外,FPGA可完全重配置,当用户在重新编译不同的电路配置时,能够当即呈现全新的特性。

各行业纷纷采用FPGA是源于FPGA 融合了ASIC和基于处理器系统的最大优势。FPGA能够提供硬件定时的速度和稳定性,并且无需类似自定义ASIC设计的费用。与处理器不同的是,FPGA属于真正的并行,不同的处理操作无需竞争片上资源,每个独立的处理任务都配备了专用的芯片部分,能在不受其他逻辑块的影响下自主运作,因此添加更多的处理任务时,其他应用性能也不会受到影响。

FPGA的最大优势就是性能。利用硬件并行的优势,FPGA打破了顺序执行的模式,在每个时钟周期内完成更多的处理任务,超越了DSP的运算能力,并在硬件层面控制IO为满足应用需求提供了更快速的响应时间和专业化的功能。利用FPGA,可以测试验证某个功能或概念,无需经过定制ASIC需要的漫长的过程和时间。COTS硬件可提供连接至用户可编程FPGA芯片的不同类型的IO,更多软件的应用也降低了使用和学习的难度,并提供丰富的IP核来实现高级控制和数据处理。

软件提供了编程环境,FPGA电路是真正的编程硬执行过程,基于处理器的系统往往包含了多个抽象层,可在多个进程之间计划任务、共享资源。驱动层控制着硬件资源,而操作系统管理内存和处理器的带宽。对于任何给定的处理器内核,一次只能执行一次指令,且基于处理器的系统时刻面临着严格限时的任务互相占取的风险,而FPGA不使用操作系统,拥有真正的并行执行和专注于每一项任务的确定性硬件,可减少稳定性方面出现问题的可能性。通信协议的规范可能会改变,基于ASIC的接口可能会造成维护和向前兼容方面的困难,使用FPGA用户无需花费时间重新设计硬件或修改电路布局。

1985年xilinx推出了第一款真正意义上的FPGA ,此后不到十年的时间里,时钟频率从不到10MHz提高到了几百兆,大量功能强大的软件也应运而生,使得FPGA很快就占领了部分高端市场。

Altera:cyclone系列主要目标为低成本的应用,适用于简单的嵌入式系统的设计;Stratix系列结构类似于cyclone,又集成了DSP模块和大量存储模块,是目前最高端的FPGA系列之一;Arria系列用于对成本和功耗比较敏感的收发器和嵌入式应用,提供丰富的存储、逻辑、DSP模块和高速IO模块,定位中段。

Xilinx:Artix系列应用于低成本、功耗敏感型,如机器视觉以及低端无线回传;Kintex系列是无线通讯、显示器和video over IP解决方案;Virtex提供业界最佳的功耗比架构、DSP性能以及IO带宽,用于100G联网、雷达以及ASIC原型设计。

Lattice:主要应用通讯、计算机、工业、汽车、医药、军事的原始设备生产商,可提供全方位的解决方案。

Atmel和Actel接触不多,此处略过。

FPGA的开发流程是利用EDA开发软件和编程工具对FPGA进行开发的过程。总的来说,有两种方法:自上而下设计或自下而上设计。对于较大规模的设计,一般采用前者,首先进行模块分割,把模块分割成若干个子模块,然后再把二级模块分割成若干三级模块,依次逐级划分,直到可以直接使用基本模块和IP核为止。利用模块分割可以简化设计,提高程序的可读性、逻辑综合效率和程序的可移植性,从而便于理解设计所完成的功能。

设计定义:FPGA要完成的功能,以及外围器件的接口,包括接口信号规格、处理时钟频率、时序要求、管脚分配锁定等。

设计输入:所设计的电路或系统以开发软件要求的某种形式表示出来,并输入给EDA工具的过程,常用的就是硬件描述语言和硬件原理图输入两种方式。HDL设计方式是现今设计大规模数字集成电路的常用形式,除IEEE标准中VHDL与Verilog外,还有各自厂商推出的专用语言,如AHDL。HDL语言在状态机、控制逻辑、总线功能方面较强,使其描述的电路能在特定综合器作用下以及具体硬件单元较好的实现。原理图输入方式是一种最直接的描述方式,比较直观、接口简洁、功能明确,但是效率比较低,不宜维护,更关键的是不容易移植。目前的设计是语言为主,原理图为辅。

功能仿真:前仿真,是在编译之前对用户所涉及的电路进行逻辑验证,此时的仿真没有延迟,仅对初步的功能进行检测。仿真前要先利用波形编辑器和HDL等建立波形文件和测试向量,仿真结果将生成报告文件和输出波形,从中观察各个节点的波形信号的变化,若发现错误就返回修改逻辑设计。

逻辑综合:综合就是针对给定的电路实现功能和实现此电路的约束条件,例如速度、功耗、成本以及电路类型,通过计算机进行优化处理,获得一个能满足上述要求的电路设计方案。被综合的文件是HDL文件,综合和依据是逻辑设计的描述和各种约束条件。综合的结果则是一个硬件电路的实现方案,该方案必须同时满足预期的功能和约束条件,满足的条件可能有多个,综合器将产生一个最优的或接近最优的结果,因此,综合的过程也就是设计目标的优化过程。

布局布线:又称“实现”,可理解为利用实现工具把逻辑映射到目标器件物理结构的资源中,决定逻辑的最佳布局,选择逻辑与输出功能连接的布线通道进行连线,并产生相应文件。实现的核心处理是FPGA片内的布局布线,其他的步骤还包括转换、映射以及产生配置文件。布局是指映射去除定义的逻辑和输入/输出模块,并把他们分配到FPGA的物理位置,一般基于最小分割、模拟退火和一般的受力方向张弛等来完成;布线是指利用自动布线软件使用布线资源选择路径完成所有的逻辑连接。最新的设计实现工具是时序驱动的,在器件的布局布线器件对整个信号通道执行时序分析。

后仿真:不仅要保证逻辑上的正确,而且还要再加入了器件的物理延迟特性的前提下保证正确的时序关系。

静态时序分析:映射后需要对一个设计的实际功能块的延时和估计的布线延时进行时序分析;而在布局布线后,也要对实际布局布线的功能块延时和实际布线延时进行静态时序分析。

下载和调试:将实现完成后形成的文件下载到FPGA中,FPGA支持IEEE的JTAG标准,因此,使用芯片上的JTAG接口是最常用的下载方式。

最后

以上就是冷傲芹菜为你收集整理的方寸知识篇 - 数字图像处理(四)- FPGA与图像处理的全部内容,希望文章能够帮你解决方寸知识篇 - 数字图像处理(四)- FPGA与图像处理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(70)

评论列表共有 0 条评论

立即
投稿
返回
顶部