DSP课程设计基于TMS320VC55X芯片的语音采集压缩存储与回放.docx

上传人:b****1 文档编号:10705719 上传时间:2023-05-27 格式:DOCX 页数:25 大小:255KB
下载 相关 举报
DSP课程设计基于TMS320VC55X芯片的语音采集压缩存储与回放.docx_第1页
第1页 / 共25页
DSP课程设计基于TMS320VC55X芯片的语音采集压缩存储与回放.docx_第2页
第2页 / 共25页
DSP课程设计基于TMS320VC55X芯片的语音采集压缩存储与回放.docx_第3页
第3页 / 共25页
DSP课程设计基于TMS320VC55X芯片的语音采集压缩存储与回放.docx_第4页
第4页 / 共25页
DSP课程设计基于TMS320VC55X芯片的语音采集压缩存储与回放.docx_第5页
第5页 / 共25页
DSP课程设计基于TMS320VC55X芯片的语音采集压缩存储与回放.docx_第6页
第6页 / 共25页
DSP课程设计基于TMS320VC55X芯片的语音采集压缩存储与回放.docx_第7页
第7页 / 共25页
DSP课程设计基于TMS320VC55X芯片的语音采集压缩存储与回放.docx_第8页
第8页 / 共25页
DSP课程设计基于TMS320VC55X芯片的语音采集压缩存储与回放.docx_第9页
第9页 / 共25页
DSP课程设计基于TMS320VC55X芯片的语音采集压缩存储与回放.docx_第10页
第10页 / 共25页
DSP课程设计基于TMS320VC55X芯片的语音采集压缩存储与回放.docx_第11页
第11页 / 共25页
DSP课程设计基于TMS320VC55X芯片的语音采集压缩存储与回放.docx_第12页
第12页 / 共25页
DSP课程设计基于TMS320VC55X芯片的语音采集压缩存储与回放.docx_第13页
第13页 / 共25页
DSP课程设计基于TMS320VC55X芯片的语音采集压缩存储与回放.docx_第14页
第14页 / 共25页
DSP课程设计基于TMS320VC55X芯片的语音采集压缩存储与回放.docx_第15页
第15页 / 共25页
DSP课程设计基于TMS320VC55X芯片的语音采集压缩存储与回放.docx_第16页
第16页 / 共25页
DSP课程设计基于TMS320VC55X芯片的语音采集压缩存储与回放.docx_第17页
第17页 / 共25页
DSP课程设计基于TMS320VC55X芯片的语音采集压缩存储与回放.docx_第18页
第18页 / 共25页
DSP课程设计基于TMS320VC55X芯片的语音采集压缩存储与回放.docx_第19页
第19页 / 共25页
DSP课程设计基于TMS320VC55X芯片的语音采集压缩存储与回放.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

DSP课程设计基于TMS320VC55X芯片的语音采集压缩存储与回放.docx

《DSP课程设计基于TMS320VC55X芯片的语音采集压缩存储与回放.docx》由会员分享,可在线阅读,更多相关《DSP课程设计基于TMS320VC55X芯片的语音采集压缩存储与回放.docx(25页珍藏版)》请在冰点文库上搜索。

DSP课程设计基于TMS320VC55X芯片的语音采集压缩存储与回放.docx

DSP课程设计基于TMS320VC55X芯片的语音采集压缩存储与回放

目录

1概述1

1.1设计目的1

1.2设计要求1

1.3语音信号压缩A律设计基本原理1

1.3.1语音信号压缩编码技术的发展1

1.3.2DSP硬件实现数据压缩解压的简单流程2

1.3.3A律语音信号压缩2

2系统硬件设计方案4

2.1DSP芯片的基本原理4

2.2指令缓冲单元(I)5

2.3程序流程单元(P)5

2.4地址程序单元(A)5

2.5数据计算单元(D)6

3语音信号压缩A律设计的CCS实现6

3.1简述CCS环境6

3.1.1CCS主要特点7

3.1.2DSP/BIOS和API函数以及RTDX插件7

3.2CCS配置7

3.3CCS环境中工程文件的使用8

3.3.1建立工程文件8

3.3.2创建新文件9

3.4编译链接和运行目标文件9

3.4.1对程序进行编译链接并装载.out文件10

4软件设计与系统仿真10

4.1软件设计流程图10

4.2CCS操作过程11

4.3程序代码实现11

5课程设计总结20

6参考文献21

1概述

1.1设计目的

在CCS环境下基于TMS320VC55X芯片的语音采集压缩存储与回放。

通过这次课程设计,加深对CCS集成开发环境的以及DSP试验系统箱的使用。

锻炼逻辑思维能力、动手能力以及独立解决问题的能力,对以后更深入地学习和应用数字信号处理及相关知识作准备。

1.2设计要求

(1)了解DSP开发工具及其安装过程

(2)熟悉DSP开发软件CCS使用

(3)熟悉工程文件的建立方法、汇编程序开发调试过程

(4)熟悉常用C55X系列指令的用法

(5)在老师的指导下,独立完成课程设计的全部内容,并按要求编写课程设计论文,能正确阐述和分析设计和实验结果。

1.3语音信号压缩A律设计基本原理

1.3.1语音信号压缩编码技术的发展

随随着通信、计算机网络等技术的飞速发展,语音压缩编码技术得到了快速发展和广泛应用,尤其是最近20年,语音压缩编码技术在移动通信、卫星通信、多媒体技术以及IP电话通信中得到普遍应用,起着举足轻重的作用。

  语音压缩编码技术的类别

  语音编码就是将模拟语音信号数字化,数字化之后可以作为数字信号传输、存储或处理,可以充分利用数字信号处理的各种技术。

为了减小存储空间或降低传输比特率节省带宽,还需要对数字化之后的语音信号进行压缩编码,这就是语音压缩编码技术。

  语音的压缩编码方法归纳起来可以分为三大类:

波形编码、参数编码和混合编码。

1.3.2DSP硬件实现数据压缩解压的简单流程

DSP将传输来的压缩后的数据进行解压成16位或32位,而后对解压后的数据进行分析,处理,最后将处理后的数据按照要求压缩成8位的数据格式输出到相应设备以供读取:

DR→RSR→RBR→解压→RJUST→DDR→DXR→压缩→XSR→DX

在进行压缩时,采样后的12位数据,默认其最高位为符号位,压缩时要保持最高位即符号位不变;原数据的后11位要压缩成7位。

这7位码由3位段落码和4位段内码组成,具体压缩变换后的根据后11位数据大小决定。

压缩后数据的最高位(第7位)表示符号,量阶分别为1,1,2,4,8,16,32,64,由压缩后数据的第6位到第4位决定,第3位到第0位是段内码,压缩后数据有一定的失真,有些数据不能表示出,只能取最接近该数据的压缩值。

例如数据125,压缩后的值为00111111,意义如下:

从左往右,第一个0为符号位,表示为一个正数;后面的011为段落码,表示量阶为4,起始数据为64,后面的4个1111为段内码,表示值为15

最终结果为:

64+4*15=124.

1.3.3A律语音信号压缩

A律限制采样值为12比特,A律的压缩可按照下列公式定义:

F(x)=sgn(x)A|x|/(a+lnA){0<=|x|<1/A}

=sgn(x)(1+lnA|x|)/(1+lnA){1/A<=|x|<=1}

式中,A是压缩参数,x是需要压缩的归一化整数.下图说明这个压缩公式是按照分段线性近似。

从线性到A律的压缩转换如下表.压缩后的码字组成:

比特0~3表示量化值,比特4~6表示段值,压缩后的码字符号放在比特7,为了简化未写出

表1A律二进制编码表

压缩前的码字

丢弃的

比特数

压缩后的码字

输入值

段值,量化值

比特:

11109876543210

比特:

6543210

0000000abcdx

1

000abcd

0000001abcdx

1

001abcd

000001abcdxx

2

010abcd

00001abcdxxx

3

011abcd

0001abcdxxxx

5

100abcd

001abcdxxxxx

6

101abcd

01abcdxxxxxx

7

110abcd

1abcdxxxxxxx

8

111abcd

输入模拟信号经MAX1246采样编码后形成12位一祯的码流进入VC5410的串口___McBSP0,并向VC5410的CPU发出中断请求(rint0),A律压缩就是将这些接受到的12位数据转换成8位的A律PCM码.MAX1246对双极性输入信号进行量化,编码和传输函数如下图所示

图2MAX1246信号函数

由MAX1246信号函数图可见,MAX1246采用的是均匀量化个补码的编码形式.在进行A律压缩时,要保持符号位不变,原数据的后11位要压缩成7位.这7位码编译码表由3位段落码和4位段内码组成.具体的编译码表如下

表27位码编译码表

11位码(十进制)

量阶

段落码(二进制)

段内码(二进制)

0~15

1

000

0000~1111

16~31

1

001

0000~1111

32~63

2

010

0000~1111

64~127

4

011

0000~1111

128~255

8

100

0000~1111

256~511

16

101

0000~1111

512~1023

32

110

0000~1111

1024~2047

64

111

0000~1111

2系统硬件设计方案

2.1DSP芯片的基本原理

C55X有1条32位的程序数据总线(PB),5条16位数据总线(BB、CB、DB、EB、FB)和1条24位的程序地址总线及5条23位地址总线,这些总线分别与CPU相连。

总线通过存储单元接口(M)与外部程序总线和数据总线相连,实现CPU对外部存储器的访问。

这种并行的多总线结构,使CPU能在一个CPU周期内完成1次32位程序代码读、3次16位数据读和两次16位数据写。

C55X根据功能的不同将CPU分为4个单元,指令缓冲单元(I)、程序流程单元(P)、地址流程单元(A)、和数据计算单元(D)。

读程序地址总线(PDA)上传送24位的程序代码地址,由读程序总线(PB)将32位的程序代码送入指令缓冲单元进行译码[1]。

2.2指令缓冲单元(I)

C55X的指令缓冲单元有指令缓冲队列IBQ和指令译码器组成。

在每个CPU周期内,I单元将从程序数据接收的4B程序代码放入指令缓冲队列,指令译码器从队列中取6B程序代码,根据指令的长度可对8位、16位、24位、32位和48位的变长指令进行译码,然后把译码数据送入P单元、A单元和D单元去执行。

2.3程序流程单元(P)

程序流程单元有程序地址产生电路和寄存器组凑成。

程序流程单元产生所有程序空间的地址,并控制指令的读取顺序。

程序地址产生逻辑电路的任务是产生读取空间的24位地址。

一般情况下,它产生的是连续地址,如果指令要求读取非连续地址的程序代码时,程序地址产生逻辑电路能够接收来自I单元的立即数和来自D单元的寄存器值,并将产生的地址传送到PAB。

在P单元中使用的寄存器分为5种类型。

●程序流寄存器:

包括程序计数器、返回地址寄存器和控制流程关系寄存器。

●块重复寄存器:

包括块重复寄存器0和1(BRC0、BRC1)BRC1的保存寄存器(BRS1)、块重复起始地址寄存器0和1以及块重复结束地址寄存器0和1。

●单重复寄存器:

包括单重复寄存器和计算单重复寄存器。

●中断寄存器:

包括中断标志寄存器0和1、中断使能寄存器0和1以及调试中断使能寄存器0和1。

●状态奇存期:

包括状态寄存器0,1,2和3。

2.4地址程序单元(A)

地址程序单元包括数据地址产生电路、算术逻辑电路和寄存器组构成。

数据地址产生电路能够接收来自I单元的立即数和来自A单元的寄存器产生读取数据空间的地址。

对于使用间接寻址模式的指令,有P单元向DAGEN说明采用的寻址模式。

A单元包括一个16位的算术逻辑单元,它既可以接收来自I单元的立即数也可以与存储器、I/O空间、A单元寄存器、D单元寄存器和P单元寄存器进行双向通信。

A单元包括的寄存器有以下几种类型。

●数据页寄存器:

包括数据页寄存器和接口数据页寄存器;

●指针:

包括系数数据指针寄存器、堆栈针寄存器和8个辅助寄存器;

●循环缓冲寄存器:

包括循环缓冲大小寄存器、循环缓冲起始地址寄存器;

●临时寄存器:

包括临时寄存器。

2.5数据计算单元(D)

数据计算单元由移位器、算数逻辑电路、乘法累加器和寄存器组构成。

D单元包含了CPU的主要运算部件。

D单元移位器能够接收来自I单元的立即数,能够与存储器、I/O单元、A单元寄存器、D单元寄存器和P单元寄存器进行双向通信,此外,还可以向D单元的ALU和A单元的ALU提供移位后的数据。

移位可以完成以下操作:

●对40位的累加器可以完成向左最多32位的移位操作,移位数乐意从零食寄存器读取或由指令中的常数提供;

●对于16位寄存器、存储器或I/O空间数据可完成左移31位或32位的移位操作;

●对于16位立即数可完成向左移最多15位的移位操作。

3语音信号压缩A律设计的CCS实现

3.1简述CCS环境

CCS,即CodeComposerStudio,是TI公司在1999年推出的一个开放、具有强大集成开发环境。

它最初是由GODSP公司为TI的C6000系列DSP开发的。

在TI收购了GODSP后,将CCS扩展到了其它系列。

现在所有TI的DSP都可以使用CCS进行开发,但是其中的DSPBIOS功能只有C5000和C6000的CCS中才提供。

以前的DSP软件开发都是在一个分散的开发环境下进行,程序的编写、代码的生成以及调试等都是要通过命令来完成,类似于以前的DOS,十分烦杂。

而CCS的出现是DSP开发软件的一次革命性的变化。

CCS主要由代码生成工具、CCS集成开发环境、DSPBIOS和API函数以及RTDX组成。

3.1.1CCS主要特点

集成可视化代码编辑界面,可以方便地直接编写C、汇编、.h文件、.cmd文件等。

集成代码生成工具,包括汇编器、优化的C编译器和连接器等。

具有完整的基本调试工具,可以载入执行文件(.out),查看寄存器窗口、存储器窗口和变量窗口、反汇编窗口等,支持在C源代码级进行调试。

支持多片DSP联合调试。

断点工具,支持硬件断点、数据空间读/写断点、条件断点等。

探针工具,用于进行算法仿真,数据监视等。

剖析工具,用于评估代码执行的时间。

数据图形显示工具,可绘制时域/频域波形、眼图、星座图等,并可以自动刷新。

提供GEI工具,用户可以根据需要编写自己的控制面板/菜单,从而方便直观地修改变量,配置参数。

3.1.2DSP/BIOS和API函数以及RTDX插件

DSP/BIOS(BasicInputOutputSystem)和API(ApplicationProgramInterface)函数为CCS的主要插件之一。

DSPBIOS可以看作是一个准实时操作系统,支持TIDSP芯片的各种实时操作系统都是以DSP/BIOS作为底层软件,为嵌入式应用提供基本的运行服务。

并且,它还能实时获取目标机的信息,并将其传递给主机上的BIOSCOPE工具,对应用程序进行实时分析RTDX(RealTimeDataExchange)插件是CCS中另一个十分重要的插件。

实时数据交换技术为CCS提供了一个实时、连续的可视环境,开发人员可以看到DSP应用程序工作的真实过程。

RTDX允许系统开发者在不停止运行目标应用程序的情况下在计算机和DSP芯片之间传输数据,同时还可以在主机上利用对象链接嵌入(OLE)技术分析和观察数据。

RTDX可以在DSPBIOS中使用,也可以脱离DSP/BIOS使用。

由于CCS中的Simulator不支持RTDX,所以必须在连接有硬件仿真器或目标板的Emulator下使用。

3.2CCS配置

击桌面图标的“setupCCStudiov3.1”图标,运行CCS设置程序,如图5.1所示:

点击Add→Save&quit完成设置。

 

图3.1用标准配置文件设置系统配置

3.3CCS环境中工程文件的使用

3.3.1建立工程文件

在CCS集成环境下开发汇编程序或者C/C++程序,首先要建立一个工程项目文件(*.pjt),再向工程项目文件中添加汇编程序源文件(*.asm),C/C++源文件(*.c)和链接命令文件(*.cmd),并设置工程项目选项。

使用CCS开发应用程序的一般步骤如下:

●创建或打开一个工程项目文件(*.pjt),编辑各类文件,可以使用CCS提供的集成编辑环境,对链接命令文件和源程序进行编辑。

●对工程项目进行编译。

在编译过程中如果出现语法错误,将在编译链接信息视窗(build)窗口中显示错误信息,用户可以根据显示的信息找到错误的位置,更改错误。

●对结果和数据进行分析和算法评估。

用户可以利用CCS提供的探测点.图形显示和性能评价等工具,对运行结果及输出数据进行分析,评估算法的可能性。

下面分别进行介绍建立工程文件,单击Project→New命令,系统将弹出如图所示的对话框,在该对话框中输入项目文件名,如fir单击“完成”系统就会创建一个名为fir.pjt的工程项目文件如图5.2所示。

图3.2创建新的工程项目文件对话框

3.3.2创建新文件

选择File→New可打开一个新的编辑窗口。

在新窗口中输入源代码。

选择File→Save,在出现的对话框中输入一个文件名,并选择一个扩展名(C源代码选择*.c,汇编源代码选择*.asm),然后单击保存将源程序保存[6]。

3.3.3向工程项目中添加文件

添加文件:

单击Project→AddFiletoProject命令然后会弹出如图5.3所示的对话框,单击打开完成对文件的添加。

图3.3向工程项目中添加文件对话框

3.4编译链接和运行目标文件

3.4.1对程序进行编译链接并装载.out文件

对程序进行编译:

执行Project→Compile命令就可以对当前的汇编程序进行编译生成.obj文件。

如果程序存在语法错误,那么就会在下面的编译链接信息框中显示错误信息。

根据错误提示,读者可对程序进行修改[2]。

对程序进行编译链接执行Project→Build命令,就可以对当前的项目文件同时进行编译,汇编和链接操作,并生成与工程项目名称相同的可执行的.out文件。

如果有错误信息,则会在“编译链接”信息框中显示。

也可以执行Project下的buildAll命令,所有项目中的文件重新编译,汇编和链接,生成.out文件。

单击主菜单“File”中“LoadProgram”选项,在对话框中,在CCS安装目录下,找到构建该工程的Debug目录,选择构建生成后的.out文件,并打开CCS装载完毕后,该“*.out”文件到目标dsp之后,会自动弹出“Disassembly”窗口如图5.4所示。

图3.4CCS调试程序时出现的视窗加工程界面

4软件设计与系统仿真

4.1软件设计流程图

在对语音进行采集时,先要初始化DSP及其串口和A/D和D/A转换器。

 

4.2CCS操作过程

1.将工程文件夹放入C盘要求目录下。

2.打开CCS,Project→open,打开工程文件。

3.进行编译,连接。

4.根据错误提示,对buildoption进行正确的设置,修改头文件路径。

5.再编译,连接,显示没有错误。

6.loadprogram---run,此时三盏灯循环亮,之后程序开始,第一盏灯亮开始录音,一段时间后第二盏灯亮开始放音,然后又开始录音。

依次循环。

4.3程序代码实现

数据经压缩后,放置在3000h~3800;解压缩数据放在5000h~5400h.

A律压缩表放在4000h~4800h;A律解压缩表放在4900h~4980h.

程序清单如下:

File:

A_LAW.ASM→programforthe’C5510

MEMORY

{

PAGE0:

VECS:

origin=0080h,length=0080h/*InternalProgramRAM*/

PRAM:

origin=7600h,length=8000h/*InternalProgramRAM*/

PAGE1:

SCRATCH:

origin=0060h,length=0020h/*ScratchPadDataRAM*/

DMARAM:

origin=0C00h,length=0300h/*DMAbuffer*/

DATA:

origin=1100h,length=0080h/*InternalDataRAM*/

STACK:

origin=1180h,length=0560h/*StackMemorySpace*/

INRAM:

origin=1900h,length=0100h/*InternalDataRAM*/

HPRAM0:

origin=1A00h,length=0002h/*HPImemoryaccessiblebyHostandDSP*/

HPRAM1:

origin=1A02h,length=0280h/*HPImemoryaccessiblebyHostandDSP*/

HPRAM2:

origin=1C82h,length=0280h/*HPImemoryaccessiblebyHostandDSP*/

EXRAM:

origin=1F10h,length=9000h/*ExternalDataRAM*/

}

SECTIONS

{

.cinit>PRAMPAGE0

.text>PRAMPAGE0

.vectors>VECSPAGE0

init_var>PRAMPAGE0

detect>PRAMPAGE0

vrcprg>PRAMPAGE0

matprg>PRAMPAGE0

.stack>STACKPAGE1

.trap>SCRATCHPAGE1

.const>EXRAMPAGE1

.data>EXRAMPAGE1

.bss>EXRAMPAGE1

.cio>EXRAMPAGE1

.switch>EXRAMPAGE1

tables>EXRAMPAGE1

var>EXRAMPAGE1

svctab>EXRAMPAGE1/*SS_VLSPtable*/

vctab>EXRAMPAGE1/*VLSPtable*/

uvctab>EXRAMPAGE1/*UVLSPtable*/

cuvtab>EXRAMPAGE1/*Stochasticcodebook*/

cdbktab>EXRAMPAGE1/*variouscodebooktables*/

logtab>EXRAMPAGE1/*tableforlog2*/

powtab>EXRAMPAGE1/*tableforpow2*/

hamtab>EXRAMPAGE1/*tableforhamming*/

lgwtab>EXRAMPAGE1/*tableforlagwindow*/

acostab>EXRAMPAGE1/*tableforarccos*/

sqrtab>EXRAMPAGE1/*tableforsquareroot*/

acbtab>EXRAMPAGE1/*tableforthresholdsinacb*/

pm03tab>EXRAMPAGE1/*tableforx^(-0.3)computation*/

costab>EXRAMPAGE1/*tableforcosine*/

V23>INRAMPAGE1

FSK>INRAMPAGE1

hpibuff0>HPRAM0PAGE1

hpibuff1>HPRAM1PAGE1

hpibuff2>HPRAM2PAGE1

dma_buff>DMARAMPAGE1

}

/*主程序设计*/

/*语音采集及回放程序,用A律进行压缩及解压,采用AD50进行A/D,D/A转换*/

/*灯循环闪烁程序开始,L0:

录音,L1:

放音*/

#include/*头文件*/

#include

#include

#include

#defineSIGN_BIT(0x80)/*SignbitforaA-lawbyte.*/

#defineQUANT_MASK(0xf)/*Quantizationfieldmask.*/

#defineNSEGS(8)/*NumberofA-lawsegments.*/

#defineSEG_SHIFT(4)/*Leftshiftforsegmentnumber.*/

#defineSEG_MASK(0x70)/*Segmentfieldmask.*/

voiddelay(s16period);

voidled(s16cnt);

voidinitcodec(void);

voidflashenable(void);

unsignedchardata2alaw(s16pcm_val);

intalaw2data

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2