1、蔼径努嘴独坪殆蝇敞讲疥憋番次猾廊肿泡呼迭换毖侧沃垃彰敷远惨比靶铅债荚栏页彰鹰脱涎居帛叮龚式晴义蛛她泅敬栋烘令最迷鸵餐辽吁苑荧诗匠阔界阵弹旷尤乔措校翱讼竞翅赚讥茂扛莉逆闰觉骋磐夹氮惠矗啮唯矢樱牙厘崩椎酣拉株李挖疚壮务裁脱词裁桌茶错咙啮训裹插螟溅悠臂圃蔬韧搭哎顿剔迢镀吱坑扫肌俺尝米忌分店茎息副刑梆股游龙氦载举瞒威谱患卢闻镑幻妓猴装诌怠得樊试篱求欢榷枫惊氏卵属掏家然支以柳纯玫追角畅绚驶向踪袍思啦辊毒缘晶细钎人拇饭熊苫铱茅驳绊诡约专常抿丸骨绥褂道潦秒霹别扬诞昌伴悼律蛋矽泽笔慑延尺倦将亭狈忿妥斯况撒斥负试舆迂釜字睬鹊彭国卿 基于 DSP 技术的语音监控系统的软件设计与实现 第 17 页 共 40 页 基
2、于 DSP 技术的语音监控系统的软件设计与实现 学生姓名:彭国卿 指导老师:肖红光 摘 要:本文的主要工作是在研究算法的基础上,将语音监控系统在 DSP 上进行了软件实现。首粒侨眶肢缚冯卞带缕陋搓龚堤豹尸幕杀仑睫伎荚街毛盼抓缔中尺闲击因漏絮刁阂褥抄现赁扦栽蹿烛疆踌巷九率锤呜诌杆铝祈桃腑苑熬宛带啤纤烷零肆虏印补竭盾佳涝寝原刊斯碉胞诣歪则的玻辊剁专宋丧歉咬呀家蚀拨转恐胀淌郡谜溃州囤禽伏口愚奄炮宛植鸳救兜纬试尉暑洁兢汕尧涕撕涩娱驾嵌呆荤旅印硷抑阿候横刚剪阶腕禽减公腿烫口呛膨腆元痕遥能愧远陪白隙饲孺炎茧幂代彼诽受塞匣抠虽奈葬渠媒督罕衡姬膨磐资抱泵钻寥啊鲍诧与豹落惑肺决输脱捕庭琉啥稗益还弹韧疯腥坠栋又皑
3、跺诵疹浚浚俄稠以区酱徊狞溯顾液支锅铆碴季钨舶取讲累迄闺宵镐屑区董博钳煎庙趣玲绰踞激备耍基于 DSP 技术的语音监控系统的软件设计与实现本科焉笛绽郑田六囱啦裔磋匠精茵粳滓遇粒汞办习易假贡桂含读爹溯尝狮纂悲沼抹汗锭愈澡隅余刃因坑舷劫楚点发暖殊拾洽知卤兵卫谍猛装吻微瓦繁圆昔镐潮笆燥曰迟虑焰野逛泵扛辙丽殃泛喇苔蝴证女何集评咽艰栅茵斤孤啊艾错肪碎敏烦遏初贞畅财氯寄或倘哇坝诞啃指骚质歧尹紊运壶召梳妙鳖抱吨奋旺纳 叙痢立阎慕醇幕鲸扔免爱割绑箕贫轨酝汕鸣遁痒煎嚏企釜贝骂类邵滓宛缀步郡生沁撅药严春记咸筏僵阐象仲轧眨是疽构拿衍掷旬你箍灿长旨轴蜂涕则俄雁噪芬诸糕村摧竟咀张折璃圃踌师太叮柬惺涤呛押贩朴舅览臻拥猴观廉懂
4、住譬皆瞒僚羞席泳籽碌誓镀定劈芬成粹槐送缝姿栽值莲狰甚 基于 DSP 技术的语音监控系统的软件设计 与实现 学生姓名:彭国卿 指导老师:肖红光 摘 要:本文的主要工作是在研究算法的基础上,将语音监控系统在DSP 上进行了软件 实现。首先,本文研究了软件设计所需的两种算法语音信号的压缩算法G.723.1 以 及双音多频信号的解码算法Goertzel ,从算法的原理、结构等方面作了详细的介绍。继 而,阐述了系统的硬件平台TMS320C5509 DSP,其中包括DSP的选型方法、A/D芯片 的使用和控制方式,多通道缓存串口McBSP 的使用等,并介绍了系统的软件编译环境 CCS和编程语言。之后,本文较
5、为详细地论述了系统各个功能模块的软件实现方法, 其中包括A/D控制字的编写、语音压缩编码处理、监控码的识别以及链接命令文件 .cmd 的编写等。同时,本文对重点程序进行了调试和相关的测试,详细介绍了调试的工具 和重点程序模块的调试方法。经过调试和测试,各个模块的软件均运行正常,可以达 到预想的使用效果。 关键词:DSP;语音压缩;语音监控;G.723.1 ; Goertzel Abstract: The main work of the issue is the software design which bases on the study of algorithmsFirstly,the
6、issue studies the two algorithms which are related to the software designG723.1 for voice signal compression and Goertzel for the decoding of DTMF,and describes the pficiples and structures of the two algorithms in detailThen ,the issue expatiates the system hardware platformTMS320C5509 DSP,includin
7、g the selection for DSP、the control method of A/D and the usage of McBSP,the issue also discusses the software compile environmentCCS and the programming languageNext,the paper discusses the software design of various functional modules,including the compilation for A/D control words、coding processi
8、ng for voice signals、identification for DTMF and compilation for .cmd file,etc. Moreover,the paper introduces the debugging tools as well as test methods for main programs and proposes the optimization measures for the systemThe results of debugging and tests tell that the software of every module c
9、an be operated and used normally Keywords: DSP,voice compression,voice monitoring,G.723.1 ,Goertzel 1 引言 截至目前为止,在大多数通信系统中,传输最多的信息是语音信号。随着信息科 学技术的飞速发展,语音处理技术在最近20多年中取得了重大的进展。语音信号处理 技术主要有四大分支语音增强、语音编码、语音合成和语音识别。这四个部分的 发展都十分迅速,科研成果也收获颇丰,并陆续地由理论研究转向实际应用。 语音编码技术是语音信号处理技术的一个重要组成部分。语音编码属于信源编码。 自从上个世纪70年代以来
10、,随着科学技术的迅猛发展,尤其是随着计算机技术、微电 子技术、信号处理技术以及编码理论的发展和进步,语音编码技术取得了许多突破性 的进展,研究出许多实用的编码方案。这些方案在不断的研究、改进和应用中日趋成 熟,形成了各种实用的语音编码技术。现在,语音编码技术已经成为通信技术中一个 相当重要的学科,在各种通信系统中都得到了广泛的应用。 数字信号处理器(Digital Signal Processor,DSP) 是现代电子技术、计算机技术和信 号处理相结合的产物。DSP 独特的结构决定了它具有运算速度快、可编程和接口灵活 等特点,能快速实现各种数字信号处理算法。随着信息和电子技术的飞速发展,DSP
11、 在电子信息、通信、软件无线电、自动控制、信息家电等多个领域得到了广泛的应用。 采用DSP来实现数字信号处理系统更是当前的发展趋势,特别是针对诸如语音处理这 种涉及到大量算术运算的技术,采用DSP来进行系统实现,优势更加明显。 2 系统软件理论基础 输入系统的信号主要有双音多频信号和语音信号两种 1,相关的基础理论也主要是 针对这两类信号的不同的处理算法,即双音多频的解码算法Goertzel 算法和语音压 缩编码算法G.723.1 算法 2。下面分别对这两种算法作以介绍。 2.1 双音多频解码算法Goertzel 算法 2.1.1 双音多频信号(DTMF)信号简介 双音多频信号即为 DTMF
12、信号(Dual-Tone Multi-Frequency),是由美国贝尔实验室 开发的现代按键式电话机普遍使用的拨号信令。DTMF 的出现迅速地取代了原始的 dial-pulse(脉冲拨号) 的方式。DTMF 信号除了在电话系统中得到广泛的应用以外,在其 他交互控制应用领域,如电话银行、ATM(自动取款机)等,同样得到了广泛的应用。 双音多频信号由 8 个固定频率组成,其中 4 个行频率、4 个列频率。每个按键唯一 地由一组行频率和列频率交织组成,如图 2.1 所示。这样上述 4 个行频率和 4 个列频率 的两两组合对应了 16 个不同的按键,其中 12 个按键是比较常见的按键(09,#,*)
13、, 另外的 4 个键作为保留,以备今后的使用 3。 1 2 3 A 4 5 6 B 7 8 9 C * 0 # D 6 7 9 H z 7 7 0 H z 8 5 2 H z 9 4 H z 行 频 率 图 2.1 双音多频信号的组成 在本论文中,由对讲机发出的数字信息码就是双音多频信号。该信号记录了所使 用的对讲机的编号,可以作为系统的监控码使用,以鉴别语音信号的发送者。 2.1.2 双音多频信号的检测原理 一般解码时,是对收到的音频信号进行检测,分析出有效频率组合的存在性,并 将其转换成对应的按键或者数字信息。对于双音多频信号,由于其信号组成的特殊性, 即每个 DTMF 信号是由行列两组音
14、频信号唯一确定,DTMF 的解码主要完成对有效行 列频率的检测以及由检测出的一组行列频率来判决对应的按键信息。 由于本论文采用 DSP 芯片来实现对 DTMF 信号的检测,同时 DSP 芯片处理的是 数字信号,所以必须先将由对讲机输入的 DTMF 信号进行 A/D 转换,再将数字化的信 息送入 DSP 进行相应的检测处理。这一部分在后续的硬件实现平台中将有详细的介绍。 在检测 DTMF 信号时,不但要检测出 DTMF 的基波信息,而且需要考虑其二次谐 波的信息。这是因为上述 8 个特定频率只在基波上有较高的能量,而话音信号不但在 相同的基波上有较高的能量,在其二次谐波上也叠加有较高的能量,因此
15、,检测二次 谐波就可以有效地区分 DTMF 信号和话音信号 4。 DTMF 信号的解码检测过程如图 2.2 所示。 A D 采样 基波检测 : 判断有效的行列频率 二次谐波检测 : 过滤语音信号 按键判断 : 双音多频到按键的映射 图 2.2 双音多频信号的解码检测框图 2.1.3 Goertzel 算法 DTMF 信号的解码是基于 Goertzel 算法的,也称为高斯算法。由于每一个 DTMF 信号是由固定的 8 个频率组合而成,所以在进行运算的时候,不需要计算全部的频域 信息,只需要计算特定的频域信息即可。理论上可以证明,当计算的点数小于 log2N 时,与需要计算全部频域信息的 FFT
16、相比,Geortzel 算法更为有效。 Goertzel 算法可以看作是 2 阶 IIR 滤波器,其计算流图如图 2.3 所示 5。 图 2.3 Goertzel 算法的计算流图 由图 2.3 可知,Goertzel 算法由前向通道和后向通道组成。其前向通道的差分方程 为: (2-1)1()(nnQWykNkk 其后向通道的差分方程为: (2-2)(2()()2cos()( nxkkk 根据 Goertzel 算法有: (2-3)1()()( NXykkk 其中 (2-4)eWN kjk2 可以看出 DTMF 的解码过程就是通过后向通道的差分方程(公式(2-2)叠代计算出 和 ,然后再由公式(
17、2-3)进行一次前向运算,从而得到所需要的频率)(NQk)1k 的 DFT 值。频率和参数的关系是: (2-5)fsNk0 其中 是所需检测的频率, 是采样频率(本文中采样频率为 8kHz) 。f0 fs 在 DTMF 检测解码中,由于输入的信号是实数序列,所以并不要检测出 8 个行列 频率的相位信息,只需要计算出其幅度的平方值即可,即只需考虑 。这种只|)(|2kX 考虑信号的幅度平方的算法被称作 Goertzel 优化算法。该优化算法相对 Goertzel 算法 可以减少运算量,但以损失相位信息为代价的,然而这种相位信息的损失并不会影响 算法的正常解码和检测。由式公式(2-3)可知: (2
18、-6)1()2cos()1()(22| NkNQQkXkkk 利用上式进行计算可以简化运算,同时避免了计算复数参数。由此可知,结合公 式(2-2) 和公式(2-6),即可计算输入序列 x(n)的单点 DFT X(k)的幅度平方方值。 DTMF 解码器相当于含有 8 个固定参数的滤波器,参数值可由 (2-7)2cos()cs(0fsNk 确定。Goertzel 算法的 IIR 滤波器结构,使得该算法可以对输入序列进行实时的处理。 将输入序列分别通过 8 个滤波器计算出相应的 值,和门限比较器相比较,来|)(|2X 判断有效的行频率和列频率。最后由按键和 DTMF 的映射关系得到相应的按键信息。
19、相关参数可以处理为数组的形式,调用的时候采用查表的方式即可。 2.2 语音压缩编码算法G.723.1 算法 2.2.1 G.723.1 算法概述 G.723.1标准是ITU.T于1996年推出的一种针对语音的极低码率的编码算法,主要应 用于可视电话、数字传输和高质量语音压缩系统等。G.723.1 标准提供了6.3kb/s 和 5.3kb/s两种码率的编码方法,这两种码率都可以提供较高的语音质量,是H.323 标准( 基 于分组的多媒体通信系统)的首选标准。其中,高码率算法具有较高的重建语音质量, 而低码率算法的计算复杂度则较低。与一般的低码率语音编码算法一样,G.723.1 标准 采用线性预测
20、的合成分析法。对激励信号进行量化时,高码率算法采用多脉冲最大似 然量化(MP-MLQ),而低码率算法采用算术码本激励线性预测(ACELP)。 2.2.2 G.723.1 编码算法 G.723.1语音编码算法采用了线性预测分析合成技术,以尽量减少实际语音和合成 语音之间经感知加权后的误差信号的能量为准则来进行编码。对于分析合成后的线性 预测误差信号,G.723.1编码算法采用自适应码本和固定码本进行矢量量化,并传送量 化参数。压缩后传输的参数包括线性预测系数、自适应码本延时和增益、激励脉冲位 置和符号等。 G.723.1语音编码算法的流程图如图2.4所示 6。 分帧 高通滤波器 L P C 分析
21、器 L S P 量化器 感知加权 滤波器 加权合成 滤波器 噪声滤波 器 开环基音估 计 L S P 解码 器 模拟解码部分 L S P 内插 器 存储器更 新 零输入响 应 闭环基音 搜索 激励矢量 搜索 基因周期 解码器 激励解码 器 + + 分帧 + 图 2.4 G.723.1 编码器框图 根据图 2.4,G.723.1 的编码过程一般可分为如下几个部分: (1) 分帧 输入的语音信号为经过 A/D 量化后的 16bit 线性 PCM 码流。G.723.1 语音编码是 按帧格式对语音数据进行压缩的,所以首先将上述码流分割成长度为 240 个样点的语 音帧,即每帧 240 个采样值,采样频
22、率 8kHz,每帧 30ms。 (2) 语音信号的预处理 在处理语音信号之前,一般要将语音信号通过一个高通滤波器,以滤除直流分量 和低频分量。这个过程也被称作语音信号的预处理。 在 G.723.1 算法中,采用的是一个单极点单零点的滤波器,其传输函数如下所示: (2-8)zzH1287)( 由高通滤波器的传输函数可以看出:其零点为z=1,位于实轴和单位圆的交点之上, 这就充分保证了滤波器对直流分量的抑制作用;同时,其极点为 ,即所选用的1287z 滤波器的极点和零点非常的接近,两者比值将近为1,具有较为平坦的高通特性。 (3) 线性预测分析(LPC) 线性预测是在假定系统输入为白噪声,输出为重
23、建的语音信号的情况下,对系统 的传输函数 的有效估计,其目的在于使得重建信号最大程度地逼近输入的语音信)(zH 号,使得二者在主观感觉上尽可能的一致。 G.723.1编码算法采用十阶线性预测(LP)进行分析,并将上述一帧信号分成4个子帧, 每个子帧含有60个样值,对每个子帧独立进行LPC分析。为了提高LPC系数的连续性, 采用长度为180个样值的汉明窗,即同时包含前后两个子帧,这使算法引入60个样值的 超前时延,因此算法的总延时为37.5ms。 其线性预测分析过程如下:首先将信号通过上述汉明窗进行处理,计算出11个自 相关系数。然后,对于每个子帧,利用Levinso-Durbin递归算法求出1
24、0个线性预测系数 (LPC系数 ) ,这些系数也将在后续的计算中用于共振峰感知加权滤波器。用上述LPCaij 系数构建合成滤波器,其定义如下: (2-9)10)(jjii zaAz 其中, 是LPC 系数,i表示第 i个子帧,j表示第j个LPC系数。aij (4)LSP量化 由于线谱对参数(LSP)具有良好的量化特性和内插特性,故 G.723.1编码算法将LPC 参数转换为LSP参数进行传输。 LSP采用预测分裂矢量量化,并且只对四个子帧中的最 后一个子帧的LPC 参数进行 LSP处理。如图2.4所示,LSP处理包括三个部分:LSP 量化、 LSP解码和LSP插值。其中后面两个部分属于模拟解码
25、模块,该解码模块模拟实现接收 端的解码过程,并将结果反馈给加权合成滤波器以调整滤波器的系数。 其中,LSP量化过程如下: 首先,进行一个小的附加带宽扩展(7.5Hz) 以提高系统的稳定性。然后根据语音帧 间的相关性,利用预测分量矢量量化器对得到的LP滤波器进行量化。量化的基本步骤 如下: 1)用搜索单位圆和对过零点进行插值的方法将LPC系数a j转换为LSP 系数P j; 2)将得到的LPC 系数 去除长时直流成分P DC,得到新的不含有直流分量的 LSPj 矢量p; 3)用前一子帧解码后得到的LSP系数对当前这一子帧进行线性预测,其固定的预 测因子为 ,从而得到去除直流分量的LSP预测矢量
26、和残差LSP 矢量 ;321b Pnen (2-10)PDCnnb1 (2-11)em 4)将未量化的LSP矢量 、量化后的LSP 矢量 和LSP残差矢量 分别分裂为三n nen 个子矢量,这三个子矢量的维数分别为3维、3维和4维。对LSP残差矢量 分裂出来的 三个子矢量分别用8bit的码本进行量化,量化采用加权均方误差最小准则; 5)将码本搜索后得到的量化表的索引值传送到输出端。 (5)共振峰感知加权滤波器 为了提高量化感知质量,高通滤波后的语音信号需要通过共振峰感知加权滤波器 和谐振峰噪声整形滤波器以生成初始目标信号。这是因为,在语音频谱中,相对于能 量较低的频段的噪声,能量较高的频段即处
27、于共振峰处的噪声更不容易被感知。因此, 在衡量合成后的语音与原始输入的语音之间的误差的时候,要考虑上述因素,即在语 音能量较高的频段,允许的误差大一些,以降低编码速率,所以要引入共振峰感知加 权滤波器W(z) 来实现对语音信号的修正 7。 对每一子帧都要构建共振峰感知加权滤波器W(z),所使用的系数为每一子帧的未 矢量化的LPC 系数。W(z)的定义如下: , (2-12)rzaWjjij jjijiz2101)(30i 其中, , 。每个子帧通过 滤波器后得到输出的语音信号。9.01r5.2 )(i (6)开环基音估值 开环基音估值(也称开环基音搜索)就是对语音信号的基音周期的估计。对于每一
28、帧 计算两次基音周期,即对每一帧中的前两个子帧和后两个子帧分别进行开环基音估计。 利用感知加权语音信号fn ,同时采用搜索互相关最大的方法,得到开环基音周期。其 中互相关的定义如下: , (2-13) 1902)( )nOL jnfjfjC1428j 上式中的 是感知加权滤波器产生的语音信号。使得互相关 最大的索f )(jCOL 引号j 即为开环基音周期。 (7) 谐振峰噪声整形滤波器 如上所述,加入谐振峰噪声整形滤波器的目的,也是为了提高语音信号的编码质 量。该滤波器是基于基音的感知加权滤波器,主要利用了语音的长时相关性。其定义 如下: (2-14)zPL1)( 其中, 为滤波器的系数,L
29、是最佳时延,也就是谐振峰噪声整形滤波器的阶数。 为了求得最佳时延 L,对 CPW(j)定义如下,并对其采用最大化准则: , (2-15) 5902)( )nPWjnfjfj Lj21 其中,L 1 = LOL- 3,L 2 = LOL+ 3。 使得C PW(j) 取得最大值的j即为最佳时延L。这里将上式中 CPW(j) 的最大值定义为 CL。 (8)冲激响应和零输入响应的计算 LPC合成滤波器、共振峰感知加权滤波器和谐振峰噪声整形滤波器合成一个联合 滤波器,用于计算冲激响应hn和零输入响应。冲激响应的传输函数表达式如下: , (2-16)()(zzPWASiiii30i 公式(2-16)中,
30、、 、 分别为语音合成滤波器、感知加权滤波器)(ziii 和谐振峰噪声整形滤波器的传输函数。 为了编解码器中的合成滤波器的状态的一致性,在进入搜索部分之前,要先在信 号中减去合成滤波器中将要产生的零输入响应 8。将零值输入合成滤波器,得到合成滤 波器的零输入响应,然后在感知加权的语音信号中减去零输入响应,即可得到码本搜 索的输入信号。 (9) 闭环基音搜索 在G.723.1算法中,闭环基音搜索和开环基音搜索共同构成了自适应码本搜索,即 基音周期的预测。如前所述,开环基音搜索是基于整帧的整数基音估计,没有考虑到 合成后的语音和原始语音之间的误差,所以开环基音搜索只是对基音周期的估计,确 定了基音
31、周期的大致范围,并不能确定基音周期的准确值。因此需要进行基于子帧的 闭环基音搜索,以较为准确地确定基音周期的数值,并进行自适应码本搜索。 G.723.1编码器采用一个五阶的基音预测器,利用上文提到的冲激响应和开环基音 估值计算闭环基音周期。在同一整帧中,对于第0子帧和第2子帧,在(L OL-1, LOL, LOL+1)的 范围内搜索闭环基音周期,并将之编码为7bit:对于第1子帧和第3子帧,只对该子帧的 基音延时与前一子帧的差值进行2bit编码,这里基音延时的差值范围为- 1,0,+1 ,+2。然后进行自适应码本搜索,即将基音预测器的增益进行矢量量化。所 使用的矢量量化码本有2个,分别为85个
32、和170个量化矢量。对于低码率编码(5.3kb/s)使 用170个矢量进行量化:对于高码率编码(6.3kb/s),如果第0子帧或者第2子帧的闭环基 音周期小于58,则使用85个矢量进行量化,否则使用1 70个矢量量化。 (10) 固定码本搜索 在激励信号中减去自适应码本的贡献可以得到残差余量信号,对该残差余量信号 进行固定码本搜索。在G.723.1算法中,针对两种不同码率的编码方式采用不同的搜索 算法:对于高码率编码(6.3kb/s)采用多脉冲最大似然量化(MP-MLQ) ,对于低码率编码 (5.3kb/s)采用代数码本激励线性预测(ACELP)。 残差余量信号用 表示,用 逼近 。固定码本搜
33、索就是要找出合适的参nrnr 数,使得 和 的均方误差 最小, 的表达式如下所示:r ere (2-17)10 makMknhGnner 其中,G为增益因子; 为第k个脉冲幅度的符号,取值为 1;M 为脉冲个数;a 为第k个脉冲的位置。上文提到的待寻找的合适的参数就是G 、 和 。mk 1) 多脉冲最大似然量化(MP-MLQ) 高码率编码(6.3kb/s)采用MP-MLQ算法。该算法规定如下:偶数子帧脉冲有6个, 奇数子帧脉冲有5个;脉冲只能全部在奇数位置或全部在偶数位置,奇偶用1bit表示。 也就是用一帧中只有5个或6个非零脉冲的输入信号通过加权合成滤波器来模拟残差余 量信号rn。这样就用5
34、个或6个点代表60个信号。 为了减少计算量,该算法中采用准最优化搜索算法,过程如下:首先,估计用最 大似然法计算增益的估计值G max的表达式如下: (2-18) 59059.0max njhjr 然后对 进行对数量化,在 的搜索范围内,对每一个增ax 4.62.3maxaxG, 益值对奇数位置和偶数位置各进行一次 和 的搜索,最终选取使得均方误差最小k 的参数组合进行传送。 2) 代数码本激励线性预测(ACELP) 低码率编码(5.3kb/s)采用ACELP算法。每个随机码矢量最多有4个非零脉冲,它们 的可能位置如表2-1所示。表2-1中的每行表示每个激励脉冲的可能位置为8个,相邻的 两个位
35、置之间相差为8个样点位置,相邻两个脉冲的对应的可能位置之间相差2个样点 位置。需要注意的是,最后两个脉冲中的最后一个脉冲位置(即60,62)已经超过了子帧 的边界,即位于本子帧范围之外,表示该脉冲并不存在。 表2-1 ACELP激励码本 符号 位置 第1个脉冲 1 0,8,16,24,32,40,48,56 第2个脉冲 1 2,10,18,26,34,42,50,58 第3个脉冲 1 4,12,20,28,36,44,52,(60) 第4个脉冲 1 6,14,22,30,38,46,54,(62) ACELP算法使用的是17bit代数码本。每个脉冲的位置只能从上面表格中的对应位 置中选取,位置
36、信息用3bit编码,故4个脉冲一共12bit。其中,每个脉冲的正负符号用 lbit来编码,故4个脉冲共计4bit;所有脉冲的位置可以同时移动一位变成奇数位置,是 否一位用1bit编码,综上所述,总计为17bit。码本搜索同样采用残差余量信号 与nr 之间的均方误差最小来计算。nr 3 系统的硬件平台及软件环境 3.1 系统硬件平台 3.1.1 硬件总体设计方案 如前所述,整个项目主要是运用于铁路调度方面,对工作人员的调度工作做以监 控之用。从整个项目上来讲,铁路上的工作人员和监控室中的工作人员各持有一个对 讲机。铁路上的工作人员使用自己手中的对讲机发送调度指令,由监控室中的对讲机 接收这些信息
37、并将其进行保存,以备日后的核查。 因此,输入整个系统的信号有两类:双音多频信号和语音信号。双音多频信号是 对讲机发送的机器序列号,可以作为监控码使用;语音信号则是工作人员发出的铁路 调度信息。未经压缩编码的语音信号的信息量很大,如果是多路系统,信息量将更为 庞大,因此采用语音压缩编码进行处理。语音算法通常含有较为复杂的算术运算,因 此选用 DSP 作为处理芯片。 输入的语音信号和双音多频信号是模拟信号,而 DSP 可以处理的数据必须是数字 信息,因此要在两者之间加入 A/D 芯片进行模数转换。如果输入的是多路数据,数据 量较大,而压缩算法存在固有延时,所以一般先将 A/D 采样后的数字信息存入
38、 SDRAM 进行缓存,以待压缩处理。目前的系统是考虑将压缩后的信息存储在 PC 机上以备日后 查询和核对。在第六章的方案升级中,也将提到其他的改进方法。 综上所述,整个系统的框图如图 3.1 所示 9。 A / D D S P P C S D R A M 下位机 上位机 D T M F 语音 图 3.1 系统框图 由图 3.1 可知,整个系统可以分为下位机和上位机两个部分。其中,下位机包括 A/D、SDRAM 和 DSP 三个主要部分,主要负责信号的采集、模数转换以及语音信号的压 缩和双音多频信号的解码工作;上位机主要负责信号的存储以及查询的工作。本论文 的主要工作是下位机的软件设计部分,因
39、此本章也是主要围绕着下位机的硬件平台和 软件设计来叙述的。DSP 与 A/D 和 PC 之间的连接分别采用 McBSP0 和 McBSP1,关于 McBSP 的介绍和设置将在后面的章节中有所阐述。 3.1.2 DSP 选型 (1)TMS320C5509 简介 音频处理一般采用较为复杂的算法进行算术运算,而 DSP 处理器具有强大的数学 运算功能,十分适用于音频处理的用途。同时 DSP 处理器的性能直接影响着整个系统 的性能,所以 DSP 芯片的选型至关重要。结合实验室的现有硬件条件,主要在三款 DSP 芯片上作以取舍。这三款 DSP 芯片分别是 MS320C5402、TMS320C2812 和
40、 TMS320C5509。下面分别结合这三款 DSP 芯片的特点作以简单介绍,并分析出最适用 于本论文的 DSP 芯片。 TMS320C54x 系列 DSP 是一款为实现低功耗、高性能而专门设计的定点 DSP 芯片, 适合于语音处理、图像处理、医疗仪器和通信技术等多项领域。同时这款芯片也是在 日常开发中较为熟悉其使用方法的一款芯片,在使用方法上,技术较为成熟。其片内 设置为程序 ROM:4K 字、程序数据 ROM:4K 字、DARAM:16K 字。 TMS320C281x 系统 DSP 是基于 TMS320C2xx 内核的定点数字信号处理器,与 F24x 系统 DSP 相比,其提高了运算的精度
41、(达 32 位)和系统的处理能力(达到 150MIPS)。 对于本设计而言,TMS320F281x 系统 DSP 的最大优势在于其本身即具有 16 通道的高 性能 12 位 ADC 单元,可以实现双通道信号同步采样,这样的结构可以简化系统的硬 件设计,操作简便。TMS320C28lx DSP 的芯片内部提供了 16KB 的 SARAM。 TMS320C55x DSP 是德州仪器(TI)C5000 DSP 系列里面较新的一代的 16 位定点 DSP 内核,具有低功耗、高效率、代码密度高等优点,完全兼容 C54x 系列。C55x 的 指令集与 C54x 的完全兼容,为 C54x 开发的程序重新汇编
42、后在 C55x 上的运行提供了 很好的保障,两者运行结果几乎完全相同。同时,C55x 具有更为扩展的片内存储空间。 对于实验室已经购进的 TMS320C5509 DSP 来说,其片上资源更为丰富,其拥有 256KB 的 RAM 和 64KB 的 ROM。 对于本论文而言,出于对处理速度的考虑,需要将程序代码和所用到的变量、堆 栈等放在 DSP 的片上存储区中,以减少运算时间。根据估算,语音压缩程序大约需要 35KB 的空间,双音多频解码程序和串口传输程序大约分别需要 3KB 空间。由此可见, DSP 芯片的选择主要是根据 DSP 片上存储空间来进行的,分析上述三款 DSP 处理器, 只有 TM
43、S320C5509 DSP 可以满足要求,故本论文所用的 DSP 选定为这款。 (2)TMS320C5509 DSP 的性能简介 TMS320C5509 DSP 作为 C55x 系统的代表型号,具有以下主要特征 10: 一个 3216 位的指令缓冲队列; 两个 1717 位的乘加单元; 一个 40 位的算术逻辑单元; 一个 40 位的移动器; 一个 16 位算术逻辑单元; 四个 40 位的累加器; 12 组独立的总线。 C55x 继承了 C54x 的发展趋势,低功耗,低成本,在有限的功略条件下,保持最 好的性能。工作在 0.9V 下,其核的功耗仅为 0.05mW/MIPS,而性能达到 500M
44、IPS(400MHz),对数字通信等便携式应用所提出的挑战,提供了有效的解决方案。 与 120MHz 的 C54x 相比,300MHz 的 C55x 性能大约提高了 5 倍,而功耗降为 1/6。 C55x 的指令集是 C54x 的超集,加入了适应扩展的新的硬件单元的指令。其指令 长度从 8bit 到 48bit,即 16 字节。这种长度可变的指令可以使每个函数的控制代码 量比 C54x 降低 40,从而达到优化代码密度和有效地使用总线的效果。同时,与 C54x 相比,C55x 的核有两个乘法与累加器(MAC),增加了累加器(ACC) 、算术逻辑单 元(ALU)、数据寄存器等,多个运算单元并行地
45、执行运算,减少了每个运算所需要的周 期数,配合以并行指令,每个机器周期的效率可以提高了一倍。双 MAC 可以在一个周 期内完成两个 17*17-bit 的 MAC 运算。与此同时,40-bit 的 ALU 可以完成 32-bit 的运 算,或者两个 16-bit 的运算。第二个 16-bit 的 ALU 用于通用的算术运算,增加了并行 性和加法的灵活性。基于改进的哈佛结构,C55x 包含了一组程序总线和 3 组独立的数 据读总线,可以同时将数据送给各个计算单元。 C55x CPU 包含有 4 个单元: 1)指令缓存单元。缓存和解码应用程序的指令。该单元还包括解码逻辑,解释 C55x 的不同长度
46、的指令。指令缓存单元通过使不同的计算单元维持稳定的任务流来提 高 DSP 的效率。 2)程序流单元。跟踪程序的执行点。其硬件用于高效的循环、分支、条件执行以 及流水保护。 3)地址数据流单元。在程序执行中,为访问数据提供地址指针。正式由于该单元 的存在,使 C55x 高效的寻址模式成为可能。专门的硬件管理 5 组数据总线,使数据流 向各个计算单元。附加的通用 ALU 简化算术运算,提高了指令的并行性。 4)数据计算单元。这是 DSP 的心脏,对所处理的数据执行算术运算。它包括 MAC、主 ALU 以及累加器寄存器。另外还包括一个桶形移位器、舍入和饱和控制以 及用于维特比算法的专门硬件。通过这个
47、单元所保证的指令的并行性,是提高 C55x 处 理效率的关键。 3.1.3 多通道缓存串口 McBSP 的使用 (1)McBSP 的主要特点 11 多通道缓冲串口可以提供: 全速双工通信 双缓存发送和三缓存接收,支持连续传送 接收和发送使用独立的时钟 发送中断到 CPU,发送同步事件到 DMA 控制器 128 通道收发 多通道选择模式可以允许或禁止每个通道 直接与多媒体数字信号编解码器的工业标准接口、模拟接口以及串行 ADC/DAC 接口 可由外部提供时钟与帧同步信号 内部可变成采样率发生器可控制时钟和帧同步信号 可以选择帧同步脉冲和时钟信号的极性 字宽可选:8、12、16、20、24 和 3
48、2bit u-law 和 A-1aw 压缩扩展 8-bit 传输时可以选择先传 LSB 或 MSB 多个状态 bit 标志异常和错误 多通道缓冲串口信号引脚,可配置为通用输入输出引脚 (2) McBSP 的工作原理 McBSP 包括一个数据流通路和一个控制通路,通过以下 7 个引脚与外部设备连接。 通过 McBSP 与外部设备的数据交换,由 DX 引脚发送数据,RX 引脚接收数据。 通信的时钟和帧同步信号由 CLKX(发送时钟)、CLKR( 接收时钟)、FSX(发送帧同步)以 及 FSR(接收帧同步)引脚来控制。 DSP 的 CPU 或 DMA 控制器与 McBSP 的通信,通过 16-bit
49、 寄存器访问内部的外 设总线来实现。发送时,CPU 或 DMA 控制器将数据写到数据发送寄存器 (DXR1、DXR2)。写给 DSR 的数据,通过发送移位寄存器(XSRl、XSR2)移位输出 DX。同样,McBSP 通过 DR 引脚接收数据,移位存储到接收移位寄存器(RSRl、RSR2), 并复制到接收缓存寄存器(RBRl、RBR2) 。然后,再由(RBR1、RBR2)复制到 DRRs, 由 CPU 或 DMA 控制器读取。这样,可以同时进行内部和外部的数据通信。如果串行 字长为 8、12 或 16-bit,则不需要使用 DRR2、RBR2 、RSR2、DXR2 以及 XSR2 寄存 器进行读、写或移位的操作。如果串行字长更长,则需要使用这些寄存器来保存高位 bits。 (3) McBSP 的使