目 录
摘 要·································································Ⅲ ABSTRACT·····························································Ⅳ 1绪 论
1.1 语音处理研究状况······················································1 1.2 语音处理的硬件基础和应用··············································4
2系统硬件部分概述
2.1 DSP系统设计概述······················································6 2.2 系统的总体构成·······················································7 2.3 硬件系统核心芯片的选择···············································8 2.4 实时语音处理的基本要求···············································9
3设计部分
3.1 设计目的和要求·······················································10 3.2 设计原理·····························································10 3.3 设计内容·····························································11
3.3.1 理论依据··························································11
3.3.2 信号特征分析······················································11 3.3.3 方案设计··························································11 3.3.4 方案论证··························································12 3.3.5 器件选型(硬件电路的设计)·········································13
4 软件设计
4.1 DSP软件开发工具和编程特点··········································25 4.2 软件设计··························································· 26 4.3 DSP初始化··························································27 4.4 音频采集程序······················································· 30 4.5 TMS320VC5402的并行引导装载分析和设计·······························32
I
山东建筑大学毕业论文
总结与致谢·····························································34 参考文献·······························································35 附 录·································································· 36
II
山东建筑大学毕业论文
摘 要
提出一个基于TMS320VC5402的音频信号采集与处理系统。介绍了该系统的总体方案和硬软件设计。讨论了模/数(A/D)和数/模(D/A)转换电路的设计方法以及如何利用TMS320VC5402的多通道缓冲同步串口(McBSP)和PCM1800及PCM1744芯片接口来实现音频信号的采集和输出。实验证明:所设计的基于DSP的硬件和软件系统是一个很好的音频信号采集与处理系统。
关键词:多通道缓冲同步串口;音频信号;TMS320VC5402;采集与处理
III
山东建筑大学毕业论文
DSP-based real-time voice processing system
Abstract
Abstract: A TMS320VC5402-based audio signal acquisition and processing system. Describes the general scheme of the system and the hardware and software design. Discussed the analog / digital (A / D) and digital / analog (D / A) converter circuit design and how to use TMS320VC5402 multi-channel synchronous serial port buffer (McBSP) and the PCM1800 and PCM1744 chip interface for audio signal acquisition and Output. Experimental results show: the designed DSP-based hardware and software system is a good audio signal acquisition and processing system.
Keywords: Simultaneous multi-channel buffered serial port;audio signal;
TMS320VC5402;acquisition and processing
IV
山东建筑大学毕业论文
1 绪 论
1.1 语音处理的研究状况
语音是人类进行信息交流最直接、最方便、最有效的工具,语音信号是携带语音信息的语音声波。在信息化时代,人们也期望用这种最便捷的信息交流工具和各种信息存储、处理的设备和终端进行信息交互。语音信号处理研究如何能更加有效地产生、传输和获取语音信息的一门学科。它涉及数字信号处理、语言学、语音学,生理学、心理学、模式识别以及人工智能等多个学科的知识,是信息技术学科中发展最为迅速的一个领域。语音信号处理内容非常广泛,它包含语音识别语音合成,此外还有语音压缩编码、语音理解、说话人识别、语音增强等各个分支,总的来说语音信号处理包含了语音信号的数字表示方法,语音信号处理的各种方法和技术以及语音处理理论和技术在各个领域中的实际应用。
语音信号的处理最早可以追溯到1874年电话的发明,电话的理论基础是尽可能不失真地传送语音波形。直到1939年Dudley发明声码器,通道声码器技术取代了“波形原则”的处理方法,它的理论基础认为语音是由人的声带振动产生的声源(载波)受到不断变化的声道的控制(调制)而产生的,这一概念就是以后迅速发展起来,并广泛应用到各种理论研究和应用实际过程中的语音参数模型的雏形,由此人们开始了语音合成和语音压缩编码的研究。上个世纪60年代中期数字信号处理的方法和技术取得突破性进展,主要是快速傅立叶变换算法的成功应用。出现了第一台以数字计算机为基础的孤立词语音识别器,随后又成功研制出第一台有限连续语音识别器。70年代初,Flanagan出版的重要著作《语音分析合成和感知》,奠定了数字语音处理的系统理论基础。与此同时,倒谱分析技术和线性预测技术在语音处理中得到成功应用,微电子和集成电路技术取得新的进展,高性价比的微处理器芯片和性能优异的专用信号处理芯片不断问世,再次推动了 语音信号处理技术的发展和应用。
语音识别ASR以语音为研究对象,它是语音信号处理的一个重要研究领域, 是模式识别的一个分支,涉及到生理学、心理学、语言学、计算机科学以及信号处理等诸多领域,甚至还涉及到人的体态语言(如人在说话时的表情、手势等行为动作可帮助对方理解),其最终日标是实现人与机器进行自然语言通信,让人机交互界面更加自然和容易使用。语音识别是语音处理中的难点,对它的研究开始的比较晚,但它的一些研究方法和结果可以运用到另外的研究分支中去,因此也是语音处理研究中的重点。1952年
- 1 -
山东建筑大学毕业论文
贝尔实验室的Davis等人首次研制成功能识别十个英语数字的特定人孤立数字识别系统,该系统的成功研制标志着人们开始语音识别的研究工作。此后很长的时间里,语音识别的研究方法主要是用特殊的硬件获取语音信号的特征参数,再在计算机上进行模板匹配和判决,由于受当时计算机技术和信息处理理论的限制,语音识别一直未取得突破性进展。直到上个世纪70年代,动态时间归正技术(DTW)算法、线性预测分析技术(LPC)理论、LPC频谱分析、隐马尔可夫模型(HMM)、人工神经元网络(ANN)、矢量量化(V-Q)等理论,并在语音识别中成功运用,开创了语音识别研究的新局面,语音识别系统的识别率得到了显著的提高。此后语音识别系统由原来的特定人小词汇量孤立词的系统发展到能进行非特定人、大词汇量、连续语音识别。1988年美国卡内基-梅隆大学运用VQ和HMM技术研制出了非特定人、大词汇量、连续语音识别系统.SPHINX系统,它可以理解由1000个单词构成的4200个句子,是语音识别历史的一个里程碑。
我国语音识别理论研究和应用起步较晚,但由于汉语具有音节种类较少的特点,汉语是单音节语言,汉语中音节数只有400个,加上音调才1200个,词是由音节组合成, 便予以音节识别为基础实现大词汇的语音识别,因此,进展较快。清华大学、中国科学院声学所和西安电子科技大学相继成功研制出无限词汇的汉语听写机。四达公司在90年代初推出首批汉语听写机之后,与哈尔滨工业大学合作研制出具有自然理解能力的新产品。模识科技公司PattekASR中文语音识别产品,它面向不同计算平台和应用,具有国际先进水准,是我国第一个拥有完全自主知识产权的语音识别技术产品。模识科技公司此次推出的产品具有识别率高、对环境噪声和不同口音适应能力强、系统占用资源少等特点,PattekASR 对方言的识别率在95%以上。只要对现有的手机、家电、电话总机稍作改装,就可以用语音命令上网查阅资料、控制电视、接通电话分机,国外一些著名的大公司纷纷加大对汉语语音识别研究的投入。
进入上个世纪90年代,随着多媒体时代的来临,语音识别系统由实验室走向实用。许多发达国家和一些公司如美国、日本、韩国以及IBM、Apple、AT&T、NTT等著名公司都为语音识别系统的实用化开发研究投以巨资,其中语音识别软件的发展最为迅速。语音识别软件是语音识别理论和计算机技术相结合的产物。IBM公司于1997年开发汉语Via Voice语音识别系统,次年又开发出可以识别上海话、广东话和四川话等地方口音的语音识别系统Via Voice‘98,平均识别率可达到95%。该系统对新闻语音识别具有较高的精度,是目前具有代表性的汉语连续语音识别系统。IBM宣布,为增强网络浏览和语音电子邮件的功能,将推出其新一代语音识别软件。可使用户通过语音,而不是使用键盘来浏览网络、切换应用程序、执行命令、口授邮件和文本文件等操作。Microsoft
- 2 -
山东建筑大学毕业论文
也在语音识别研究领域进行了投资,其开发的windows xp语音识别技术,可以在包括word在内的所有应用程序的文本信息的区域——记事本、Internet Explorer地址栏和Outlook Express ——内使用口述输入方式,来替代传统的键盘、鼠标按钮输入方式。Speech Work公司的代表产品SpeechWork6,利用该产品,用户可以在没服务人员介入的情况下, 用自然语言同系统进行信息交互.完成诸如旅游预约、股票交易、银行服务、订票服务等。市场上还出现了语音识别电话、语音识别记事本等产品,如美国VPTC 公司的Voice Organizer和法国的Parrot等。
语音合成是最早被研究的语音处理分支,它研究的主要内容是让人们通过听觉来获取以其他形式表示的信息。最早的语音合成是用机械的方式模拟人的发声过程而产生声音。1939年Dudley发明的声码器,用电子线路产生语音的声源,并构成滤波器模拟声道的滤波作用。现代的语音合成都是基于计算机技术的语音处理过程。由D.Klatt设计的串、并联混合,是语音合成研究中最具代表性的工作。20世纪90年代末,日本的一些研究学者提出一种少样本、不等长语音拼接合成技术—PS0LA,该方法来源于利用短时傅立叶变换重构信号的叠接相加法。当前汉语语音合成系统中,合成效果较好的都是采用波形拼接的合成技术,文本--语音转换系统(TTS)是语音合成的一个重要应用形式。语音合成的应用领域十分广泛,如:自动报警、报时、车站机场广播、电话查询业务以及各种电子出版物的语音朗读等。
语音压缩编码是伴随语音的数字化而产生的,它的研究和语音合成一样起源于1939年Dudley发明的声码器,若简单地由连续语音信号抽样量化得到的数字语音信号传输和存储,就会占用太多的信道资源和存储空间。研究表明语音信号中含有大量的冗余信息,如何采用各种编码技术,在保证尽量少的失真并具有一定的可懂度和自然度的情况下,减少语音信号的冗余度,成为语音压缩编码的主要内容。最早研究和使用的编码方法是不依赖语音产生模型假定,以PCM和ADPCM为代表的波形编码技术,它的编码数率较高,一般在16kb/s~64kb/s,具有语音音质高、抗躁能力强的特点。1974年,LPC编码首次用于分组语音通信,传输数率达到3.5kb/s,实现了低速的编码。一些以LPC以及由其改进和演变的混合编码为代表的基于模型假定的编码方法,可以更大程度上减少语音信号的冗余度, 使低速率传输、存储语音信息成为可能。美国在1980年公布了一种2.4kb/s的线性预测编码技术后,于1988年又公布一个4.8kb/s的码激励线性预测编码(CELP)语音编码算法,随后欧洲也推出了16kb/s的规则脉冲激励(RELP)线性预测编码算法。这些语音编码算法具有较好的可懂度和自然度。随着对低速率语音编码算法研究的深入和计算机网络技术的迅速发展,语音信号经过压缩后在互联网上以数据
- 3 -
山东建筑大学毕业论文
包的形式传输,就形成了IP电话,它用VOIP技术实现的通过TCP/IP网络以不同于传统的电话网来传输语音信号。由此衍生出在网络环境下的语音识别和语音压缩编码,成为语音处理新的发展方向。20世纪90年代,针对不同的应用,国际电联和一些地区标准协会制定一系列语音压缩编码标准,如数码率为5.3-6.4kb/s的G.723.1,以及数码率为8kb/s的G.729.等,这些标准的制订保证了应用在通信网中的各种语音编码具有良好的兼容性。
语音处理的研究取得很大的成绩,一些应用也取得突破性的进展,有很多有关的研究成果已实现商品化生产并投放市场,取得较好的经济效益和社会效益。一些信息科学中的新出现的理论和处理方法引入语音处理的研究中,如小波分析、分形理论以及语音信号的非线性处理方法。由于语音本身和应用环境的复杂多变,语音处理系统的性能还是有很多不尽人意的地方,用它来解决实际问题还是有很多困难,如无限词汇汉语合成中连续语流中各基音轮廓的平滑过渡问题,语音识别系统的适应性差,主要体现在对环境依赖性强,高噪声环境下语音处理的进展缓慢。 1.2 语音处理的硬件基础和应用
绝大多数语音信号数字处理系统有很高的实时性要求,要对输入的语音信号做出快速的反应,因此系统工作在实时方式(在线方式)下,就对系统所采用硬件的性能要求很高,包括处理速度和存储容量等。语音处理所要完成的任务越来越复杂,处理效果的要求不断提高,语音处理算法也随之日益复杂,它会要求语音处理器件以及其辅助器件在几十个毫秒或更短的时间内处理、存储大量的语音数据。需要语音处理器的运算速度达到10—20MIPS,在应用中会根据任务的要求不同处理速度甚至要达到50MIPS。语音识别与合成等领域对处理系统的内存容量往往要求达到若干MB。实时语音信号数字处理系统通常以两种方式实现:第一种是用一台计算机作为主机,插上一块或若干块数字信号处理板来构成,后者由通用或专用的数字信号处理器芯片(DSP芯片)及相应的存储芯片、接口芯片和语音信号的转换芯片组成。第二种则由专用或通用的DSP芯片及其它辅助芯片构成一个独立工作的系统。前者通常称为非脱机工作系统,用于语音识别、合成、增强或模拟实验中。后者称为脱机工作系统,用于编码、小词汇表识别与合成等场合。通用DSP芯片的出现及其性能价格比的迅速提高为各种实用化语音信号处理系统的应用实现提供了硬件基础。自从1980年以来,DSP芯片得到了迅猛发展, 很多运算速度达到几MIPS。生产DSP芯片的公司有80多家,其中以美国的TI公司为代表,出产了一系列种类齐全可用于不同行业的DSP芯片,一些型号的芯片的运算速度和功能完全满足实时语音信号处理的要求,本文在硬件系统中采用TI公司的TMS320VC5402通用DSP
- 4 -
山东建筑大学毕业论文
处理芯片。
随着微电子集成技术的发展,很多公司相继研制出了专用的语音处理芯片。语音处理芯片外接一些控制器,构成一个语音处理系统就可完成特定的语音处理任务。如TI公司、Votrax公司、ISD公司等生产的语音存储与再生芯片,以ISD 公司的ISD系列芯片为代表。语音合成芯片有TI公司的TMS5220,语音识别芯片有东芝公司的T6658A,语音编码芯片有Digital Voice System.1nc推出的AMBE-1000以及美国国家半导体公司生产的CMX639。
- 5 -
山东建筑大学毕业论文
2 系统硬件部分概述
本章首先对DSP系统进行介绍,围绕以TMS320C5402为核心,给出一个DSP系统硬件部分的设计方案,重点分析了系统各组成模块的功能,给出了具体实现方法。 2.1 DSP系统设计概述
一个数字信号处理系统是电子技术、信号处理技术与计算机技术相结合的产物。其设计通常分为两个方面的内容:信号处理部分和非信号处理部分。信号处理部分包括系统的输入和输出、数据的编排和处理、各种算法的实现、数据结果的显示和传输等;非信号处理部分包括电源、硬件结构、成本、体积、可靠性和可维护性等。一个应用系统的设计大致可分为7个部分: (1) 确定系统性能指标 (2) 信号分析
(3) 核心算法模拟与验证
(4) DSP芯片和系统外围器件的选型 (5) 硬件设计和调试 (6) 软件设计和调试 (7) 系统集成与测试
下面对每个部分的内容给予简要的说明:
(1)确定系统性能指标:它主要根据用户对应用系统的要求,给出系统级的技术要求和相关说明。这些要求和说明包括处理的项目和方式、处理系统的所有性能指标(包含系统非信号处理的性能)以及系统的测试和验证方式等。
(2)信号分析: 这部分主要定义输入/输出信号的类型,即将分析的信号是随机或确定信号, 模拟信号或数字信号,是一维还是多维信号。分析信号的频率范围和系统的带宽, 估计信号的最大和最小电平,是否需要进行预处理。确定输出信号使用的方式、数据的吞吐率和对实时性的要求。信号分析的结果是进行信号处理算法设计的基础。 (3)核心算法模拟和验证: 在这部分依据第1部分提出的要求和第2部分对信号分析的结果,对不同类型的信号和要求的处理方式确定相应的算法。在编写信号处理算法时,首先可利用一些软件如MATLAB,对其进行仿真计算,保证算法的正确性,还要结合系统的硬件资源考虑这些算法程序的可行性,如系统的处理能力、存储容量、工作速度等。 (4)DSP芯片和系统外围器件的选型: 在选择系统所要用到的器件前,需要先分析系统
- 6 -
山东建筑大学毕业论文
数据吞吐率、存储容量以及输入/输出带宽,它们决定了系统使用的主控处理器和一些外围器件,如DSP芯片的处理速率、和外围器件进行数据交互的速率、存储器空间的大小,扩展存储器件的工作速度和容量等,根据分析的结果选择满足系统性能要求的DSP芯片、信号转换芯片、逻辑控制器件和接口以及外部扩展存储器芯片。
(5)硬件设计和调试; 硬件设计主要包括数据和程序存储器的配置、数据交互通道的设计、控制和显示电路设计、电源转换电路设计和其他外围扩展器件的硬件接口电路设计。以DSP芯片为核心的信号处理系统,可分成2大类。一类是DSP器件处从属地位,受主机控制,主要完成数据的处理并将结果返回给主机工作。另一类是系统在上电后独立运行自成一个系统,系统所有的控制和处理工作都由DSP器件完成。这类系统利用了DSP器件的自举引导功能,将存储在外部的存储芯片的控制和处理程序引导加载到DSP的程序空间,使系统按预定方式工作。系统的硬件设计是软件设计的基础。
(6)软件设计与调试:用DSP汇编语言或C语言或两者混合使用编写系统和各种应用程序,软件设计包括系统软件和信号处理(一般应用)软件。系统软件根据实际需要可包括系统控制软件、人机接口、数据输入,输出管理以及和主机的接口等。信号处理软件主要是编写一些信号处理算法的程序,完成特定的处理功能。DSP系统和主机的接口主要用高级语言编写。软件设计和初步的调试是结合一些开发工具和开发环境来完成的。大多数DSP器件都提供了完善的开发环境,CCS(Code Composef Studio)是本次设计中所用到的DSP开发环境,它是一种TI公司推出的为开发TMS320 系列DSP系统的集成开发环境。
(7)系统集成与测试:完成上述工作,就剩系统的集成和实际的功能测试。DSP系统,涉及到电子电路、各种硬件和软件等各个方面,设计的系统能否达到预期的要求还有待实际测试和检验
典型的DSP系统它的输入信号可以是电信号、声音信号、物理信号、化学信 号、连续信号、数字信号、强信号、弱信号。在前向通道中,经过滤波和采样, 然后通过A/D信号变换成为数字比特流。根据香浓采样定律,采样频率至少必须 是输入信号最低频率2倍。
DSP芯片系统可由一个DSP处理器和外围总线组成,也可以由多个DSP处理器组成,这完全取决于DSP处理器的要求。DSP芯片系统的主要任务是将前向通道输出的信号按照一定的算法进行处理,然后将处理的结果以数据流的形式输给后向通道。 2.2 系统的总体构成
声音信号经A/D转换器采样变成PCM数据,由串口输入DSP芯片内按语言处理算
- 7 -
山东建筑大学毕业论文
法高速处理。处理结果可由LCD显示出来,或输入到D/A转换器中转换成模拟信号,经出扬声器还原成声音信号。为了适合处理,在语音信号处理之前,先对输入的语音信号进行放大。DSP芯片构成本系统的控制和处理核心,由它来协调各功能模块的工作,利用其快速的运算能力完成语音信号的运算。考虑到需要存放语音处理数据和程序,有必要扩充存储器。用闪速存储器存放语音处理程序和主控制程序。用CPLD实现系统的逻辑控制和DSP芯片的I/O空间的扩展。 2.3硬件系统核心芯片的选择
本系统采用了TI公司于1999年10月推出的一款定点数字信号处理器TMS320C5402,作为系统的主控芯片。美国德州仪器(11)公司子1982年推出通用可编程DSP芯片以来,DSP技术获得突破性发展,已从最初只用于实时大数据量的处理,发展到其应用已覆盖全球各行各业。近年来,随着低价格、高性能DSP 芯片的出现,DSP已越来越多地被应用于高速信号采集、语音处理、图像分析处理等领域中,并且其优越性日益突显。当前业界中应用最广泛的是TI公司的TMS320系列的DSP芯片,其中TMS320VC5402(简称VC5402) ,主要的特点如下:操作速率达100MIPS,单周期指令执行时间是IOms;具有先进的多总线结构,三条16位的数据存储器总线和一条20位的程序存储器总线;40位算术逻辑单元(ALU),包括一个40位桶形移位器和两个40位累加器;一个17x17乘法器和一个40位专用加法器,允许16位带/不带符号的乘法;单周期正规化及指数译码;8个辅助寄存器及一个软件栈,允许使用业界最先进的C语言编译器;数据/程序寻址空间分别为64K×16bit,1Mxl6bit,内置4Kxl6bit ROM和16Kxl6bit RAM,64K×16bit的I/O空间寻址能力;内置可编程等待状态发生器、锁相环(PLL) 时钟产生器、两个多通道缓冲串行口、一个8位并行与外部处理器通信的HPI口、2个16位定时器以及6通道DMA控制器;低功耗,工作电源有3.3v(I/O)和1.8v (内核),O.32MW/MIPS,特别适合电池供电设备。
与TMS320C54X系列的其他芯片相比,它以其独有的运算速度快、低功耗、和高性价比的特点。已在无线调制解调器、机顶盒、下一代个人数字助理、集群电话、局域网电话、各种语音应用等单信道通信客服终端,个人移动通信、信号与信息处理以及自动控制等领域得到了广泛的应用。
VC5402有访问64K×16bit的数据空间、I/O空间以及1M×16bit的程序空间的能力,其内部自带有一定数量的物理存储空间,有16KXl6bit的片内RAM和4Kx 16bit的ROM,对于经常要用到的程序和数据可在系统上电之初由自举引导程序加载放到片内的RAM存储区,提高系统运行速度。DSP对(片内、片外)物理存储器的访问都是通过访问
- 8 -
山东建筑大学毕业论文
映射存储器来实现的,DSP的映射存储器分为程序区、数据区和I/O区三个区域。I/O区,一般是和片外资源联系在一起才能建立起来,数据区可由片内或片外存储器映射构成。DSP的映射存储器代表了DSP芯片的寻址能力和可访问空间的大小,在没对这些映射存储器配置前,映射存储空间是虚拟的,物理存储器也不可访问。物理存储器和存储空间区域的映射关系的建立, 主要通过VC5402的管脚MP/MC、处理器模式状态寄存器PMST的OⅥ位和DROM位,并配合存储器配置文件完成的。 2.4 实时语音处理的基本要求 (1) 适合乘加操作的算术逻辑单元 (2) 高效率的算法代码和执行硬件 (3) 方便快捷的并行存储结构 (4) 便利的片内外部设备和通用接口
- 9 -
山东建筑大学毕业论文
3 设计部分
3.1 设计目的和要求
3.1.1 输入信号为2路语音信号,要求系统能对2路输入信号进行实时采集、数字化处理、压缩、存储(录音),要保证一定的录音质量,录音时间不少于10小时。 3.1.2 根据已知参数对输入信号特征进行分析、需求分析,采用DSP作为控制器,设计实时语音处理系统。
3.1.3 选择确定DSP芯片型号、语音采集芯片型号,完成系统硬件设计。实现对语音信号的实时采集,处理(压缩,编码等)。
3.1.4 给出实时语音处理系统的设计方案,并对所设计的控制程序进行详细说明和描述。
3.2 设计原理
近年来,随着DSP技术的普及和低价格、高性能DSP芯片的出现,DSP已越来越多地被广大的工程师所接受,并越来越广泛地被应用于各个领域,例如:语音处理、图像处理、模式识别及工业控制等,并且已日益显示出其巨大的优越性。DSP是利用专门或通用的数字信号处理芯片,以数字计算的方法对信号进行处理,具有处理速度快、灵活、精确、抗干扰能力强、体积小及可靠性高等优点,满足了对信号快速、精确、实时处理及控制的要求。对实时数字信号处理的应用需求和超大规模集成电路技术水平的飞速发展,推动着DSP性能不断提高。DSP是一种专用的数字信号处理器。随着超大规模集成电路技术上取得的突破进展,高度集成化的DSP数字信号处理器具有体积小、功耗低和运算速度快等诸多优点,因此非常适用于语音信号的压缩处理。基于DSP的实时语音处理系统,它具有可选择的信号采样速率和高性能的数字信号处理能力,不仅可以用来对立体音频信号进行实时编解码处理,还可以用来作为高速的实时信号采集与处理板使用。它包括多路语音实时采集,压缩处理,存储功能等基本功能。
实时语音处理系统中,由于语音的数据量大,运算复杂,对处理器性能提出了很高的要求,适于采用高速DSP实现。虽然DSP提供了高速和灵活的硬件设计,但是在实时处理系统中,还需结合DSP器件的结构及工作方式,针对语音处理的特点,对软件进行反复优化,以缩短识别时间,满足实时的需求。因此如何对DSP进行优化编程,解决算法的复杂性和硬件存储容量及速度之间的矛盾,成为实现系统性能的关键。
- 10 -
山东建筑大学毕业论文
3.3 设计内容
3.3.1理论依据
根据设计要求中的要点,所要设计的基于DSP的实时语音处理系统功能是,它能同时输入至少两路音频信号,而且能够对两路输入信号进行实时采集并将模拟信号数字化,然后对信号进行数字信号处理,并能够根据要求存储不少于10小时的录音,最后输出音频信号。那么在设计系统过程中,为满足要求要有信号采集,模/数及数/模转换,数字信号处理部分,包括数据压缩等,电源电路,复位电路,时钟电路。 3.3.2 信号特征分析
音频信号经过高精度高速的ADC转换后得到一串数字信号,分帧输入到波形输入缓冲区RAM。然后由手动控制一种或几种处理算法将音频信号调入TMS320C5402的内部进行高速运算。经过处理的音频信号,再输入到高精度高速的DAC转换器中,还原成模拟的声音信号,经音箱功率放大电路放大输出。 3.3.3 方案设计 系统结构框图:
电源 复位电路 语音信号 音频信号 放大 A/D转换 DSP芯片 功率大电模拟频信输出 放路音号音频信号放大 D/A转换 音量,音效等的选择,控制 音频处理程序 存 储 区 EPROM
输入信号:2路语音信号。音频系统应该具有较宽的动态范围,选择8-16位放大信号能完全捕获或恢复高保真的音频信号。系统的核心芯片(DSP)选用美国TI公司的
- 11 -
山东建筑大学毕业论文
TMS320VC5402[1](以下简称'C5402)。
DSP芯片模块是整个实时语音处理系统的核心部分,它对经数字化的信号进行压缩,编解码等。
框图分析:模拟音频信号输入,经过放大,滤波之后,由A/D转换器转换后得到一串数字信号,由手动控制或几种处理算法将音频信号调入DSP芯片的内部高速运算。经过处理的音频信号,再输入到高精度高速的D/A转换器中,经过滤波放大,还原成模拟的声音信号,经音箱功率放大电路放大输出。系统中各模块是同时进行处理,一部分信号正在A/D转换器进行转换,而另一部分信号则在DSP处理器中同时进行算法处理,即整个系统是以流水线的方式进行工作的。
框图各模块功能分析:
(1)语音信号:输入2路语音信号(8-16位放大信号,要去能完全捕获或恢复高保真的音频信号)
(2)音频信号放大:经放大电路放大输入的语音信号
(3)A/D转换器:放大后的音频信号在滤波之后由A/D转换器转换为一串数字信号
(4)DAP芯片处理器:系统的核心芯片(DSP)选用美国TI公司的TMS320VC5402。是整个实时语音处理系统的核心部分,它对经数字化的信号进行压缩,编解码。在其内部进行高速运算,处理
(5)D/A转换器:由DSP芯片处理好的信号由D/A转换器进行转换,经滤波输入到音频信号放大器
(6)音频处理程序存储区EPROM:存储音频处理程序
(7)音量、音效等的选择、控制:选择适当的音量、音效的控制方法
(8)功率放大电路模拟音频信号输出:还原成的模拟声音信号,经音箱功率放大电路放大输出
(9)电源模块;为内部芯片及周边系统电路提供能量来源
(10)复位电路:确保此方案的电路稳定工作,复位电路必不可少。功能:上电复位
3.3.4 方案论证
本设计的系统采用DSP芯片作为控制器,要求输入信号为2路语音信号,保证一定的录音质量,录音时间不少于10小时,实现对语音信号的实时采集、处理(压缩,
- 12 -
山东建筑大学毕业论文
编码)等,编写DSP控制程序,实现对语音信号的实时。
具体实现过程:首先,模拟音频信号输入,经过放大滤波之后,由A/D转换器转换后得到一串数字信号,由手动控制或几种处理算法将音频信号调入DSP芯片的内部高速运算。经过处理的音频信号,再输入到高精度高速的D/A转换器中,经过滤波放大还原成模拟的声音信号,经音箱功率放大电路放大输出。
DSP芯片采用美国TI公司的TMS320VC5402作为核心芯片,复位电路所用芯片为74HC14.
软件设计主要包括DSP编程和PC编程。DSP编程主要任务是初始化。管理板上的资源和完成音频的处理算法。PC编程则是管理DSP操作和应用层软件的编写。语音的传输过程涉及到了采样、编码、分割、压缩、打包、传送、重组、合成、回放等处理,每种处理都需要相关的设备和具体的应用程序,每种处理涉及到的语音数据形式不尽相同。语音信号的输出和存储是语音信号的基本要求。对语音信号的传输,希望是传输的速度尽量快,传输质量尽量高;对语音信号的存储,希望存储的空间尽量小,存储的信息尽量多。语音信号具有信号频谱较全、采样速率较低、随机性强、应用场合多、实时性要求高等特点。语音信号的处理包括信号采集、处理、存储和播放这一系列的处理过程。其中,语音信号的采集、传输和播放属于对语音信号的控制,其处理过程满足一定的标准操作即可;而语音信号的处理和存储与应用对象有很大的联系,不同的应用对象所要求的处理算法和存储算法不同。 3.3.5 器件选型(硬件电路的设计)
高保真的音频系统应具有较宽的动态范围。选择8-16位的A/D,D/A能完全捕获或恢复高保真的音频信号。
系统的核心芯片(DSP)选用美国TI公司的TMS320VC5402(以下简称C5402)。 (1)DSP芯片:
作为DSP家族高性价比代表的16位定点DSP芯片,C5402适用于语音通信等实时 嵌入应用场合。与其它C54X芯片一样,C5402具有高度灵活的可操作性和高速的处理能力。其性能特点如下:操作速率可达100MIPS;具有先进的多总线结构,三条16位 数据存储器总线和一条程序存储器总线;40位算术逻辑单元(ALU),包括一个40位桶形移位器和两个40位累加器;一个17×17乘法器和一个40位专用加法器,允许16位带/不带符号的乘法;整合维特比加速器,用于提高维特比编译码的速度;单周期正规化及指数译码;8个辅助寄存器及一个软件栈,允许使用业界最先进的定点DSP C语言
- 13 -
山东建筑大学毕业论文
编译器;数据/程序寻址空间为1M×16bit,内置4K×16bit ROM和16k×16bit RAM;内置可编程等待状态发生器、锁相环(PLL)时钟产生器、两个多通道缓冲串口、一个与外部处理器通信的8位并行HPI口、两个16位定时器以及6通道DMA控制器且低功耗。与C54X系列的其它芯片相比,5402具有高性能、低功耗和低价格等特点。它采用6级流水线,且当RPT(重复指令)时,一些多周期的指令就变成了单周期的指令;芯片内部RAM和ROM可根据PMST寄存器中的OVLY和DROM位灵活设置。这些都有利于算法的优化。
C5402采用3.3V和1.8V电源供电,其中I/O采用3.3V电源供电,芯片的核采用1.8V电源供电。而实际常用的只有5V电源,所以必须采用电源转换芯片。选用TPS7301和TPS7333两块电源转换芯片(它们都是TI公司为配合DSP而设计的电源转换芯片),分别接上适当的外围电阻,构成电阻分压器,即可调整两块芯片的输出电压分别为3.3V和1.8V。
(2)音频转换模块(音频信号放大)
音频放大电路是本模块也是系统的前端单元电路。本模块用到了运算放大器TLC2272芯片和音频功率放大芯片LM386分别对音频信号做输入放大,输出放大,再经音频转换芯片TLCAD50的高精度高速ADC转换后得到一串数字信号,输入到TMS320VC5402中,在系统内部由各种处理算法将录进的音频信号进行快速的运算和处理。经过处理的数字音频信号,再输入到高精度高速的DAC转换器中,还原成模拟的声音信号,经音频功率放大电路放大输出。外界模拟的音频信号经过音频转换模块后,变成易于DSP、SCM和PC机处理的数字信号。 1)TLC2272
TLC2272芯片内部具有双放大器,双运放可以级连应用,也可以划分为两个独立的应用单元。TLC227X系列提供了2MHz带宽的应用范围,与现在的大部分CMOS工艺的运放相比,TLC2272具有更好的低噪音特性、输入偏差电压、能耗。该芯片具有高的输入阻抗,在对放大高阻抗的微弱信号时,表现出的更好的性能。由于该芯片是微电压低能耗器件,使得该芯片在手持设备和远程遥感方面应用的计较多。 2)LM386
LM386是美国国家半导体公司生产的音频功率放大器,该芯片适合应用在低电压、低功耗系统中的低电压消费类产品。为使外围元件最少,电压增益内置为20。只需在1脚和8脚之间增加一只外接电阻和电容,便可将电压增益调为20-200间的任意值,低失真度。广泛应用于无线电放大、手持式音频播放器放大电路、对讲机、电视系统、线
- 14 -
山东建筑大学毕业论文
性驱动器、小的伺服系统驱动、功率转换等领域。 3)TLC320AD50
本系统用到TLC320AD50,它内部集成了A/D和D/A转换通道,彼此独立工作,使得系统的ADC和DAC可以同时进行,提高了系统的集成度。一部分信号正在A/D通道中进行ADC转换,而另一部分信号则在DSP处理器中同时进行算法处理,已经处理的信号在D/A通道里进行DAC转换,整个系统是流水线的方式进行工作。TLC320AD50(AD50)是TI公司推出的一款将A/D和D/A转换功能集合在一起的16位、音频范围(2K-22.05KHz)、内含抗混叠滤波器和重构滤波器的模拟转换接口芯片,它有一个能与DSP芯片相连的同步串行通信接口。片内还包括一个定时器(调整采样率和帧同步延时)和7个控制寄存器,用户可以根据需要对各个寄存器写控制字来设置它的工作方式(调整采用频率,滤波器带宽,数据格式,编程放大增益,锁相环PLL)。AD50体积较小,适应于便携设备。可为其模拟部分和数字部分分别配置5V和3.3V的电源,工作时的最大功耗为120mW。
AD50有两种方式可供选择,M/错误!未指定书签。S(主、从设备选择信号)引脚的电平低电平时,AD50工作在设备方式下,FS(帧同步信号)和SCLK(移位时钟信号)为输入信号,由与之相连的主设备给出。当M/S引脚为高电平时,AD50工作在主设备方式下,FS和SCLK为输出信号,由AD50给出。通常AD50外接有源时钟源,将其设置在主设备工作方式下,AD50与VC5402的多通道缓冲串口(McBSP)进行串行通信的控制信号FS和SCLK由AD50提供,McBSP作为AD50的从设备,工作在从方式下。
AD50会传输两种不同性质的数据信息,即一般的ADC、DAC数据信息和设置寄存器的控制信息,设置了两种通信模式,主通信模式和辅助通信模式(二次通信)。主通信主要用于ADC、DAC数据传输,辅助通信模式用于读出、写入控制寄存器中的控制信息。大多数的时间工作在AD50主通信模式下,但是对AD50进行初始化时,它必须工作在辅助通信模式下。可由硬件或软件方式产生辅助通信模式请求的信号,当用于产生硬件辅助通信请求信号的引脚FC为高电平时,表示在紧随这次通信之后下一帧数据将采 用辅助通信模式进行数据传输,这称为硬件请求辅助通信。外部器件(VC5402)可通过将输送到DIN的数据的最后一位(D0)置1,表示在紧随这次通信之后下一帧数据采用辅助通信模式进行数据传输,以此产生软件辅助通信请求信号。当AD50采用软件的方式来产生辅助通信请求信号时,D0作为软件辅助通信请求信号,是一个特殊的控制位,剩余的高15位用来传输ADC、DAC数据,即AD50用软件的方式来产生辅助通信请求信号时,采用15+1的数据格式传输数据。D0在不同的数据流向时,代表不同的含义。
- 15 -
山东建筑大学毕业论文
接受数据,即数据从DIN输入到AD50,D0可表示下次通信是否为辅助通信,数据采用15+1的数据格式:而发送数据,即从DOUT输出数据,数据的最低位(D0)可表示当前的数据是来自主设备还是从设备,若主控器件只带一个AD50不分主从设备时,就将ADC数据设置成16比特的数据格式。AD50同VC5402的多通道缓冲串口0连接,M/S#经10K的电阻接到+3.3V,AD50工作在主机模式,提供SCLK(数据移位时钟)和FS#(帧同步脉冲)。VC5402的McBSP0工作在从机模式,BCLKX(R)0和BFSX(R)0要配置成输入引脚,接受外部AD50提供的移位脉冲和帧同步脉冲,以完成McBSP0和AD50间的串行数据的通信。AD50和DSP连接示意图如图所示。
FSX FSR CLKX CLKR DX DR XF TMS320VC5402 8.192Mhz /FS SCLX TLC320AD50 DIN BOUT FC MCLX AD50和DSP的连接示意图
AD50有四个用户可编程的控制寄存器,每个都是16位的。当DSP对AD50写控制是将要读、写的控制信息,如下表所示。为了简化硬件设计,将FC管脚接地,用软件的方式产生辅助通信的请求信号,则DAC数据的数据格式,一种是15+1位的形式,传送DAC数据或DSP对它的控制字。D0如前所述表示下一帧DSP传送给AD50数据的控制信息还是DAC数据。辅助通信用于DSP通过McBSP0对AD50进行初始化。本系统中,AD50工作在主机模式下,由外部的8.192MHz有源晶振提供AD50的工作时钟,采样频率为8KHz,选用15+1的数据格式DSP的McBSP0作为它的从机设备。
- 16 -
山东建筑大学毕业论文
寄存器 地址 比特位功能描述 R1 001 模拟输入通道选择,硬件/软件编程方式选择 R2 010 单机/从机工作和电话模式选择 R3 011 带从机个数选择 R4 100 模拟信号可编程放大增益和A/D、D/A转换频率 AD50控制寄存器的地址和功能描述 McBSP0是DSP和AD50进行数据通信的接口。VC5402提供两个高速、全双工、多通信缓冲串行口(McBSP),具有双缓存的发送寄存器和三缓存的接收寄存器,允许连续的数据流传输,数据长度可以为8、12、16、20、24、32位;同时还提供了A—律和μ—律压扩,多达128个的发送和接收通道。McBSP通过7个引脚使得一个数据通路和一个控制通路与外部设备相连。它依靠三个信号实现发送数据和接收数据;数据线D(R/X)、帧同步线FS(R/X)和移位时钟线CLK(R/X)。DX和DR引脚完成于外部设备进行通信时数据的发送和接收,由CLKX、CLKR、FSX、FSR实现时钟和帧同步的控制。发送数据时,CPU将要发送的数据写到发送数据寄存器DXR,在FSX和CLKX作用下,由DX引脚输出。接收数据时,来自DR引脚的数据在FSR和CLKR作用下,从数据寄存器DRR中读出数据。CLKX、CLKR、FSX、FSR这些同步控制信息,既可由内部采样率发生器产生,也可由外部设备提供的脉冲驱动源,本文采用由AD50提供数据传输时用到的同步控制信息。
McBSP是由标准串口发展起来的,其传输通道、数据格式、帧同步信号、移位时钟信号。以及它们的极性都是可编程的。与McBSP有关的控制寄存器中除了数据接收寄 存器、数据发送寄存器、子地址寄存器可以直接被寻址外,其它的15个控制器采用同址寻址方式进行间接访问,通过对同一个地址寄存器和数据寄存器的访问实现对一组寄存器的访问,先将要访问的寄存器的子地址写入地址寄存器中,然后对数据寄存器进行读、写操作,就完成了对该寄存器的读写操作了。DSP是通过McBSP0对AD50进行初始化的,因此要待McBSP0初始化完成后,再对AD50写入控制信息。
- 17 -
山东建筑大学毕业论文
(3)存储器扩展模块
系统工作所需的程序,以及经过转换处理后的中间数据的缓冲存储,都需要相关的程序和数据存储器来存储。TMS320VC5402内部提供了4K的ROM和可选作用程序或数据存储空间的16K的RAM,故其内部比较紧张,尤其内部没有配置用户可编程的非易失的存储器,为使VC5402构成的系统能处理并存储一点的数据,或成为一个上电后能独立运行的系统,就需要根据实际应用情况扩展程序或数据存储器。本系统主要用作音频信号的采集,存储器除了存储系统运行时所需的程序和一些先期的处理程序外,就作为音频信号的数据缓冲存储器用了,实际要扩展的存储的空间不是很大。本系统用到静态随机读取存储芯片CY7C1021V33,作为自举引导装在(boot-loader)之后的外部程序或数据存储器,本系统采用并行的FLASH(SST39VF400)的引导方式。FLASH存储自举引导装载程序,系统上电之初,被映射在DSP的数据空间,待引导装载工作结束之后,它将先前由其占据的数据空间退回给数据SRAM,VC5402的数据空间在系统的不同工作阶段由不同的外部储存器构成。各个存储器和DSP连接的逻辑连接如图所示。可以根据需要将他们映射到程序或数据空间去,这些逻辑控制可由CPLD或分立的逻辑器件来完成。 DSP和扩展存储器逻辑连接图见下页
DS XF PS R/W MSTB DS XF PS CS FLASH WE OE CS WE OE SRAM
DSP和扩展存储器逻辑连接
1)SST39VF400
- 18 -
山东建筑大学毕业论文
选用的FLASH芯片是SST30VF400,它是SST公司一个低功耗FLASH芯片,工作在3.3V电压下,存储容量为256K×16bit,其中的数据可以保持100年以上,可重复编程次数高达10万次,访问时间为70NS-90NS。用户只需向其特定地址写入特定的指令序列,就会启动内部的学状态机,从而自动完成指令序列要求的内部操作。有18跟(A17-A0)地址线,16跟(D15-D0)数据线,三根控制线:CE为片选控制引脚,OE为输出使能引脚,WE为写入使能引脚。
擦除和编程是经常对FLASH进行的操作。SST39VF400提供了三种擦除方式,既扇区擦除、块擦除、整片擦除,其中扇擦除和块擦除需要18ms,整片擦除需要70ms,写一个字需要14μs,整片编程需要4S。可借助DQ6或DQ7的状态来判断擦除或编程工作是否完成,依次读入两个字(同一个地址),判断这两个字的DQ6是否相同,相同表示擦除或编程工作已经完成,否则返回重复判断直至相同,退出循环。用DQ7来判断擦除是否完成比较简单,读入一个字,判断其第七位是否为逻辑“1”,为1表示擦除完成,退出循环;否则,继续读入数据判断DQ7直至为1.判断编程的工作状态时,读入一个字比较这个字的第七位和要写入的数据的第七位是否相同,相同表示,数据已写入,编程工作完成,否则,继续循环判断。判断标志位的状态如下表所示
2)CY7C1021CV33
CY7C1021CV33是一款高速、低功耗的静态存储器,当不被访问时自动降低功耗,能很显著的减少功率消耗,提供了8ns、10ns、12ns、15ns不同的读取速度。存储容量为64K×16Bit,有16根(A15-A0)地址线,16根(I/O16-I/O1)数据线,五根控制线,在输入和读入使能控制的基础上,该芯片还增加了两个控制使能引脚,/BLE和/BIIE分别用来控制数据线的高8位和低8位上的信息的输出和输入,只有当其中一个或两个都为低电平时,相应的数据线上的信息才能被读出或写入。
- 19 -
山东建筑大学毕业论文
(4)A/D电路
PCM1800是双声道单片Δ-Σ型20位ADC,单+5V电源供电,信噪比为95dB,动态范围为95dB,其内部嵌有高通滤波器,具有PCM音频接口和四种数据格式,分为主控和受控两种模式,采样频率可选为32KHz、44.1KHz和48KHz。
PCM1800构成音频信号采集系统时,主要涉及到BCK(位时钟信号)、LRCK(采样时钟信号)、FSYNC(帧同步信号)、DOUT(数字信号输出)、SYSCLK(系统时钟输入)这几个对时 序有要求的引脚。通过对引脚MODE0和MODE1进行编程,可让PCM1800工作于主控模式(Master Mode)。此时,BCK、LRCK、FSYNC均作为输出,其时序由PCM1800内部的时钟 产生电路控制。但SYSCLK只能由外部提供(这里用C5402的TOUT脚输出信号提供)。 PCM1800的系统时钟只能是256fs、384fs或者512fs,这里fs是音频信号采样频率。在主控模式时,FSYNC用来指明PCM1800的DOUT输出的有效数据,它的上升沿表明一帧数据的起始,下降沿表明一帧数据的结束。FSYNC的频率是采样时钟频率LRCK的2倍。在此模式下,位时钟信号BCK的频率是采样时钟频率LRCK的64倍。
通过对PCM1800的FMT0、FMT1两引脚编程(FMT0=1,FMT1=0),可以设置PCM1800输出的数据格式为20位的IIS格式。为了保证在数据处理时不影响新数据的接收以及在接收数据时不中断正在进行的数据处理过程,采用了多通道缓冲同步串口(McBSP)。 PCM1800与C5402连接后,C5402使用缓冲串口0接收数据,各种同步信号由PCM1800产生,C5402是被动接收各种信息。PCM1800与C5402的硬件接线图如图2所示。
- 20 -
山东建筑大学毕业论文
图2 PCM1800与C5402的硬件接线图
(5)电源管理功能模块
稳定高质量的电源是系统正常工作的保证,VC5402是低功耗芯片,其I/O口和内核的工作分别为3.3V和1.8V。有多种电源转换芯片可将5V的电源电压直接转换DSP的工作电压。
所用器件: TPS73HD301( 3.3-V/Adjustable Output,) 该芯片一端输入可调,范围是(1.2-9.7V) (6)D/A电路
PCM1744是双声道立体声DAC,包含数字滤波器和输出放大器,动态范围为95dB,具有多种采样频率可选,最高可达96kHz。采用24位的IIS数据输入格式。PCM1744的操作主要涉及到LRCIN(采样时钟信号输入)、BCKIN(位时钟信号输入)、SCKI(系统时钟输入)、DIN(数据输入)这几个对时序有要求的引脚。PCM1744与C5402连接后,C5402使用缓冲串口1发送数据,各种时钟信号均由C5402产生,PCM1744被动接收各种信息。PCM1744的系统时钟信号(SCKI)由C5402的TOUT引脚提供,TOUT是C5402的定时器输出信号引脚,有较强的驱动能力,可以驱动多个芯片。PCM1744的数据接收时钟格式必须是IIS格式,C5402在缓冲串口寄存器中设置各种时钟方式时,必须满足IIS格式的要求。C5402作为主动工作器件,可以对其缓冲串口输出信号进行调整。输出的采样时
- 21 -
山东建筑大学毕业论文
钟信号、位时钟信号可以在McBSP寄存器SRGR1和SRGR2中设置,设置遵循图3的原则。
图4 C5402时钟发生流程图
基本的时钟信号可以来自CPU时钟,也可以来自晶振时钟,这在SRGR2寄存器中的第13位设置。基本时钟输入后,经CLKGDV(SRGR1的第7位到第0位)所设置的值进行第一次分频,得到位时钟信号(由BCLKX1脚输出)。值得注意的是,位时钟信号最高为DSP频率的一半。位时钟信号经FPER(SRGR2的第11位到第0位)和FWID(SRGR1的第15位到第8位)所设置的值进一步分频得到采样时钟信号(由BFSX1脚输出),FPER和FWID分别设置采样时钟信号的低电平和高电平的时间值。C5402与PCM1744的硬件接线如图4所示。
- 22 -
山东建筑大学毕业论文
图5 PCM1744与C5402接线图
PCM1800完成音频信号采集后,在DSP的外扩程序存储器中嵌入相应的处理算法,语音信号经处理后,再从PCM1744输出。 (7)复位电路:
所用芯片为74HC14
- 23 -
山东建筑大学毕业论文
存储器模块:
所用芯片为MT48LC8M8A2TG-75 存储容量Density 为64Mb 数据宽度16位 工作电压 3.3V TSOP封装 54管脚 时钟速率133 MHz
- 24 -
山东建筑大学毕业论文
4 软件设计
4.1 DSP软件开发工具和编程特点
CCS(Code Composer Studio),是TI公司推出的为开发TMS320系列DSP软件的集成开发环境。CCS具有类似VC++的集成开发环境提供了编辑工具、调试工具和工程管理工具,它集合了各种DSP开发工具如汇编器、连接器、C/C++编译器、十六进制代码转换工具等,支持汇编编程、C语言编程以及汇编和C语言混合编程。CCS在调试和仿真时具有很强的功能。允许中断点、剖析点及探测点三种断点设置,分别实现程序断点、实时分析和数据导入等功能,可进行指令级的仿真和可视话的实对数据分析。此外,还提供丰富的输入/输出库函数和信号处理的库函数,极大地方便了TMS320系列DSP软件的开发过程。
简要介绍几个重要的开发工具及其基本功能:
(1)C语言编译器:将源程序代码编译为汇编语言源代码,编译时有3个程序优化等级可供选择。
(2)汇编器:将汇编语言源文件转换成机器语言目标文件。
(3)链接器:将目标文件连接一起产生一个可执行模块,输出可执行文件。
(4)运行支持库公用程序:包含ANSI标准的运行支持函数、编译器公用程序函数、C输入/输出函数。在编译用C/C++语言编制源程序的工程文件时,须添加到工程中去。 (5)十六进制代码转换公用程序:将COFF目标文件转换成TI-tagged、ASCII-hex、Motorola-s等目标格式,用以装载到可攘除程序存储器中。
VC5402的开发环境集成了汇编编译器、C语言编译器筹开发工具,其中C语言编译器具有在用C语言编写的程序中嵌套汇编语言程序的功能,允许使用汇编语言、C语言或两者混合编写各种应用程序。用C语言和汇编语言编程各有所长,用C语言编写的DSP程序具有开发速快可读性好、易移值的特点;用汇编语言编写的DSP程序,则具有充分利用DSP软、硬资源和执行效率高的优势,但用户必须熟悉DSP内部结构和指令系统。在编写各种系统和应用程序中,根据DSP芯片数据处理能力、实时性要求、存储器的容量、硬件设备控制等实际,选择编程语言。编译器提供了一套规则,用于C语言程序和汇编程序中的变量、常量、函数的互相访问和调用。汇编程序和C程序可互相引用彼此的一些变量和函数,C程序中的变量或函数,需声明定义为外部变量或函数,一些特殊的变量(I/O口变量)和函数(中断函数)需加关键字,方能被汇编程序引用。汇编程序中的变量
- 25 -
山东建筑大学毕业论文
或函数通伪指令(.global)声明为全局变量,并且在变量和函数标示符前加下划线 “_”,才能被C程序引用。也可直接将汇编指令嵌入到C程序中。
DSP软件开发大致可分成4个步骤:
(1)在编辑器中用汇编语言、C语言或两者混合编写各种程序,利用编译器或集成环境中编译菜单,对源程序进行编译,生成目标文件。
(2)编写链接器命令文件,选择链接工具LNK500或集成环境中的工程编译菜单选项,CCS根据链接器命令文件对已编译过的一个或多个目标文件进行链接,生成存储器映像文件和输出可执行文件。链接命令文件除了指出输入文件和输出文件外,还说明系统中存储器配置情况,指定了程序段、数据段、变量段、自定义段、堆栈以及中断向量在存储器中存放位置、运行位置。链接器的基本功能是将各种代码段重新定位到目标系统的存储器空间中,这种定位分存储定位和运行时重新定位。链接生成的*.MAP文件给出了存储器的配置情况,指明程序文本段、数据段、堆栈段、中断向量段或自定义段在存储器中的定位信息,以及各个变量函数以及全局符合在存储器中的位置。
(3)软件调试,在此会用到链接生成的另一个文件* .OUT文件,它是一个可执行文件。在集成环境中选择load program菜单项将*.OUT文件加载到PC中进行软件模拟仿真,或下载到目标器件上进行硬件仿真。
(4)编写代码转换命令文件,选择代码转换工具hex500。创建*.out文件的Boot Loader模式的引导表,烧写到外部存储器件中,检查系统能否脱机正常运行。 4.2 软件设计
软件设计部分主要包括DSP编程和PC编程
DSP的编程的主要任务是初始化、管理板上的资源和完成音频的处理算法 PC编程重点则是管理DSP操作和应用层软件编写 (1) A/D与D/A程序设计
为了在20kHz的音响频段获得优良的音频输出,A/D和D/A的采样频率应该达到44.1kHz或48kHz。要正确编写采样和输出音频信号的程序,必须对C5402的McBSP相关寄存器(spcr1, spcr2, rcr1, rcr2, xcr1, xcr2, srgr1, srgr2, mcr1, mcr2, rcera1, rcerb1, xcera, xcerb, pcr1)进行正确的设置,以满足C5402和PCM1744、PCM1800的各种时序要求(位同步、帧同步、时钟信号等)。为了使TOUT能给外围器件提供时钟信号,应设计到DSP的定时和中断操作。
(2)DSP程序首先初始化C5402和模拟接口。在分配好相应的缓冲区和产生相应的中断之后,进行各项音效处理算法,例如:压缩、失真、蛙声、房间噪声抑制ZNR、放大、
- 26 -
山东建筑大学毕业论文
均衡、合唱、镶边、延时反唱等,或者几种算法混合进行。
PC的编程包括DSP接口部分和应用层编程部分。在PC程序的开始,与DSP接口部分的程序先调用初始化函数,将DSP程序下载到DSP(初始化程序在DSP中载入一个很小的自举程序,然后通过自举程序一段一段地把全部程序载入DSP)中。初始化完成后,与DSP接口部分程序再按自定义的\"通信协议\"在指定位置读出DSP处理结果帧或DSP的请求帧,并将它交给上一层(应用程序)处理。应用程序亦通过与DSP接口部分程序向DSP发出各种命令。上层应用程序是用户使用系统的界面,它提供语音数据库管理和系统管理等功能。
(3)基于优化工具的程序优化
根据用户的要求,选择C程序优化器和汇编优化器,对编码器的特定性能如代码长度、计算速度等进行优化。使用方法是在编译(Built Options)时设定不同的编译选项来控制优化目标。根据我们的实践,认为选择下列几项进行优化对提高计算速度等的影响较大:
A:-pm:程序级全局优化,包括程序的外部访问、全局变量的优化和函数的外部调用。 B: -o3:采用三级优化技术。其中第一级优化主要完成消除无用赋值和局部公共表达式等,第二级优化主要完成循环算法的优化并将循环中的数组访问转化为指针增量形式、实施循环展开、消除全局公共子表达式和无用赋值等,第三级优化主要完成消除冗余代码、简化表达式和语句、使用内联(inline)函数并展开等。-o3在上述基础上还完成消除从未使用的函数、对函数声明进行重排序和对函数使用内联形式等。
C: 使用内联函数(intrinsic)。 C5402编译器提供的intrinsic可以快速优化C代码。Intrinsic是直接映射为内联的C5402指令的特殊函数(ETSI函数)。Intrinsic用下划线表示,使用时同函数的调用一样。
实践表明:选择上述几项进行优化,只要编译选项选择适当,其效果是很显著的,计算速度可提高5~10倍,当然其代码长度会有少许增加。 4.3 DSP初始化
DSP上电复位结束后,首先要进行系统的初始化。该系统的初始化工作可分为针对DSP芯片的初始化和外部一些控制芯片的初始化。DSP芯片的初始化,包括了一些功能寄存器的设置和用到的在片外设的初始化。DSP采用微机工作模式,OxFF8O~OxFFFF是只读程序存储区,加载用户自定义的中断向量表会出错。因此。通过设置PMST寄存器中的中断向量指针IPTR值的方法,重新对中断向量进行定位。
为了保证DSP能正确地从FLASH中加载引导信息和程序,复位之初,DSP的工作时钟
- 27 -
山东建筑大学毕业论文
由引脚CLMDI、CLMD2和CLMD3的电平决定,倍频系数选为5,即DSP复位时工作频率为50MHz(外部晶振的频率为10MHz)。待加载完成后,重新设置CLMD寄存器的控制字为x09FF7,将DSP的工作时钟频率提高到1OOMHz。在等待状态寄存器中将DSP在访问外部的数据、程序和I/O空间插入的等待周期个数设为7,分区转换控制寄存器将片外存储区分为32K。 Main()
{ asm(“LDM PMST,A”);
asm(“AND #07Fh,A”);//;保留低7位,清掉高9位 asm(“OR #80h,A”); asm(“STLM A,PMST”); asm(“STLM #8FFFh,SWWSR”); asm(“STLM #8802h,BSCR”); asm(“SSBX INTM”);// 关中断 asm(“STM #0FFFFH,IFR”);//;中断清除
asm(“RSBX INTM”) //enable interrupt INTM=0 *(volatile unsigned int *)CLKMS=0x0000;
While(*(volatile unsigned int *) CLKMD &0x0001)}; *(volatile unsigned int *)CLKMD=0x9FF7; McBSP_Init(); McBSP_Enable(); AD50_Init(); DMAInit();
While(1){:code();}}
DSP在片外设初始化有McBSP和DMA的初始化,按照工作需要配置各自的控制寄存器。
多通道缓冲串口0(McBSP0)作为DSP和音频转换芯片AD50进行数据交互的通道,对AD50的初始化也是通过McBSP0写入其控制寄存器的。因此,McBSP0的初始化要最先进行,主要包括中断触发方式、传输数据各式、传输控制引脚的工作模式和极性的配置。 Void McBSP_Init()
{*(volatile unsigned int *)SPSA0=0x00;//SPCR10,McBSP0控制寄存器1
- 28 -
山东建筑大学毕业论文
*(volatile unsigned int *)SPSD0=0x4000;//RPDY驱动RINT,接收部分复位 *(volatile unsigned int *)SPSA0=0x01; //SPCR20,McBSP0控制寄存器2 *(volatile unsigned int *)SPSD0=0x100; //XRDY驱动XINT,发送部分复位 *(volatile unsigned int *)SPSA0=0x02; //RCR10,McBSP接受寄存器1 *(volatile unsigned int *)SPSD0=0x40; //每帧一个字,接收字长为16bit *(volatile unsigned int *)SPSA0=0x03; //RCR20 McBSP0接收控制寄存器2 *(volatile unsigned int *)SPSD0=0x0000;
*(volatile unsigned int *)SPSA0=0x04; //XCR10 McBSP0发送控制寄存器1 *(volatile unsigned int *)SPSD0=0x040; //每帧一个字,发送字长为16bit *(volatile unsigned int *)SPSA0=0x05; //XCR20 McBSP0发送控制寄存器2 *(volatile unsigned int *)SPSD0=0x0000;
*(volatile unsigned int *)SPSA0=0x0E; //PCR0 McBSP0引脚控制寄存器 *(volatile unsigned int *)SPSD0=0x0c; //接收和发送的同步帧、时钟设置成输入模式,接收和发送同步帧脉冲,低有效,在发送时钟的上升沿发送数据,接收时钟的下降沿接收数据};
DMA是VC5402中的一个重要的片内外设,DMA控制器可以在不影响CPU的情况下完成存储器间数据的自由传输,其数据的源和目的可以使片内存储器、片上外设和片外设备。VC5402内部设有6个DMA通道,每个DMA通道受各自的5个16位寄存器控制;源地址寄存器DMSRC。目的地址寄存器DMDST、单元计数寄存器DMCTR、同步事件和帧计数寄存器DMSFC、发送模式控制寄存器DMMCR。在对DMA以及McBSP的配置是通过设置相关的内存映射寄存器来完成的写控制字到映射寄存器中,器件就会自动地将控制字写入到相应的物理控制寄存器中去,映射寄存器提供了一种访问内部物理控制寄存器的方法。可以有很多物理寄存器同时映射到一个映射寄存器,再通过子地址寄存器区分具体的物理寄存器,需要用的子地址寄存器和数据寄存器,将要访问的寄存器的子地址写入子地址寄存器,接着写入控制字到数据寄存器中去,器件就会自动地将访问的物理控制寄存器配置成需要的工作模式,这就是DMA和McBSP常用的同址访问,通过对同一个地址寄存器和数据寄存器的访问实现对一组寄存器的访问。
这里设置DMAO通道结合McBSP0口读取AD50转换完的数据,选择MCBSP0的接受寄存器DDR10为DMA的传送数据的源地址,选择源地址工作在访问后不调整,目的地址增加。AD50转换完的数据按MCBSP0设置送到VC5402内部接收寄存器中,再由DMA将DRR中的数据 读到指定数据存储区完成数据采集,DMA在传送外部来的数据时不影响CPU的正常运行。
- 29 -
山东建筑大学毕业论文
DMA在接收一组规定个数的数据后产生一个DMA中断,通知CPU可对其进行处理,此时DMA可按照设定继续采集下一组数据,实现数据采集与CPU处理的并行操作,把DSP从繁重的串口通讯中解放出来,提高了运行的效率。用DMA完成语音信号的采样是非常必要的。DMA传送一个字需要4个工作周期,CPU需要2个工作周期。 _DMAInit:
stm DMSRC0,DMSA;
stm DRR10,DMSDN;设置MCBSP0的接收寄存器的地址为DMA事件的源地址 stm DMSDT0,DMSA;
stm #3000h,DMSDN;设置DMA事件的目的地址0x3000 stm DMCTR0,DMSA;
stm #(100-1)h,DMSDN;设置DMA0传送数据的个数 stm #DMSFC0,DMSA
stm #1000h,DMSDN;DMA0的同步事件选为MCBSP0的接收事件 stm DMMCR0,DMSA;
stm #0F046,DMSDN;自动缓冲的计数方式,源地址不变,目的地址加1 stm DMSRC4,DMSA;
stm #3100h,DMSDN;设置DMA4的源地址为#3100为DMA stm DMDST4,DMSA;
stm DXR10,DMSDN;设置MCBSP0的数据发送寄存器的地址为DMA4目的地址 stm DMCTR4,DMSA;
stm #(100-1)h,DMSDN;设置DMA4传送数据的个数 stm DMSFC4,DMSA
stm #0d000h,DMSDN;DMA4的同步事件选为定时器0中断事件 stm DMMCR4,DMSA
stm #0F101h,DMSDN;自动缓冲的计数方式,源地址加1,目的地址不变 stm #1211h,DMPREC;设置DMA0、DMA4通道的优先级和工作使能RET 4.4 音频采集程序
在以VC5402为核心组成的数据采集模块中,需要在采集完一段数据后对其进行处理。采用查询方式采集数据会占用大量CPU的资源,采用中断方式来采集数据可以在一定程 序上提高CPU的利用率,但是在采集完成后,还是由CPU来读取。所以,由VC5402的存储器直接存储控制DMA和多通道缓冲串口McBSP0构成的数据采集模块,使得CPU的工作不会
- 30 -
山东建筑大学毕业论文
频繁被中断,去读取采样数据,提高了DSP的运行效率。
VC5402通过McBSP0写入控制字到AD50中的控制寄存器,完成AD50的初始化操作。在McBSP0的初始化工作完成后,DSP将包含了要访问寄存器的地址和控制字的数据通过McBSP0的发送寄存器(DXR0)发送到AD50,这里用查询发送状态标志位的方法,将数据依次发送出去。AD工作在主机模式下,采用15+1的格式传输数据,采样频率设为8KHz
Void AD50_Init() {int i;
*(volatile unsigned int *)DXR10=0x0000;XSR_RDY(); *(volatile unsigned int *)DXR10=0x0001;//软件触发辅助通信 XSR_RDY();
for(i=0;i<8000;i++={}; //wait
*(volatile unsigned int *)DXR10=0x0000;XSR_RDY(); *(volatile unsigned int *)DXR10=0x0001;XSR_RDY();
*(volatile unsigned int *)DXR10=0x0100;//退出复位状态,采样用15+1的格式传输DAC数据,0增益,选择INP和INM做为信号输入端 XSR_RDY(); for(i=0;i<8000;i++={}; //wait
*(volatile unsigned int *)DXR10=0x0000;XSR_RDY(); *(volatile unsigned int *)DXR10=0x0001;XSR_RDY();
*(volatile unsigned int *)DXR10=0x021;//寄存器2,传输15+1格式的ADC数据 XSR_RDY();
*(volatile unsigned int *)DXR10=0x0000;XSR_RDY(); *(volatile unsigned int *)DXR10=0x0001;XSR_RDY(); *(volatile unsigned int *)DXR10=0x0300;//设置寄存器3; XSR_RDY();
*(volatile unsigned int *)DXR10=0x0000;XSR_RDY(); *(volatile unsigned int *)DXR10=0x0001;XSR_RDY();
*(volatile unsigned int *)DXR10=0x0400;//寄存器4,0增益,8KHz的采样率 XSR_RDY();
for(i=0;i<100;i++){}; return;}
- 31 -
山东建筑大学毕业论文
4.5 TMS320VC5402的并行引导装载分析和设计
由DSP芯片组成的数字信号处理系统脱离仿真器独立运行,一般有两种方式:一种是上电后用户程序直接在外部存储器中运行,这种运行速度比较慢:另一种是上电或复位后将用户程序从外部存储器引导到高速数据存储器中运行,此方法最常用,可以较低的成本实现高速的运行。为了实现这个过程就必须运用DSP自举引导功能。
VC5402从上电复位到进入正常工作状态的这个阶段称为引导(Boot)阶段。自举引导主要完成数据的搬移和重新定位,将程序指针指定到执行程序的开始处。当它产生上电复位后,程序指针指向0xFF80处。VC5402有两种工作模式,MP/MC#=1时为微处理器工作模式,MP/MC#=0时为微计算机模式。当选用微处理器工作模式时,程序空间映射为片外的存储器,自举引导程序要用户自己编写,存在以0xFF80为起始地址的一段空间里,或在0xFF80处写一个跳转指令,指向用户编写的自举引导程序。第二种为微处理器工作模式下的自举引导,可利用生产商固化在片内ROM区的Boot loader程序。VC5402在DSP加电RESET时,就从内部ROM的FF80H地址开始行运行,在0xFF80H处有一条分支转移指令,使程序跳转到0xF800处,执行VC5402内部ROM中固化好的Boot loader程序。将外部程序源加载到片内或高速的存储器中运行。Boot loader程序在运行搬移程序之前,首先进行初始化,工作包括关闭中断、将内部RAM映射在程序/数据空间,以及为访问数据、程序和I/O空间设置的七个软件等待等;然后根据设计完成不同方式进行程序的搬移,VC5402共有5种加载方式,HPI模式、串口EEPROM模式、并口模式、标准串行模式和通用I/0口模式。在判断前几种加载方式无效后,Boot loader从数据空间0FFFFH处读取一个16位的引导表起始地址,然后根据存储在这个地址中的标示符判断采用何种搬移方式,若为10AAH,就采用16位的搬移方式;如果是08AAH,就采用8位并行加载方式。本文采用在外部数据空间OFFFFH处存放Boot loader程序起始地址和16位的并行搬移方案。
除了HPI的自举引导不需要Boot表外,其它的几种自举引导方法,都需要建立Boot表,主要包括欲加载的各源程序段代码的长度、各代码段存放的目标地址、程序入口地址等信息。
要得到烧写到外部存储器中的Boot表,首先编写十六进制(Hex)代码转换命令文件(*.cmd),以前面编译生成的可执行文件*.out作为输入文件,在DOS环境中,将hex500,*.out,*.cmd放在同一个目录下,并在编译选项拦中加上-v548,再执行命令行:
(hex500*.Cmd)既得到ASCII的十六进制格式的*.hex文件,同时还生产一个*.mxp文件。*.hex文件便是最终要得到的可以烧写到外部存储中的Boot表。
- 32 -
山东建筑大学毕业论文
一个典型的Hex转换命令文件的内容如下: *.out;输入的可执行文件名
--a; 选定输出文件的格式为ACSII-HEX格式 -map *.mxp;定义输出的映射文件名 -()*.hex;定义转换后的HEX文件名
-bootorg PARALLEL;指定引导表存储的起始地址 -e 0x031d;定义引导后程序执行的入口地址 -boot; 生成一个Boot表
-swwsr 0x7fff;指定BSCR寄存器的值 -bscr 0x8802; 指定BSCR寄存器的值 -memwidth 16; 系统存储器的数据宽度为16位 -romwidth 16; ROM器件的数据宽度为16为
转换生产的*.hex文件就可以直接由编程器烧写进FLASH,或通过在系统编程的方法,利用仿真器和JTAG接口将Boot表的信息作为DSP对FLASH写入的数据,烧写进FLASH。在利用系统编程的方法将Boot表的信息烧写进FLASH之前,需要编写一个程序将*.hex文件中的起始符、首地址、结束符等与引导无关的信息去掉,以能被DSP识别的数据文件(*.dat)格式保存,将该文件作为数据段嵌入烧写程序中。最后在FLASH的0xFFFF地址单元写入引导表的起始地址,系统编程的方法方便了程序的修改和调试。
- 33 -
山东建筑大学毕业论文
总结与致谢
通过本次毕业设计,使我对DSP有所掌握和理解,巩固了我在《DSP技术原理及应用》课程中所学的基本理论知识和实验技能,使我对该课程有了更深入的了解,进一步激发了我对所学专业的兴趣,提高了我的学习、独立思考及动手的能力。
这次毕业设计基本上涵盖了DSP课程学习到的很多知识点,课程题目不仅要求对课本知识有较深刻的了解,同时要求我们有较强的思维和动手能力。在这次毕业设计中,我遇到了非常多的困难,但在解决困难中使我学会了很多,不仅仅是关于数据库知识的方面,还有设计理念以及设计所需的坚持精神。毕业设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高。通过这次做毕业设计使我明白了自己原来知识还很欠缺。自己要学习的东西还太多,以前老是觉得自己什么东西都会,什么东西都懂,有点眼高手低。通过这次做毕业设计,我才明白学习是一个长期积累的过程,以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质。
虽然毕业设计过程中遇到了很多麻烦,但通过不断查阅资料和老师同学的指导帮助,最终完成了毕业设计要求的各部分内容。这次毕业设计提高了我的思维能力和协作能力,锻炼了我的动手能力!本文是在指导教师关华老师的悉心指导下完成的,在毕业设计的过程中关老师给了我很大的帮助。在设计中遇到的问题关老师都帮我细心解答,这次毕业设计能成功与关老师的努力是分不开的。毕业设计的每一步无不倾注了关老师的心血和汗水。有这样的机会、这样的成功,得益于学校的大力支持和老师对我们的不倦指导。
在我的做设计的过程中,关华老师给了我耐心的指导和帮助。我在此对关老师表示诚挚的感谢!
- 34 -
山东建筑大学毕业论文
参考文献
[1]丁玉美编.数字信号处理.西安:西安电子科技大学出版社,2001.
[2]丁玉美、高西全编著.数字信号处理学习指导.西安电子科技大学出版社,2001. [3]郑君里等编.信号与系统.北京:高等教育出版社,2000.
[4]关华等,《Techniques and Applications of DSP Chips》,济南出版社,2006 [5]王念旭等,《DSP基础与应用系统设计》,北京航空航天大学出版社. [6]李哲英,《DSP基础理论与应用技术》,北京航空航天大学出版社. [7]关华,《DSP原理与应用实验指导书》,山东建筑大学.
[8] Lawrence Rabiner,《语音识别基本原理》,清华大学出版社. [9]易克初,《语音信号处理》,国防工业出版社. [10]关华,《Digital Speech Processing》,黄河出版社.
- 35 -
山东建筑大学毕业论文
附录:
PCM1800与C5402硬件接线图
PCM1744与C5402硬件接线图
- 36 -
山东建筑大学毕业论文
电源模块管脚图
- 37 -
因篇幅问题不能全部显示,请点此查看更多更全内容