DSP课程设计音频信号频谱分析.docx

上传人:b****7 文档编号:8732718 上传时间:2023-02-01 格式:DOCX 页数:32 大小:988.04KB
下载 相关 举报
DSP课程设计音频信号频谱分析.docx_第1页
第1页 / 共32页
DSP课程设计音频信号频谱分析.docx_第2页
第2页 / 共32页
DSP课程设计音频信号频谱分析.docx_第3页
第3页 / 共32页
DSP课程设计音频信号频谱分析.docx_第4页
第4页 / 共32页
DSP课程设计音频信号频谱分析.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

DSP课程设计音频信号频谱分析.docx

《DSP课程设计音频信号频谱分析.docx》由会员分享,可在线阅读,更多相关《DSP课程设计音频信号频谱分析.docx(32页珍藏版)》请在冰豆网上搜索。

DSP课程设计音频信号频谱分析.docx

DSP课程设计音频信号频谱分析

 

CHANGSHAUNIVERSITYOFSCIENCE&TECHNOLOGY

 

DSP课程设计

 

题目:

DSP

——音频信号频谱分析

学生姓名:

翦杰

学号:

2

班级:

07-01

专业:

电子信息工程

指导教师:

黄亚飞、肖鸿

实习起止时间:

2010年12月27日至2011年1月7日

题目

DSP

—音频信号频谱分析

 

学生姓名:

翦杰

学号:

2

班级:

电子信息工程07-01

所在院(系):

电气与信息工程

指导教师:

肖鸿、黄亚飞

完成日期:

2011年1月7日

 

音频信号频谱分析

摘要

随着信息技术革命的深入和计算机技术的飞速发展,数字信号处理技术已经逐渐发展成为一门关键的技术学科。

而DSP芯片的出现则为数字信号处理算法的实现提供了可能。

这一方面极大地促进了数字信号处理技术的进一步发展;另一方面,它也使数字信号处理的应用领域得到了极大的拓展。

在国外DSP芯片已经被广泛地应用于当今技术革命的各个领域;在我国,DSP技术也正以极快的速度被应用到科技和国民经济的各个领域。

本次课程设计介绍了音频信号频谱分析的原理以及其所涉及的硬件结构和软件设计,该设计是基于快速傅立叶变换(FFT)的方法对采集的音频信号进行频谱分析,得到音频信号的频率及功率,FFT算法采用TLC320AD50编写DSP程序实现。

现可以完成256点的FFT运算,频率分辨率达到100Hz,输入信号电压(峰峰值)可以达到100mV到4V。

关键词:

音频信号;快速傅立叶变换;频谱分析;分辨率

 

1绪论……………………………………………….………………………………………..1

1.1课题背景........................................................................................................................1

1.2课题目的........................................................................................................................1

2硬件电路............................................................................................................................3

2.1系统框图.......................................................................................................................3

2.2信号处理部分...............................................................................................................3

2.2.1信号叠加电路...................................................................................................3

2.2.2低通滤波器........................................................................................................3

2.2.350Hz陷波电路....................................................................................................4

2.2.4电平转换电路.................................................................................................4

2.2.5信号采集部分...................................................................................................4

2.3时钟信号产生电路..................................................................................................13

3软件设计.........................................................................................................................14

3.1DSP初始化................................................................................................................14

3.2AD50初始化..............................................................................................................14

3.3设置DSP中断..........................................................................................................14

3.4数据存储................................................................................................................14

3.5数据输出.................................................................................................................14

3.6FFT算法..................................................................................................................14

4总结....................................................................................................................................17

参考文献..................................................................................................................................19

附录…………………………………………………………......…………….……...………20

 

1绪论

1.1课题背景

目前,在微电子技术发展的带动下,DSP芯片的发展日新月异,DSP的功能日益强大,性能价格比不断上升,开发手段不断改进。

DSP芯片已经完全走下了“贵族”的圣坛。

DSP芯片已经在通信与电子系统、信号处理系统、自动控制、雷达、军事、航空航天、医疗、家用电器、电力系统等许多领域中得到了广泛的应用,而且新的应用领域在不断地被发掘。

TI、AD、AT&T、Motorola和Lucent等公司是DSP芯片的主要生产商。

其中TI公司的TMS320系列的DSP占据了全球DSP市场的50%左右。

该系列产品在我国同样被用户广泛使用,市场份额更高,超过90%。

鉴于多数DSP芯片和高速A/D、D/A芯片工艺为贴片封装,对一般用户来说工厂制版成本较高、手工工艺难制版、效果差等的困难,本系统设计了一套基于DSP芯片的最小系统板,并扩展了A/D、D/A实现语音信号的采集和回放,制作语音处理平台。

设计的核心芯片采用TI公司的TMS320VC5402PGE100进行设计,其最高处理速度能达到100MIPS(每秒执行100百万条指令),性能优越、性价比高,适合大多数用户和教学科研。

基于DSP的运用领域和前景,结合我的专业跟个人爱好,本次毕业设计所选课题为DSP语音采集回放处理平台。

以TMS320C5402DSP为核心,对外部语音信号进行采集,并对所采集信号进行语音处理,最后通过外部设备回放。

该系统适合对单语音信号进行处理。

由于设计过程中采用的A/D、D/A芯片是TI公司的TLC320AD50,所以最高采样速率为22.05KHZ。

为了验证本次设计的正确性和可用性,对采集的语音信号进行FIR滤波,滤除50HZ交流信号,并抑制频率在3600HZ以上的语音信号。

所设计的滤波器是带通滤波器,通带为200HZ—3400HZ,经过实验验证,得到了预期的滤波效果。

证明本次单通道语音信号处理平台设计的正确性,可用性。

1.2课题目的

DSP课程设计是对《数字信号处理》、《DSP原理及应用》等课程的较全面练习和训练,是实践教学中的一个重要环节。

通过本次课程设计,综合运用数字信号处理、DSP技术课程以及其他有关先修课程的理论和生产实际知识去分析和解决具体问题,并使所学知识得到进一步巩固、深化和发展。

初步培养学生对工程设计的独立工作能力,掌握电子系统设计的一般方法。

通过课程设计完成基本技能的训练,如查阅设计资料和手册、程序的设计、调试等,提高学生分析问题、解决问题的能力。

本题目通过TLC320AD50采集音频信号(f.max<10kHz),编写DSP的FFT处理程序(自定频谱分辨力),获得幅频特性之后,在点阵液晶(128*64)中大致显示出幅频图。

并在液晶中用文字显示频率幅值前三的频率值。

1、DSP与TLC320AD50接口电路的原理图绘制;

2、DSP控制TLC320AD50的程序编写与调试;

3、TLC320AD50进行语音模拟量到数字信号的转换,实现声音的采集,在CCS软件中分析信号的幅频特性;

4、编写DSP的FFT处理程序;

5、控制点阵液晶,实现绘图功能,将幅频图显示出来;

6、按要求编写课程设计报告书,正确、完整的阐述设计和实验结果;

7、在报告中绘制程序的流程图,并文字说明。

 

2硬件电路

2.1系统框图

本系统的硬件电路主要由信号预处理模块、信号采集模块、信号频谱分析模块、时钟触发信号、系统控制模块和键盘显示模块6部分组成。

系统组成框图如图2.1所示。

图2.1系统组成框图

2.2信号处理部分

信号预处理具体电路主要由信号合成、阻抗匹配、0.5f的低通滤波、50H的陷波器和信号抬高等部分组成,如图2.2所示。

图2.2信号处理框图

2.2.1信号叠加电路

信号叠加电路采用反向求和电路,将3信号求和的输出,运放采用OP37。

2.2.2低通滤波器

由于要求音频信号为10KHz以下,为了使信号得到更高的纯度,则需对不用的高频信号进行滤出,从而提高系统测量精度。

通过滤波器的快速设计方法设计出12KHz的低通滤波器。

2.2.350Hz陷波电路

在音频信号中,工频50HZ信号对系统的影响最大,因此,在信号处理中加入50HZ的陷波电路。

计算工公式为:

f=1/2πRC。

2.2.4电平转换电路

由于ADC只能采集正电压,则需对信号进行抬高,分析计算得电路需加3V的直流电平。

2.2.5信号采集部分

语音信号模数/数模转换选择TLC320AD50(以下简称AD50)芯片,AD50使用过采样(oversampling)∑—Δ技术提供从数字信号到模拟信号(DA)和模拟信号到数字信号(AD)的高分辨率低速信号转换。

该器件包括两个串行的同步转换通道(用于各自的数据传输),在DA之前有一个插人滤波器(interpolation filter),在AD之后有一个抽取滤波器(decimdtionfilter),由此可降低AD50自身的噪声。

此外,AD50还具有片内时序和控制功能。

  AD50特点如下。

  ·输入信号。

单端信号输人,幅度在1~4V之间。

  ·输出信号。

单端信号输出,幅度在1~4V之间。

  ·单一5V电源供电,也可以使用5V模拟电源和3V数字电源同时供电。

  ·最大工作功耗为100mW。

  ·通用16位数据格式,也可以采用2的补码数据格式。

  ·内部基准电压。

  ·AD为64倍采样,DA为256倍采样。

  ·支持各种V.34协议的采样速率。

  ·具有多种可选的采样频率。

  ·支持商业级音响应用。

  ·工作温度范围从-40~850。

  AD50的引脚分布如图2.3所示(

(1)为DW封装的引脚分布,

(2)为PT封装的引脚分布)。

 图2.3AD50的引脚分布

  AD50的各个引脚的说明如表2-1所示。

  表2-1AD50的引脚说明

续表

  在AD50正常工作前,必须对它进行正确的初始化。

初始化操作的主要工作是配置AD50的4个控制寄存器CR1、CR2、CR3和CR4。

控制寄存器的读写是通过二次通信来实现。

在二次通信中,D0~D7为写人控制寄存器的数据或者从控制寄存器读出的数据,D8~D12的内容决定选择哪个控制寄存器,D13位决定是读操作还是写操作。

由D8~D13位确定的所有情况如表2-2所示。

  表2-2  AD50的D8~D13位确定的所有操作情况

  控制寄存器1中各个控制位的功能说明如表2-3所示。

  表2-3 控制寄存器1的各个控制位的功能说明

  控制寄存器2中各个控制位的功能说明如表2-4所示。

  表2-4控制寄存器2的各个控制位的功能说明

  控制寄存器3中各个控制位的功能说明如表2-5所示。

  表2-5控制寄存器3的各个控制位的功能说明

  控制寄存器4中各个控制位的功能说明如表2-6、2-7所示。

  表2-6 控制寄存器4的各个控制位的功能说明

  表2-7控制寄存器4的第4~第6位对应的N值

  AD50控制寄存器的设置必须在二次通信中完成。

AD50有硬件和软件两种方式启动二次通信,下面介绍硬仵方式启动AD50的二次通信过程。

硬件启动过程如下:

C5409通过其内部寄存器将XF引脚变为高电平,从而控制AD50的FC引脚到高电平,然后向缓冲串口写一个16位的控制字,低8位是AD50的控制寄存器初始化值,高8位选择所要初始化的控制寄存器及操作。

整个过程的时序如图2.4所示。

  图2.4硬件启动AD50二次通信时序

  AD50的工作过程可分为AD通道工作过程和DA通道工作过程。

AD通道把模拟信号转换成数字信号,并以2进制补码形式表示。

当帧同步信号有效时(FS为低电平),16位(或者15位)数字信号在SCLK的上升沿输出到DOUT引脚,一位数据对应一个SCLK周期。

传输时序如图2.5所示。

  图2.5AD50的AD通道数据传输时序

  AD50的DA通道把送人的数字信号转换成模拟信号。

在SCLK的作用下,数字信号通过DIN引脚进人DA通道,每个SCLK的下降沿输人一位数字信号。

DA将输入的数字信号转换成模拟信号输出,DA通道的传输时序如图2.6所示。

  图2.6AD50的DA通道数据传输时序

  AD50的前后端信号处理包括两个处理电路:

输人模拟信号的处理电路和依据输出模拟信号的处理电路。

这两个处理电路的主要作用是将信号进行处理,使之更加适合AD和DA的要求。

  为了达到更好的信号处理效果,AD50的模拟信号输人一般采用差分输人方式,即使用两个运算放大器,将单端输入信号转换成差分输人信号,电路连接如图2.7所示。

  图2.7AD50单端信号转换成差分信号

由图可知,单端输人信号经过两个22μF的隔直电容,送人运算放大器的反相端,输出反相信号IMP;IMP再输人到另一个信号的反相端,输出同相信号INP,从而形成差分输人信号INP和IMP。

图中的运算放大器选择的是TI公司的TLC4502,也可以选用其他可替代的运算放大器芯片。

除了使用上述的运算放大器外,也可以使用变压器将单端信号转换成差分信号输人到AD50,如图2.8所示。

  图2.8使用变压器将单端信号转换成差分信号

图中推荐的值为50Ω,Rin为22Ω,Cin为10μF,这些元件的值也可以根据具体的信号进行调整,一般清况下电阻值在10~100Ω之间,电容值在10~200pF之间。

  AD50的DA输出为差分信号,可以直接驱动600Ω的负载。

DA输出处理电路如图2.9所示。

  图2.9AD50的DA后端输出信号处理

  AD50的去耦合电容的连接如图2.10所示。

  图2.10AD50的去耦合电容的连接

  AD50的模拟电源和数字电源可以使用一个电感连接在一起,连接方法如图2.11所示。

  图2.11AD50模拟和数字电源的连接

2.3时钟信号产生电路

通过计算,对模拟信号的采样速率为25.6KHz,则需产生25.6KHZR的方波.作为A/D转换数据的速率。

可采用单片集成电路函数发生器ICL8038。

ICL8038工作频率范围在几Hz到几百KHZ之间,可以同时输出三角波、方波和正统波,满足设计要求。

 

3软件设计

3.1DSP的初始化

包括定时器0的初始化,以确保TOUT0引脚能输出正确的时钟信号到AD50,使AD50能根据该时钟信号进行采样。

初始化缓冲串口时,应使DSP工作于主设备方式,CLKR0和FSX0引脚设为输出。

DSP初始化完成后,在DSP的TOUT0,CLKR0,FSX0这3个引脚可以看到连续输出的脉冲。

3.2AD50的初始化

此时主要是设置DSP的XF引脚输出为高,以启动AD50的二次通信,在正确设置AD50的4个控制寄存器以后,AD50开始采样数据。

此时检测AD50的DOUT引脚能,能发现引脚有连续的信号输出。

3.3设置DSP中断

DSP的中断负责从缓冲串口读取数据,可以在CCS中查看读取的数据是否正确,如果每次读取的都是0或者同一个数据,说明AD50没有正常工作,此时需检查DSP或者AD50是否初始化成功。

3.4数据存储

DSP从缓冲串口读取数据存放到RAM,连续存放500或者1000个数据,可以通过CCS的画图功能看到采集到的数据。

这时主要判断采样频率是否正确、有没有数据丢失等。

3.5数据输出

将RAM中的数据直接送到AD50的D/A单元,转换成模拟信号后输出。

这时从AD50的模拟信号输出端可以看到和输入端一样的信号。

3.6FFT算法

本系统软件设计主要实现FFT算法和各频率和对应功率的分析和显示,由于DSP语言表达和运算能力比较强且具有很好的可移植性和硬件控制能力,则采用DSP语言实现。

总体程序流程图如图3.1所示。

图3.1总体程序流程图

本设计中FFT根据DFT的基二分解方法,在第L(L表示从左到右的运算级数,L=1,2,3…M)级中,每个蝶形的两个输入数据相距B(L-1)个点,同一旋转因子对应着间隔为2L点的2(M-L)个蝶形。

从输入端开始,逐级进行,在进行L级运算时,依次求出2(L-1)不同的旋转因子,每求出一个旋转因子,就计算完它对应的所有的2(M-L)个蝶形。

因此用三重循环程序实现FFT变换。

同时采用原址计算,可节省大量的存储单元。

FFT算法的程序框图如图3.2所示。

图3.2FFT算法的程序框图

系统用于实现语音信号的采集和播放,收到数据后,AD50对数据进行模数转换,变成数字语音信号后存储于内部RAM,然后输出到AD50,AD50进行数模转换后输出到相应的后端处理电路,最后由后端电路将输入的语音信号显示。

 

4总结

在这次课程设计中,我遇到了许多问题,这些问题是我们初学者经常会遇到的问题。

通过老师的指导,和自己的思考,总结如下:

问题1:

单步可以运行,连续运行时总回0地址。

解决办法:

 Watchdog没有关,连续运行复位DSP回到0地址。

 

问题2:

OUT文件不能load到片内flash中。

解决办法:

Flash不是RAM,不能用简单的写指令写入,需要专门的程序写入。

CCS和C Source Debugger中的load命令,不能对flash写入。

 OUT文件只能load到片内RAM,或片外RAM中。

 

问题3:

在flash中如何加入断点解决办法:

 在flash中可以用单步调试,也可以用硬件断点的方法在flash中加入断点,软件断点是不能加在ROM中的。

硬件断点,设置存储器的地址,当访问该地址时产生中断。

 

问题4:

中断向量

解决办法:

C2000的中断向量不可重定位,因此中断向量必须放在0地址开始的flash内。

在调试系统时,代码放在RAM中,中断向量也必须放在flash内。

 

问题5:

DSP初始化

解决办法:

DSP在RESET后,许多的寄存器的初值一般同用户的要求不一致,例如:

等待寄存器,SP,中断定位寄存器等,需要通过初始化程序设置为用户要求的数值。

 初始化程序的主要作用:

 1)设置寄存器初值。

 2)建立中断向量表。

 3)外围部件初始化。

GEL文件的功能:

GEL文件的功能同emuinit.cmd的功能基本相同,用于初始化DSP。

但它的功能比emuinit的功能有所增强,GEL在CCS下有一个菜单,可以根据DSP的对象不同,设置不同的初始化程序。

以TMS320LF2407为例:

 

#define SCSR1 0x7018 ;定义scsr1寄存器 

#define SCSR2 0X7019 ;定义scsr2寄存器 

#define WDKEY 0x7025 ;定义wdkey寄存器 

#define WDNTR 0x7029 ;定义wdntr寄存器 

StartUp() ; 开始函数 

GEL_MapReset(); ; 存储空间复位 GEL_MapAdd(0x0000,0,0x7fff,1,1); 定义程序空间从0000-7fff 可读写 

GEL_MapAdd(0x8000,0,0x7000,1,1); 定义程序空间从8000-f000 可读写 

GEL_MapAdd(0x0000,1,0x10000,1,1); 定义数据空间从0000-10000可读写 

GEL_MapAdd(0xffff,2,1,1,1); 定义i/o 空间0xffff可读写 

GEL_MapOn(); 存储空间打开 

GEL_MemoryFill(0xffff,2,1,0x40); 在i/o空间添入数值40h 

*(int *)SCSR1=0x0200; 给scsr1寄存器赋值 

*(in

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

当前位置:首页 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1