一站式电子元器件采购平台

华强商城公众号

一站式电子元器件采购平台

元器件移动商城,随时随地采购

华强商城M站

元器件移动商城,随时随地采购

半导体行业观察第一站!

芯八哥公众号

半导体行业观察第一站!

专注电子产业链,坚持深度原创

华强微电子公众号

专注电子产业链,
坚持深度原创

电子元器件原材料采购信息平台

华强电子网公众号

电子元器件原材料采购
信息平台

在编解码器应用中使用MAXQ3120具有比转码音频更多的功能

来源:analog 发布时间:2024-03-18

摘要: MAXQ3120微控制器与合适的DAC一起,可以作为PCM编解码器,具有比转码音频更多的功能。

音频编解码器是现代数字电话的基石。它是将可听语音转换为数字数据并再次转换为可听语音的组件。在本文中,使用MAXQ3120的A/D通道和外部DAC对标准μ -law和A-law格式的语音进行编码和解码。这就留下了大量的处理能力来执行其他与电信相关的功能,比如调用进程检测和生成、PCM帧和静默信道检测。

下载:

  • Codec_source.zip

(邮政、48 k)

  • 示意图

(BMP, 385 k)
  • 示意图

(expresspb SCH, 19K)

介绍

现代电话是数字化的。那些带有数百个电触点、发出吱吱声的施特略格开关,那些长得像扎染意大利面一样的双绞线电缆,以及曾经遍布乡村的微波发射塔,都不见了。今天,语音通信在尽可能早的时候被转换成数字形式,并与成千上万的其他语音通话、电子邮件信息和网页一起通过光纤传输。

数字电话推动了信息时代的发展,并继续通过互联网协议语音(VoIP)等技术改变通信格局。然而,有一个事实仍然存在——在这个过程中,语音必须转换成比特,然后比特再转换回语音。

这是编解码器的工作。这个词是编码器/解码器的缩写,这个装置在概念上很简单。它包括一个数字转换器(ADC)将输入音频转换成比特流,一个数字转换器(DAC)将接收到的比特流转换成音频,以及一个接口将数字化音频插入和从总线中移除,总线上可以附加其他编解码器。

通常,编解码器是一个独立的混合信号半导体。只要编解码器用于简单的应用程序(例如用于终端交换机的线路卡),这是可以的。然而,通常需要对传输的音频进行某种预处理(如峰值限制、动态范围压缩或频谱整形)或对接收的音频进行后处理(如降噪)。对于独立编解码器来说,这是一个问题,因为一旦音频呈现给(或从)编解码器,就没有进一步执行处理的机会了——编解码器直接与PCM高速公路接口。在这些情况下,系统设计人员只有两个笨拙的选择:要么在域中执行此处理(通常昂贵且可能有噪声),要么放弃使用独立的单片编解码器,并使用独立的精密ADC和DAC芯片在数字域中执行处理。这两种选择都不理想。在本文中,提出了一种使用MAXQ3120与外部DAC作为语音编解码器的方法,该方法具有对入站和出站比特流执行额外处理的能力。

编解码器的基础

早在考虑数字电话之前,人们就已经确定,要使语音信号保持可理解性,必须保持大约300赫兹到3.5千赫的频率范围。超出这个范围的频率有助于语音信号的保真度,但不利于语音信号的可理解性。(事实上,事实证明,带宽有限的信号是更多的比宽带信号更清晰。)按照奈奎斯特(Nyquist)的标准,信号的采样频率必须至少是感兴趣的最高频率的两倍,所有的语音编解码器都以每秒8000个采样的速度运行——这是3.5kHz所需频率的两倍多——每个采样都被转换成一个数字码字。

然而,码字的大小带来了一个问题。在任何数字系统中,都需要在信号完整性和字长之间进行权衡。为了获得最佳保真度,系统设计者可以选择较大的字长,但更多的位需要更大的带宽,而带宽需要花钱。或者,设计师可以选择较小的单词大小来节省带宽成本,但语音质量会受到影响。测试表明,大约8位的小码字可以提供良好的语音质量,但前提是说话者的声音要安静、连贯。正常的音量变化会使发射机饱和,造成剪切和失真。人们可以减少增益以消除高电平时的这种剪切,但正常的声音电平只会使用四到五个比特,使柔和的声音听起来沙哑而不自然。为了适应各种各样的人类声音,从最轻柔的耳语到最响亮的呼喊,似乎需要十二到十四比特的分辨率。

解决方案是使用非线性编解码器(参见图1). 这些编解码器利用了这样一个事实,即耳朵对响亮声音中的小错误比柔和声音中的小错误更宽容。在图中,沉默以零线为中心;柔和的声音与中线的偏差很小,而响亮的声音偏离得更大。在这些设备中,零线附近的代码比远离零线的代码包装得更密集,导致编解码器对低电平信号给出可接受的结果,同时对高电平信号保持良好的动态范围。


图1所示 这是典型PCM编解码器的响应曲线。相对振幅为零附近的区域比曲线的末端包含更多的编码,这使得编解码器能够保持高保真度和宽动态范围。

在数字方面,有必要连接到PCM高速公路。通常不是用一组单独的电线将每个编解码器连接到其相关的主干设备,而是在一条公共总线(PCM高速公路)上将多个编解码器连接在一起。为了协调传输,编解码器共享一个公共位时钟,并由单个帧脉冲发出信号开始发送或接收。在常见的北美标准中,24个编解码器可以驻留在PCM高速公路上,通过某种类型的顺序逻辑以每秒1,544,000位的速度进行时钟处理。每125µs,第一个编解码器接收一个帧脉冲并向高速公路发送8位。在8位时钟之后,第二个编解码器接收它的帧脉冲,以此类推。在所有24个编解码器传输完它们的数据后,序列器为信令目的提供一个比特时间,然后重复序列。因此,生成的数字如下:

[(8比特/采样× 24通道)+ 1个信令位]× 8000个采样/秒= 1,544,000比特
每秒

PCM编解码器的类型

世界上已经对电话中使用的PCM编解码器的帧率(也就是采样率)进行了标准化。可悲的是,世界在其他方面几乎没有标准化。有两种类型的转码算法需要考虑:在欧洲使用的A-law和主要在美国和日本使用的µ-law。目前使用的基本线路速率有两种:美国的DS1 (1.544Mb/s)和欧洲的E1 (2.048Mb/s)。本文提出的设计是DS1(也称为T1)编解码器,能够在a律或微律模式下工作。

微律编解码器根据以下公式对样本进行编码:


其中µ为方程的特征值,一般为255。

a -law编解码器根据一个稍微不同的公式进行编码:


式中,A为方程的特征,通常为87.6;或者在某些情况下,87.7。注意,对于接近于零的值,a律函数是线性的;只有当输入值大于1/A时,它才变成对数。

在实际操作中,这两个扩展定律产生的曲线看起来非常相似。而且,在实践中,这些线性公式几乎从未被使用过。相反,我们使用分段线性近似来减轻计算开销。然而,这里介绍的设计通过查找表实现了这些精确的公式。

微控制器变成编解码器

MAXQ3120包含两个精密16位ADC通道和一个带40位累加器的16 x 16乘法器。虽然没有DAC通道,但有低成本的精密串行DAC可以满足这种容量。剩下的就是开发软件来连接这些外围设备。

编码

编码有三个步骤:将信号转换为数字,重新采样和滤波数字化样本,最后使用A-law或µ-law转码将样本压缩为8位表示。

首先是A/D转换步骤,这也是最简单的,因为MAXQ3120内置了ADC通道。MAXQ3120每48µs产生一个新的16位结果。这意味着系统在8MHz的处理器时钟上有384个指令周期来处理样本。

幸运的是,处理示例很简单,只需重新调用ADC并将数据存储在循环缓冲区中。缓冲区总是包含32个最近的16位采样。MAXQ3120包含256个16位字的RAM;因此,对于单个通道,循环缓冲区仅消耗12.5%的可用RAM。

虽然ADC每48µs产生一个样本,但通信网络每125µs需要一个新的样本。因此,无论我们对信号做什么,它都必须重新采样。一种简单的方法是,当接收到帧脉冲时,只接受最近的样本进行转换,而丢弃所有其他样本,但是MAXQ3120可以做得更好。

在每一帧脉冲,编解码器软件开始应用31分接FIR滤波器在圆形缓冲器中积累的样本。该滤波器在3.5kHz处有一个3db点,从而提供抗混叠和额外的重建,从而降低噪声

ADC频道。滤波过程的结果是一个16位的采样准备为a律或µ律压缩。

表1。前10个微法典和a法典

代码µ法律
000000000
10005华氏000度
2000 b华氏001度
3.0011华氏002度
40018华氏003度
5华氏001度华氏004度
60026华氏005度
7002 d华氏006度
80035华氏007度
9003 d华氏008度


有几种方法可以将16位线性值转换为其代码;直接计算和分段逼近是常用的两种方法。我们没有使用这两种方法中的任何一种,而是通过设置两个128字的表来利用MAXQ3120相对较大的程序空间,一个用于μ -law编码和解码,另一个用于a -law。在启动时,对外部引脚进行轮询,并根据该引脚的级别将其中一个表加载到RAM中。编码过程如下:

  • 取16位线性PCM样本的绝对值。记住符号位。

  • 现在对适用的表执行二分搜索:将PCM样本与表的中间值进行比较。如果小于中间值,则只考虑表的下半部分;如果大于中间值,则只考虑上半部分。重复此操作,直到只剩下两个表项,然后选择最接近的表项。

  • 发出的代码是指数表项的。例如,如果样本值为0x006D,并且转换为a律,则上表中最接近的值将是0x006F。它的指数是7;这是要发出的代码。

  • 最后,应用原始样本值的符号。得到的8位数字是对数PCM值。然而,这并不是结束。在网络上发出的PCM值不仅仅是两个二进制的补码值。相反,每个转码法都有适用的特殊规则。

为µ法律:

  • 负数有一个零符号位;正数值有一个符号位。

  • 幅度值是倒过来的,因此0用0b11111111表示,+1用0b11111110表示。这保证了在传输流中有大量的1位(许多类型的物理层传输机制只在1位上有级别转换;因此,高个位数使时钟恢复更容易。)

  • 有一个“正零”值和一个“负零”值,分别用0b11111111和0b01111111表示。

  • 最大的负数是-127,用0b00000000表示。然而,为了保持时间完整性,许多系统不允许全零值,这些系统通过反转第1位自动防止全零码。这使得码流发生了不可逆转的变化(0b00000000变成了0b00000010),但对于音频传输来说,它不会对感知到的声音产生太大的变化——两个代码都非常响亮!(本设计不执行此功能,但这是一个很容易进行的更改。)

法:

  • 就像在µ-law中一样,负数有一个零符号位。

  • 和µ-law一样,有一个“负零”值和一个“正零”值,分别用0b00000000和0b10000000表示。

  • 在传输前,每个a律单词都用0x55进行异或;有效地反转字节中的每一个其他位。像μ -law的反转一样,这保证了高的1密度,使时钟恢复更容易。

解码

解码一个8位的PCM样本比编码容易得多,因为不需要对信号进行重新采样。一旦PCM法则被应用,一个8位的带符号幅度值仍然存在。使用该值作为适用PCM表的索引(考虑sign);结果是一个16位的、带符号的值,准备传递给DAC。

本项目选择的转换器是MAX5722双通道DAC。这是一款经济型8引脚µMAX封装的12位DAC。像大多数dac一样,MAX5722需要一个外部电压基准。幸运的是,MAXQ3120上有一个1.25V带隙参考电压适用于此目的。

MAX5722是一个串行接口DAC,这意味着微控制器必须创建一个适合DAC的串行流。DAC接口是同步的,所以它不需要一个连续的时钟,它只需要一个时钟当芯片选择低。这允许使用三线接口,仅使用来自微控制器的通用I/ o。

请注意,在本设计中,ADC通道的输入范围为-1.0V至+1.0V,而DAC输出通道的范围为0.0V至+1.25V。在实际的电信应用程序(如线路卡)中,这些电平很可能被转换为其他电平(例如,通常将1mW定义为600欧姆阻抗为0dBm,这是电信网络中通常遇到的最大电平)。如果在您的应用中保持输入和输出电平相同很重要,请参阅MAX5722数据表了解有关产生双极输出的详细信息。

PCM总线

现在我们知道如何将波形转换成压缩的PCM格式,只剩下一个问题:与PCM总线的接口。

大多数情况下,与PCM高速公路的接口包括连接到四线总线:终端放置数据的传输数据线;接收数据线,干线设备在其上放置其数据,终端从其接收数据;一种帧同步线,通常对每一个终端都是唯一的,它发出脉冲以指示总线何时包含用于该终端的数据;还有一点时钟。由于编解码器作为终端设备,它将接收位时钟和帧脉冲,在接收数据线上接收数据,并在发送数据线上发送它的数据。

在T1系统中,时钟运行在1.544MHz。这意味着当帧脉冲到达时,我们必须在几个时钟周期内快速响应。一个比特时间略多于625ns,或5个指令周期。由于这个时间远小于典型的中断延迟(当中断、上下文保存和开销被考虑在内时),简单地用中断响应帧脉冲信号是不够快的——必须找到另一个解决方案。

该解决方案是使用MAXQ3120中的三个计时器之一,在预期帧脉冲到达之前几微秒中断处理器。然后,当帧脉冲最终到达时,处理器已经中断,保存了它的上下文,并准备将每个周期奉献给PCM总线任务。它的工作原理如下:设置定时器在110µs内过期。在每个帧事件结束时,在所有的位都被移出后启动计时器。在T1系统中,两个样品在10.4µs内被移出。当定时器中断处理器时,软件立即开始寻找帧脉冲的边缘。这是系统中唯一的中断。其他的一切都是轮询的,可以等到PCM数据进出总线这一重要任务完成后再处理。

一旦帧脉冲到达,处理器就会非常繁忙。它必须移动发送缓冲区并将输出位写入端口,然后在五个周期内读取输入位并移动接收缓冲区。MAXQ3120在五个周期内完成此操作。

您可能注意到这个讨论是围绕T1总线展开的,但是E1呢?在2.048MHz时,E1系统每比特只允许略多于488ns或少于4个指令周期。因此,E1 PCM总线的管理需要外部硬件的帮助。例如,由位时钟驱动的便宜的移位寄存器可以减轻位级时序的严谨性。

附加功能

编解码器完成。然而,由于独立编解码器价格低廉且数量众多,因此从微控制器构建编解码器毫无意义,当然,除非作为设计师,您别有用心。以下是一些可能促使设计师考虑这种系统的想法:

  • 前置过滤虽然信号是线性PCM格式,但它是应用均衡,动态范围压缩,噪声门控或信号上任何数量的其他操作的绝佳机会。虽然MAXQ3120不是传统意义上的DSP,但这些功能很容易在处理器可用的马力范围内。

  • 带内信令提取有效、简单的算法可用于检测线性PCM流中的带内音调。这些算法可以用来检测DTMF数字,并使用这些数字来启用某些特征和功能。还可以使用音调检测,通过精确检测拨号音(北美为350Hz + 440Hz)、站铃声(440Hz + 480Hz)和忙音(480Hz + 620Hz)来确定呼叫的进度。

  • 会议桥将通道1的接收音频与通道2的发送音频混合并将其合并是很简单的,反之亦然。通过这样做,您有效地创建了两个渠道的数字会议桥。由于网桥是数字的,所以没有语音质量的损失。如果希望桥接两个以上的通道,只需添加更多的MAXQ3120设备。

结论

虽然MAXQ3120并非专门针对电信行业,但其片上精密adc和DSP功能为设计人员提供了广泛的机会来创建定制的硬件和软件解决方案。广泛的开发工具的可用性使得设计任务变得简单。

声明:本文观点仅代表作者本人,不代表华强商城的观点和立场。如有侵权或者其他问题,请联系本站修改或删除。

社群二维码

关注“华强商城“微信公众号

调查问卷

请问您是:

您希望看到什么内容: