您的位置:首页 > 其它

modem digital audio interface summary

2015-12-25 19:54 323 查看
一、PCM(Pulse Code Modulation)

1.介绍 PCM脉冲编码调制就是把一个时间连续,取值连续的模拟信号进行采样,再对采样值幅度进行量化、编码为数字信号的过程。其工作原理大致如下:





“防失真滤波器”是一个低通滤波器,用来滤除声音频带以外的信号; 
“波形编码器”可暂时理解为“采样器”;
“量化器”可理解为“量化阶大小(step-size)”生成器或者称为“量化间隔”生成器 

声音数字化有两个步骤:

第一步是采样,就是每隔一段时间间隔读一次声音的幅度;第二步是量化,就是把采样得到的声音信号幅度转换成数字值。但那时并没有涉及如何进行量化。量化有好几种方法,但可归纳成两类:一类称为均匀量化,另一类称为非均匀量化。采用的量化方法不同,量化后的数据量也就不同。因此,可以说量化也是一种压缩数据的方法。 

波形声音的码率 = 取样频率 × 量化位数 × 声道数

(1)均匀量化采用相等的量化间隔对采样得到的信号作量化,那么这种量化称为均匀量化。均匀量化就是采用相同的“等分尺”来度量采样得到的幅度,也称为线性量化 量化后的样本值Y和原始值X的差E=Y-X称为量化误差或量化噪声





(2) 非均匀量化非线性量化:对输入信号进行量化时,大的输入信号采用大的量化间隔,小的输入信号采用小的量化间隔。这样就可以在满足精度要求的情况下用较少的位数来表示。声音数据还原时,采用相同的规则。 在非线性量化中,采样输入信号幅度和量化输出数据之间定义了两种对应关系,一种称为u律压扩(companding)算法,另一种称为A律压扩算法。 采样频率为8 kHz,样本精度为13位、14位或者16位的输入信号,使用m 律压扩编码或者使用A律压扩编码,经过PCM编码器之后每个样本的精度为8位,输出的数据率为64
kb/s。这就是CCITT推荐的G.711标准。  u律压扩: 北美和日本等地区 13位PCM编码转换城8位。  A律压扩 欧洲和中国大陆等地区, 14位PCM编码转换城8位 输出信号均为64Kb/s 2. HUAWEI MU509 PCM Audio Design Interface Huawei LGA modem 模块支持PCM接口来传输和发送音频数据 (1) PCM接口定义





(2) PCM CLOCK MODE

华为modem只能工作在master模式,modem是clock的信号源。





(3)Modem PCM 音频接口工作特性 

Clock工作频率为 2.048MHZ,只能工作在master mode 
采样频率为 8KHZ
对于usp模拟pcm接口来讲,它工作在Master Mode时,SCLK由usp产生,其最大时钟频率=1/6 I/O 时钟频率;
它工作在Slave mode 时,SCLK由外部设备产生,最大时钟频率=1/20 I/O 时钟。实际频率值通过USP_CLK_DIVISOR寄存器计算所得。
采用short-sync (Primary PCM) mode,在此模式下,modem只能做主设备,不支持从设备。
支持linear模式与u_law模式两种,linear模式下语音编码为13bit,u_law模式为8bit.
华为模块编码位不能更改,我们只能配合模块修改我们自己usp控制器的编码位;
研发推荐使用u_law(8bit)--u_law(8bit)模式,实际测试发现linear(13bit)--linear(8bit)模式效果较好,所以我们自己设定华为modem用的是linear模式; 
MU509 linear模式下为13bit,客户端linear模式设置为8bit,尽管位数编码不一致,但不影响正常语音效果;客户端若为16bit则无法通讯; 
模块与客户端模式、编码位等必须设置一致,之后必须对模块进行断电重启。 
PCM语音调试只有ATCPCM这一条指令
linear模式:ATCPCM=0,0,0,0,0
u_law模式:ATCPCM=0,1,0,0,0;

(4) 关于short frame sync 和 long-frame sync PCM Interface

根据clock控制PCM数据传输的格式不同,分为long-frame sync和short-frame Sync 格式。

在Long Frame Sync 格式中,PCM_SYNC的上升沿指示PCM 数据的开始位。

一般来说,在这种格式下,当PCM_CLK下降沿时,采样PCM_IN 当PCM_CLK上升沿时,传输PCM_OUT.

其格式如下图所示:





Short Frame Sync 在这种格式下,PCM_SYNC 下降沿指示数据字开始传输。

PCM_SYNC 的长度总是一个时钟周期。和Long Frame Sync 一样,PCM_CLK的下降沿采样PCM_IN,在它的上升沿传输PCM_OUT.

其格式如下图所示:



(5) PCM音频格式配置USP控制寄存器 大多数Modem通过PCM接口来传输音频数据,所以我们要用USP2模拟PCM接口, 重点是我们必须将USP2配置成合适的PCM格式,否则将影响音频数据的传输。

以下寄存器的配置是非常重要的,配错一位,就可导致传输数据有问题。

















(6)ALSA-Lib的 PCM (digital audio) plugins

对于pcm设备,我们需要在alsa层给予定义,为alsa层调用提供pcm handler。

在alsa可用的调试工具有 amixer,aplay,arecord

或者添加宏定义,编译出新的工具如alsa_amixer,alsa_aplay等等。

用例:

$Amixer

Simple mixer control 'Headphone',0

Capabilities: pswitch pswitch-joined

Playback channels: Mono

Mono: Playback [off]

Simple mixer control 'Capture',1

Capabilities: cvolume cswitch

Capture channels: Front Left - Front Right

Limits: Capture 0 - 7

Front Left: Capture 7 [100%] [off]

Front Right: Capture 7 [100%] [off]

Simple mixer control 'Speaker',0

Capabilities: volume pswitch pswitch-joined

Playback channels: Front Left - Front Right

Capture channels: Front Left - Front Right

Limits: 0 - 127

Front Left: 127 [100%] Playback [on]

Front Right: 127 [100%] Playback [on]

可以通过这个命令来设置speaker或者micphone的增益以及开关。

如:

Amixer sset 'Speaker',0 on/off 打开/关闭speaker

Amixer sset 'Speaker',0 122 设置增益

Arecord !-Dhw:0,0 -r 48000 -c 1 -f S16 -t raw /d.pcm从mic录音到文件

Aplay !-Dhw:0,0 -r 48000 -c 2 -f S16 -t raw /d.pcm播放音频文件到speaker

Aplay –l查看设备的device number和card number

对于设备的配置文件定义和如何使用alsa插件,

关于将双通道合成单通道的例子:

pcm.!default makemono

pcm.makemono {

type route

slave.pcm "hw:0"

ttable {

0.0 1 # in-channel 0, out-channel 0, 100% volume

1.0 1 # in-channel 1, out-channel 0, 100% volume

}

}

可参考网址:

http://www.alsa-project.org/alsa-doc/alsa-lib/pcm_plugins.html
https://wiki.archlinux.org/index.php/Advanced_Linux_Sound_Architecture/Example_Configurations
(7)关于采样位数转化方法

(a)(signed 8bit –>signed16bit)

if (data[i]&0x0080)

data[i] += 0xFF00; convert to negative 16-bit

else

data[i] = data[i];

end

The most significant bit of a signed number is the minus bit. Without the adjustment to a 16 bit ('+= 0xFF00') negative an 8 bit negative would be still be a positive number in signed 16 bit.

Because we only want to convert a range limited subset, we need to adjust the negative value.

In a signed 8 bit number we go from -128 (0x80) through -1 (0xFF) then 0 to +127 (0x7F).

In a signed 16 bit we go from -32768 (0x8000) through -128 (0xFF80) to -1 (0xFFFF) then 0 through +127 (0x007F) to 32767 (0x7FFF).

As you can see, the positive side need no adjustment, but the negative needs to be within -128 from zero (0xFF80) for the conversion to work.

(b)int signed16 = (int)((signed char)data[i]);

(c )*dst++ = (int16_t)(*src1^0x80) << 8 |*src++;

这个操作可在AudioTrack.cpp文件中进行转化完成。

(三)关于 Cinterion GSM Modem AGS2 I2S audio

(1) GSM modem AGS2 audio interface

GSM modem AGS2支持i2S audio接口,其时序特性如图所示:





I2S接口特性:

GSM I2S作为master端,它可以传输mono或stereo声道音频数据在输入输出方向
I2S_SCLK:256khz
Sample rate : 8khz
Prima2端的i2s是通过usp2模拟实现的,其传输和发送sync信号全部由TFS来控制,而不是以往所确定的RFS。

在配置时需尤其注意。

(2)usp2模拟I2S的配置信息

















在USP模拟I2S接口的一般情况下,配置RX和TX帧格式寄存器,需要设置USP_RX_FRAME_CTRL:21bit I2S_SYNC_CHG =1,然后把I2S的左或者右声道看做一个PCM,按照这个pcm格式对寄存器进行设置。但是,具体情况具体分析,可根据实际需要进行灵活配置。

(三)调试注意事项

首先确定硬件音频通路可以正常工作。

(1) 首先确定prima2和modem设备的硬件连接是否正常是否合理,尤其是sync信号。

(2) Modem一般都支持模拟音频输出和数字音频输出,要检查好模式配置。

(3) Master端,PCM或者I2S接口的电压和频率是否输出输入正常,例如AGS2的所有信号均为1.8V,经过电压转换芯片后,将data信号线转换为3.3V,而clock信号仍为1.8V。

(4) Slave端,USP模拟PCM或者I2S接口,是否有正常的输入信号,接收端电压和信号是否正常。

(5) 在通过示波器测量信号正常的情况下,如果没有声音,就要查看usp控制器的配置是否正常,尤其是pcm和i2s的大小端对齐,沿触发问题,TFS和RFS的配置,以及帧长度和实际长度,同步信号的设置问题,

保证正确的情况下,音频数据收发才正常。

(6)在以上配置完后,此时应该有声音输出,对于声音质量问题,分两个方面,一个是软件方面,另一个是硬件方面。对于软件方面的影响,分阶段截取数据流进行分析,确定噪音源的部分。

首先确定从麦克或者modem进来的声音质量是否完好;其次确定经过FIFO和DMA到audiotransfer的音频数据质量如何;最后确定speaker播放的声音效果。有些要分别测试GSM工作与不工作两周情况。

逐步排查定位问题点,往往问题不是单方面的。

(7)对于硬件方面,也是过滤排除问题原因,有些需分别测试GSM工作与否两种情况。大致几个方面:

1)Modem本身工作机制引起的对芯片的干扰和自身产生的噪音。

2)电源电路引起的干扰

3)对于芯片本身,麦克的灵敏度,放大电路倍数和增益之间的合理配置。

这个通过硬件工程师进行频谱分析和公式进行测量得出。

Speaker通过line-out经放大电路输出后的差异测试,通过设置低通放大器的倍数和电路优化可提升声音质量。

(8)对于通道和采样位数之间的不匹配问题需要处理。

通道问题和采样精度都可以通过alsa的插件进行处理;采样位数不一致既可以软件处理;也可以从音频接口处通过配置寄存器进行double或者half处理。

除此之外,一般modem内部也可以对自身音频数据格式进行选择和配置,有些情况下可以通过AT命令进行控制。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: