目录
1. 视频图像处理领域
1.1 视频编解码
1.2 目标识别
1.3 图像处理支持资源
2. 通信领域
2.1 有线通信
2.2 无线通信
2.3 通信领域支持资源
3. 数字信号处理领域
3.1 数字处理系统模型
3.2 DSP 实现方式
通用处理器
ASIC 硬件
专用的数字信号处理器(DSP处理器)
专用的 FPGA 硬件
3.3 FPGA 做数字信号处理优势
3.4 DSP 支持资源
4. 嵌入式领域
4.1 创新挑战和机遇
4.2 嵌入式支持资源
FPGA最初的应用领域也是传统的应用领域,通信领域,但随着信息产业以及微电子计数发展,FPGA的应用范围编辑航空航天、汽车、医疗、工业控制等领域。下面分4个方面介绍FPGA的用武之地:视频图像处理、通信领域、数字信号处理和其他领域。
视频图像处理是多媒体领域中的热门技术,因为视频图像处理的数据量越来越大。基于这些大量的数据,可分为视频编解码和目标识别两大类。
从信道容量的角度考虑数据的传输带宽,如何压缩图像,采用什么样的算法这已经相对成熟了。目前正在用的视频编解码器可达数百种,但常用的还是少数的几种。
MPEG-2
比如很老但还在使用的MPEG-2,主要在广播信号和DVD电影的编码,但随着高清DVD逐渐采用VC-1和H.264标准进行编码,MPEG-2将会逐渐退出。
MPEG-4
相比MPEG-2,其能够以更低的速率传送视频却能保持相同的图像质量。它引入了描述 自然的或合成的 对象等新概念来构成场景,并支持与用户交互,给视频节目制作商提供了改进的内容保护功能 和创建更加灵活、可复制内容的能力。 这些优点,使得其在卫星视频传送中得到应用
H.264
它其实是MPEG-4中的第十部分,主要以其高数据压缩率和质量走红。
还有一些JPEG等算法。
目标识别主要是用来提取相关信息,比如图像边缘提取,同时结合一些人工智能等方面的知识,相对来讲还是处在一个快速发展阶段,也是图像处理研究的前沿内容。特别是移动目标检测与跟踪技术,在机器人视觉、交通检测、机器导航等民用领域有着广泛的应用,同时在火力拦截、导弹电视和红外视频制导等军用方面也发挥着重要作用。
可识别的视频行为包括:突然入侵、移动物体、运动路径、遗留物体、指向接近、移走物体六大类检测。试想,动车上应该也有这个视频检测技术,车头应该有检测多少范围内前方是否有车,当然这肯定不是视野范围内的,采用雷达或者其他测试手段,但是肯定有视频图像传输与识别制导系统。原因在这不探讨,但是既然发生这样撞尾事件,我们视频检测制导还是很有我们需要提高的,去努力的方向。
有人会说,不是有专门的视频处理的 DSP 器件么,DSP 书上说它做这个,FPGA 也说做这个,到底是哪个做这个?似乎有自夸自的嫌疑。对传统上是采用 DSP 处理,只是我们列出的这些算法和应用对计算性能的要求已远远超出了传统 DSP 处理器的能力,即使采用高端的 DSP 处理器,如果将 DSP 单做这部分的话完全可以,只是在应用中,DSP 做的事情比较多,这个时候,FPGA 就可以用做协处理器来承担性能关键的处理工作。与标准 DSP处理器相比,FPGA 构造的并行计算特性可支持更高的采样速率和更大的数据吞吐能力,同时计算功效也更高。
(1)相关 IP 核
Xilinx 和 ALTERA 都提供了视频 IP 核组,以供视频监控系统中快速设计、仿真、实现和验证视频和图像处理算法,其中包括设计用的基本基元和高级算法。
CCM、CFA插值、DPC :
Gamma Corrction
等等大量的IP资源。
通信领域是FPGA应用的传统领域,到如今依旧是FPGA应用的热点和研究的热点。这里将无线通信领域分为有线通信领域和无线通信领域介绍。
有线通信,顾名思义,借助线缆传送信号的通信方式。线缆可以指金属导线、光纤等有形媒质传送方式,信号可以指代声音、文字、图像等。
有线通信的另一种叫法称为固网,我们不得不信,很多的进步都是基于很大的欲望的驱使,仅仅是十几年的时间,全世界被一个叫做 Internet 的网络给连接在一起。这是有线通信的最大的一个实例,当然有线通信的例子还有一些我们近的不能再近的有线网络,最开始用的座机电话网、有线电视网等。
在维持和保证这些网络给我们带来幸福的同时,无形的促进了一些技术的产生,这些技术包括交换机、路由器、防火墙、网关、数据收发器、高速接口等网络设备方面的开发技术。有线网络的网络质量的好坏直接决定于这些网络设备的提高。当年做网络设备的中兴、华为如今已成为该领域的巨头。
有线网络如火如荼的发展了十几年至到今天,虽说已经比较成熟了,但是依然充满着很大的挑战和冲击,电信市场正在经历新一轮整合发展时期,因特网的需求仍在继续推动产业的创新。目前,家庭视频和高级商业服务业务的快速发展对全球电信网络的带宽提出了更大挑战。这一挑战始于网络接入边缘,并直接延伸到城域网络和核心网络。为了响应上述需求,运营商正在追求包括 40Gbps SONET(OC-768 和 OTU3)以及 40G 以太网在内的更高的端口速率。越来越多的运营商更是将瞄准了 100G 端口速率。
商业和经济的发展形势迫切地需要可扩展的、灵活的且高效益成本的技术解决方案,从而满足电信行业不断变化的需求和标准。为了跟上这些变化,加快超高带宽系统的部署,有线通信设备生产商正在从传统的专用集成电路(ASIC)和成品(ASSP)芯片转向可编程硬件平台和 IP 解决方案。
在有线通信的基础上,人们在传输上为了更方便、距离更远,无线通信技术在以前所未有的速度向前发展。无线发报机、BB 机、大哥大这些是我们很早用到的无线通信终端,再到我们现在用的 2G、3G 手机,已足以见得发展的迅猛。
无线系统通信类型可以分为微波通信系统、无线电寻呼系统、蜂窝移动通信、无绳电话系统、集群无线通信系统、卫星通信系统、分组无线网等典型的通信系统,其中的移动通信技术在世界范围内获得了广泛的应用,从以模拟系统为特征的第一代带今天的一征缴频分复用接入(OFDMA)和多输入多输出(MIMO 为特征的第四代数字系统。其表现就是要求越来越高的数据服务。
为了满足我们这个高数据率服务,有越来越大的宽带无线接入技术的需求就浮出了,这就需要一个可以提供较宽处理带宽,具有产品及时面市优势的灵活硬件平台来满足这些需求。
以上是从大方向的角度考虑 FPGA 在今后无线通信应用领域的需求,细化起来,就设计到标准通信系统的各个模块了,标准的数字通信系统框图如图:
从图上分析 信源、 信宿、信源编译码,信道编译码一般属于基带,调制又可分为一级调制、二级调制,通过一级调制将信号调制到中频,通过二级调制将信号调制到可以发射出去的射频。
在基带中涉及到如何将信号采样,信号量化;各种信源编码译码算法,比如简单点 等长码,复杂点 变长码,典型的是这个 Huffman 编码,图像数据的话比如 MEPG-2、H.264等; 信道编码译码算法,又分为线性分组码、循环码、BCH 码、卷积码、纠正码、交织、 Turbo 码等等,典型 OFDM 系统中的用到这个 RS 码、LDPC 码、交织等信道相关处理。
调制过程中用到这个调制方式,采用调频、调幅还是调相,调相是采用是 QPSK 还是用更高效率的 NQPSK,以及相对应的解调处理;还包括这些功能模块在系统中数据传送的通信接口协议,低速的有这个典型的 RS232,高速的有这个百兆千兆以太网、吉比特 IO、光纤等等。从上面的分析看出,FPGA 在通信系统领域的使用说虽是传统依然热是有道理的,还需大家的力量融入其中。
由于 FPGA 在通信领域的成熟性,不管是哪个 FPGA 厂商,对通信领域的 IP 的支持都是很丰富的,这里将 Xilinx 和 altera 两大巨头在这个领域的支持的 IP 陈列出来,具体的 IP核功能描述大家可以参看附录 XX。
Altera IP:略
数字信号处理(Digital Signal Processing,DSP)。我们最初使用的系统都是模拟系统,比如第一代的移动通信系统,以及最初用的模拟电视,还是黑白的。随着数字时代的到来,很多模拟系统以及模拟产品都转向了数字化,手机上也弄了一个模拟接收器,开始转向第二代移动通信系统。数字系统相比于模拟系统有如下几大优点:
(1) 抗干扰性强;
(2) 便于进行各种数字信号处理;
(3) 易于实现集成化;
(4) 经济效益超过模拟通信
(5) 传输与交换可结合起来,传输电话与传输数据也可以结合起来,成为一个统一体,有利于实现综合业务通信网;
(6) 便于多路复用;
数字系统虽然有这些优点,但是我们实际传送过程中还都是模拟信号,包括最开始的信号来源,和最终传送发送出去的信号都是模拟信号。所以我们要进行数字处理,就必须采用两种器件将我们这个模拟世界和数字世界给连接起来,这两种器件分别是模数转换器 ADC和数模转换器 DAC。我们可以得到典型的数字信号处理的一个模型,如图 。
模数转化器 ADC 周期性的对输入的模拟信号采样,并做量化,其实 ADC 是由采样保持和量化编码器构成的。采样需要满足奈奎斯特采样定理,采样位宽数和采样速率决定了后期数字信号处理的精度。
采样得到的数字数据后,开始在做 DSP 处理了,应用不同,处理的算法和过程就不一样,目前数字信号可以干的事情可以列表如表 。
从表中可以看出,广泛的看几乎是采用数字的系统和产品应用里都涉及到数字信号的处理,包括表中还列出了前面我们讲到的通信领域和视频图像处理领域相关的应用,同时表中列出了通用领域的一些算法,这是数字信号处理较普遍性、较专对性的。
经过数字信号处理之后,得到的仍然是数字信号,数模转换器 DAC 将会对这些数字信号进行模拟化后发送出去,在通信过程中一般是在射频或是中频做这个处理。
讲到数字信号处理的实现方式很多人的第一反映就是数字信号处理器,就是我们这个硬件 DSP。没错它是一个专门做数字信号处理的,但是除此之外,其实还有几种做数字信号处理的方式,所以在本节最开始的时候就讲到大家要区分一下我们这里数字信号处理DSP和数字信号处理器 DSP,以免内心一直存在这么一个纠结的问题影响这一节的学习。
除了专用的硬件 DSP 外,通用微处理器、专用的 ASIC 硬件、还有专用的 FPGA 也可以做数字信号处理。我们来一一分析一下。
首先是通用微处理器,也可以称为中央处理器(CPU)或者微处理器(MPU),通过在处理器中运行适当的 DSP 算法可以执行 DSP 任务。特别是在近几年来很火的 GPU,这个专门做图像处理的处理器里,它内部采用很多个处理器并行操作,在数字图像的相关处理可谓相当的专业,在一些高端显卡里面一般都配置有 GPU。
其次是专用的 ASIC 硬件,这一块主要是客户化的执行 DSP 任务的硬件实现,相对来说,实现的功能单一,只能实现实现定义好的功能。这一类的器件比如数字滤波器芯片、数码相机里的专用图像处理芯片等等。但是优点是功能经过全面的验证,并优化后,做成 ASIC化,运行非常稳定,速度也非常快。
第三种就是专用的数字信号处理器,它是一种特殊的微处理器芯片,经过了专门的设计,执行 DSP 任务时比通用的微处理器要快更高效,同时也比专用 ASIC 更加灵活。那么它特殊在哪里呢?在我们上一小节列举的那些 DSP 算法中,有一个共同地方就是,需要大量的乘法和加法来完成,再怎么复杂的算法也都是有许许多多的这样的乘加来构成的。而乘法在硬件里用逻辑来搭建的话不管是面积上还是速度性能上都不是很理想,在通用的微处理器里,即使有硬件乘法器,数量也是有限,做其复杂算法来,速度性能上还是欠佳。于是硬件 DSP 这样拥有大量的乘加结构的处理器出现了,这就是它的特殊之处。
缺点:尽管是专门做数字信号处理的器件,但是它依然存在问题,针对它的开发依然是基于串行的任务队列的软件模式开发,效率和灵活性依然有限。
第四种就是专用的 FPAG 硬件,刚才我们有讲到列举的那些 DSP 算法的一个共同特点是大量用到乘加操作,如果想要把 DSP 算法做好,确实是需要这些做这些乘加操作的硬件支持。细心的读者会发现,这里说的是专用的 FPGA 硬件,和之前在 FPGA 原理里提到的各种 FPGA 并没有很大的出路,只是在它们的基础上再添加了这些专用用来做 DSP 的乘加硬件,如图
用 FPGA 来做数字信号处理的好处在于,完全是硬件化并行化编程操作,可以在速度和面积之间的转变有很大的灵活性,在下一节里我们将通过一个例子来看看它的体现。
这里给出 DSP 处理的最基本的乘加例子,实现的算方表达式如下:
Y=(A1∗A2) +( A3∗A4)
采用 FPGA 的并行机制,假设乘法器都是并行操作,我们得到如下图实现的电路。从图上我们看到,这种方式执行的时间相当与一个乘法器和一个加法器实现的时间,速度非常快,但是他却消耗了两个乘法器和一个加法器。
由于 FPGA 的编程的灵活性,我们也可以采用 资源共享 的方式来得到一个 串行的实现电路
在图中可以看到,它消耗了两个二选一多路器、一个乘法器、一个加法器和一个触发器。虽然多了两个二选一多路器和一个触发器,但是这资源比乘法器的资源还是节约了不少。但是它的速度就降下来了,通过开关 Sel 来控制,先做 A1 和 A2 的乘法,结果在时钟驱动下保留在寄存器中,然后翻转 Sel,再做 A3 和 A4 的乘法,结果和上次运行的存放在寄存器中的结果做加法,在第二个时钟驱动下存储最终结果。这样共享用一个乘法器,速度相比第一种情况慢,好的地方就是节约了面积。但是需要提的是,即使是这样的共享式的实现速度也会比 DSP 专用芯片的软实现速度要快。
相比之下得出,采用专用的 FPGA 做 DSP,不但可以在速度和面积上灵活调节,至少实现速度还是比专用的DSP 要快一点。通常我们很多场合,专用DSP 的使用还是如日中天,一个原因是我们专用的 FPGA 的做 DSP 的资源还不是很富足,二个原因是专用 DSP 的开发采用的是软件式开发,而 FPGA 采用的是硬件开发,这对很多工程师来讲还是会选择前者的,第三个原因是这个成本问题,毕竟传统的专用的 DSP 芯片比专用的 FPGA 芯片要便宜。
各 FPGA 厂商对数字信号处理的资源支持还是比较强大的,这包括前面提到的在通信领域和图像处理领域提供的支持资源,有相关的 IP 核、相关的使用工具和一些参考设计方案,这里我们就不再重复,只是做一些补充。
传统的 控制系统 都是在 微处理器 的控制下执行各种控制和数据的处理应用,这些微处理器包括 单片机、ARM、PowerPC 等等。随着 FPGA 的使用普遍性,越来越多的系统 用 FPGA 作为高速数据接口 粘合以及做一些协同处理。出现了微处理器+FPGA 的片上系统的架构。
通常这样的架构是在单板上设计,如下图 所示的一个系统:
从图上看到,除了微处理器外还有 DSP 器件、FLASH 与 SDRAM 存储器。 系统安排 CPU 做整体的控制 ,FPGA 做一些接口逻辑粘合和一些信号的预处理, DSPs 做一个复杂的算法 , FLASH 和 SDRAM 分别作为程序存储和数据缓存。这样的系统安排在一块或者数块 PCB 板上,不仅调试难度大,而且系统维护也不是方便。关键的问题是电路板上如果有这么些器件的话,成本是一个问题,而且占用了相当的面积,增加了很多焊点,每一个焊点都是对电路的稳定性构成威胁。
于是,提出了一种 基于 FPGA 的片上系统的替代的方案 ,如图所示
在FPGA 内部集成了 CPU、DSP 以及各种接口控制模块,对有些存储量要求不大的系统甚至外部的FLASH 和 SDRAM 都集成了。这样做的思想会给带来带来哪些挑战和机遇呢?这是我们接下来需要探讨的问题。
传统的嵌入式开发完全是纯软件形式,而在 FPGA 平台上,首先要面对的是怎么去规划 FPGA,哪些是作为 CPU,如何实现?其实,系统中有硬件开发部分和软件开发部分,如何在设计的时候支持这种硬件开发语言和软件开发语言混合验证,以保证系统正常工作?当然这些问题在现在来讲已经解决了,但是我们能够带着这些问题来学习在后面的知识,这些问题在后面支持资源里都能够得到解答。
那么机遇在哪?刚才有提到,首先如果一个系统有如图似的需求的时候,采用FPGA 内嵌的方式占用的板级面积小,焊点少系统稳定,同时成本相比低,当然这里并不包括一些只需控制器做一些控制的系统和产品,如果将 FPGA 纯当一个控制器用的话,成本相对单片机、ARM 来说还是有些高,这也是 FPGA 开发的一个问题,但是低端的 FPGA 芯片也能支持嵌入式处理器,资源有限。当哪天 FPGA 价格能够等同于这些微处理器的时候,这些微处理器也将面临退役了。其实是它可以很灵活的配置硬件外设,用来做控制系统验证,对系统构架设计者来说,非常有用。最后是对一个工程师来讲,不但要会做硬件程序开发还得会软件开发,于公司来讲,更愿意招这样的全才。
基于 FPGA 的嵌入式的优点只有用的时候才能真正感受,同时,你也能感受其缺点。虽说在建好硬件平台的之后是软件开发,但是如果你是一个习惯于软件开发的工程师,相信这里的软件开发会让你的意志力得到很大的提高,这种方式软件开发编译过程比传统嵌入式开发要满很多,这是各厂家有待需要提高的。
(1)硬核与软核
硬核指的是一种专用的预定好的硬线逻辑块实现的内核,各好的理解就是直接将那位微处理器给放到 FPGA 芯片里。目前主流的 FPGA 厂商都会选择一个特定的处理器来实现硬核。如下表,开发者可以直接在相关开发平台上使用这些硬核。
软核与硬核不同,是将一组逻辑资源块配置成一个微处理器。同时,还提供了很多外围设备,比如定时器、中断控制器、各种内存控制器、各种通信接口驱动等软核,注意这里指代的软核包括以 RTL 级网表形式,也包括布局布线后的 LUT 级形式。
需要说明的是,相比于硬核,软核的速度要慢一些,这很好理解,但是软核更简单。在资源允许的情况下,我们可以配置多核,这个是硬核不行的,有多少个硬核你只能用几个。同样,主流的 FPGA 厂商也会做一个软核,如表 所示,其中 NIOS 是有 16 位和 32 位两种架构,分别支持 16 位和 32 位数据宽度,而 MicroBlaze 只有 32 位的架构,Q90C1XX 确是一个 9 位的微控制器。