基于DSP技术的语音监控系统的软件设计与实现本科毕业论文.doc_第1页
基于DSP技术的语音监控系统的软件设计与实现本科毕业论文.doc_第2页
基于DSP技术的语音监控系统的软件设计与实现本科毕业论文.doc_第3页
基于DSP技术的语音监控系统的软件设计与实现本科毕业论文.doc_第4页
基于DSP技术的语音监控系统的软件设计与实现本科毕业论文.doc_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

彭国卿 基于DSP技术的语音监控系统的软件设计与实现 第 43 页 共 43 页 基于DSP技术的语音监控系统的软件设计与实现学生姓名:彭国卿 指导老师:肖红光摘 要:本文的主要工作是在研究算法的基础上,将语音监控系统在DSP上进行了软件实现。首先,本文研究了软件设计所需的两种算法语音信号的压缩算法G.723.1以及双音多频信号的解码算法Goertzel,从算法的原理、结构等方面作了详细的介绍。继而,阐述了系统的硬件平台TMS320C5509 DSP,其中包括DSP的选型方法、A/D芯片的使用和控制方式,多通道缓存串口McBSP的使用等,并介绍了系统的软件编译环境CCS和编程语言。之后,本文较为详细地论述了系统各个功能模块的软件实现方法,其中包括A/D控制字的编写、语音压缩编码处理、监控码的识别以及链接命令文件.cmd的编写等。同时,本文对重点程序进行了调试和相关的测试,详细介绍了调试的工具和重点程序模块的调试方法。经过调试和测试,各个模块的软件均运行正常,可以达到预想的使用效果。关键词:DSP;语音压缩;语音监控;G.723.1; GoertzelAbstract: The main work of the issue is the software design which bases on the study of algorithmsFirstly,the 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,including 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 processing 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 can be operated and used normally Keywords: DSP,voice compression,voice monitoring,G.723.1,Goertzel1引言截至目前为止,在大多数通信系统中,传输最多的信息是语音信号。随着信息科学技术的飞速发展,语音处理技术在最近20多年中取得了重大的进展。语音信号处理技术主要有四大分支语音增强、语音编码、语音合成和语音识别。这四个部分的发展都十分迅速,科研成果也收获颇丰,并陆续地由理论研究转向实际应用。语音编码技术是语音信号处理技术的一个重要组成部分。语音编码属于信源编码。自从上个世纪70年代以来,随着科学技术的迅猛发展,尤其是随着计算机技术、微电子技术、信号处理技术以及编码理论的发展和进步,语音编码技术取得了许多突破性的进展,研究出许多实用的编码方案。这些方案在不断的研究、改进和应用中日趋成熟,形成了各种实用的语音编码技术。现在,语音编码技术已经成为通信技术中一个相当重要的学科,在各种通信系统中都得到了广泛的应用。数字信号处理器(Digital Signal Processor,DSP)是现代电子技术、计算机技术和信号处理相结合的产物。DSP独特的结构决定了它具有运算速度快、可编程和接口灵活等特点,能快速实现各种数字信号处理算法。随着信息和电子技术的飞速发展,DSP在电子信息、通信、软件无线电、自动控制、信息家电等多个领域得到了广泛的应用。采用DSP来实现数字信号处理系统更是当前的发展趋势,特别是针对诸如语音处理这种涉及到大量算术运算的技术,采用DSP来进行系统实现,优势更加明显。2系统软件理论基础输入系统的信号主要有双音多频信号和语音信号两种1,相关的基础理论也主要是针对这两类信号的不同的处理算法,即双音多频的解码算法Goertzel算法和语音压缩编码算法G.723.1算法2。下面分别对这两种算法作以介绍。2.1 双音多频解码算法Goertzel算法2.1.1 双音多频信号(DTMF)信号简介双音多频信号即为DTMF信号(Dual-Tone Multi-Frequency),是由美国贝尔实验室开发的现代按键式电话机普遍使用的拨号信令。DTMF的出现迅速地取代了原始的dial-pulse(脉冲拨号)的方式。DTMF信号除了在电话系统中得到广泛的应用以外,在其他交互控制应用领域,如电话银行、ATM(自动取款机)等,同样得到了广泛的应用。双音多频信号由8个固定频率组成,其中4个行频率、4个列频率。每个按键唯一地由一组行频率和列频率交织组成,如图2.1所示。这样上述4个行频率和4个列频率的两两组合对应了16个不同的按键,其中12个按键是比较常见的按键(09,#,*),另外的4个键作为保留,以备今后的使用3。图2.1 双音多频信号的组成在本论文中,由对讲机发出的数字信息码就是双音多频信号。该信号记录了所使用的对讲机的编号,可以作为系统的监控码使用,以鉴别语音信号的发送者。2.1.2 双音多频信号的检测原理一般解码时,是对收到的音频信号进行检测,分析出有效频率组合的存在性,并将其转换成对应的按键或者数字信息。对于双音多频信号,由于其信号组成的特殊性,即每个DTMF信号是由行列两组音频信号唯一确定,DTMF的解码主要完成对有效行列频率的检测以及由检测出的一组行列频率来判决对应的按键信息。由于本论文采用DSP芯片来实现对DTMF信号的检测,同时DSP芯片处理的是数字信号,所以必须先将由对讲机输入的DTMF信号进行A/D转换,再将数字化的信息送入DSP进行相应的检测处理。这一部分在后续的硬件实现平台中将有详细的介绍。在检测DTMF信号时,不但要检测出DTMF的基波信息,而且需要考虑其二次谐波的信息。这是因为上述8个特定频率只在基波上有较高的能量,而话音信号不但在相同的基波上有较高的能量,在其二次谐波上也叠加有较高的能量,因此,检测二次谐波就可以有效地区分DTMF信号和话音信号4。DTMF信号的解码检测过程如图2.2所示。图2.2 双音多频信号的解码检测框图2.1.3 Goertzel算法DTMF信号的解码是基于Goertzel算法的,也称为高斯算法。由于每一个DTMF信号是由固定的8个频率组合而成,所以在进行运算的时候,不需要计算全部的频域信息,只需要计算特定的频域信息即可。理论上可以证明,当计算的点数小于log2N时,与需要计算全部频域信息的FFT相比,Geortzel算法更为有效。Goertzel算法可以看作是2阶IIR滤波器,其计算流图如图2.3所示5。图2.3 Goertzel算法的计算流图由图2.3可知,Goertzel算法由前向通道和后向通道组成。其前向通道的差分方程为: (2-1)其后向通道的差分方程为: (2-2)根据Goertzel算法有: (2-3)其中 (2-4)可以看出DTMF的解码过程就是通过后向通道的差分方程(公式(2-2)叠代计算出和,然后再由公式(2-3)进行一次前向运算,从而得到所需要的频率的DFT值。频率和参数的关系是: (2-5)其中是所需检测的频率,是采样频率(本文中采样频率为8kHz)。在DTMF检测解码中,由于输入的信号是实数序列,所以并不要检测出8个行列频率的相位信息,只需要计算出其幅度的平方值即可,即只需考虑。这种只考虑信号的幅度平方的算法被称作Goertzel优化算法。该优化算法相对Goertzel算法可以减少运算量,但以损失相位信息为代价的,然而这种相位信息的损失并不会影响算法的正常解码和检测。由式公式(2-3)可知: (2-6)利用上式进行计算可以简化运算,同时避免了计算复数参数。由此可知,结合公式(2-2)和公式(2-6),即可计算输入序列x(n)的单点DFT X(k)的幅度平方方值。DTMF解码器相当于含有8个固定参数的滤波器,参数值可由 (2-7)确定。Goertzel算法的IIR滤波器结构,使得该算法可以对输入序列进行实时的处理。将输入序列分别通过8个滤波器计算出相应的值,和门限比较器相比较,来判断有效的行频率和列频率。最后由按键和DTMF的映射关系得到相应的按键信息。相关参数可以处理为数组的形式,调用的时候采用查表的方式即可。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标准采用线性预测的合成分析法。对激励信号进行量化时,高码率算法采用多脉冲最大似然量化(MP-MLQ),而低码率算法采用算术码本激励线性预测(ACELP)。2.2.2 G.723.1编码算法G.723.1语音编码算法采用了线性预测分析合成技术,以尽量减少实际语音和合成语音之间经感知加权后的误差信号的能量为准则来进行编码。对于分析合成后的线性预测误差信号,G.723.1编码算法采用自适应码本和固定码本进行矢量量化,并传送量化参数。压缩后传输的参数包括线性预测系数、自适应码本延时和增益、激励脉冲位置和符号等。G.723.1语音编码算法的流程图如图2.4所示6。图2.4 G.723.1编码器框图根据图2.4,G.723.1的编码过程一般可分为如下几个部分:(1) 分帧输入的语音信号为经过A/D量化后的16bit线性PCM码流。G.723.1语音编码是按帧格式对语音数据进行压缩的,所以首先将上述码流分割成长度为240个样点的语音帧,即每帧240个采样值,采样频率8kHz,每帧30ms。(2) 语音信号的预处理在处理语音信号之前,一般要将语音信号通过一个高通滤波器,以滤除直流分量和低频分量。这个过程也被称作语音信号的预处理。在G.723.1算法中,采用的是一个单极点单零点的滤波器,其传输函数如下所示: (2-8)由高通滤波器的传输函数可以看出:其零点为z=1,位于实轴和单位圆的交点之上,这就充分保证了滤波器对直流分量的抑制作用;同时,其极点为,即所选用的滤波器的极点和零点非常的接近,两者比值将近为1,具有较为平坦的高通特性。(3) 线性预测分析(LPC)线性预测是在假定系统输入为白噪声,输出为重建的语音信号的情况下,对系统的传输函数的有效估计,其目的在于使得重建信号最大程度地逼近输入的语音信号,使得二者在主观感觉上尽可能的一致。G.723.1编码算法采用十阶线性预测(LP)进行分析,并将上述一帧信号分成4个子帧,每个子帧含有60个样值,对每个子帧独立进行LPC分析。为了提高LPC系数的连续性,采用长度为180个样值的汉明窗,即同时包含前后两个子帧,这使算法引入60个样值的超前时延,因此算法的总延时为37.5ms。其线性预测分析过程如下:首先将信号通过上述汉明窗进行处理,计算出11个自相关系数。然后,对于每个子帧,利用Levinso-Durbin递归算法求出10个线性预测系数(LPC系数) ,这些系数也将在后续的计算中用于共振峰感知加权滤波器。用上述LPC系数构建合成滤波器,其定义如下: (2-9)其中,是LPC系数,i表示第i个子帧,j表示第j个LPC系数。(4)LSP量化由于线谱对参数(LSP)具有良好的量化特性和内插特性,故G.723.1编码算法将LPC参数转换为LSP参数进行传输。LSP采用预测分裂矢量量化,并且只对四个子帧中的最后一个子帧的LPC参数进行LSP处理。如图2.4所示,LSP处理包括三个部分:LSP量化、LSP解码和LSP插值。其中后面两个部分属于模拟解码模块,该解码模块模拟实现接收端的解码过程,并将结果反馈给加权合成滤波器以调整滤波器的系数。其中,LSP量化过程如下:首先,进行一个小的附加带宽扩展(7.5Hz)以提高系统的稳定性。然后根据语音帧间的相关性,利用预测分量矢量量化器对得到的LP滤波器进行量化。量化的基本步骤如下:1)用搜索单位圆和对过零点进行插值的方法将LPC系数aj转换为LSP系数Pj;2)将得到的LPC系数去除长时直流成分PDC,得到新的不含有直流分量的LSP矢量p;3)用前一子帧解码后得到的LSP系数对当前这一子帧进行线性预测,其固定的预测因子为,从而得到去除直流分量的LSP预测矢量和残差LSP矢量; (2-10) (2-11)4)将未量化的LSP矢量、量化后的LSP矢量和LSP残差矢量分别分裂为三个子矢量,这三个子矢量的维数分别为3维、3维和4维。对LSP残差矢量分裂出来的三个子矢量分别用8bit的码本进行量化,量化采用加权均方误差最小准则;5)将码本搜索后得到的量化表的索引值传送到输出端。(5)共振峰感知加权滤波器为了提高量化感知质量,高通滤波后的语音信号需要通过共振峰感知加权滤波器和谐振峰噪声整形滤波器以生成初始目标信号。这是因为,在语音频谱中,相对于能量较低的频段的噪声,能量较高的频段即处于共振峰处的噪声更不容易被感知。因此,在衡量合成后的语音与原始输入的语音之间的误差的时候,要考虑上述因素,即在语音能量较高的频段,允许的误差大一些,以降低编码速率,所以要引入共振峰感知加权滤波器W(z)来实现对语音信号的修正7。对每一子帧都要构建共振峰感知加权滤波器W(z),所使用的系数为每一子帧的未矢量化的LPC系数。W(z)的定义如下: , (2-12)其中,。每个子帧通过滤波器后得到输出的语音信号。(6)开环基音估值开环基音估值(也称开环基音搜索)就是对语音信号的基音周期的估计。对于每一帧计算两次基音周期,即对每一帧中的前两个子帧和后两个子帧分别进行开环基音估计。利用感知加权语音信号fn,同时采用搜索互相关最大的方法,得到开环基音周期。其中互相关的定义如下: , (2-13)上式中的是感知加权滤波器产生的语音信号。使得互相关最大的索引号j即为开环基音周期。(7) 谐振峰噪声整形滤波器如上所述,加入谐振峰噪声整形滤波器的目的,也是为了提高语音信号的编码质量。该滤波器是基于基音的感知加权滤波器,主要利用了语音的长时相关性。其定义如下: (2-14)其中,为滤波器的系数,L是最佳时延,也就是谐振峰噪声整形滤波器的阶数。为了求得最佳时延L,对CPW(j)定义如下,并对其采用最大化准则: , (2-15)其中,L1 = LOL- 3,L2 = LOL+ 3。使得CPW(j) 取得最大值的j即为最佳时延L。这里将上式中CPW(j) 的最大值定义为CL。(8)冲激响应和零输入响应的计算LPC合成滤波器、共振峰感知加权滤波器和谐振峰噪声整形滤波器合成一个联合滤波器,用于计算冲激响应hn和零输入响应。冲激响应的传输函数表达式如下: , (2-16)公式(2-16)中,、分别为语音合成滤波器、感知加权滤波器和谐振峰噪声整形滤波器的传输函数。为了编解码器中的合成滤波器的状态的一致性,在进入搜索部分之前,要先在信号中减去合成滤波器中将要产生的零输入响应8。将零值输入合成滤波器,得到合成滤波器的零输入响应,然后在感知加权的语音信号中减去零输入响应,即可得到码本搜索的输入信号。(9) 闭环基音搜索在G.723.1算法中,闭环基音搜索和开环基音搜索共同构成了自适应码本搜索,即基音周期的预测。如前所述,开环基音搜索是基于整帧的整数基音估计,没有考虑到合成后的语音和原始语音之间的误差,所以开环基音搜索只是对基音周期的估计,确定了基音周期的大致范围,并不能确定基音周期的准确值。因此需要进行基于子帧的闭环基音搜索,以较为准确地确定基音周期的数值,并进行自适应码本搜索。G.723.1编码器采用一个五阶的基音预测器,利用上文提到的冲激响应和开环基音估值计算闭环基音周期。在同一整帧中,对于第0子帧和第2子帧,在(LOL-1, LOL, LOL+1)的范围内搜索闭环基音周期,并将之编码为7bit:对于第1子帧和第3子帧,只对该子帧的基音延时与前一子帧的差值进行2bit编码,这里基音延时的差值范围为-1,0,+1,+2。然后进行自适应码本搜索,即将基音预测器的增益进行矢量量化。所使用的矢量量化码本有2个,分别为85个和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)。残差余量信号用表示,用逼近。固定码本搜索就是要找出合适的参数,使得和的均方误差最小,的表达式如下所示: (2-17)其中,G为增益因子;为第k个脉冲幅度的符号,取值为1;M为脉冲个数;为第k个脉冲的位置。上文提到的待寻找的合适的参数就是G、和。1) 多脉冲最大似然量化(MP-MLQ)高码率编码(6.3kb/s)采用MP-MLQ算法。该算法规定如下:偶数子帧脉冲有6个,奇数子帧脉冲有5个;脉冲只能全部在奇数位置或全部在偶数位置,奇偶用1bit表示。也就是用一帧中只有5个或6个非零脉冲的输入信号通过加权合成滤波器来模拟残差余量信号rn。这样就用5个或6个点代表60个信号。为了减少计算量,该算法中采用准最优化搜索算法,过程如下:首先,估计用最大似然法计算增益的估计值Gmax的表达式如下: (2-18)然后对进行对数量化,在的搜索范围内,对每一个增益值对奇数位置和偶数位置各进行一次和的搜索,最终选取使得均方误差最小的参数组合进行传送。2) 代数码本激励线性预测(ACELP)低码率编码(5.3kb/s)采用ACELP算法。每个随机码矢量最多有4个非零脉冲,它们的可能位置如表2-1所示。表2-1中的每行表示每个激励脉冲的可能位置为8个,相邻的两个位置之间相差为8个样点位置,相邻两个脉冲的对应的可能位置之间相差2个样点位置。需要注意的是,最后两个脉冲中的最后一个脉冲位置(即60,62)已经超过了子帧的边界,即位于本子帧范围之外,表示该脉冲并不存在。表2-1 ACELP激励码本符号位置第1个脉冲10,8,16,24,32,40,48,56第2个脉冲12,10,18,26,34,42,50,58第3个脉冲14,12,20,28,36,44,52,(60)第4个脉冲16,14,22,30,38,46,54,(62)ACELP算法使用的是17bit代数码本。每个脉冲的位置只能从上面表格中的对应位置中选取,位置信息用3bit编码,故4个脉冲一共12bit。其中,每个脉冲的正负符号用lbit来编码,故4个脉冲共计4bit;所有脉冲的位置可以同时移动一位变成奇数位置,是否一位用1bit编码,综上所述,总计为17bit。码本搜索同样采用残差余量信号与之间的均方误差最小来计算。3系统的硬件平台及软件环境3.1系统硬件平台3.1.1 硬件总体设计方案如前所述,整个项目主要是运用于铁路调度方面,对工作人员的调度工作做以监控之用。从整个项目上来讲,铁路上的工作人员和监控室中的工作人员各持有一个对讲机。铁路上的工作人员使用自己手中的对讲机发送调度指令,由监控室中的对讲机接收这些信息并将其进行保存,以备日后的核查。因此,输入整个系统的信号有两类:双音多频信号和语音信号。双音多频信号是对讲机发送的机器序列号,可以作为监控码使用;语音信号则是工作人员发出的铁路调度信息。未经压缩编码的语音信号的信息量很大,如果是多路系统,信息量将更为庞大,因此采用语音压缩编码进行处理。语音算法通常含有较为复杂的算术运算,因此选用DSP作为处理芯片。输入的语音信号和双音多频信号是模拟信号,而DSP可以处理的数据必须是数字信息,因此要在两者之间加入A/D芯片进行模数转换。如果输入的是多路数据,数据量较大,而压缩算法存在固有延时,所以一般先将A/D采样后的数字信息存入SDRAM进行缓存,以待压缩处理。目前的系统是考虑将压缩后的信息存储在PC机上以备日后查询和核对。在第六章的方案升级中,也将提到其他的改进方法。综上所述,整个系统的框图如图3.1所示9。图3.1 系统框图由图3.1可知,整个系统可以分为下位机和上位机两个部分。其中,下位机包括A/D、SDRAM和DSP三个主要部分,主要负责信号的采集、模数转换以及语音信号的压缩和双音多频信号的解码工作;上位机主要负责信号的存储以及查询的工作。本论文的主要工作是下位机的软件设计部分,因此本章也是主要围绕着下位机的硬件平台和软件设计来叙述的。DSP与A/D和PC之间的连接分别采用McBSP0和McBSP1,关于McBSP的介绍和设置将在后面的章节中有所阐述。3.1.2 DSP选型(1)TMS320C5509简介音频处理一般采用较为复杂的算法进行算术运算,而DSP处理器具有强大的数学运算功能,十分适用于音频处理的用途。同时DSP处理器的性能直接影响着整个系统的性能,所以DSP芯片的选型至关重要。结合实验室的现有硬件条件,主要在三款DSP芯片上作以取舍。这三款DSP芯片分别是MS320C5402、TMS320C2812和TMS320C5509。下面分别结合这三款DSP芯片的特点作以简单介绍,并分析出最适用于本论文的DSP芯片。TMS320C54x系列DSP是一款为实现低功耗、高性能而专门设计的定点DSP芯片,适合于语音处理、图像处理、医疗仪器和通信技术等多项领域。同时这款芯片也是在日常开发中较为熟悉其使用方法的一款芯片,在使用方法上,技术较为成熟。其片内设置为程序ROM:4K字、程序数据ROM:4K字、DARAM:16K字。TMS320C281x系统DSP是基于TMS320C2xx内核的定点数字信号处理器,与F24x系统DSP相比,其提高了运算的精度(达32位)和系统的处理能力(达到150MIPS)。对于本设计而言,TMS320F281x系统DSP的最大优势在于其本身即具有16通道的高性能12位ADC单元,可以实现双通道信号同步采样,这样的结构可以简化系统的硬件设计,操作简便。TMS320C28lx DSP的芯片内部提供了16KB的SARAM。TMS320C55x DSP是德州仪器(TI)C5000 DSP系列里面较新的一代的16位定点DSP内核,具有低功耗、高效率、代码密度高等优点,完全兼容C54x系列。C55x的指令集与C54x的完全兼容,为C54x开发的程序重新汇编后在C55x上的运行提供了很好的保障,两者运行结果几乎完全相同。同时,C55x具有更为扩展的片内存储空间。对于实验室已经购进的TMS320C5509 DSP来说,其片上资源更为丰富,其拥有256KB的RAM和64KB的ROM。对于本论文而言,出于对处理速度的考虑,需要将程序代码和所用到的变量、堆栈等放在DSP的片上存储区中,以减少运算时间。根据估算,语音压缩程序大约需要35KB的空间,双音多频解码程序和串口传输程序大约分别需要3KB空间。由此可见,DSP芯片的选择主要是根据DSP片上存储空间来进行的,分析上述三款DSP处理器,只有TMS320C5509 DSP可以满足要求,故本论文所用的DSP选定为这款。(2)TMS320C5509 DSP的性能简介TMS320C5509 DSP作为C55x系统的代表型号,具有以下主要特征10:l 一个3216位的指令缓冲队列;l 两个1717位的乘加单元;l 一个40位的算术逻辑单元;l 一个40位的移动器;l 一个16位算术逻辑单元;l 四个40位的累加器;l 12组独立的总线。C55x继承了C54x的发展趋势,低功耗,低成本,在有限的功略条件下,保持最好的性能。工作在0.9V下,其核的功耗仅为0.05mW/MIPS,而性能达到500MIPS(400MHz),对数字通信等便携式应用所提出的挑战,提供了有效的解决方案。与120MHz的C54x相比,300MHz的C55x性能大约提高了5倍,而功耗降为1/6。C55x的指令集是C54x的超集,加入了适应扩展的新的硬件单元的指令。其指令长度从8bit到48bit,即16字节。这种长度可变的指令可以使每个函数的控制代码量比C54x降低40,从而达到优化代码密度和有效地使用总线的效果。同时,与C54x相比,C55x的核有两个乘法与累加器(MAC),增加了累加器(ACC)、算术逻辑单元(ALU)、数据寄存器等,多个运算单元并行地执行运算,减少了每个运算所需要的周期数,配合以并行指令,每个机器周期的效率可以提高了一倍。双MAC可以在一个周期内完成两个17*17-bit的MAC运算。与此同时,40-bit的ALU可以完成32-bit的运算,或者两个16-bit的运算。第二个16-bit的ALU用于通用的算术运算,增加了并行性和加法的灵活性。基于改进的哈佛结构,C55x包含了一组程序总线和3组独立的数据读总线,可以同时将数据送给各个计算单元。C55x CPU包含有4个单元:1)指令缓存单元。缓存和解码应用程序的指令。该单元还包括解码逻辑,解释C55x的不同长度的指令。指令缓存单元通过使不同的计算单元维持稳定的任务流来提高DSP的效率。2)程序流单元。跟踪程序的执行点。其硬件用于高效的循环、分支、条件执行以及流水保护。3)地址数据流单元。在程序执行中,为访问数据提供地址指针。正式由于该单元的存在,使C55x高效的寻址模式成为可能。专门的硬件管理5组数据总线,使数据流向各个计算单元。附加的通用ALU简化算术运算,提高了指令的并行性。4)数据计算单元。这是DSP的心脏,对所处理的数据执行算术运算。它包括MAC、主ALU以及累加器寄存器。另外还包括一个桶形移位器、舍入和饱和控制以及用于维特比算法的专门硬件。通过这个单元所保证的指令的并行性,是提高C55x处理效率的关键。3.1.3 多通道缓存串口McBSP的使用(1)McBSP的主要特点11l 多通道缓冲串口可以提供:l 全速双工通信l 双缓存发送和三缓存接收,支持连续传送l 接收和发送使用独立的时钟l 发送中断到CPU,发送同步事件到DMA控制器l 128通道收发l 多通道选择模式可以允许或禁止每个通道l 直接与多媒体数字信号编解码器的工业标准接口、模拟接口以及串行ADC/DAC接口l 可由外部提供时钟与帧同步信号l 内部可变成采样率发生器可控制时钟和帧同步信号l 可以选择帧同步脉冲和时钟信号的极性l 字宽可选:8、12、16、20、24和32bitl u-law和A-1aw压缩扩展l 8-bit传输时可以选择先传LSB或MSBl 多个状态bit标志异常和错误l 多通道缓冲串口信号引脚,可配置为通用输入输出引脚(2) McBSP的工作原理McBSP包括一个数据流通路和一个控制通路,通过以下7个引脚与外部设备连接。通过McBSP与外部设备的数据交换,由DX引脚发送数据,RX引脚接收数据。通信的时钟和帧同步信号由CLKX(发送时钟)、CLKR(接收时钟)、FSX(发送帧同步)以及FSR(接收帧同步)引脚来控制。DSP的CPU或DMA控制器与McBSP的通信,通过16-bit寄存器访问内部的外设总线来实现。发送时,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的使用如前所述,McBSP包含两个通路:数据流和控制通路。所以使用时,一般是先通过初始化设置,向McBSP写入合适的控制字,将其设置到需要的状态。读取或写入数据时,从相应的寄存器中进行处理即可。McBSP的各个寄存器都拥有自己专用的地址,控制字或数据的读取写入,即是对相应的地址的内容的改写。如果使用TI提供的CSL进行DSP的初始化,则可根据CSL提供的库函数直接修改其函数参数即可完成操作上述操作。这部分将在第四章中进行较为详细的阐述。3.1.4 DMA的使用直接存储器访问(DMA)控制器可以在没有CPU参与的情况下,完成存储器映射区之间的数据传输。当CPU在后台工作时,DMA控制器可以: 在片内存储器、片外存储器、片上外围设备之间传送数据 在主机接口(HPI)和存储器之间传送数据在本论文中,由于待压缩的语音信息的数据量比较大,片内资源不能满足其需要,故需要将待处理的语音数据存放在片外。在这种情况下,对外部存储器的访问会带来比较大的性能损失,也会占用比较多的CPU资源,所以考虑采用DMA方式实现对片外存储器的访问。即由SDRAM搬移数据到DSP中这个过程可以采用DMA方式实现,以减少系统性能的损失。3.1.5 A/D芯片的选型和使用(1)AD73360的主要特征12根据项目要求,需要选择一款具有多输入通道的A/D芯片。经过分析与比较,选定AD73360芯片。选用这款芯片的主要原因是其具有6通道模拟输入端,可以充分满足项目的需要。AD73360是ADI公司推出的一款可编程通用6通道串行模拟输入前端处理器,每个通道可以输出长度为16位的数字量。上述6通道各路自带转换电路,可以保证同时采样,并且无需CPU干预,从而有效地减少了由于采样时间不同而产生的相位误差。各个通道的采样速率有8kHz、16kHz、32kHz和64kHz等多种选择,利用控制字就可以方便地对采样速率进行选择。每个通道可以允许从直流到4kHz的模拟信号通过。由于各个通道都具有内置的反混迭滤波器,因此对其输入端的反混迭滤波器的要求就可以大为降低,仅仅需要简单的一阶RC滤波器即可。当级联使用AD73360时,最多可将8个AD73360芯片级联在一起。此时,模拟量输入通道的最大数目达到48路,这样就可以给系统的模拟量输入通道的数目扩展带来了极大的方便,也为项目的扩展升级做好了充分的准备。AD73360的其他主要特征如下:1) 其6通道之间相互隔离,并且每通道都含有一个信号调理电路和片上输入增益放大器,增益可达0到38dB,增益范围被设为8级,可由编程控制选择。容许低电平幅度的模拟信号的输入,几乎不存在时间延迟。各个通道在音频范围内可提供77dB的信噪比。2) AD73360使用六线工业标准同步串行接口。接口信号线只有6条,节约了印刷板的面积,并且可以有效地减小了电磁干扰,从而使得系统更加稳定地运行。AD73360与DSP可以快速连接。3)由于AD73360具有内置的程控可变增益放大器,所以这款AD芯片不仅适合于大信号应用,同样适用于小信号应用,而且对小信号应用尤为简单高效。(2)AD73360的控制方法AD73360内部共有8个控制寄存器,分别是CRA-CRH,它们所占用的地址为07,每个控制寄存器的长度为8位。各个控制寄存器的bit的设置分别代表不同的状态。AD73360的同步串行接口能够识别长度为16位的来自DSP的控制字。当系统中接入AD73360后,需要由DSP向其各个寄存器写入合适的控制字完成其基本工作方式的设定。关于初始化控制字的相关程序将在第四章中详细介绍。(3)AD73360的使用方法AD73360在程序数据模式下工作时,首先进入程序方式并向AD73360写入控制字,然后再切换到数据方式。在从AD73360读取数据后,系统将不再切换回到程序方式。而在混合模式下,系统总是在程序方式和数据方式之间不断地切换工作,以达到在从AD73360读取数据期间改变其配置的目的。在选择AD73360的采样速率和数据传送速率时,应当注意的是确保在采样间隔中能将经过采样得到的所有数字信息传输给DSP,以免数据丢失。例如,将AD73360设置为混合工作模式,如上所述,该工作模式下系统需要在程序方式和数据方式之间切换,那么切换时候就要写入相应的控制字,所以在选择采样速率和数据传输速率时,还要考虑发送采样结果之后,AD73360是否有足够的时间接收DSP传送过来的控制字。同时,接收中断中可以加入适当的处理,比如将各通道的数据分开存放、滤波等操作,但是也应该特别注意的是不能使中断程序过长,以免因为DSP来不及接收数据而引起数据的丢失。3.2系统的软件环境及编程语言的选择3.2.1 软件开发环境CSS简介Code Composer Studio简称CCS,是TI公司推出的为开发TMS320系列DSP软件的集成开发环境(IDE)。CCS工作在Windows操作系统下,类似于VC+的集成开发环境,采用图形接口介面,提供有编辑工具和工程管理工具。它将各种代码产生工具,诸如汇编器、链接器、C/C+编译器、建库工具等集成在一个统一的开发平台中。CCS所集成的代码调试工具具有各种调试功能,包括原TI公司提供的C源代码调试器和模拟器所具有的所有功能。能对TMS320系列DSP进行指令级的仿真和进行可视化的实时数据分析。此外,还提供了丰富的输入/输出库函数和信号处理的库函数,极大地方便了TMS320系列DSP软件的开发过程。利用CCS的软件开发流程图如图3.213。图3.2 CCS开发流程简图CCS一般工作在两种模式下:软件仿真器和与硬件目标板相结合的在线编程。前者可以脱离DSP芯片,在PC机上模拟DSP的指令集与工作机制,主要完成前期算法的实现和调试;后者可以实时运行在DSP芯片上,进行在线编写和调试应用程序。C5000 CCS是专为开发C5000系列DSP应用设计的,包括TMS320C54x和TMS320C55x DSP。本论文中使用的软件开发环境为CCS 3.0版本。其使用介面如图3.3所示。图3.3 CCS 3.0的使用界面3.2.2 编程语言的选择在数字信号处理器的软件开发中,一直存在一个两难的选择即编写软件的语言是选择与DSP相应的汇编语言还是易于开发的高级语言(如C/C+),或是两者的混合语言。汇编语言是接近底层的机器代码,对硬件的操作更为直接,编写程序执行速度快,效率较高,但程序编写复杂,开发周期长,程度的易读性和可移植性较差。这种特点的形成原因主要是:在编写DSP程序之前首先必须要熟悉所用DSP芯片的汇编指令集;另外,不同公司的DSP芯片所提供的汇编指令集是各不相同,甚至即使是同一公司的DSP芯片由于芯片类型的不同以及芯片的升级更新,其所支持的汇编指令集也不尽相同。使用高级语言(如C/C+)进行程序开发更为容易,程序的可读性和移植性更强,从而可以大大提升开发速度,缩短开发周期;但是高级语言的效率较低,不易满足实时性的要求。目前各个DSP公司推出的高级语言编译器的效率都不是很理想,由编译器产生的汇编程序和手工编写的汇编程序在效率上相差较大。基于以上考虑,本论文采用的方法是将两种编程语言折中选择,即程序的主体框架和对实时性要求不高的部分用C/C+语言编写,而中断向量表和链接文件等则采用汇编语言编程实现。这样能够充分发挥两者的优点,解决易读性和效率之间的矛盾。这种方法也可以改善软件的移植性,在软件移植时可以不改变程序的主体框架,而只要为处理器提供相应的算法即可。4系统软件设计4.1 主函数主函数一般采用C语言编写,简单明了,不会涉及详细的算法等,只是为了构建清晰的程序流程。本设计的总体流程如图4.1所示。图4.1 主程序流程图多路语音数据的处理是在单路的基础上完成的。即当DSP收到多路数据后,按照通道依次进行处理。整个系统中只有一个线性循环执行的程序。首先,执行初始化的程序,对AD和DSP的基本配置进行初始化配置,然后不断循环调用核心算法对单路的数据依次进行双音多频解码、语音压缩编码和传输的一系列处理,处理完一路数据之后,进入下一路数据的处理,依次循环往返,直至所有数据都被处理完14。图4.1的流程图是以四路语音监控为例。当将初始化执行完毕之后,开启AD,准备接收采样数据,并将采样所得四路数据送入SDRAM进行缓存,每次读取一路数据(即240个采样点)送入DSP进行处理。当前这路数据进行双音多频解码、语音压缩编码以及传输给PC完成之后,进行一次判决,以判断是否读取下一路数据,如果四路数据都被处理过一次之后,重新开始处理第一路的数据,依次循环。对于暂存在SDRAM中的四路数据,为其开辟不同的存储空间,每次读取不同的数据区间即可读取不同路数的数据。4.2 初始化函数4.2.1 DSP初始化(1) Chip Support Library(CSL)简介随着DSP片上外设种类及其应用的日趋复杂,TI公司提供了一组用于访问和控制片上外设的标准的方法,被成为Chip Support Library(简称CSL)。目前大部分C5000和C6000系列的DSP都已经设计了各自的CSL库,通过对库的调用即可以实现对DSP片上外设的配置、控制和管理,可以免除用户编写配置和控制片上外设所必须的定义和代码,简化开发过程。CSL还具有以下特点: 片上外设编程的标准协议:定义一组标准的APIs、函数、数据类型和宏; 对硬件进行抽象,提取符号化的片上外设描述:定义一组宏,用于访问和建立寄存器及其域值 基本的资源管理:对多资源的片上外设进行管理; 已集成到DSP/BIOS中:通过图形用户接口GUI对CSL进行配置; 使片上外设容易使用:缩短开发时间,增加可移植性。(2) CSL的使用DSP的初始化主要是调用CSL库,并通过调用其中的库函数对相关的寄存器进行设置。大多数CSL库函数是用C语言编写的,并且已经对代码的大小和速度进行了优化,对于使用者来说,初始化已经不像以前那样繁杂,因为CSL库已经帮助使用者完成了寄存器和地址之间的映射问题,现在只需调用和填写函数的参数即可。系统中如果调用CSL进行寄存器地址的映射,那么首先要初始化CSL,即在主函数中加入下述语句:CSL_init( );4.2.1 AD初始化(1) AD73360的寄存器设置在第三章的3.1.5中已经讲到,A/D的初始化就是要对其相应的控制寄存器写入合适的数值。在AD73360中,共有CRACRH7个寄存器,每个寄存器接收的数据格式有如表4-1的定义。表4-1 AD73360的控制字格式1514131211109876543210设备地址寄存器地址寄存器内容由表4-1可知,每个寄存器的控制字由

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论