收藏 分享(赏)

云永贞EDA设计new.doc

上传人:dzzj200808 文档编号:2438495 上传时间:2018-09-16 格式:DOC 页数:32 大小:605KB
下载 相关 举报
云永贞EDA设计new.doc_第1页
第1页 / 共32页
云永贞EDA设计new.doc_第2页
第2页 / 共32页
云永贞EDA设计new.doc_第3页
第3页 / 共32页
云永贞EDA设计new.doc_第4页
第4页 / 共32页
云永贞EDA设计new.doc_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、EDA课程设计论文题 目 基于 DSP 的 DTFM 通信系统 学 院 通信与电子工程学院 2012 年 05 月 20 日EDA 课程设计论文 2摘 要DTMF(Dual-Tone Multifrequency)是通信技术中的一种信号传输方法,DTMF 信号是音频电话中的拨号信号。本文介绍一种基于 TMS320C5402 系列 DSP 芯片的 DTMF信号的产生和检测方法, 使得 DTMF 信号的产生和检测变准确、迅速和简单。本系统的软件设计方面,采用 TI 公司的 5000 系列 DSP 中的高性能廉价的 TMS320VC5402 为主要控制器,进行了 FLASH 程序存储器的扩展,使用

2、TLC320AD50C 模拟接口电路与TMS320VC5402 定点 DSP 接口电路的硬件设计方法。软件方面采用 Goertzel 算法,Goertzel 算法是一种适合于 CPU 实现的高效音频信号检测方法。它是一个双极点滤波器,可以在噪声信道中清晰地检测出音频信号 Goertzel 算法执行离散傅立叶变换(Discrete Fourier Transform) ,这个算法较为精简,而且每个频率只需要一个实数系数就可以决定值的振幅。但是,正确计算数值振幅和相位时需要复数系数,故需要较复杂的程序,借助只计算音调频率的振幅而忽略相位的计算,我们可以简化 DTMF 信号的译码工作。此外,Goer

3、tzel 算法只要获得任何采样就可以立刻处理,不必获得全部采样之后才处理,可明显地提高速度。Goertzel 算法是 DTMF 信号检测的核心,它利用二极点的 IIR 滤波器计算离散傅立叶变换值,快速有效的提取输入信号的频谱信息。关键词:拨号信号;控制器;程序存储器;离散傅里叶变换;频谱EDA 课程设计论文 3AbstractDTMF(the Dual-Tone Multifrequency) is one kind of methods delivering signal in correspondence technique.The DTMF signal is the Stiring n

4、umber signal of the audio frequency telephone. This text introduce a kind of method according to the creation and the examination method of the DTMF signal of the TMS320 C5402 series DSP chip. This systems hardware design uses TMS320VC5402 main controller that is a part of TI Companys 5000 serial DS

5、P and is high quality ang low prize .We use flash program memory extension in order to realize the systems program. In the same time ,we use TLC320AD50C and TMS320VC5402 to realize the siganal alternating .Then LCD is used to show measured data ang wave. The software aspect adoption Goertzel calcula

6、te way, the Goertzel calculate way is a kind of suitable method for CPU to carry out the examination of the audio frequency signal efficiently .The filter has a pair of extremities , can examine an audio frequency signal. Goertzel calculate way carries out FFT,this calculate way is simplify, and eac

7、h frequency need a real amount coefficient then we can get the worth of flap.However, if we want to get the right calculation number of flaps and mutually the demand plural coefficient, complicated procedure is necessary, if we only calculate a tone frequency flap but neglect the calculation of puls

8、e, we can simplify the translating of DTMF signal.In addition, the Goertzel calculating way can handle immediately acquiring any sample , not after acquiring all samples .This way can raise speed .The Goertzel calculate way is the core of the DTMF signal examination, it uses IIR filter of two extrem

9、ities to compute FFT value, withdrawing a frequency chart information of the inputing signal quickly and effectively. Keywords: Dial-up signal;MCU;ROM;DFT;spectrumEDA 课程设计论文 4第 1章 绪论1.1 DSP 概述1.1.1 什么是 DSP 芯片DSP 芯片,也称数字信号处理器,是一种具有特殊结构的微处理器。DSP 芯片的内部采用程序和数据分开的哈佛结构,具有专门的硬件乘法器,广泛采用流水线操作,提供特殊的 DSP 指令,可以

10、用来快速地实现各种数字信号处理算法。根据数字信号处理的要求,DSP 芯片一般具有如下的一些主要特点:(1)在一个指令周期内可完成一次乘法和一次加法。 (2)程序和数据空间分开,可以同时访问指令和数据。 (3)片内具有快速 RAM,通常可通过独立的数据总线在两块中同时访问。 (4)具有低开销或无开销循环及跳转的硬件支持。 (5)快速的中断处理和硬件 I/O 支持。 (6)具有在单周期内操作的多个硬件地址产生器。 (7)可以并行执行多个操作。 (8)支持流水线操作,使取指、译码和执行等操作可以重叠执行。与通用微处理器相比,DSP 芯片的其他通用功能相对较弱些。1.1.2 DSP 芯片的发展世界上第

11、一个单片 DSP 芯片是 1978 年 AMI 公司宣布的 S2811,1979 年美国 Intel公司发布的商用可编程期间 2920 是 DSP 芯片的一个主要里程碑。这两种芯片内部都没有现代 DSP 芯片所必须的单周期芯片。 1980 年。日本 NEC 公司推出的 PD7720是第一个具有乘法器的商用 DSP 芯片。的是, 1982 年日本的 Hitachi 公司推出了第一个采用 CMOS 工艺生产浮点 DSP 芯片。1983 年,日本的 Fujitsu 公司推出的MB8764,其指令周期为 120ns ,且具有双内部总线,从而处理的吞吐量发生了一个大的飞跃。在这么多的 DSP 芯片种类中

12、,最成功的是美国德克萨斯仪器公司(Texas Instruments,简称 TI)的一系列产品。TI 公司成功推出启迪一代 DSP 芯片 TMS32010及其系列产品后相继推出了第二代、第三代、第四代、第五代 DSP 芯片以及集多个DSP 于一体的高性能 DSP 芯片 TMS32C80/C82 等。自 1980 年以来,DSP 芯片得到了突飞猛进的发展,DSP 芯片的应用越来越广泛。从运算速度来看,MAC(一次乘法和一次加法)时间已经从 80 年代初的 400ns 降低到 40ns(如 TMS32C40) ,处理能力提高了 10 多倍。DSP 芯片内部关键的乘法器部件从 1980 年的占模区的

13、 40 左右下降到 5 以EDA 课程设计论文 5下,片内 RAM 增加一个数量级以上。DSP 芯片的引脚数量从 1980 年的最多 64 个增加到现在的 200 个以上,引脚数量的增加,意味着结构灵活性的增加。1.1.3 DSP 芯片的基本结构 DSP 芯片的基本结构DSP 芯片的基本结构 DSP 芯片的基本结构包括: (1)哈佛结构。(2)流水线操作。(3)专用的硬件乘法器。(4)特殊的 DSP 令。(5)快速的指令周期。EDA 课程设计论文 61.2 DTMF 通信的简介DTMF(Dual-Tone Multifrequency)通信技术中的一种信号传输方法,这里的 tone 代表一个固

14、定频率的声音片断,而 dual-tone 则是由两个不同的 tone 产生的复频信号。数字式电话的 12 个键分别 代表了 12 种不同的复频组合,借助于对频率组合的侦测,计算机可分辨出所按的是哪一个键,从而达到与电话另一端的使用者互动控制的目的。通过这种技术可以使计算机将控制命令从复杂的声音讯号中判别出来,从而使我们能够通过电话按键控制计算机的运作。DTMF 信号发生器将按键或数字信号转化成双音信号,DTMF 信号检测器检测双音信号中的信息。1.3 本文研究的意义可以加深对 DSP 的掌握以及 DSP 与电话机通信的方法,这使我们对实验的原理更加精通。EDA 课程设计论文 7第 2章 关键算

15、法实现2.1 DTMF 信号的产生正弦信号算法和频率控制:设有一系统:其传输函数没有零点,只有一对处在单位圆上的共扼极点,则单位冲击响应为恒幅度振荡,即产生了正弦信号。经离散变换后得:A 为正弦波幅值,Fs 是为采样频率,F 为正弦波频率。对于 DTMF 所要产生的频率和采样频率为:ROW 频率:697、770、852、941Hz。COLUMN 频率:1209、1336、1477、1633Hz 采样频率:8kHz 。DTMF 信号时序控制:根据 AT另一种是直接通过主机口(HPI)FLASH 进行操作。考虑工程的需要,我们通过主机口(HPO 对 FLASH 进行编程和擦除操作。基本思想是:将应

16、用程序编译连接成目标文件后,利用 HEX500 将其转换成 ASCI 或 He 格式,通过主机口将应用程序逐块装载到片内 RAM 某一区域;然后将 FLASH 读写控制程序和监控程序装载到片内的另一区域。最后运行片内监控程序通过 FLASH 读写控制程序逐字/字节将应用程序写入 FLASH。在对 FLASH 擦除/ 编程以后,芯片有一个延迟时问把 FLASH 的状态反馈给状态位。 Am29LV400B 提供 T6 个状态位DQ2,DQ3,DQ5,DQ6,DQ7 以及 RY/BY,通过这些状态位可以判断擦除 /编程操作过后的状态。我采用了 DQ5 和 DQ7 作为本程序的状态检测位。DQ7 为数

17、据查询位,在 FLASH 的编程过程中,DQ7 输出的是写人数据的反码 ;编程结束后.DQ7 输出的是写人数据的原码,由此可以判断嵌入式编程算法是否完成。擦除过程中,DQ7 输出“0” ,擦除结束或进人擦除暂停模式后,DQ7 输出“I” ,擦除过程中为了在 DQ7 获得有效的状态信息,系统所提供的有效地址必须是正在被擦除的块中的地址。IlQ5 为擦除/ 编程操作的超时标识位,用来指示 FLASH 擦除/编程操作是否超过规定的时限。如果操作超过规定的时限,DQ5 将输出“I” 。此时必须对 FLASH 复位才可进行其他的操作。4.2.4 AD50 软件编制过程一旦完成了正确的硬件连接,接下来就可

18、以进行软件编程调试了。要完成的工作包括:(1)TMS320VC5402 串口的初始化。首先将 DSP 串口 1 复位,再对串口 1 的16 个寄存器进行编程,使 DSP 串口工作在以下状态:以 SPI 模式运行,每帧一段,每段一个字,每字 16 位,采样率发生器由 DSP 内部产生,帧同步脉冲低电平有效,并且帧同步信号和移位时钟信号由外部产生。DSP 给 AD50C 编程用查询方式,接收 A/D转换的 D 信号和发送 D/A 转换的 D 信号用 DMA 方式。 (2)AD50 初始化。该初始化操作过程包括通过 TMS320VC5402 的同步串口发送两串 16 位数字信息到 AD50。第一串为

19、 0000 0000 0000 0001B,最低有效位(bits0)说明下一个要传输的数据字属于二次通信。第二个数据值用来对 AD50 的 4 个数据寄存器的某一个进行配置。Bits1511EDA 课程设计论文 16位为 0,Bits 108 位为所选寄存器地址值, Bits7 0 位为所选中寄存器的编程值。4 个用户可编程寄存器的描述如下:R1 中包含模拟输入通道选择,硬件 / 软件编程方式选择;R2 进行单机 / 从机工作和电话模式(电话模式内容请参阅参考文献3)选择;R3 控制带从机个数选择;R4 用来设置模拟信号可编程放大增益和 A/D、D/A 转换频率。其它两个寄存器 R5、R6 是

20、厂家留着测试用的,用户不可以对其编程。我们在以下例程中对 4 个可编程寄存器编程,使 AD50C 工作在以下状态:选择 INP/INM 为工作模拟输入,15+1 位 ADC 和 15+1 位 DAC 模式,不带从机,采样频率为 10.67KHz,模拟信号输入和输出放大增益均为 0dB。3)用户代码的编写。完成音频信号采集与回放代码的编制。本设计给 AD50 编程用查询方式,接收 A/D 转换的 D 信号和发送 D/A 转换的 D 信号用 DMA 方式。EDA 课程设计论文 17第 5章 仿真结果C 语言和汇编程序实现数字振荡器的时域仿真结果:横轴时间 t,纵轴正弦值,频率 2kHz汇编程序实现

21、数字振荡器的频谱图:EDA 课程设计论文 18C 语言和汇编程序实现数字振荡器的时域仿真结果:横轴时间 t,纵轴正弦值,频率 2kHzEDA 课程设计论文 19C 语言和汇编程序实现数字振荡器的频谱图:EDA 课程设计论文 20EDA 课程设计论文 21结 论基于 DSP 的 DTMF 系统结论:通过 DTMF 技术可以使计算机将控制命令从复杂的声音讯号中判别出来,从而使我们能够通过电话按键控制计算机的运作。DTMF 信号发生器将按键或数字信号转化成双音信号,DTMF 信号检测器检测双音信号中的信息。本系统的硬件设计方面,采用 TI 公司的 5000 系列 DSP 中的高性能廉价的TMS320

22、VC5402 为主控制器,为了能够使适应于本系统中的可编程功能,因而进行了Flash 程序存储器扩展。由于 DSP 属于高速的控制器,而外部的存储器属于低速的芯片,这使得直接从程序存储器执行程序速度很慢,所以在软件编程方面本设计所采用的是程序自载入的方法,即先将程序从外部存储器自载入到内部的 DARAM 的方法,这样就可以高速执行。软件设计方面,详细介绍了 DTMF 信号发生和检测的算法,Goertzel算法。这是一种适合于 CPU 实现的高效音频信号检测方法。Goertzel 算法是 DTMF 信号检测的核心,它利用二极点的 IIR 滤波器计算离散傅立叶变换值,快速有效的提取输入信号的频谱信

23、息。同时详细介绍了 TMS320VC5402 芯片的初始化过程,对芯片的信号发生检测的编程。而且,对于数模转换芯片 AD50 的初始化,以及编程都作了详细介绍。对于 FLASH 程序存储器的编写擦除过程都进行了介绍。EDA 课程设计论文 22参考文献1 戴明桢等. TMS320C54x DSP 的结构、原理及应用M. 北航出版社, 2001.11 2 汪春梅等. TMS320C5000 系列 DSP 系统设计与开发实例M. 电子工业出版社.2004.7 3 郑红等. TMS320C54x DSP 应用系统设计M. 北航出版社,2002. 5 4 AMD vector of INTtimer a

24、t VECTOR+OFF_INTIMERINIT_A .set 079bch ; A/2=0.9510498INIT_B .set 0c000h ; B/2=-0.5INIT_C .set 013c7h ; C/2=0.1545105.bss y0,1.bss y1,1.bss y2,1.bss temp,1.bss AA,1.bss BB,1.bss CC,1.text _c_int00:ld #0,dpssbx intm ; disable all interrupt !st #1fffh,spld #vector, a ; get vector table address !and #0

25、FF80h, aandm #007Fh, pmstor pmst, astlm a, pmst ; 设置 IPTRstm #10h,TCR ; init TIMERstm #2499,PRD ; f=100M/(2499+1)=40kHzstm #20h,TCR ; reset TIMERldm IMR,a ; read back IMREDA 课程设计论文 24or #08h,a ; enable TIMER interruptstlm a,IMR ; set IMRld #temp,dp ; set DP ssbx FRCT ; prepare for fraction mpyst #IN

26、IT_A,AA ; init AA,BB,CCst #INIT_B,BB ; st #INIT_C,CC ;pshd CCpopd y2 ; init y2,y2=CCld AA,T ; T=AAmpy y2,a ; y2*AA - asth a,y1 ; y2*AA - y1stm #0h,TCR ; enable TIMERnoprsbx intm ; enable all int !again:nopb again nopnopnopnopnopnop_tint:ld #BB,DPld BB,T ; T=BBmpy y2,a ; a=y2*BBltd y1 ; T=y1,y2=y1mac

27、 AA,a ; a=a+y1*AAsth a,1,y1 ; new cos data - y1sth a,1,y0 ; new cos data - y0nop ; set breakpoint in CCS !EDA 课程设计论文 25int1_end:noprete.end.mmregs; .ref _ret.ref _c_int00.ref _tint .global vector.sect “.int_table“vector:rs b _c_int00nopnopnmi b _retnopnopsint17 b _retnopnopsint18 b _retnopnopsint19

28、b _retnopnopsint20 b _ret.word 0,0sint21 b _ret.word 0,0sint22 .word 01000h.word 0,0,0sint23 .word 0ff80h.word 0,0,0EDA 课程设计论文 26sint24 .word 01000h.word 0,0,0sint25 .word 0ff80h.word 0,0,0sint26 .word 01000h.word 0,0,0sint27 .word 0ff80h.word 0,0,0sint28 .word 01000h.word 0,0,0sint29 .word 0ff80h.w

29、ord 0,0,0sint30 .word 01000h.word 0,0,0int0 b _retnopnopint1 b _retnopnopint2 b _retnopnoptint b _tintnopnopbrint0 b _retnopnopbxint0 b _retnopnoptrint b _retnopEDA 课程设计论文 27nopdmac1 b _retnopnopint3 b _retnopnophpint b _retnopnopq26 .word 0ff80h.word 0,0,0q27 .word 01000h.word 0,0,0dmac4 b _retnopn

30、opdmac5 b _retnopnopq30 .word 0ff80h.word 0,0,0q31 .word 01000h.word 0,0,0_ret reteEDA 课程设计论文 28附录 IIC 语言源代码:#include “stdio.h“#define IMR 0#define ST0 6#define ST1 7#define TIM 0x24#define PRD 0x25#define TCR 0x26#define PMST 29extern int counter = 25;extern int flagxf = 0;int con_buf=0;float buf12

31、8; /* save out wave buffer ! */float y0;float y1=0.30901699;float y2=0.58778525; /* y2= y1*A */const float aa=1.90211304;const float bb=-1.;main()const int flag = 1;int *dest;dest = (int *)IMR;*dest = 0;dest = (int *)PMST;*dest = 0x1020; /* interrupt vector at 0x1000 */dest = (int *)TCR;*dest = 0x00

32、10;dest = (int *)PRD;*dest = 2499;dest = (int *)IMR;EDA 课程设计论文 29*dest = 0x0008; /* enable timer0 TINT0 */ dest = (int *)TCR;*dest = 0x0030;*dest = 0x0000;asm (“ rsbx intm“);while ( flag )if ( flagxf = 0 )asm( “ RSBX XF“);asm( “ nop“ );asm( “ nop“ );asm( “ nop“ );else asm(“ SSBX XF“);asm( “ nop“ );a

33、sm( “ nop“ );asm( “ nop“ );void interrupt tint() y0 = aa*y1 + bb*y2;y2 = y1;y1 = y0; bufcon_buf=y0;con_buf+;if(con_buf = 128)con_buf=0; /* set breakpoint to show wave ! */EDA 课程设计论文 30附录 III连接定位 1:MEMORYPAGE 1:INT_D : ORIGIN=80h, LENGTH=1F80hPAGE 0:EXT_P : ORIGIN=2000h, LENGTH=2000hSECTIONS.text : E

34、XT_P PAGE 0.int_table : (EXT_P ALIGN (128) PAGE (0).data : INT_D PAGE 1连接定位 2:-l rts.libMEMORYPAGE 0:VEC: origin = 1000h, length = 0ffhPROG: origin = 1100h, length = 8000hPAGE 1:DATA: origin = 080h, length = 0807fhSECTIONS .text PROG PAGE 0.cinit PROG PAGE 0.switch PROG PAGE 0.int_table VEC PAGE 0 .data DATA PAGE 1.bss DATA PAGE 1.const DATA PAGE 1

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

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报