




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
为了使PWM音频达到相当好的质量,PWM的载波频率应该至少12倍于信号的带宽,而且定时器的分辨率即占空比的间隔时间应该有16位。由于载波频率的需求,传统PWM音频电路曾经被用于窄带音频,比如超重低音。但是,利用目前的高速处理器,就可以扩展到更宽的音频谱。PWM流必须经过低通滤波,以去除高频载波。这通常是用驱动扬声器的放大器电路来完成。D类放大器已经被成功地用于这种结构。当不需要放大时,一个低通滤波器就足以用作输出级。在一些低成本应用中,声音的品质不是那么重要,就可以把PWM流与扬声器直接相连。在这样的系统中,扬声器纸盆的机械惯性充当了滤除载波频率的低通滤波器。音频转换器的简要背景音频ADC完成A/D转换可以有许多种方法。一个传统的方法是逐次逼近的方案,该方案使用一个比较器对模拟输入信号与一连串中间D/A转换输出之间的比较结果进行检测,然后得到最后的结果。但目前的大多数ADC都是转换器。这种转换器不是使用逐次逼近的方法来产生很高的分辨率,而是使用了1位的ADC。为了对这个减少了的量化等级数进行补偿,这些转换器在比NYQUIST频率高得多的频率下进行过采样操作。把这些过采样的1位样点流转换成一个较低速率、较高分辨率的样点流是使用这些转换器内部的数字滤波模块完成的,目的是为了适应传统PCM流的处理。例如,一个16位441KHZ的ADC可以用64倍的过采样率,产生一个速率为28224MHZ的1位样点流。然后用一个数字抽取滤波器把这个超级采样的样点流转换成一个速率等于441KHZ的16位样点流。由于对模拟信号的过采样操作,ADC放宽了对用来限制输入信号带宽的模拟低通滤波器的性能要求。这些转换器还具有将输出噪声分布在比传统转换器更宽的频谱内的优点。正如图3B中的框图所指出的,AD1871ADC与BLACKFIN处理器可无缝连接。电路的模拟部分被简化了,因为在这个讨论中只有数字信号才是重要的。AD1871的过采样率由外部晶振提供。图中的处理器有2个串行端口SPORT和一个SPI端口,用于连接AD1871。被配置成I2S模式的SPORT是与AD1871进行数据连接的端口,而SPI端口用作控制连接。I2S协议是由PHILIPSNXP半导体为音频信号的数字传输而开发的一个标准。该标准使音频设备制造商所生产的器件可以相互兼容。确切地说,I2S是一种用于传输立体声数据的3线串行接口。正如图4A中所示,它规定了位时钟中、数据线下和左右同步线上,而左右同步线用来选择当前正在传送的数据帧是左声道的还是右声道的。从本质上讲,I2S是一个带有两个活动声道的时分复用TDM串行流。TDM是一种通过一条物理链路传输超过一个声道比如左声道与右声道的方法。在AD1871电路结构中,当对SPORT时钟RSCLK和帧同步RFS线进行驱动时,ADC可以降低它从外部晶振接收到的12288MHZ采样率。该配置保证了采样和数据传输是同步的。SPI接口,如图4B所示,是MOTOROLA为了使主处理器可以与各种数字器件相连而设计的。这个在SPI主设备与SPI从设备之间的接口由一条时钟线SCK、两条数据线MOSI和MISO和一条从设备选择SPISEL线组成。其中一条数据线由主设备MOSI驱动,而另一条由从设备MISO驱动。在图3B的例子中,处理器的SPI端口是无缝地与AD1871的SPI模块相连接的。图4A数据信号由AD1871使用I2S协议进行传送BSPI3线接口用于控制AD1871带有独立SPI控制端口的音频编解码器允许主处理器在运行中修改ADC的设置。除了静音和增益控制外,其中一个确实很有用的ADC如AD1871设置是对节电模式的设置能力。对于电池供电的应用来说,这通常是一个本质功能。DAC与编解码器将音频DAC与主处理器相连接与我们才讨论过的与ADC连接的过程完全一样。在一个同时使用ADC和DAC的系统中,同一个支持双向传输的串行端口可以同时连接这两者。但是,如果您正在考虑全双工音频,那么您最好采用一个可以同时完成模拟数字转换和数字模拟转换的单芯片音频编解码器。这样的编解码器的一个很好的选择是ADI公司的AD1836,它有三个立体声DAC和两个立体声ADC,而且可以通过多种串行协议进行通讯,包括I2S。在本文中,我们讲到了将音频转换器与嵌入式处理器进行连接的一些基本内容。在本文的第二部分,我们将叙述音频数据在存储和处理时的格式。我们将特别回顾在选择数据字长时的折衷方法。这是很重要的,因为这决定了所用的数据类型,而且,如果希望获得的质量等级太高而某个特定器件达不到的时候,也可以避免选择某些处理器。此外,数据字长的选择有助于在增加动态范围和增加处理能力之间的折衷选择。音频功能在嵌入式媒体处理中起到关键性的作用。虽然一般来说,音频处理比视频处理占用较少的处理能力,但它们具有相同的重要性。本文共包括三个部分,在第一部分中,我们将探讨数据是如何从各种音频转换器DAC和ADC传送给嵌入式处理器的。在这之后,我们将探讨一些经常用于连接音频转换器的外围接口标准。模拟与数字音频信号之间的转换采样所有的A/D与D/A转换都应该遵循SHANNONNYQUIST采样定理。简言之,该定理规定了模拟信号在被采样时的速率NYQUIST采样率必需等于或超过它的带宽NYQUIST频率的两倍,以便可以在最后的D/A转换中进行信号重构。低于NYQUIST采样率的采样将产生混叠,而这种混叠是那些超过NYQUIST频率的频率分量在低频区的镜像叠影。如果我们取一个带宽限制在020KHZ范围内的音频信号,并在220KHZ40KHZ频率下进行采样,那么NYQUIST定理就能确保我们可以对原来的信号进行完美重构而不会有任何信号损失。但是,对这个020KHZ带限信号用任何低于40KHZ的采样率进行采样时,将会由于混叠而产生失真。图1示出低于NYQUIST采样率的采样如何使信号表示得不正确。在40KHZ频率下采样时,20KHZ的信号被正确地表示图1A。但是,同样的20KHZ正弦波,当在30KHZ频率下采样时,实际上看起来像是原始正弦波在一个较低频率上的混叠图1B。图1A用40KHZ对20KHZ信号进行采样可以正确地捕捉到原始信号。B用30KHZ对同一个20KHZ信号进行采样所捕捉到的是一个被混叠了的信号低频重影然而,没有一个实际系统是正好用两倍的NYQUIST频率进行采样的。例如,把一个信号限制于一个指定的频带内要使用模拟低通滤波器,但这些滤波器从来就不是理想滤波器。因此,通常用来还原音乐的最低采样率是441KHZ而不是40KHZ,而且许多高质量系统是用48KHZ进行采样的,以捕捉到020KHZ范围内更加逼真的听觉感受。由于语音信号只是我们可以听到的频率范围的一小部分,所以4KHZ以下的能量就足以使还原的语音信号能够听得懂。基于这个原因,电话应用中通常只使用8KHZ的采样率24KHZ。表1归纳了我们所熟悉的一些系统的采样率。表1常用的采样率PCM输出音频信号最常用的数字表示是PCM脉冲编码调制信号。在这种表示中,对每个采样周期内的一个模拟幅度用一个数字量进行编码。这样得到的数字波形是一个用来近似地表示输入模拟波形的由抽取点组成的矢量。所有A/D转换器的分辨率都是有限的,所以转换器引入了数字音频系统所固有的量化噪声。图2示出模拟正弦波的PCM表示图2A,它是用一个理想的A/D转换器进行转换的,图中的量化操作显现为一种“阶梯效应”图2B。您可以看到,较低的分辨率导致了对原始波形的较差的表示图3C。图2A一个模拟信号B数字化之后的PCM信号C使用较少位数精度进行数字化之后的PCM信号作为一个数值例子,让我们假设用一个24位A/D转换器对一个模拟信号进行采样,而这个模拟信号的范围从2828V到2828V5656的峰峰值。24位有22416777216个量化等级。因此,有效的电压分辨率为5656V/167772163371NV。在本文的第二部分,我们将看到编解码器的分辨率如何影响音频系统的动态范围。PWM输出脉宽调制PWM是不同于PCM的另一种调制方法,它可以直接驱动输出电路而无需任何DAC的帮助。这在需要低成本的解决方案时特别有用。在PCM中,对每个采样周期内的幅度进行一次编码,而在PWM信号中描述幅度的是占空比。PWM信号可以通过通用I/O引脚产生,或者可以用许多处理器中都有的专用PWM定时器来直接驱动。为了使PWM音频达到相当好的质量,PWM的载波频率应该至少12倍于信号的带宽,而且定时器的分辨率即占空比的间隔时间应该有16位。由于载波频率的需求,传统PWM音频电路曾经被用于窄带音频,比如超重低音。但是,利用目前的高速处理器,就可以扩展到更宽的音频谱。PWM流必须经过低通滤波,以去除高频载波。这通常是用驱动扬声器的放大器电路来完成。D类放大器已经被成功地用于这种结构。当不需要放大时,一个低通滤波器就足以用作输出级。在一些低成本应用中,声音的品质不是那么重要,就可以把PWM流与扬声器直接相连。在这样的系统中,扬声器纸盆的机械惯性充当了滤除载波频率的低通滤波器。音频转换器的简要背景音频ADC完成A/D转换可以有许多种方法。一个传统的方法是逐次逼近的方案,该方案使用一个比较器对模拟输入信号与一连串中间D/A转换输出之间的比较结果进行检测,然后得到最后的结果。但目前的大多数ADC都是转换器。这种转换器不是使用逐次逼近的方法来产生很高的分辨率,而是使用了1位的ADC。为了对这个减少了的量化等级数进行补偿,这些转换器在比NYQUIST频率高得多的频率下进行过采样操作。把这些过采样的1位样点流转换成一个较低速率、较高分辨率的样点流是使用这些转换器内部的数字滤波模块完成的,目的是为了适应传统PCM流的处理。例如,一个16位441KHZ的ADC可以用64倍的过采样率,产生一个速率为28224MHZ的1位样点流。然后用一个数字抽取滤波器把这个超级采样的样点流转换成一个速率等于441KHZ的16位样点流。由于对模拟信号的过采样操作,ADC放宽了对用来限制输入信号带宽的模拟低通滤波器的性能要求。这些转换器还具有将输出噪声分布在比传统转换器更宽的频谱内的优点。在本文的第2部分中,我们首先对动态范围与精度的论题进行探讨,然后再对数据格式进行深入的讨论,因为数据格式是与音频处理相关的。动态范围与精度您也许已经见到过DB的规范,这是在目前市场上用于描述各种产品而随处可见的。表1列出了几种产品以及它们的信号质量,以DB为单位。表1各种音频系统的动态范围比较那么,这些数值究竟代表什么意思呢让我们从确定一些定义来开始。把图1作为对下列基本规范的“仿制数据手册CHEATSHEET”的一个参考信号。图1音频系统中一些重要术语之间的关系人耳的动态范围最响的信号电平与最安静的信号电平之比值约为120DB。在存在噪声的系统中,动态范围被描述为最大信号电平与本底噪声之间的比值。这就是说,动态范围DB峰值电平DB本底噪声DB纯模拟系统中的本底噪声来自系统本身的电特性。建立在模拟系统之上的数字音频信号也会从ADC和DAC中获得噪声,而且还可以从模拟数据采样过程所产生的量化误差中获得噪声。另一个重要的术语是信噪比SNR。在模拟系统中,信噪比的意思是标称信号对于本底噪声的比值,其中的“线电平”是标称工作电平。对于专业设备,标称电平通常为1228VRMS,这可以转换为4DBU。余量是标称电平与峰值电平之间的差值,峰值电平指开始出现信号失真的电平。数字系统中的SNR定义有些不同,即SNR被定义为动态范围。现在,有了对动态范围的理解,我们就可以开始讨论动态范围在实际中有怎样的用途。不做冗长的推导,让我们简单介绍一下什么是6DB规则。这个规则是动态范围与计算字长之间关系的关键所在。完整的公式推导在式1中说明,但这里使用了简便的表示法,意思是每增加1位的精度,将使动态范围增加6DB。应该注意,这个6DB的规则并没有考虑到音频设计中的模拟子系统,所以,输入端和输出端的传感器的非理想性必须另作考虑。动态范围DB602N1766NDB其中N精度位的数目式16DB规则“6DB规则”指出,使用的位数越多,我们能获得的系统质量就越高。但实际上,只有少数几个真正可用的选择。大多数适用于嵌入式媒体处理的器件有三种字长形式16位、24位和32位。表2总结了这三类处理器的动态范围。由于我们在讨论6DB规则,所以有必要对语音信号中常被使用的非线性量化方法进行一些讨论。电话质量的线性PCM编码需要12位的精度。但是,我们的耳朵对小幅度时音频信号变化的敏感度要超过大幅度时。因此,电话通讯中使用的线性PCM采样方法的位数用得过多。A律和律压扩标准中使用的对数量化只用8位精度就达到了12位PCM的质量等级。为了使我们的生活更加方便,有些处理器厂商已经把A律和律压扩标准做到了器件的串行端口中。这使处理器内核无需进行对数计算。在查看了表2之后,我们又一次回想起人耳的动态范围约为120DB。基于这个原因,16位数据的表示法对于高质量音频并不是太合适。因此,供应商引入了对16位系统的动态范围进行扩展的24位处理器。这些24位的系统从C编译器的观点来看有点不标准,所以近年来的许多音频设计使用了32位的处理方式。表2各种定点架构的动态范围选择了正确的处理器并不是万事大吉了,因为一个音频系统的总体质量是由“达到最低质量”元件的等级所决定的。除了处理器外,整个系统还包括像话筒和扬声器这样的一些模拟元件,以及使信号在模拟域与数字域之间变换的转换器。模拟域超出了这次讨论的范围,而音频转换器则涉及到了数字域。假设您想使用AD1871进行音频采样。转换器的数据手册中把它解释为一个24位的转换器,但它的动态范围不是144DB,而是105DB。其原因是转换器不是一个完美无缺的系统,而供应商只给出了有用的动态范围。如果您真的想把AD1871与24位处理器相连,那么,您整个系统的SNR将为105DB。本底噪声将达到144DB105DB39DB。图2是这一情况的图形表示。但是,在数字音频系统中还有另一个组件我们还没有讨论处理器内核内的计算。图2一个音频系统的SNR由最弱元件的SNR构成使数据经过处理器的计算单元会潜在地引入各种误差。其中之一就是量化误差。这种误差可以在一连串导致数据值被截取或舍入向上或向下的计算中产生。例如,一个16位处理器可以对一个16位数据组成的向量作加法,然后把结果存入一个扩展字长的累加器中。但是,当累加器中的数值最终被写入到一个16位数据寄存器中时,其中的有些位会被截去。可以看一下图3,看看计算误差是如何影响到实际系统的。对于一个理想的16位A/D转换器图3A,信噪比应该是16X696DB。如果不存在量化误差,那么,16位计算足以把SNR保持在96DB。而24位和32位系统将分别把8位和16位置于本底噪声以下的动态范围中。从本质上看,这些额外的数位是被浪费掉了。图3A在一个理想的16位96DBSNR系统中,不同字长计算时的额外数位的分配,其中忽略了量化误差B在一个理想的16位96DBSNR系统中,不同字长计算时的额外数位的分配,其中存在量化误差但是,所有的数字音频系统都确实要引入舍入和截取误差。如果我们可以量化这个误差,如确定为18DB或3位,那么很清楚,16位计算对于维持96DB的系统SNR是不够的图3B。解释这一点的另一个方法是,有效的本底噪声被提高了18DB,因而总的SNR就降低到了96DB18DB78DB。这导致的结论是,在本底噪声以下的额外数位有助于解决量化中出现的麻烦事。音频的数据格式在处理器内部有许多种表示数据的方法。音频处理中使用的两种主要的处理器架构是定点与浮点。定点处理器设计成用整数和分数进行运算,通常固有地支持16位、24位或32位的数据。浮点处理器提供非常好的性能,并固有地支持32位或64位的浮点数据类型。但是,这些浮点处理器一般成本比较高,而且比相应的定点处理器消耗更多的功率,因而所有的实际系统都必须在质量和工程成本之间寻求一个平衡点。定点运算执行定点运算的处理器一般对信号使用二进制补码表示法。定点格式可以表示有符号和无符号的整数和分数。在定点处理器上使用有符号的分数格式是在数字信号处理中最常见的。整数与分数格式的差别在于二进制小数点的位置。对于整数,二进制小数点是在最低位的右边;而对于分数,通常把它们的小数点放在符号位的右边。图4A表示了整数和分数的格式。图4A分数和整数格式BIEEE75432位单精度浮点格式虽然定点的规则简化了数值操作且节省了存储器,但同时也存在动态范围和精度之间的折衷。在需要保持很高分辨率同时又要使用很大数值范围的应用场合,就需要使用一个可以根据幅值和指数而移动的小数点。浮点运算使用浮点格式就可以在同一系统中表示非常大和非常小的数。浮点数与有理数的科学记数法十分相似。浮点数是用尾数和指数描述的。尾数确定了精度,而指数控制着动态范围。有一个标准管理着数字机的浮点运算。这个标准叫IEEE754图4A;对于32位浮点数可以归纳如下。第31位MSB,最高位是符号位,它的0表示符号为正,它的1表示符号为负。从第30位到第23位是表示2的整次幂的指数字段EXP_FIELD,并以127作为偏移量。最后,第22位到第0位表示分数的尾数MANTISSA。隐藏位一般是指在小数点的左边有一个1。32位的IEEE浮点数的值可以用下面的等式来表示1SIGN_BIT1MANTISSA2EXP_FIELD127依靠8位的指数和23位的尾数,IEEE754达到了动态范围和精度之间的一个平衡。而且,IEEE浮点库还包括了对于像、0和NAN不是一个数等附加特性的支持表3表示了从常用的浮点和定点类型可以达到的最小数和最大数。表3各种数据格式的动态范围比较在16位架构上的仿真正如我们在前面解释的,16位处理并不能为高质量音频提供足够的SNR,但这并不是说您不应该选用16位处理器作为音频系统。例如,用一个32位的浮点机把一个算法编写成保持原来32位数据风格的程序,是比较容易的;但一个16位处理器也可以通过非常低成本的仿真而保持32位的完整性。图5示出了为一个嵌入式算法选择数据类型时的一些可能性。图5根据一个应用的目标,可以有许多满足系统要求的数据类型在本节的余下部分,我们将描述如何在一个16位定点机上实现浮点和32位扩展精度定点格式的功能。在定点处理器上的浮点仿真在大多数的16位定点处理器上,IEEE754浮点功能是通过对C/C或汇编语言的库调用而提供的。这些库通过使用定点乘法和运算逻辑而对所需的浮点处理进行仿真。这种仿真需要额外的处理周期来完成。但是,当定点处理器内核的时钟进入到500MHZ1GHZ范围时,在对符合IEEE754的浮点运算进行仿真时需要的额外周期就不那么重要了。为了降低计算的复杂性,可以使用IEEE754的“松弛”版。这意味着浮点运算并不会实现像和NAN这样一些标准特性。进一步的优化是对尾数和指数使用一个更为本机化的类型。举个例子,ADI公司的BLACKFIN定点处理器架构具有一个由十六个16位寄存器组成的寄存器组,而这个寄存器组还可以用作8个32位寄存器。在这种配置下,每个内核时钟周期内,两个32位寄存器可以从全部四个半寄存器中获取操作数。为了优化BLACKFIN寄存器组的使用,可以使用一种双字的格式。这样,一个字16位被保留为用作指数,而另一个字16位则保留给分数部分使用。双精度定点仿真对于许多应用来说,16位定点数据是不够的,如果使用仿真浮点运算,那么计算量又太大。对于这些应用,扩展精度定点仿真也许足以满足系统的要求。使用一个高速定点处理器将确保有效降低所需的计算量。音频中两个常用的扩展精度格式是32位和31位定点表示。32位精确仿真32位运算是16位定点处理器的自然软件扩展。对于那些32位寄存器组可以分为16位的两半而进行存取的处理器来说,这些两半的寄存器可以合起来用于表示一个32位定点数。BLACKFIN处理器的硬件结构允许单周期32位加法和减法。例如,当一个32位乘法采用累加器迭代操作时像我们马上就要讨论的有些算法情况,我们只需用3个周期内的16位乘法就可以实现32位的精度。两个32位操作数R0和R1中的每一个都可以分为16位的两半R0H/R0L和R1H/R1L。从图6可以容易看出,在使用16位乘法器的指令组合来对32位乘法R0XR1进行仿真的时候,我们需要下面的操作图6用16位操作实现32位乘法四次16位乘法以产生四个32位结果1R1LXR0L2R1LXR0H3R1HXR0L4R1HXR0H三次操作以保持在最终结果中数位的位置符号表示右移。由于我们正在做分数运算,所以结果是163131X131262,带有一个冗余的符号位。在大多数情况下,这个结果可以截取到131,以便装入一个32位数据寄存器。因此,乘法的结果应该以符号位为基准,或者以最大有效位为基准。这样,那些最右边的最小有效位可以在截取操作时被安全地截取。1R1LXR0L322R1LXR0H163R1HXR0L16一个32位乘法的最终表达式R1LXR0L32R1LXR0H16R1HXR0L16R1HXR0H在BLACKFIN架构中,这些指令可以并行执行,以实现在三个周期内完成一次32位乘法的有效速率。31位精确仿真我们可以把最高要求31位精度的定点乘法的计算时间减少到2个周期。这个技术对于音频系统特别有吸引力,因为音频系统通常至少需要24位的表示法,而32位的精度也许有些过分。使用“6DB规则”,31位的精确仿真仍然保持了大约186DB的动态范围,即使考虑了所有的量化效应之后,这仍然具有非常充裕的余量。从图6中的乘法框图来看,很明显的一点是,最小有效位半字的乘法R1LXR0L对最终的结果没有太大的贡献。事实上,如果把结果截取为131,那么这个乘法只影响到131结果的最低位。对于许多应用来说,由这一位引起的精度损失是通过减少一次16位乘法、一次移位和一次加法以加速32位乘法而得以平衡的。31位精确乘法的表达式为R1LXR0HR1HXR0L16R1HXR0H在BLACKFIN架构中,这些指令可以并行执行,以实现在2个周期内完成一次32位乘法的有效速率。所以,这是音频处理中使用的数据格式的“独家新闻”。在本文的最后一部分,我们将介绍开发嵌入式音频应用的一些策略,主要聚焦于常用算法中的数据传输和构建模块。音频处理方法把数据送入处理器内核把数据送入处理器内核有若干种方法。例如,一个前台程序可以对一个串行端口中的新数据进行查询,但这种传输方式在嵌入式媒体处理器中是不常用的,因为这样会降低内核的使用效率。取而代之的是,与音频编解码器相连的处理器一般用DMA引擎把数据从编解码器的数据口就像一个串行口传输到处理器可用的某个存储空间内。这种数据传输是以后台操作的形式完成的,无需处理器内核的干预。这里的唯一开销是对DMA序列的设定以及一旦数据缓冲区的接收或发送完成之后对中断的处理。块处理与样点处理样点处理和块处理是处理数字音频数据的两种方法。在样点处理的方法中,只要样点一出现,处理器就处理这个样点。这里,在每个采样周期中的处理操作都会有开销。许多滤波器例如FIR和职,将在下面叙述是以这样的方式实现的,因为这种方式的有效延迟会很低。另一方面,块处理是基于把数据传送到处理函数之前对特定长度缓冲区的填充。有些滤波器是用块处理的方式实现的,因为这样比样点处理方式更有效。其中要说明的一点是,块处理方法大大降低了针对每个样点而调用处理函数的开销。而且,许多嵌入式处理器包含有多个ALU,可以对数据块进行并行操作。另外,有些算法从本质上就是以块处理方式操作的。其中一个大家都知道的是傅里叶变换以及它的实际使用的形式,快速傅里叶变换,或称FFT,这种算法接受时域数据块或空间域SPATIAL数据块,然后把这些数据块转换成频域表示。双缓冲在基于块处理的、使用DMA与处理器内核进行数据传递的系统中,必须使用双缓冲,以便在DMA传输和内核之间进行仲裁。这会使处理器内核和独立于内核的DMA引擎不会在同一时间对同一数据进行访问,避免了数据一致性问题。为了对长度为N的缓冲区的处理进行改进,我们简单地产生一个长度为2N的缓冲区。对于一个双向系统,必须生成两个长度为2XN的缓冲区。如图1A中所示,处理器内核正在对IN1缓冲区进行处理,并将结果存储在OUT1缓冲区中,而DMA引擎此时正在对IN0进行填充,并对OUT0中的数据进行传输。图1B指出,一旦DMA引擎完成对双缓冲区左边半个的操作之后,它就开始把数据传送到IN1,并从OUT1取出数据,而此时的处理器内核正在处理来自IN0的数据,并填入OUT0。这个结构有时被称为“乒乓式缓冲”,因为处理器内核来回地对双缓冲区的左右两半进行处理。应该注意到,在实时系统中,串行端口的DMA或者另一个与音频采样率关联的外围设备的DMA规定了时序预算。基于这个原因,块处理算法必须以这样的方式进行优化,即它的执行时间要小于或等于DMA对双缓冲区的一半进行数据传输所需的时间。二维2DDMA当数据通过像12S这样的数据链路传输时,它可能会包含多个声道。这些声道可以全是从一条数据线上通过复用而输入到同一个串行端口的。在这种情况下,2DDMA可以用来对数据进行解交织,从而使每个声道在存储器中是线性分配的。可以看一下图2中对这一安排的图示,其中从左右声道来的样点被解复用到两个分离的数据块。这个自动数据安排对于那些使用块处理的系统是极其有用的。基本操作在音频处理中有三个基本的构建模块。它们是加法操作、乘法操作和时间延迟。许多更复杂的效果和算法可以用这三个基本操作来实现。加法器显而易见的任务是把两个信号加在一起。乘法可以用于提升或衰减音频信号。在大多数媒体处理器中,可以在一个周期内完成多次加法和乘法操作。时间延迟有点复杂。在许多音频算法中,当前的输出取决于过去的输入和输出之间的组合。这种延迟效果是用延迟线实现的,而延迟线只不过是存储器中用来保持过去数据的一个数组。例如,一个回声算法可以对每个声道保持500MS的输入样点。当前输出值可以用当前输入值与稍微衰减的过去样点进行相加后得到。如果音频系统是基于样点的处理方式,那么程序设计人员可以简单地跟踪一个输入指针和一个输出指针两者之间保持500MS样点数的间隔,并且在每个采样周期之后增加这两个指针。由于延迟线要被随后的各组数据重复使用,因此,输入与输出指针将需要从延迟线缓冲区的末尾回绕到起始端。在C/C中,这通常是在指针增加操作时再附带一次求模操作完成的。对于那些支持循环缓冲见图3的处理器来说,这个回绕操作不会增加额外的处理周期。在这种情况下,一个循环缓冲区的起始位置和长度必须只提供一次。在处理过程中,软件增加或减少缓冲区内的当前指针,如果当前的指针位置落在缓冲区的两个端点之外,则由硬件使指针回绕到缓冲区的起始位置。如果没有这个自动地址生成功能,程序设计人员就必须手动地保持对缓冲区的跟踪,因而会浪费有用的处理周期。由延迟线结构可以引出一个叫做梳状滤波器的重要的音频构建模块,它本质上是一个带有反馈的延迟线。当多个梳状滤波器同时使用的时候,可以产生混响的效果。信号的产生在有些音频系统中,也许需要合成一个信号例如一个正弦波。泰勒级数的函数近似法可以用来对三角函数进行仿真。而且,用均匀随机数发生器来产生白噪声是很容易的。但是,合成的方法也许并不适用于某些给定系统的处理预算。在具有充足存储器的定点系统中,您可以取而代之地使用查表的方法来产生信号。这样做的负面效应是占用了宝贵的存储器资源,所以,作为一种折衷考虑,可以使用混合的方法。例如,您可以存储一个不太精细的函数表,以节省通过2DDMA进行采样解交织存储器。在运行时,准确的值可以用插值的方法从函数表中提取出来,而插值操作比使用泰勒级数近似法的时间大为缩短。这个混合法提供了在计算时间和存储器资源之间的很好的平衡。滤波与算法音频系统中的数字滤波器被用来对指定频带内的声波能量进行衰减或提升。最常用的滤波器形式是高通、低通、带通和点阻。这些滤波器中的任何一种都有两种实现方法。这就是有限冲击响应FIR滤波器和无限冲击响应IIR滤波器,而且它们组成了搭建像参数均衡器和图示均衡器那样更复杂的滤波算法的构建模块。有限冲击响应FIR滤波器FIR滤波器的输出是由当前和过去输入之和确定的,而其中的每个输入样点首先要乘以一个滤波器系数。示于图4A中的FIR求和公式,也叫做“卷积”,是信号处理中最重要的操作之一。在这个公式的句法中,X为输入向量,Y为输出向量,而H为滤波器系数。图4
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年江苏省苏州市常熟市三年级数学第一学期期末学业水平测试试题含解析
- 2024年宜昌市枝江市三年级数学第一学期期末达标检测模拟试题含解析
- 2024年龙南县三上数学期末达标检测试题含解析
- 分析化学考试总复习课件
- 2025年卫生资格考试重点复习试题及答案
- 2025年卫生资格考试核心知识点及试题与答案
- 行政管理专科试题与答案的重点关联
- 行政管理的全球化趋势及试题及答案
- 2025年经济法考试经验分享试题及答案
- 执业药师行业规范及试题及答案
- (完整版)医疗器械网络交易服务第三方平台质量管理文件
- 中国动漫发展史课件
- 【履职清单】2023新版安全生产责任体系重点岗位履职清单
- 门式起重机、架桥机作业前安全隐患排查表
- 安全阀在线校验及延期校验
- GB/T 19670-2023机械安全防止意外启动
- GB/T 9128.1-2023钢制管法兰用金属环垫第1部分:PN系列
- 幼儿园新生入园报名登记表
- 中国临床戒烟指南的指导意义
- (完整版)EORTC生命质量测定量表QLQ-C30(V3.0)
- 医院医学影像科CT-MR室诊疗指南和操作规范2022版
评论
0/150
提交评论