dsp图像处理实验报告

2023-06-20

报告是在工作或项目事后编写的,所以报告具有总结性、叙述性的特点,只有按照报告格式编写,才能编写出有效的报告。以下是小编整理的《dsp图像处理实验报告》,仅供参考,希望能够帮助到大家。

第一篇:dsp图像处理实验报告

DSP实验报告

实验0 实验设备安装才CCS调试环境 实验目的:

按照实验讲义操作步骤,打开CCS软件,熟悉软件工作环境,了解整个工作环境内容,有助于提高以后实验的操作性和正确性。 实验步骤:

以演示实验一为例:

1. 使用配送的并口电缆线连接好计算机并口与实验箱并口,打开实验箱电源;

2.启动CCS,点击主菜单“Project->Open”在目录“C5000QuickStartsinewave”下打开工程文件sinewave.pjt,然后点击主菜单“Project->Build”编译,然后点击主菜单“File->Load Program”装载debug目录下的程序sinewave.out;

3. 打开源文件exer3.asm,在注释行“set breakpoint in CCS !!!”语句的NOP处单击右键弹出菜单,选择“Toggle breakpoint”加入红色的断点,如下图所示;

4. 点击主菜单“View->Graph->Time/Frequency…”,屏幕会出现图形窗口设置对话框

5. 双击Start Address,将其改为y0;双击Acquisition Buffer Size,将其改为1;DSP Data Type设置成16-bit signed integer,如下图所示;

6. 点击主菜单“Windows->Tile Horizontally”,排列好窗口,便于观察

7. 点击主菜单“Debug->Animate”或按F12键动画运行程序,即可观察到实验结果:

心得体会:

通过对演示实验的练习,让自己更进一步对CCS软件的运行环境、编译过程、装载过程、属性设置、动画演示、实验结果的观察有一个醒目的了解和熟悉的操作方法。熟悉了DSP实验箱基本模块。让我对DSP课程产生了浓厚的学习兴趣,课程学习和实验操作结合为一体的学习体系,使我更好的领悟到DSP课程的实用性和趣味性。 实验二 基本算数运算

2.1 实验目的和要求

加、减、乘、除是数字信号处理中最基本的算术运算。DSP 中提供了大量的指令来

实现这些功能。本实验学习使用定点DSP 实现16 位定点加、减、乘、除运算的基本方法

和编程技巧。本实验的演示文件为exer1.out。

2.2 实验原理

1 定点 DSP 中的数据表示方法

C54X 是16 位的定点DSP。一个16 位的二进制数既可以表示一个整数,也可以表

示一个小数。当它表示一个整数时,其最低位(D0)表示20,D1 位表示21,次高位(D14) 表示214。

2 实现 16 位定点加法

C54X 中提供了多条用于加法的指令,如ADD,ADDC,ADDM 和ADDS。其中

ADDS 用于无符号数的加法运算,ADDC 用于带进位的加法运算(如32 位扩展精度加

法),而ADDM 专用于立即数的加法。

3 实现 16 位定点减法

C54X 中提供了多条用于减法的指令,如SUB,SUBB,SUBC 和SUBS。其中SUBS 用于无符号数的减法运算,SUBB 用于带进位的减法运算(如32 位扩展精度的减法),

而SUBC 为移位减,DSP 中的除法就是用该指令来实现的。

4 实现 16 位定点整数乘法

在C54X 中提供了大量的乘法运算指令,其结果都是32 位,放在A 或B 寄存器

中。乘数在C54X 的乘法指令很灵活,可以是T 寄存器、立即数、存贮单元和A 或B 寄存器的高16 位。

5 实现 16 位定点小数乘法

在 C54X 中,小数的乘法与整数乘法基本一致,只是由于两个有符号的小数相乘,

其结果的小数点的位置在次高的后面,所以必须左移一位,才能得到正确的结果。C54X 中提供了一个状态位FRCT,将其设置为1 时,系统自动将乘积结果左移一位。但注意

整数乘法时不能这样处理,所以上面的实验中一开始便将FRCT 清除。两个小数(16 位)

相乘后结果为32 位,如果精度允许的话,可以只存高16 位,将低16 位丢弃,这样仍可

得到16 位的结果。 6 实现 16 位定点整数除法

在 C54X 中没有提供专门的除法指令,一般有两种方法来完成除法。一种是用乘法

来代替,除以某个数相当于乘以其倒数,所以先求出其倒数,然后相乘。这种方法对于

除以常数特别适用。另一种方法是使用SUBC 指令,重复16 次减法完成除法运算。

7 实现 16 位定点小数除法

在 C54X 中实现16 位的小数除法与前面的整数除法基本一致,也是使用循环的

SUBC 指令来完成。但有两点需要注意:第一,小数除法的结果一定是小数(小于1),

所以被除数一定小于除数。

2.3 实验内容

本实验需要使用C54X 汇编语言实现加、减、乘、除的基本运算,并通过DES 的存 贮器显示窗口观察结果。 1 编写实验程序代码

2 用 ccs simulator 调试运行并观察结

2.4 实验结果

1、加法结果

2、乘法结果

3、减法结果

4、除

2.5 思考题(0.5、0.25)

实验三 C54X的浮点数的算术运

一、实验目的

1 练习 TMS320C54X 汇编程序的编写与调试方法,重点练习C54X 程序流程控制的方法。

2 学习并掌握应用 TMS320C54X 来进行浮点数的各种算术运算的算法实现。

3 练习并掌握 TMS320C54X 的汇编语言的汇编指令系统的使用方法,重点练习具有C54X 特点的一些在功能上有所扩展的特殊指令,并了解这些指令在进行算术运算或各种控制时所带来的方便。

4 练习并掌握用 CCS 调试程序的一些基本操作。 二.实验原理 1 浮点数的表示方法

在定点运算中,小数点是在一个特定的固定位置。例如,如果一个 32-bit 的数把小数点放在最高有效位(也就是符号位)之后,那么就只有分数(绝对值小于1)才能被显示。在定点运

算系统中,虽然在硬件上实现简单,但是表示的操作数的动态范围要受到限制。 3 浮点数运算的步骤

程序代码分成四个 ASM 文件输入,通过编译生成.obj 文件,连接生成.out 文件后就可以在DES320PP-U 实验系统上调试运行(先要创建一个工程文件,然后加入四个工程文件,并且一起编译,连接。因为每个文件都对下一个文件作了引用)。步骤如下:

a. 首先启动 setup CCS C5000,在其中设置目前需要的CCS 的工作状态为C54xxsimulator,保存这一设置并退出。然后再启动CCS 实验系统软件CCS C5000。

b. 在下拉菜单中选择“File”->“Load Program”以装入所要调试的程序fc.out,这时,在反汇编窗口中能看到程序的源代码。

c. 在下拉菜单中选择“View”->“CPU Registers”->“CPU Register”,可以看见在CCS 界面下部份会出现CPU 中的相关寄存器;选择“View”->“Memory…”,在弹出的“Memory Window Options”窗口中选择要观察的区域为数据区,地址开始为0x80h,然后就可以看见出现一个Data Memory 窗口,其中显示了从0x80h 开始的 .bss 区。

d. 在反汇编窗口中需要观察的地方设置断点:在这条指令处双击将其点为红色即可。比如在加法程序中有指令nop 的位置都可以加一个断点。

e. 在下拉菜单中选择“调试”——“连续运行”(或直接点击“运行程序”按钮)运行浮点数程序。如果编写程序时在计算完毕后遇到一个断点,那么程序到此会自动停止。

f. 当示范程序在第一个断点处停下来时,此时就可以看见程序初始化后的情况:被加数12.0 以浮点数的格式放在内存区0x08a-0x08b 中,其值为4140h 和0000h。加数12.0 放在内存区0x08c-0x08d 中,其值也为4140h 和0000h。

g. 再点击“运行程序”按钮,之后程序会在下一个断点处停下来,这时可以看见被加数被格式转换后的变量op1hm、op1lm 和op1se 的值在内存区0x084-0x086 中,分别为00c0h、0000h 和0082h。同样加数被格式转换后的变量op2se、op2hm 和op2lm的值在内存区0x087-0x089 中,分别为0082h、00c0h 和0000h。

h. 再点击“运行程序”按钮,程序停下来时就可以观察到在存储器窗口中表示结果的变量rlthm、rltlm、rltsign 和rltexp 的值在内存区0x080-0x083 中,其值分别为0040h、0000h、0180h 和0083h。

i. 这时可以看到 A 寄存器中的值为AH=41c0h,AL=0000h 这就是最后的以浮点数的格式表示的结果值24(=12+12)。加法运算到此结束。

j. 继续点击“运行程序”按钮,当程序再次停下来时就可以看见在A 寄存器中显示的13.0 与12.0 进行减法运算的结果:AH=3f80h,AL=0000h。这是用浮点数格式表示的数1(=13-12)。减法运算的程序到此结束。

k. 继续点击“运行程序”按钮,当程序再次停下来时就可以看见在A 寄存器中显示的12.0 与12.0 进行乘法运算的结果:AH=4310h,AL=0000h。这是用浮点数格式表示的数144(=12*12)。乘法运算的程序到此结束。

l. 继续点击“运行程序”按钮,当程序再次停下来时就可以看见在A 寄存器中显示的12.0 与4.0 进行除法运算的结果:AH=4040h,AL=0000h。这是用浮点数格式表示的数3(=12/4)。至此加、减、乘、除四种运算都运行完毕。

m. 如果程序运行不正确,请检查源程序是否有误,必要时可以在源程序中多插入断点语句。程序在执行到断点语句时自动暂停,此时可以通过检查各个寄存器中的值以及内存单元中的值来判断程序执行是否正确。

三.在 CCS 的C54xx simulator 上调试观察实验结果

浮点加法断点一:

浮点加法断点二:

浮点加法断点三:

浮点减法

浮点数乘法

浮点数除法

四 心得体会

通过学习C54X的浮点数的算术运算,以及实验结果的观察,使我了解了浮点数运算的原理,学习并掌握用TMS320C54X来进行浮点数的各种算术运算的算法实现。 实验四用定时器实现数字振荡器

实验四 用定时器实现数字振荡器

4.1 实验目的

在数字信号处理中,会经常使用到正弦/余弦信号。通常的方法是将某个频率的正弦/余弦值预先计算出来后制成一个表,DSP 工作时仅作查表运算即可。在本实验中将介绍另一种获得正弦/余弦信号的方法,即利用数字振荡器用叠代方法产生正弦信号。本实验除了学习数字振荡器的DSP 实现原理外,同时还学习C54X 定时器使用以及中断服务程序编写。另外,在本实验中我们将使用汇编语言和C 语言分别完成源程序的编写。

4.2

本实验利用定时器产生一个 2kHz 的正弦信号。定时器被设置成每25uS 产生一次中断(等效于采样速率为40K)。利用该中断,在中断服务程序中用叠代算法计算出一个SIN值,并利用CCS 的图形显示功能查看波形。

4.3 实验原理

1 数字振荡器原理

sinkωT

,其

z 变换为

H(z=

其中,A=2cosωT, B=-1, C=sinωT。设初始条件为0,求出上式的反Z 变换得:

y[k]=Ay[k-1]+By[k-2]+Cx[k-1] 2 C54X 的定时器操作

C54X 的片内定时器利用CLKOUT 时钟计数,用户使用三个寄存器(TIM,PRD,TCR)来控制定时器,参见表4-1。在表4-2 中列出了定时器控制寄存器的各个比特位的具体定义。‘VC5402 的另一个定时器(定时器1)的控制寄存器分别为:0x30

TIM1 ) ,0x31 ( PRD1 ) ,0x32 ( TCR1 )。

3 C54X 中断的使用

C54X 中用户可以通过中断屏蔽寄存器 IMR 来决定开放或关闭一个中断请求。图 4-1 给出了 C5402 的 IMR 寄存器的各个比特位的定义。

图 4-1 ‘C5402 的IMR 寄存器

其中,

表示HPI 接口中断,INT3-INT0 为外部引脚产生的中断,TXINT 和TRINT 为TDM 串口的发送和接收中断,BXINT0 和BRINT0 BSP 串口的发送和接收中断,14

为定时器 0 中断。在中断屏蔽寄存器 IMR 中, 1 表示允许 CPU 响应对应的中断, 0 表示禁止。当然要 CPU 响应中断,

INTM 还应该为 0 (允许所有的中断)。

本实验的初始化程序读取中断向量表的启始地址,然后设置的高

DSP 能正确响应中断,代码如下:

ld #0,dp ;设置DP 页指针 ssbx intm ;关闭所有中断

ld #vector, a ;读出中断向(地址vector 在中断向量表程序中定义)

and #0FF80h, a ;保留高9 位(IPTR) andm #007Fh, pmst ;保留PMST 的低7 位 or pmst, a ;

stlm a, pmst ;设置PMST(其中包括IPTR)

4.4 实验内容

C54X 汇编语言或C 语言实现数字振荡器,并通过CCS 提供的图形显示窗口观察出信号波形以及频谱。实验分下面几步完成:

1 根据确定数字振荡器的频率,确定系数。 2 启动 CCS,新建工程文件。

选择 Project 菜单中的Options 选项,或使用鼠标右键单击工程文件名(如sinewave.pjt)并选择build options 项来修改或添加编译、连接中使用的参数。选择Linker Output Filename”栏中写入输出OUT 文件的名字,如sine.out,你还可以设置生成的MAP 文件名。 4 完成编译、连接,正确生成OUT 文件。 5 选 View→Graph→

1

5…打开图形显示设置窗口。

6 在汇编源程序的中断服务程序(_tint)中的“nop”语句处设置断点。

7 用右键单击图形显示窗口,并选择“Proporties”项以便修改显示属性。

8 清除所有断点,关闭除波形显示窗口外的所有窗口,并关闭工程文件。

9 完成编译、连接,正确生成OUT 文件。

10打开 C 源程序(timer.c)窗口,在中断服务程序(函数tint()的“con_buf=0

Start Address ”改为 buf ;“ Acquisition Buffer Size ”改为“ Display Data Size 128,“DSP DataType”为“32-bit floating point”

11选择 Debug→Animate,运行程序,观察输出波形。

第二篇:dsp课程设计实验报告总结

DSP课程设计总结

(2013-2014学年第2学期)

目 :

专业班级 :

电子1103

学生姓名 :

号 :

11052304

指导教师 :

设计成绩 :

2014 年 6 月

1 目

一 设计目的--------3 二 系统分析--------3 三 硬件设计 3.1 硬件总体结构----------------------------3 3.2 DSP模块设计----------------------------4 3.3 电源模块设计---------------------------4 3.4 时钟模块设计---------------------------5 3.5 存储器模块设计-------------------------6 3.6 复位模块设计---------------------------6 3.7 JTAG模块设计-------------------------7 四 软件设计

4.1 软件总体流程----------------------7 4.2 核心模块及实现代码--------8 五 课程设计总结----------------------14

2

一、 设计目的

设计一个功能完备,能够独立运行的精简DSP硬件系统,并设计简单的DSP控制程序。

二、 系统分析

1.1设计要求 硬件要求:

(1)使用TMS320VC5416作为核心芯片。 (2)具有最简单的led控制功能。 (3)具有存放程序的外部Flash芯片。 (4)外部输入+5V电源。 (5)绘制出系统的功能框图。

(6)使用AD(Altium Designer)绘制出系统的原理图和PCB版图。 软件要求:

利用实验箱的模拟信号产生单元产生不同频率的信号,或者产生两个频率的信号的叠加。在DSP中采集信号,并且对信号进行频谱分析,滤波等。通过键盘选择算法的功能,将计算的信号频率或者滤波后信号的频率在LCD上显示。

三、 硬件设计

3.1 硬件总体结构

3

3.2 DSP总体结构

3.3 电源模块设计

3.4 时钟模块设计

4

3.5 存储器模块设计

3.6复位模块设计

5

3.7 JTAG模块设计

四、 硬件设计

4.1 软件总体流程

6

4.2核心模块及实现代码 1.采集数据去直流

in_x[m] = port8002 & 0x00ff;//读取数据

m++;

intnum = m;

if (intnum == Len)

//以256个点为采样周期 { intnum = 0; xavg = 0.0; for (s=0; s

7

xavg = xavg/Len;//采样均值 for (s=0; s

//输入实部 pi[s] = 0;

//输入虚部 for (p=0; p

xmid[0] = x[s]; r = 0; rm= 0;

for (j=0; j

} y[s] = rm;

r = xmid[j] * h[j]; rm = rm + r; xmid[FLen-p-1] = xmid[FLen-p-2];

4. LCD显示

SendCMD(CLEAR);

showperson();

Delay(1);

//----------------------------

SendCMD(CLEAR);

SendCMD(0x0080);

//设定DDRAM的地址在第一行 80H

delay_100us();

for(i =0;i<16;i++)

{

SendDat(data_buff3[i]);

delay_100us();

asm(" nop "); } asm(" nop ");

SendCMD(0x0090);

shownum(f1);

//------------------------------ SendCMD(0x0088);

//设定DDRAM的地址在第二行 90H delay_100us(); for(i =0;i<16;i++)

{

SendDat(data_buff4[i]);

delay_100us(); }

SendCMD(0x0098);

shownum(f2); 4.3 软件实验效果图 1.去直流

12

2.滤波前fft

3.滤波后fft

13 4.窗口函数

五 课程设计总结

在为期两个多星期的综合设计中,重新熟悉了一下AD和CCS软件的操作 。在画原理图时,各元件的连接及封装形式都应参照手册。只有深刻了解各管脚的功能,才能准确快速地画好原理图。画好原理图后,要先编译一下看是否有连接错误。

如果原理图有所改变,可以在PCB中重新导入。如果元器件管脚或IO引脚变绿,可能是间距违反了规定的rule。可以将rule里的间距改小一点。在pcb连线过程中,我发现 移动clk时钟器件,其管脚变绿,但rule并无问题。后经查阅资料,取消了Drc功能,才恢复正常。在连接滤波电容时,将滤波电容靠近其滤波元器件。

在软件设计过程中,前两天一直没有搞清楚设计要求,进展缓慢。首先了结了一下各个模块程序的输入输出变量的含义,只有 这样才能正确地调用各个函数。在计算频率时,其实我只计算了一个频率。

14 输入是一个混频信号,由于左右对称,在128点内可得到两个最大幅度,0到30(或其他分界点亦可,视滤波效果而言),比较一次,30到128,再比较一次。滤波函数仅仅只是计算了窗口函数,故还需将输入信号函数和窗口函数进行卷积得到最终结果。

在编写LCD显示模块程序时,经常出现乱码。Unsigned

char类型的字符串数组,一个汉字相当于两个英文字母,如果地址1没有安排好容易出现乱码。

15

第三篇:DSP第一次实验报告

信息与通信工程学院

信号与信息处理综合实验(DSP部分)

实验报告

级: 2012211127

名: 刘灿

号: 2012210732 期: 2015.4.10 一.实验题目

Hello World和LED 二.实验目的

熟悉平DSK6416开发台,掌握CCS软件的基本操作流程,达到熟练操作软、硬件系统开发、调试的目的。

三.实验任务及要求

1.任务

(1)在控制台中显示Hello World

运行程序后,在控制台显示Hello World (2)控制LED灯闪烁

FTP给出一个LED的程序模板,可以控制LED 0的闪烁。基于该模板,需要完成:

(a) 修改闪烁的频率;

(b) 通过写8bit数值到CPLD寄存器来控制LED,使得4个LED以200ms的频率同时打开和关闭。

2.要求

(1)实现基本功能且不出现任何错误

(2)基于原理实现多功能的扩展

四.组内分工

刘杰

程序代码的编写与调试

刘灿

建立工程以及目标系统的配置

五.实验内容及流程

1.实验内容

这次实验内容是显示hello world和控制LED灯的闪烁。由于是dsp的第一次实验,内容比较简单,主要还是在于熟悉ccs这个软件在进行dsp开发时的具体建立工程、配置文件、导入实验板和程序烧写调试的过程和步骤。

2.实验流程介绍

1.新建工程

(1)打开ccs后点击菜单中的“File->New->Project”,选择“CCS project”,然后进入下一个页面进行工程的命名。

(2)命名完成之后是选择工程的硬件平台,我们实验室所使用的实验板是DSK6416,它的芯片为C6000系列的TMS320C6416,所以在“Project Type”下拉框中选择“C6000”,其余选项默认即可。

(3)接下来是设置工程属性,在“Device Variant”下拉栏中选择“Generic devices-> Generic C64xx Device”,“Device Endianness”选择little,,其余保持默认值。

(4)然后工程模板选择“hello world”,就完成了工程的新建。

2.代码编译和链接

(1)添加源代码 (2)配置CSL库

将C6000的CSL库,存在本地PC机硬盘上,我们hello world工程的代码路径为C: icsl。在pll_led工程图标上单击右键,选择“Show Build Settings…”来设置编译属性,设置include options,单击新建,在对话框中输入“C: icslinclude”

(3)定义芯片型号:

在“predefine symbols”选项中输入芯片型号CHIP_6416 (4)指定链接库:

在工程属性的“C6000 Linker”的“File Search Path”选项中需要添加DSK6416和CSL6416这两个库,其路径分别为“c: idsk6414libdsk6414bsl.lib”和“c: icsllib_2xcsl6414.lib”

(5)添加cmd文件:

在工程路径下新建一个文本文件,将其后缀修改成.cmd,名称可随便修改,并且在文本文件中写入下列内容: -stack 0x400 -heap 0x400 保存并编译工程,生成“.out”文件。

3.软件调试

在工程中运行“New ->Target Configuration File”新建配置文件,命名为DSK6416_led.ccxml来完成CCS软件和板卡的连接。命名完后在配置文件Basic中Connection选择Spectrum digital DSK-EVM-eZdsp onboard USB Emulator,Device选择DSK6416,保存。然后进行调试,设置断点。最后将程序烧录到实验板中,检查实验结果。

六.源代码及注释

#include #include "dsk6416.h" #include "dsk6416_led.h" #include "dsk6416_dip.h" void main(void) {

printf("Hello World! ");

//控制台显示“hello world”

DSK6416_init();

//初始化LED和DIP

DSK6416_LED_init();

DSK6416_DIP_init();

while(1) {

if (DSK6416_DIP_get(3) == 0)

//开关3控制LED灯以200ms闪烁

{

DSK6416_LED_toggle(3);

DSK6416_waitusec(200000);

}

else if(DSK6416_DIP_get(2) == 0)

//开关2控制LED灯以100ms闪烁

{

DSK6416_LED_toggle(3);

DSK6416_waitusec(100000);

}

else if(DSK6416_DIP_get(1) == 0)

//开关1控制4个灯以200ms同时亮灭

{

DSK6416_rset(DSK6416_USER_REG, 0x0f);

DSK6416_waitusec(200000);

DSK6416_rset(DSK6416_USER_REG, 0x00);

DSK6416_waitusec(200000);

}

else if(DSK6416_DIP_get(0) == 0) //开关0控制4个灯循环亮灭,间隔200ms

{

for(int i=0;i<4;i++){

DSK6416_LED_toggle(i);

DSK6416_waitusec(200000); }

}

} }

七.实验结果

1.按照实验步骤进行操作后,实验控制台正常显示显示“Hello World”,如下图:

2.实验板上DIP 0~3开关控制的LED灯闪烁效果也符合程序预期的效果。

八.遇到的问题

由于第一次实验的内容较为简单,我们在编程方面没有遇到什么困难,工程的建立和系统的配置也能照着实验指导书按部就班的完成。但是在连接实验板时我们遇到了连接不上的问题。机房的电脑连接实验板后安装不了驱动,我们自己带的笔记本电脑也有没有反应的现象。后来我们换了同学的电脑才成功的连接上。

九.心得体会

第一次的实验总的来说比较容易,主要是对ccs这个软件的操作和建立工程的过程的熟悉。通过这次实验我对于这学期dsp实验的流程和步骤有了大体的了解,也熟悉了ccs的编程和调试,也为下次的实验打好了基础。

第四篇:DSP语音信号处理

目 录

第一章 绪

论 ......................................................................................................... 1

1.1课程设计的目的及意义 .................................................................................. 1 1.2设计要求 .......................................................................................................... 1 1.3 研究内容 ......................................................................................................... 1

第二章 语音信号处理理论基础 ........................................................................ 3

第三章

系统方案论证 ..................................................................................... 5 第四章

GUI设计实现 ..................................................................................... 6

4.1 图形用户界面概念 ......................................................................................... 6 4.2用户界面设计 .................................................................................................. 6

4.2.1 GUI设计模板 ........................................................................................ 6 4.2.2 GUI设计窗口 ........................................................................................ 6 4.2.3 GUI设计窗口的基本操作 .................................................................... 6 4.2.4 语音的录入与打开 ................................................................................ 9 4.3课程设计的软件实现 .................................................................................... 9

4.3.1语音信号的短时谱 ................................................................................. 9 4.3.2 自相关方法估计语音信号的声道参数 .............................................. 10 4.3.3 基音周期检测 ...................................................................................... 12 4.4 GUI实验箱操作界面设计 ............................................................................ 14 第五章 心得体会 .................................................................................................. 15 参考文献 ................................................................................................................... 16

语音信号处理是研究数字信号处理技术和语音信号进行处理的一门学科,是一门新型的学科,是在多门学科基础上发展起来的综合性技术,它涉及到数字信号处理、模式识别、语言学。语音信号处理是研究用数字信号处理技术对语音信号处理的一门学科。处理的目的是要得到一些语音参数以便高效的传输或存储;或者是通过处理的某种运算以达到某种用途的要求。语音信号处理又是一门边缘学科。如上所诉,它是“语言语音学”与“数字信号处理”两个学科相结合的产物。

语音信号处理属于信息科学的一个重要分支,大规模集成技术的高度发展和计算机技术的飞速前进,推动了这一技术的发展。在数字音频技术和多媒体技术迅速发展的今天,传统的磁带语音录放系统因体积大、使用不便、放音不清晰而受到了巨大挑战。本次课程设计提出的体积小巧,功耗低的数字化语音存储与回放系统,可以有效的解决传统的语音录放系统在电子与信息处理的使用中受到的限制。

本文提出了语音信号处理课程建设的实验环节中的一些考虑,作为专业课程的学习,实验内容不能仅仅停留在验证性实验上,还应增加实验延伸的设计要求,是学生加深对理论分析认识的同时,强调培养学生的实际动手能力和知识综合运用能力。从而提高语音信号的教学和实验的质量。实验内容采用MATLAB编程实现,不仅易于语音信号处理的实现,更易引导学生完成实验延伸的设计。

第一章 绪

1.1课程设计的目的及意义

在我们的现实生活中从磁带、录像带到CD、VCD、DVD;从黑白电视机、彩色电视机、高清晰度电视机到具有数字信号处理功能的电视机;从留声机、录音机到语音信箱;现在正出在模拟信息到数字信息的变革之中,传统的磁带语音录放系统因其体积大,使用不便,在电子与信息处理的使用中受到许多限制。

虽然,目前广播电视系统尚未实现真正的数字化,相信在不久的将来,真正的数字电视、数字收音机、数字收录机将进入家庭。所以,研究音频信号的数字化存储、处理和回放系统有着很重要的现实意义。

通过设计语音信号实验箱可以对语音信号实现各种形式的变换,因此学会对语音信号的处理,也可自行研究将此语音处理技术应用到现实生活中。

语音信号处理的一门比较实用的电子工程的专业课程,语音是人类获取信息的重要来源和利用信息的重要手段,通过语言相互传递信息是人类最重要的基本功能之一,语音是人类特有的功能,它是创造和记载几千年来人类文明史的根本手段,是人类最重要、最有效、最常用和最方便的交换信息的形式。

语音信号处理是研究用数字信号处理技术对语音信号进行处理的一门学科,它是一门新兴的学科,同时又是综合性的多学科领域刚也涉及面很广的交叉学科。

1.2设计要求

(1)学会MATLAB的使用,掌握MATLAB的程序设计方法; (2)掌握在windows环境下语音信号的采集方法; (3)掌握数字信号处理的基本概念,基本理论和基本方法; (4)掌握MATLAB设计方法;

(5)学会用MATLAB对信号进行分析和处理。

1.3 研究内容

1.理论依据

根据设计要求分析系统功能,掌握设计中所需理论(采样频率、采样位数的

概念,采样定理; 时域信号的FFT分析;数字滤波器设计原理和方法,各种不同类型滤波器的性能比较),阐明设计原理。 2.信号采集

采集语音信号,并对其进行FFT频谱分析,画出信号的时域波形图和频谱图。 3.构造受干扰信号并对其进行FFT频谱分析

对所采集的语音信号加入干扰噪声,对语音信号进行回放,感觉加噪前后声音的变化,分析原因,得出结论。并对其进行FFT频谱分析,比较加噪前后语音信号的波形及频谱,对所得结果进行分析,阐明原因,得出结论。 4.数字滤波器设计

根据待处理信号特点,设计合适数字滤波器,绘制所设计滤波器的幅频和相频特性。 5.信号处理

用所设计的滤波器对含噪语音信号进行滤波。对滤波后的语音信号进行FFT频谱分析。画出处理过程中所得各种波形及频谱图。

对语音信号进行回放,感觉滤波前后声音的变化。比较滤波前后语音信号的波形及频谱,对所得结果和滤波器性能进行频谱分析,阐明原因,得出结论。 6.设计图形用户界面

设计处理系统的用户界面,在所设计的系统界面上可以选择滤波器的参数,显示滤波器的频率响应,选择信号等。

第二章 语音信号处理理论基础

语音采集原理是,人耳能听到的声音是一种范围为20Hz—20kHz,而一般语音频率最高为3.4kHz。语音的采集是指语音声波信号经麦克风和高频放大器转换成有一定幅度的模拟量电信号,然后再转换成数字量的全过程。

本次设计的基本原理是对语音的录音和放音进行数字化控制。其中,关键技术在于:为了增加语音存储时间,提高存储器的利用率,采用了非失真压缩算法对语音信号进行压缩后再存储,而在回放时再进行解压缩;同时,对输入语音信号进行数字滤波以抑制杂音和干扰,从而确保了语音回放的可靠质量。

通过设计一个GUI实验箱,并添加相应的控制控件,添加一个声音文件,通过MATLAB编程,使其通过各种按钮实现语音信号处理的各种功能,最后做成一个完整的语音信号处理实验箱。

语音检测算法是现在语音信号处理研究的一个热点。近些年来,语音信号处理技术伴随着人们对通讯技术升级的需求得到了迅猛的发展。IP电话已经走向大规模产业化应用,并以其低廉的成本和满意的话音质量成为通讯供应商竞争的利器,大有取代传统电话的趋势。语音识别技术也已经实现了与说话者无关的大词汇量连续语音识别,并试图从试验研究走向商用。说话者识别技术作为一个新一代的门禁安防技术也已经出现商业应用。很多单工的通讯设备可以通过语音检测技术的应用实现收发状态的自动转换而以比较小的代价达到双工设备的功能。语音检测技术作为这些语音处理算法中的核心预处理单元,成为这些技术能否走向成熟商业应用的关键技术之一。 实际通讯环境中会遇到各种不同类型、不同强度的噪声。它们各自在时域或频域中有互不相同的特点,没有一致的统计参数。语音信号本身也是一个时变的复杂信号。不同的语言,不同的音位(语音中的最小发声单位)各不相同。

总之,实际中的噪声和语音信号都是复杂的时变信号。如果不是面向特定背景噪声的应用,通过寻找噪声的共同特征以构建一个噪声信号与语音信号的区分函数是不现实的。 语音信号处理本身是一个涉及到传统数字信号处理、统计信号处理、模式识别与建模、发声学、语音语言学等多学科的综合技术。论文在前人研究的基础上,从语音信号的形制机理出发,对语音信号中的基本成分—轻音和浊音的特征进行了深入的研究。Source-Filter模型在语音信号建模中有着广泛的应用,论文在基于Source-Filter模型求取语音信号的LPC谱中发现,语音的短时稳定性(short time stationary)在LPC谱中有着不同于噪声信号的鲜明体现,从而提出了基于音位共振峰轨迹跟踪的语音检测新方法。论文对新算法与国际电信联盟(ITU)的G729B推荐语音检测标准算法进行了对比验证,证明在强背景噪声环境下新算法的性能有20%左右的提高。同时新算法也体现出比G729B更

强的背景噪声适应能力。 在算法的实现中,局部大能量的噪声会形成LPC谱中的局部极大值点,它具有类似语音共振峰的特征。为了消除噪声极大值点对音位共振峰轨迹跟踪的不良影响,论文提出了一个共振峰的形态判别标准—音位共振峰的幅值峰谷比原则,并通过大量的试验研究确定了峰谷比的优化量值。试验证明,此方法是剔除局部噪声极值点的有效方法。 论文工作将新算法在一个基于TI TMS320C6711的数字信号处理器平台上实时实现。在实现过程中,使用了幅值、步长的分段拟合和插值算法,大大降低了复杂数学函数的运算时间,满足了算法了实时性要求。

第三章

系统方案论证

在进行模拟/数字信号的转换过程中,当采样频率fs.max大于信号中最高频率fmax的2倍时,则采样之后的数字信号完整的保留了原始信号中的信号,一般实际应用中保证采样频率为信号最高频率的5—10倍;采样定理又称奈奎斯特定理。

一、采样频率是指计算机每秒钟采集多少个声音样本,是描述声音文件的音质、音调、衡量声卡、声音文件的质量标准。采样频率越高,即采样的间隔时间越短,则在单位时间内计算机得到的声音样本数据就越多,对声音波形的表示也就越精确,采样频率与声音频率之间有一定的关系,根据奈奎斯特理论,只有采样频率高于声音信号最高频率的2倍的时候,才能把数字信号表示的声音还原成为原来的声音,这就是说采样频率是衡量声卡采集、记录和还原声音文件的质量标准。

二、采样位数即采样值或取样值,用来衡量声音波动变化的参数,是指声卡在采集和播放声音文件时候使用数字声音信号的二进制为数。采样频率是指录音设备在一秒钟内对声音信号的采样次数,采样频率越高声音的还原就越真实越自然。

三、采样位数和采样频率对于音频接口来说是最为重要的两个基本指标,也是选择音频接口的两个重要标准。无论采样频率如何,理论上来说采样的位数决定了音频数据最大的力度范围。每增加一个采样位数相当于力度范围增加了6dB。采样位数越多则捕捉到的信号越精确。对于采样率来说你可以想象它类似于一个照相机。显然采样率越高,计算机提取的声音越多,对于原始的还原也越加精确。

第四章

GUI设计实现

4.1 图形用户界面概念

图形用户界面或图形用户接口是指采用图形方式显示的计算机操作环境由用户接口。与早期计算机使用的命令行界面相比,图形界面对于用户来说更为简便易用。

GUI是MATLAB提供的图形用户界面开发环境,提供了一系列用于创建图形用户界面的工具,从而简化界面布局和编程工作。

4.2用户界面设计

4.2.1 GUI设计模板

在MATLAB主窗口中,选择File菜单中的New菜单项,再选择其中的GUI命令,就会显示图形用户界面的设计模板。

MATLAB为GUI设计一共准备了四个模板,分别是Blank GUI、GUI with Uicontrols、GUI with Axes and Menu、Modal Question Dialog。

当用户选择不同的模板时,在GUI设计模板界面的右边就会显示出与该模板对应的GUI图形。

4.2.2 GUI设计窗口

在GUI设计模板中选中一个模板,然后单击OK按钮,就会显示GUI设计窗口,选择不同的GUI设计模式时,在GUI设计窗口中显示的结果是不一样的。

GUI设计窗口由菜单栏、工具栏、空间工具栏以及图形对象设计区等部分组成。GUI设计窗口的菜单栏有File、Edit、View、Layout、Tools和Help六个菜单项,使用其中的命令可以完成图形用户界面的设计操作。

4.2.3 GUI设计窗口的基本操作

(1)前面板的设计:在GUI设计窗口创建图形对象后,通过双击该对象,就会显示该对象的属性编辑器。如下图所示。例如,创建一个Push Button对象,并设计该对象的属性值。

图4-1 按钮属性编辑器

通过以上的按钮属性编辑器可以根据个人情况对按钮的名称、颜色、大小等方面的属性进行修改,使按钮在视觉上变的更加完美。

(2)按钮功能的实现:在GUI设计窗口创建按钮后,通过右键单击按钮,选择View callbacks下的callback对相应的按钮进行编程,使按钮实现相应的功能,如下图所示对按钮的响应功能进行设置。

图4-2 按钮功能编辑器

进入到按钮程序编辑窗口,通过编程即可实现按钮的相应功能,如下图:

图4-3 按钮的编程实现界面

通过对各个按钮控件的修改,和对m文件程序的添加就完成对GUI窗口的设计,最后得到的图形化操作界面如下图所示:

图4-4 图形化操作界面

4.2.4 语音的录入与打开

在MATLAB中,[y,fa,bits]=wavread(‘Blip’,[N1 N2]);用于读取语音,采样值放在向y中,fs表示采样频率,bits表示采样位数。[N1 N2]表示读取从N1点到N2点的值。

Suond(x,fs,bits);用于对声音的回放,向量y则就代表了一个信号也就是说可以像处理一个信号表达式一样处理这个声音信号。

4.3课程设计的软件实现

4.3.1语音信号的短时谱

周期性声门波可表示为:

(4-1) 其中,g[n]是声门波的单周期的波形,p[n]是间隔为P的周期采样序列。当u[n]通过线性非时变声道,且该声道的单位冲击响应为h[n]时,声道输出为:

(4-2) 为了观察一段语音,需要降生到输出乘以一个一时刻τ 为中心的窗函数 w[n,τ] ,即得到:

(4-3)

这段语音信号的频域表达式为:

即语音信号的谱包络为

(4-4)

语谱图就是现实时变频谱幅度特征的图形表达式为:

(4-5)

将语音信号短时谱程序写入到MATLAB中得到单色语谱图的波形如下:

图4-5 语音信号单色语谱图

4.3.2 自相关方法估计语音信号的声道参数

由均方预测误差最小的得到正则方程:

其中,

在最佳解时的误差为

在自相关法中式4-6,式4-8变为

(4-10) 由式4-9和式4-10可列出方程组式4-11 10

(4-6)(4-7)(4-8)(4-9)

(4-11)

解方程组式4-9求出线性预测系数,通过误差式4-11可求出增益G

(4-12)

加窗后信号频谱图如下:

图4-6 加窗后信号频谱图

通过以上的方法,改变参数分别求得4极点模型频率响应和6极点模型频率响应,6极点波形如下图所示:

图4-7 六极点波形图

最后通过以上方法用一个函数分别实现以上三个功能,三个波形显示在一个界面,通过观察图形,查看它们之间的分别。三者比较所得到的波形如下:

图4-8 三者比较波形图

4.3.3 基音周期检测

数据为浊音语音信号speech1_10k(10000样点/秒)用25ms的汉明窗对语音信号speech1_10k进行加窗处理,并画出所得到的加窗信号的自相关函数,再用根据中心消波法及三电平中心消波法原理改进程序,最后对比中方法基音检测的效果并分析结果。

实验原理及方法

相关检测原理:对于离散的数字语音信号序列x(n),如果周期N,则自相关函数也是同周期的周期函数。即:x(n)=x(n+N)。清音信号没有周期性,他的自相关函数也没有周期。浊音新海具有准周期性。自相关基音检测正是利用这一性质对语音信号进行基音检测的。

中心消波法检测原理:中心消波处理是使用如下图所示的中心消波函数进行处理的:

图4-9 中心消波检测图

三电平消波法原理:为了减少自相关计算中的乘法运算,可以把上述中心消

波以后的信号y(n)的自相关用两个信号的互相关代替,其中一个信号是y(n)另一个信号是对y(n)进行三电平量化产生的结果。且这个信号有三种可能的取值,因而这里的互相关计算只需要做加减法,而这个互相关序列的周期性与y(n)的自相关序列是近似相同的。

三电平法对语音信号处理得到的波形如下:

图4-10 三电平法波形图

中心消波法得到的波形如下图:

图4-11 中心消波法波形图

4.4 GUI实验箱操作界面设计

通过对各个控件的编程和对参数的设计,最后得到的GUI实验箱操作界面如下图所示,通过界面上的各个按钮即可实现相应的功能。

图4-12 GUI实验箱操作界面

第五章 心得体会

通过本次课程设计完成了对语音信号的读取与打开,与课题的要求十分相符;初略的完成了界面的设计,但也存在相当的不足,达到了打开语音文件,显示已定波形。语音信号处理时语音学与数字信号处理技术相结合的交叉学科,将语音当做一种特殊的信号,即一种“复杂向量”来看待。也就是说,体现了数字信号处理技术。

本次课程设计时希望将数字信号处理技术应用与某一实际领域,这里就是指对语音的处理。作为存储与计算机中的语音信号,其本身就是离散化了的向量,我们只需要将这些离散的量提取出来美酒可以对其进行处理了。

本次课设,用到了处理数字信号的强有力工具MATLAB,通过MATLAB李的几个命令函数的调用,很轻易的在实际化语音与数字信号的理论之间搭了一座桥。

最后,还利用了MATLAB的另一强大功能——GUI界面设计。设计出了一个建议的用户应用界面,可以让人实现界面操作。

通过本次课程设计让我更加了解了语音信号处理在现实中的强大的应用空间,同时查阅了很多相关的资料,应用MTALAB软件来完成,熟练掌握了MATLAB软件,本次课程设计要求用GUI设计模块,查阅了很多资料,更加深刻的陆奥了了这方面知识。

本次课程设计,我明白了理论的学习需要在实践中才能得到巩固。在课程设计中,只有动手慢慢研究,才能真正了解MATLAB软件平台中可以直接设计数字滤波器的各个函数的调用,对设计GUI实验箱的所有函数的运用有了比较好的认识。

通过这个课程设计,我学到了很多MATLAB和语音信号的知识,提高了自己在语音信号设计方面的知识能力,动手能力和思维能力都得到了一定的提升,希望自己以后可以更多的继续学习这一门课程设计方面的知识。

参考文献

[1]陈怀琛.MATLAB及在电子信息课程中的应用【M】.北京电子工业出版社.2008.1 [2]张文.基于MATLAB的语音信号的滤波域实现【M】.山西电子技术.2008.2 [3]徐靖涛.基于MATLAB的语音信号分析与处理【M】.重庆科技学院学报.2008.1 [4]张威.MATLAB基础与编程入门【M】.西安电子科技大学出版社,2006. [5]周渊,王炳和,刘斌胜.基于MATLAB的噪声信号采集和分析系统的设计【J】.噪声控制.2004(7):52-54.

[6]张雄伟,陈量,杨吉斌.现代语音处理技术及应用【M】.北京:机械工业出版社.2003

第五篇:2013级DSP实验期末考试题

1、LED灯结合外部中断实验

 以一次正反向LED灯亮显示为一个周期,实现正向1,3,2,4灯依次亮,反向3,1,4,2依次亮,如此重复进行  在运行中的任何时候均可用外部中断停止

 要求在LED灯的程序上进行修改,即此工程名字为LED.pjt,或者自行创建工程

2、通过拨码开关控制流水灯的速度

 流水灯显示顺序依次为1,2灯,2,3灯,3,4灯,1,4灯,1,2灯,2,3灯......  用拨码开关分别控制流水灯,以正常为基准,可以实现加速、减速、暂停/继续  例如:拨码状态0001实现加速,0002实现暂停  暂停的时候状态要保持,继续的时候从当前状态开始

 要求在拨码开关的程序上进行修改,即此工程名字为DIP.pjt,或者自行创建工程

3、语音采集与放送结合指示灯实验

 使其中一个声道有数据读写时,指示灯1,2亮

 另一个声道有数据读写时,4灯亮  要求声音播放正常

 要求在语音采集与放送的程序上修改,即工程的名字为audio.pjt,或者自行创建工程

4、语音采集与放送结合ADC实验

 利用信号发生器加入白噪声  右通道是原音,左通道是加噪后的声音,右通道和左通道的声音不同

 要求在语音采集与放送的程序上修改,即工程的名字为audio.pjt,或者自行创建工程

5、DA多路转换结合拨码开关控制实验

 利用通道DAC1或DAC2输出正弦波、余弦波、方波、三角波等,自己设计复杂的图形也可(至少实现4种波形)

 例如:拨码开关为0001时输出正弦波,0010时输出波形为方波,波形输出由自己控制,拨码开关状态也由自己控制

 要求在拨码开关的程序上修改,即工程的名字为DIP.pjt,或者自行创建工程

6、定时器结合DAC实验

 用定时器触发DA模块完成正弦波、余弦波、方波、三角波等波形的循环显示,自己设计复杂的图形也可

 定时时间尽量长才能看见完整的波形

 注意定时器、向量表、cmd文件及寄存器配置  波形都用数学函数实现(至少实现4种波形)

 要求在DA转换的程序上修改,即工程的名字为DA.pjt,或者自行创建工程

7、结合外部中断、定时器以及LED灯实验

 利用外部中断控制实现指示灯的不同显示效果,定时器实现指示灯的亮灭长度  至少完成两种不同的指示灯显示功能

 主要考核两个中断的结合,注意向量表和CMD文件及中断的初始化的配置

 要求在定时器中断的程序上修改,即工程的名字为Timer.pjt,或者自行创建工程

8、自建C工程及混合编程实验

 包括自建工程、自建源文件、添加源文件、自动加载、C与汇编的混合编程、观察效率、

防止.ASM文件被替换等知识点

 每个知识点均有分值

 脱稿限时完成

 考试时现场完成以上操作

9、直方图均衡化增强

 在DSP中自行设计两幅80*80的相对复杂的图像(与实验中两幅图像不同)  将其进行直方图统计

 进行直方图均衡化增强

 使用View中Graph工具显示出原图、增强后图、相应直方图  对整个过程进行分析

 要求自己自建工程,工程名字不可和源代码工程名字相同

 脱稿限时完成

10、边缘检测

 在DSP中自行设计两幅80*80的相对复杂的图像(与实验中两幅图像不同)  实现基于Laplace算子的边缘检测

 使用View中Graph工具显示出Laplace算子的边缘检测结果  对整个过程进行分析

 要求自己自建工程,工程名字不可和源代码工程名字相同

 脱稿限时完成

11、外部中断、定时器、LED灯结合

 利用外部中断控制LED灯闪烁速度,实现每按一次按键,LED灯闪烁速度依次变慢。

至少实现两种情况

 定时器周期默认设定为最大值,不需修改

 要求在外部中断的程序上修改,即工程的名字为XINT.pjt,或者自行创建工程

12、AD转换和外部中断实验

 利用外部中断来启动AD转换,显示出波形

 要求在AD转换的程序上修改,即工程的名字为AD.pjt,或者自行创建工程

13、语音采集、外部中断、定时中断、LED灯结合

 能实现语音信号的采集,用外部中断来控制语音的快进,暂停,倒退,正常播放等  左声道持续送原音,右声道送待控制的音频

 同时用指示灯表示相应的操作,比如指示灯1亮代表播放,指示灯2亮代表暂停等,定

时器实现指示灯的亮灭长度

 注意要存储一段音频数据及存储数据的大小,右声道才能听出快进,暂停,倒退,正常

播放的效果(按一下执行下一个功能)

 要求在AD转换的程序上修改,即工程的名字为AD.pjt,或者自行创建工程

14、用定时器触发播放已保存好的语音信号

 先将通过DSP采集的语音信号进行存储

 左声道持续播放原音,右声道通过定时器中断重复播放存储的语音信号  进入定时中断时打印:“播放”

 要求在定时器中断的程序上修改,即工程的名字为Timer.pjt,或者自行创建工程

自行创建的工程需以学号为工程名。 除第8题以外,其它题目可堂下自行准备好程序,考试时抽取题目之后,将代码考到计算机中,演示结果并回答问题。 考试过程中,调试程序及演示结果时,不允许看ppt以及其它资料,但可看源代码。

本文来自 99学术网(www.99xueshu.com),转载请保留网址和出处

上一篇:大学生心得体会500字下一篇:二甲医院his常见问题