本节将介绍数字信号处理技术的发展、数字信号处理算法的分类和数字信号处理实现的方法。
20世纪80年代,首次出现了专门用于数字信号处理的DSPs。随着半导体工艺的不断发展,DSPs的性能也在不断提高,价格不断降低。DSPs以其高可靠性和良好的可重复性,以及可编程性(注:此处是指使用高级语言对DSPs编程)已经在消费市场和工业市场中广泛地被使用。DSPs发展的趋势是结构多样化、集成单片化和用户化。此外,其开发工具功能更加完善,评价体系更全面、更专业。
近些年来,随着FPGA制造工艺的不断发展,它已经从传统的数字逻辑设计领域扩展到数字信号处理和嵌入式系统应用领域中,使得数字信号处理技术向着多元化实现的方向发展。
注 :图像处理单元(Graphic Processing Unit,GPU)也被用于实现数字信号处理,它不在本书所介绍的范围内。众所周知,在目前情况下,与FPGA相比,GPU存在着功耗大、设计成本高和设计实现较复杂等缺点。
数字信号处理技术主要应用于以下几个方面。
(1)数字音频:在20世纪80年代,DSP系统(如CD音频)对处理能力的要求并不高。数字信号处理主要用于实现从CD读取数据,然后通过数字模拟转换器(Digital to Analog Converter,DAC)输出。目前,CD音频系统已经与音效系统、录制功用等结合在一起,但是对处理能力的要求仍然很低。
(2)调制解调器:20世纪90年代,传真调制解调器开始被广泛应用。从1990年开始到2000年,调制解调器的数字传输速度从2400bps提高到57200bps。在调制解调器中,使用了最小均方误差(Least Mean Squares,LMS)的DSP算法。通过该算法,使消除回声和数据均衡成为可能,带宽受限的电话信道内使用多种信号传输方法,并且通过使用DSP来修正有可能在通道内出现的任何失真,这样数据传输速度就可以接近理论传输值。
(3)数字用户回路:在20世纪90年代的最后几年里,通过使用数字用户回路(Digital Subscriber Loops,DSL)技术,使得通过传统的电话线就可以把兆比特每秒的数据率带入千家万户。概括地说,DSL使用DSP技术和双绞线的高频特性。在提出高速数据通信的要求之前,大多数电话线的带宽被限制在300~3400Hz的范围内,但是限制了数据通信——语音带宽调制解调器。
(4)移动多媒体应用:移动多媒体应用允许客户通过电话会议进行交流(音频和视频),用一个手持的通信器传输文件(电子邮件/传真)。音频/视频的编码/压缩算法,以及DSP则要求非常高的处理能力。第三代移动通信 (3G)允许为手持无线设备(笔记本电脑和移动通信设备)提供高达2Mbps的数据率。为了实现这种高速率,传输到基站的数据和从基站得到的数据所要求的芯片速率为5Mbps。为了实现这种高速的数据传输,使用一个叫作码分多址(Code Division Multiple Access,CDMA)的调制方案。对脉冲形成、信道均衡、回声控制和语音压缩等技术采用DSP策略,将要求高性能的DSPs,其性能需要达到每秒百万级的指令运算速度。
(5)软件无线电的应用:理想的软件无线电(Software Radio,SR)接收机通过DSP直接从RF向下变频(典型值为吉赫兹),并且最初的实现将工作在IF频率(从吉赫兹混降到几兆赫兹),如图2.1所示。
图2.1 软件无线电结构
对于接收到的信号,在宽带模拟数字转换器(Analog to Digital Converter,ADC)采样之后完成所有的下变频/解调(称为零中频/零拍接收机)。与当前的第二代移动通信一样,所有的基带处理过程(回声对消、语音编码、均衡、解扩和信道编码)均在DSPs内完成。
对于第二代移动通信技术而言,一个理想的SR可以工作在800~900MHz的频谱范围内,并且可以通过简单修改DSPs内的软件代码来适应AMP、GSM、DAMP和CT2等。
下一代通用移动通信系统(Universal Mobile Telecommunications System,UMTS)遵循相互协作的国际标准,将成为SR方案的受益者。目前,多频带无线电(特别在美国)已经覆盖900MHz的全球移动通信系统(Global System for Mobile communication,GSM)和1300MHz的数字增强无绳通信系统(Digital Enhanced Cordless Telecommunications,DECT),只不过它是用分立元器件实现的,而不是用SR结构实现。
对于下一代5MHz带宽的CDMA而言,如果ADC使用4倍的带通采样,则要求高于20Mbps的采样频率和频宽范围高达2GHz的模拟前端,并要求至少18bit的分辨率。目前,满足这种要求的器件并不存在。DAC将要求输出20Mbps的采样值,其数据宽度达到18bit,并且将其输入到一个线性射频放大器中。
SR(包括算法工具箱)的观点是:对于手机或移动终端保存的每个标准,都有相应的软件支持。或者有一个包含不同算法的工具箱(QPSK和均衡器等),根据所使用的实际标准(GSM和W-CDMA等),通过选择正确的参数来调用这些算法。
还有空中下载的概念,通过移动终端可以将所需要的软件下载到移动终端的通用硬件平台上。然而,这仍然需要进一步的研究和完善。
数字信号处理算法主要包含以下几个方面。
(1)线性滤波:线性滤波主要用于从信号中去除高频背景噪声。线性滤波技术可用于任意一个应用中,前提条件是两个信号可以通过它们所占用的频带加以区分。
(2)信号变换:用于信号分量分析和信号检测等。通过将一个信号变换到不同的域中,读者可以更加方便地观察和分析一个信号。例如,变换到s域(拉普拉斯域)可以允许更直接地进行数学操作,而变换到频域则可以更容易地观察不同频率的信号分量。
(3)非线性信号增强/滤波:通过中值滤波去除脉冲噪声。在2D图像处理中,非线性滤波有着非常重要的应用。音频非线性滤波器用于处理脉冲噪声,因为该信号被一个脉冲所干扰。由于脉冲信号基本上包含了所有的频率分量,因此不能使用频率或相位识别滤波器。但可以使用一个中值滤波器,该滤波器把 N 个最近的采样排序,并将中间值选择出来。这样如果 N 个样本的持续时间比冲激噪声的时间长一些,幅度非常大的脉冲就可能被过滤掉。
(4)信号分析/解释/分类:用于心电图、语音识别和图像识别等。通过将一个已知的图案与输入信号进行比较来识别输入信号,并输出某些参数化的信息。
(5)压缩/编码:高保真音频、移动通信、视频会议和ECG信号压缩等。压缩是目前音频和电信业务中的一个重要领域。在高保真音频市场,CDROM已经被通过因特网购买的压缩格式的音乐产品(如MP3)所取代。对于电信应用而言,将语音编码后占用尽可能少的带宽,同时又保持了原有的信号质量。对于每一个新型移动设备,更强的DSP处理能力在允许位速率减小的同时,仍然保持了很好的信号质量,如减少信号的带宽和存储需求。
(6)记录/复原:例如,CD、CD-R和硬盘记录等,该过程和压缩过程相反,其目的是提取并恢复原始的信息。
对平台的选择取决于下面的因素:①所需要实现的功能;②处理性能的要求(速度和精度等);③可重复编程的能力;④生产成本;⑤可用的设计资源;⑥所需要的设计时间等。
有许多因素决定了用于指定用途的平台种类,通常在同一个系统设计中同时使用不同的平台(如DSP+FPGA的结构就是目前系统设计中经常使用的方法)。每个平台实现不同的功能,设计人员需要决定在不同的平台之间如何划分功能。当需要选择一个实现平台时,一个主要的考虑因素是要实现哪一个功能,在速度、精度、功耗和实现成本等方面,哪一个平台更能满足设计要求。
目前,用于实现数字信号处理的方法如下。
(1)专用集成电路(Application Specific Circuit,ASIC):ASIC为全定制数字(或者模数混合型)硬件,其优点主要有:①实现更加迅速和有效;②对于大批量生产,ASIC的成本相对较低。缺点有:①流片时间长;②设计过程复杂且昂贵;③由于不具备可重复编程的能力,因此缺乏灵活性。
(2)现场可编程门阵列(Field Programmable Gate Array,FPGA):FPGA内提供了大量可编程的逻辑资源、布线资源和I/O模块。近年来,为了将FPGA应用于数字信号处理领域中,在FPGA内也集成了大量专用的DSP切片。
(3)数字信号处理器(Digital Signal Processors,DSPs):DSPs是专门用于数字信号处理的处理器芯片,典型的有TI公司和ADI公司的数字信号处理器芯片,两者在性能、功耗和成本等方面各有千秋。
下面以一个长度为 N 的数字FIR滤波器的实现为例,说明不同实现方法所能达到的处理性能。
(1)使用DSPs。通过优化设计执行乘-累加(MAC)操作, N 个MAC操作中的每一个操作均需要按顺序执行,因此可达到的最高执行速度大约为 f clock / N ,其中 f clock 为DSPs的最高时钟频率(假定可以在单处理器周期内执行一个MAC操作)。
(2)使用ASIC或FPGA,可以全并行地实现滤波器操作,其优势就是可以同时执行 N 个MAC操作。对于同样的 f clock ,滤波器的实现速度可以快 N 倍。
(3)大多数DSPs提供了32位精度的累加器来存储MAC操作的结果。而对于ASIC与FPGA而言,它们理论上可以实现任意精度的操作,普通滤波器的数据宽度一般要求在10~16bit的范围内。显然,要达到更高的精度,则需要消耗更多的逻辑资源。
(4)如果所实现的系统要求具备可重复编程(注:这里是指软件可重复编程和硬件可重复编程)的能力时,就不能选择ASIC。当设计人员希望所设计的系统能符合最新的标准,或者只是简单地更新设计时,可通过修改运行在DSP上的程序和修改 FPGA芯片的内部实现结构来达到这个目的。