基于FPGA的数字图像处理【1.5】

第2章 FPGA与图像处理

        随着图像分辨率的大幅度提升和图像处理算法复杂度的提升,传统的串行处理器已经越来越不能满足图像处理的实时性需求。多核结构处理、GPU处理及FPGA很快在实时性图像处理领域得到了迅速的发展。本章将重点介绍基于FPGA的实时性图像处理。
        FPGA通过为每个功能建立单独的硬件来实现整个应用程序所需要的逻辑功能,这使其很适合图像处理,尤其是采用流水线来处理视频流,可以在同一个时刻进行多个算法的处理。
        本章首先介绍FPGA及其生产厂家和开发流程,其次介绍基于FPGA的图像处理流程。

2.1 使用FPGA的原因

        现 场 可 编 程 门 阵 列 简 称 FPGA ( Field Programmable GateArray),它是在PAL (Programmable Array Logic)、GAL(GenericArray Logic)、CPLD(Complex Programmable Logic Device)等可编程器件的基础上一步一步地发展起来的。PAL是与阵列可编程或阵列固定,它的缺点是:采用熔丝工艺,只能一次编程,并且它的输出是固定的,不能编程;也就是说芯片一旦选定,输出结构将不可改变。GAL是在PAL的基础上发展起来的,可以重复编程。与PAL的最大区别是输出结构可以由用户自己定义。但它结构简单,I/O数目有限。CPLD是在GAL的基础上发展起来的。它主要由输入/输出控制单元、宏单元和互连矩阵等组成。随着电子市场对功能要求的不断提高,CPLD越来越不能满足市场的需求,它最大只有512个宏单元,大部分是组合逻辑,难以实现复杂的时序逻辑设计,并且功耗很大。随着工艺的发展,FPGA登上了历史舞台并成为主角,它作为专用集成电路领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。它内部资源丰富,不管是时序逻辑还是组合逻辑都很多,FPGA拥有的丰富资源与较小的体积使其能非常好的应对复杂的高速控制应用和数据处理,小到MP3,大到地球卫星、飞船都有其用武之地。
        在最高层面上,FPGA是可重新编程的硅芯片。使用预建的逻辑块和可重新编程布线资源,用户无须再使用电路试验板或烙铁,就能配置这些芯片来实现自定义硬件功能。用户在软件中开发数字计算任务,并将它们编译成配置文件或比特流。其中,包含元器件相互连接的信息。此外,FPGA可完全重配置,当用户在重新编译不同的电路配置时,能够当即呈现全新的特性。过去,只有熟知数字硬件设计的工程师懂得使用FPGA技术。然而,高层次设计工具的兴起正在改变FPGA编程的方式,其中的新兴技术能够将图形化程序框图,甚至直接将代码转换成数字硬件电路。

        各行各业纷纷采用FPGA芯片是源于FPGA融合了ASIC和基于处理器的系统的最大优势。FPGA能够提供硬件定时的速度和稳定性,并且无需类似自定制ASIC设计的巨额前期费用的大规模投入。可重新编程的硅芯片的灵活性与在基于处理器的系统上运行的软件相当,但它并不受可用处理器内核数量的限制。与处理器不同的是,FPGA属于真正的并行实行,因此不同的处理操作无须竞争相同的资源。每个独立的处理任务都配有专用的芯片部分,能在不受其他逻辑块的影响下自主运作。因此,添加更多处理任务时,其他应用性能也不会受到影响。

2.2 FPGA技术优势

1.性能
        利用硬件并行的优势,FPGA打破了顺序执行的模式,在每个时钟周期内完成更多的处理任务,超越了数字信号处理器(DSP)的运算能力。著名的分析与基准测试公司BDTI,发布基准表明在某些应用方面,FPGA每美元的处理能力是DSP解决方案的多倍。在硬件层面控制输入和输出(I/O)为满足应用需求提供了更快速的响应时间和专业化的功能。
2.上市时间
        尽管上市的限制条件越来越多,FPGA技术仍提供了灵活性和快速原型的能力。用户可以测试一个想法或概念,并在硬件中完成验证,而无需经过自定制ASIC设计漫长的制造过程。由此用户就可在数小时内完成逐步的修改并进行FPGA设计迭代,省去了几周的时间。现成商用(COTS)硬件可提供连接至用户可编程FPGA芯片的不同类型的I/O。高层次软件工具的日益普及降低了学习难度与抽象层,并经常提供有用的IP核(预置功能)来实现高级控制与信号处理。                        3.成本
        定制ASIC设计的非经常性工程(NRE)费用远远超过基于FPGA的硬件解决方案所产生的费用。ASIC设计初期的巨大投资表明了原始设备制造商每年需要运输数千种芯片,但更多的最终用户需要的是自定义硬件功能,从而实现数十至数百种系统的开发。可编程芯片的特性意味着用户可以节省制造成本以及漫长的交货组装时间。系统的需求时时都会发生改变,但改变FPGA设计所产生的成本相对ASCI的巨额费用来说是微不足道的。
4.稳定性
        软件工具提供了编程环境,FPGA电路是真正的编程“硬”执行过程。基于处理器的系统往往包含了多个抽象层,可在多个进程之间计划任务、共享资源。驱动层控制着硬件资源,而操作系统管理内存和处理器的带宽。对于任何给定的处理器内核,一次只能执行一个指令,且基于处理器的系统时刻面临着严格限时的任务相互取占的风险。而FPGA不使用操作系统,拥有真正的并行执行和专注于每一项任务的确定性硬件,可减少稳定性方面出现问题的可能。                                         5.长期维护
        正如上文所提到的,FPGA芯片是现场可编程的,无须重新设计ASIC所涉及的时间与费用投入。例如,数字通信协议包含了可随时间改变的规范,而基于ASIC的接口可能会造成维护和向前兼容方面的困难。可重新配置的FPGA芯片能够适应未来需要做出的修改。随着产品或系统成熟起来,用户无须花费时间重新设计硬件或修改电路板布局就能增强功能。

2.3 FPGA的发展历程

        1985年Xilinx公司推出了世界上第一款真正意义上的FPGA,还推出这款FPGA包括两个器件和支持布局布线的设计工具。FPGA发展异常迅速,在不到十年时间里,时钟频率从不到10MHz提高到几百兆赫兹。设计工艺已经达到亚微米级别,FPGA芯片的规模也从几千门增加到两万多等效门。大量功能强大且易用的软件也相继推出,使得FPGA很快占领了电子设计领域的部分高端市场。

        20世纪80年代推出的FPGA可以说是Intel公司于1971年推出第一款上用微处理器的延续。那个时期,典型的微处理器包含微处理器、存储器和一些特殊功能的中小规模(MSI/SSI)器件。为追求更小的尺寸、更低的成本、更快的错误恢复能力、更高的可靠性,以及更快更易于使用的圆形,集成电路的设计者都意识到一定会有一种器件要取代当时的中小规模电路。这个概念的第一次尝试是Signetics公司于1975年推出的83S100FPLA(现场可编程逻辑阵列)。这款可编程器件实际上是一款PLA结构的器件,它由16个输入、48个乘积项与阵列、8个输出、48个乘积项或阵列组成,通过Ni-Cr(镍-铬)熔丝实现连续的断开或连接。这种方法在以降低速度和增加功耗为代价的前提下,给设计师以较大的设计空间。但是这款可编程器件需要人工来设置熔丝的断开或连接,因此实现起来比较复杂而且容易出错。
        鉴于当时各种可编程器件的速度和结构都不能很好地满足市场的需求,Xilinx于1985年推出2000系列的FPGA。该系列的FPGA是世界上第一块基于SRAM的可编程FPGA,包括两个器件:第一个器件是由8×8的可配置逻辑模块(Configurable Logic Block,CLB)构成,并在芯片的周边提供了58个输入/输出接口模块(I/O Block,IOB);第二个器件由10×10的CLB构成,并提供了74个IOB单元。自Xilinx推出第一款FPGA后,其他公司也相继推出各自的FPGA产品。例如,Actel推出很有特色的反熔丝(Anti-fused)FPGA。FPGA市场内的竞争越来越激烈,IC的制造商都意识到必须提供更强大的新产品才能占据市场。在这种形势下,Xilinx在第二年就推出了它的第二款3000系列的FPGA,距第一款FPGA的推出只有两年的时间。也就是在那时,AT&T成功地获得了这款FPGA器件的设计使用权,并开始提供自己的芯片和开发系统,即AT&T3000系列FPGA。                   自从第二代FPGA问世以来,各种FPGA的应用层出不穷,电路复杂度也相继上升。这时,Xilinx就开始研制第三代FPGA产品,AT&T也开始研发自己的下一代FPGA。Xilinx的第三代FPGA产品于1991年问世,而AT&T的下一代产品直到1992年才研制成功。认识到FPGA市场潜在的广阔空间,很多IC厂家和软件厂商也开始向FPGA进军,包括一些著名的公司,例如Actel、AMD、Altera、Intel、Mento Graphics、TI及Toshiba。
        目前,比较典型的FPGA器件是Xilinx公司的FPGA器件系列和Altera公司的FPGA器件系列,它们开发较早,占据了较大的PLD/FPGA市场份额。截至目前,在欧洲用Xilinx的人多,在亚太用Altera的人多,在美国则是平分秋色。全球PLD/FPGA产品60%以上是由这两家公司提供的。可预见,这两家公司将共同决定可编程逻辑器件技术的发展方 向 。 当 然 其 他 众 多 IC 厂 商 也 在 不 断 为 技 术 的 进 步 而 努 力 , 如Lattice、Vantis、Actel、Quicklogic、Luccent等。

2.4 FPGA生产厂家及其产品

        目前世界上有十几家生产FPGA的公司,最大的三家是Altera、Xilinx和Lattice,其中Altera、Xilinx占据了主流的市场份额。

2.4.1 Altera

        总部位于硅谷的Altera公司的产品广泛的应用于通信、网络、云计算和存储、工业、汽车和国防等领域。Altera公司目前提供了3个系列的FPGA:低成本Cyclone系列,中间的Arria系列和高性能的Stratix系列。
Altera产品线分类如表2-1~表2-3所示:

        (1)Cyclone系列:该系列的目标为低成本的应用,适用于简单地嵌入式系统的设计。目前该系列最新的Cyclone V FPGA实现了业界最低的系统成本和功耗,其性能水平使得该器件系列成为理想选择。与前几代产品相比,总功耗降低了40%,具有高效的逻辑集成功能,提供集成收发器型号及具有基于ARM® 的硬核处理器系统(HPS)的SoCFPGA型号,满足了目前大批量应用对最低功耗、最低成本及最优性能水平的需求。
        (2)Stratix系列:该系列的FPGA的基本结构类似于Cyclone系列,但是Stratix系列包含了DSP模块和一个较大的存储器模块。该系列的最新一代为Stratix 10,它具有高性能四核64位ARMCortex-A53处理器系统、浮点数字信号处理(DSP)模块和高性能FPGA,它架构是目前最高端的FPGA之一。Stratix 10 FPGA和SoC在性能、功效系统、密度和集成方面具有突破性优势和革命性的HyperFlex内核架构,采用Intel 14 nm三栅极工艺而开发的,Stratix 10器件的内核性能是前一代高性能 FPGA的2倍,功耗降低了70%。                                                                                    (3)Arria系列:该系列设计用于对成本和功耗敏感的收发器及嵌入式应用。Arria FPGA系列提供丰富的存储器、逻辑和数字信号处理(DSP)模块资源和主要用于串行通信的增强高速收发模块。最新的Arria 10系列在性能上超越了前一代高端FPGA,而功耗低于前一代中端FPGA,重塑了中端器件。

2.4.2 Xilinx

        成立于1984年的Xilinx是最大的可编程逻辑器件供应商之一,Xilinx提供综合而全面的多节点产品系列充分满足各种应用需求。Xilinx的FPGA分为两大类,侧重低成本应用、容量中等,性能可以满足一般的逻辑设计要求的Spartan系列;侧重于高性能应用、容量大、性能能满足各类高端应用的Virtex系列。在新一代产品中,即第七代产品中Spartex系列被Artix和Kintex系列所取代。Xilinx产品线分类如表2-4所示。

        (1)Artix系列:该系列的Artix-7器件在28nm节点实现最低功耗和成本,并且经过优化为您的设计在低成本FPGA中实现最佳性能/功耗组合、AMS集成,以及收发器线速。此系列为各类成本功耗敏感型应用提供最大价值,包括软件定义无线电、机器视觉照相及低端无线回传。
        (2)Kintex系列:该系列的Kintex-7 FPGA能在28nm节点实现最佳成本/性能/功耗平衡,同时提供高DSP率、高性价比封装,并支持PCIe Gen3和10 Gigabit Ethernet等主流标准。Kintex-7系列是3G/4G无线、平板显示器和video over IP解决方案等应用的理想选择。
        (3)Virtex系列:该系列的Virtex-7 FPGA针对28nm系统性能与集成进行了优化,提供了业界最佳的功耗性能比架构、DSP性能及I/O带宽。该系列可用于10~100G联网、便携式雷达及ASIC原型设计等各种应用。

  • 25
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是AST2600 SoC的高层次框图: ``` +-----------+ | PCIe x8 | +-----------+ | AXI | +-----------+ | DDR4/3 | +-----------+ | AXI | +------------------+ +-----------+ | USB 2.0/3.0/3.1 |------| PCIe x4 | +------------------+ +-----------+ | AXI | +------------------+ +-----------+ | SATA 3.0/3.2 | | PCIe x8 | +------------------+ +-----------+ | AXI | +------------------+ +-----------+ | 10GbE MAC/PHY |------| PCIe x8 | +------------------+ +-----------+ | AXI | +------------------+ +-----------+ | SPI/I2C | | PCIe x4 | +------------------+ +-----------+ | AXI | +------------------+ +-----------+ | SD/eMMC | | PCIe x4 | +------------------+ +-----------+ | AXI | +------------------+ +-----------+ | CAN |------| PCIe x4 | +------------------+ +-----------+ | AXI | +------------------+ +-----------+ | UART | | PCIe x2 | +------------------+ +-----------+ | AXI | +------------------+ +-----------+ | GPIO | | PCIe x2 | +------------------+ +-----------+ ``` AST2600 SoC包含以下主要组件: - 处理器子系统:包括两个ARM Cortex-A35处理器核心,以及L2高速缓存。 - 系统控制器:包括各种控制器,例如PCIe、USB、SATA、DDR、SD/eMMC等。 - 硬件安全模块:包括加密引擎、密钥管理和认证模块等,用于保障系统安全。 - 网络和存储:包括10GbE MAC/PHY、SATA 3.0/3.2、USB 2.0/3.0/3.1等接口,用于网络和存储数据传输。 - 其他接口:包括SPI/I2C、CAN、UART、GPIO等接口,用于与外部设备进行通信和控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BinaryStarXin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值