FPGA数字信号处理领域
数字信号处理(Digital Signal Processing,DSP)。我们最初使用的系统都是模拟系统,比如第一代的移动通信系统,以及最初用的模拟电视,还是黑白的。随着数字时代的到来,很多模拟系统以及模拟产品都转向了数字化,手机上也弄了一个模拟接收器,开始转向第二代移动通信系统。数字系统相比于模拟系统有如下几大优点:(1) 抗干扰性强;
(2) 便于进行各种数字信号处理;
(3) 易于实现集成化;
(4) 经济效益超过模拟通信
(5) 传输与交换可结合起来,传输电话与传输数据也可以结合起来,成为一个统一体,有利于实现综合业务通信网;
(6) 便于多路复用;
3.1 数字处理系统模型
数字系统虽然有这些优点,但是我们实际传送过程中还都是模拟信号,包括最开始的信号来源,和最终传送发送出去的信号都是模拟信号。所以我们要进行数字处理,就必须采用两种器件将我们这个模拟世界和数字世界给连接起来,这两种器件分别是模数转换器 ADC和数模转换器 DAC。我们可以得到典型的数字信号处理的一个模型,如图 。
模数转化器 ADC 周期性的对输入的模拟信号采样,并做量化,其实 ADC 是由采样保持和量化编码器构成的。采样需要满足奈奎斯特采样定理,采样位宽数和采样速率决定了后期数字信号处理的精度。
采样得到的数字数据后,开始在做 DSP 处理了,应用不同,处理的算法和过程就不一样,目前数字信号可以干的事情可以列表如表 。
从表中可以看出,广泛的看几乎是采用数字的系统和产品应用里都涉及到数字信号的处理,包括表中还列出了前面我们讲到的通信领域和视频图像处理领域相关的应用,同时表中列出了通用领域的一些算法,这是数字信号处理较普遍性、较专对性的。
经过数字信号处理之后,得到的仍然是数字信号,数模转换器 DAC 将会对这些数字信号进行模拟化后发送出去,在通信过程中一般是在射频或是中频做这个处理。
3.2DSP 实现方式
讲到数字信号处理的实现方式很多人的第一反映就是数字信号处理器,就是我们这个硬件 DSP。没错它是一个专门做数字信号处理的,但是除此之外,其实还有几种做数字信号处理的方式,所以在本节最开始的时候就讲到大家要区分一下我们这里数字信号处理DSP和数字信号处理器 DSP,以免内心一直存在这么一个纠结的问题影响这一节的学习。
除了专用的硬件 DSP 外,通用微处理器、专用的 ASIC 硬件、还有专用的 FPGA 也可以做数字信号处理。我们来一一分析一下。
通用处理器
首先是通用微处理器,也可以称为中央处理器(CPU)或者微处理器(MPU),通过在处理器中运行适当的 DSP 算法可以执行 DSP 任务。特别是在近几年来很火的 GPU,这个专门做图像处理的处理器里,它内部采用很多个处理器并行操作,在数字图像的相关处理可谓相当的专业,在一些高端显卡里面一般都配置有 GPU。
ASIC 硬件
其次是专用的 ASIC 硬件,这一块主要是客户化的执行 DSP 任务的硬件实现,相对来说,实现的功能单一,只能实现实现定义好的功能。这一类的器件比如数字滤波器芯片、数码相机里的专用图像处理芯片等等。但是优点是功能经过全面的验证,并优化后,做成 ASIC化,运行非常稳定,速度也非常快。
专用的数字信号处理器(DSP处理器)
第三种就是专用的数字信号处理器,它是一种特殊的微处理器芯片,经过了专门的设计,执行 DSP 任务时比通用的微处理器要快更高效,同时也比专用 ASIC 更加灵活。那么它特殊在哪里呢?在我们上一小节列举的那些 DSP 算法中,有一个共同地方就是,需要大量的乘法和加法来完成,再怎么复杂的算法也都是有许许多多的这样的乘加来构成的。而乘法在硬件里用逻辑来搭建的话不管是面积上还是速度性能上都不是很理想,在通用的微处理器里,即使有硬件乘法器,数量也是有限,做其复杂算法来,速度性能上还是欠佳。于是硬件 DSP 这样拥有大量的乘加结构的处理器出现了,这就是它的特殊之处。
缺点:尽管是专门做数字信号处理的器件,但是它依然存在问题,针对它的开发依然是基于串行的任务队列的软件模式开发,效率和灵活性依然有限。
专用的 FPGA 硬件
第四种就是专用的 FPAG 硬件,刚才我们有讲到列举的那些 DSP 算法的一个共同特点是大量用到乘加操作,如果想要把 DSP 算法做好,确实是需要这些做这些乘加操作的硬件支持。细心的读者会发现,这里说的是专用的 FPGA 硬件,和之前在 FPGA 原理里提到的各种 FPGA 并没有很大的出路,只是在它们的基础上再添加了这些专用用来做 DSP 的乘加硬件,如图
专用来做DSP的硬件
用 FPGA 来做数字信号处理的好处在于,完全是硬件化并行化编程操作,可以在速度和面积之间的转变有很大的灵活性,在下一节里我们将通过一个例子来看看它的体现。
3.3FPGA 做数字信号处理优势
这里给出 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 芯片要便宜。
3.4 DSP 支持资源
各 FPGA 厂商对数字信号处理的资源支持还是比较强大的,这包括前面提到的在通信领域和图像处理领域提供的支持资源,有相关的 IP 核、相关的使用工具和一些参考设计方案,这里我们就不再重复,只是做一些补充。
页:
[1]