试比较几种正弦信号发生器的DSP 实现方法

合集下载

基于DSP的正弦信号发生器的设计

基于DSP的正弦信号发生器的设计

软件设计
正弦波子程序流程图 :
软件设计
调幅和调相流程图: 调幅和调相流程图:
汇报内容
• • • • • • 背景 正弦波信号发生器的几种实现方法比较 正弦波信号发生器的数字实现 硬件设计 软件设计 结论
结论
文中分析了正弦波的产生原理,并给出了硬 件电路和软件编写流程;设计了一个更好的 实现人机对话的正弦波信号发生器,给出了 显示和键盘的接口电路。该设计改进了传统 的需要用软件界面来输入幅值和频率值的方 法,更方便的实现调节输出波形的幅值和频 率值。
正弦波信号发生的数字实现 产生正弦波的方法有两种:
查表法。 优点:处理速度快;调频调相容易。 不足:要得到较高的精度,存储空间足够大以存放 查找表。 适用:对精度要求不高的场合。 泰勒级数展开法。 优点:需要的存储单元很少;精度高;展开的级数 越多,失真度就越小;调频调相易。 不足:处理速度慢。
正弦波信号发生的数字实现
硬件设计
DSP与LCD显示和键盘连接电路: DSP与LCD显示和键盘连接电路: 显示和键盘连接电路
硬件设计
键盘电路:
汇报内容
• • • • • • 背景 正弦波信号发生器的几种实现方法比较 正弦波信号发生器的数字实现 硬件设计 软件设计 结论
软件设计
主程序流程图: 主程序流程图:
设计采用采用模块化思路来编写,包括主程序、 设计采用采用模块化思路来编写,包括主程序、正 采用模块化思路来编写 弦波产生程序、调幅和调相子程序等功能子程序。 弦波产生程序、调幅和调相子程序等功能子程序。
性差,波形精度不够高且用较多硬件等。
正弦波信号发生器的几种实现方法比较
基于DSP的正弦波信号发生器:
组成:DSP处理芯片、 D/A转换器等。 优点:可程控调幅、调频,调节精度高,实

基于DSP设计正弦信号发生器

基于DSP设计正弦信号发生器

基于DSP设计正弦信号发生器一.设计目的设计一个基于DSP的正弦信号发生器二.设计内容利用基于CCS开发环境中的C54X汇编语言来实现正弦信号发生装置。

三.设计原理一般情况,产生正弦波的方法有两种:查表法和泰勒级数展开法。

查表法是使用比较普遍的方法,优点是处理速度快,调频调相容易,精度高,但需要的存储器容量很大。

泰勒级数展开法需要的存储单元少,具有稳定性好,算法简单,易于编程等优点,而且展开的级数越多,失真度就越小。

本文采用了泰勒级数展开法。

一个角度为θ的正弦和余弦函数,可以展开成泰勒级数,取其前5项进行近似得:式中:x为θ的弧度值,x=2πf/fs(fs是采样频率;f是所要发生的信号频率。

正弦波的波形可以看作由无数点组成,这些点与x轴的每一个角度值相对应,可以利用DSP处理器处理大量重复计算的优势来计算x轴每一点对应的y的值(在x轴取N个点进行逼近)。

整个系统软件由主程序和基于泰勒展开法的SIN子程序组成,相应的软件流程图如图。

三.总体方案设计本设计采用TMS320C54X系列的DSP作为正弦信号发生器的核心控制芯片。

通过计算一个角度的正弦值和余弦值程序可实现正弦波,其步骤如下:1.利用sinx和cosx子程序,计算0°~45°(间隔为0.5°)的正弦和余弦值2.利用sin(2x)=2sin(x)cos(x)公式,计算0°~90°的正弦值(间隔为1°)3.通过复制,获得0°~359°的正弦值4.将0°~359°的正弦值重复从PA口输出,便可得到正弦波四.软件操作DSP 集成开发环境 CCS是 Code Composer Studio 的缩写,即代码设计工作室。

它是 TI 公司推出的集成可视化 DSP 软件开发工具。

DSP CCS 内部集成了以下软件工具:◆ DSP 代码产生工具(包括 DSP 的 C 编译器、汇编优化器、汇编器和链接器)◆ CCS 集成开发环境(包括编辑、建立和调试 DSP 目标程序)◆ 实时基础软件 DSP/BIOS (必须具有硬件开发板)◆ RTDX、主机接口和 API(必须具有硬件开发板)在 CCS 下,用户可以对软件进行编辑、编译、调试、代码性能测试(profile)和项目管理等工作。

正弦波信号发生器的DSP设计

正弦波信号发生器的DSP设计

50 42的片内 R M 中存有 2 6字 的正 弦及余 弦数据表 , O 5 可 以通过程序直接调用该表中的数据 ,由 DA回放 出正弦波 。通 / 过 M TA A L B模拟仿真 自己生成的正 弦数据表 , 不但可 以解决频 率单一的问题 , 还可以增加精度 , 并改善系统的兼容性。 13 _泰勒级数展开法 任一角度的正 弦及余弦波都可以展开成泰勒级数 ,取前五 项 的近 似公 式 为 :
日z (= )
口 =一2c sc0: b= 1 o o
:七 Aic ; =so no

对应的是在单位圆上有复共轭极点的二阶振荡器 ,共扼极 点为 :l e , P, 其离散时域脉冲单位 冲击响应响应 : z =
h )A i ( 1∞0 u玎 ( =ቤተ መጻሕፍቲ ባይዱs [ + ) ] () n nn ・
 ̄ - O3

设定采样频率为  ̄ 4 k z即通过定时器中断, -0 H , 每隔 2 u 产 5s 生一个 y ) (, n则递归的差分方程系数为:
n= - o o 2c sco=
6:l; :snoo=sn2 2 i i



国 7

si n :
一 — — + — — 一 — — + ——
f f /T D + )P D 1 , c ( D R 1( R + ) =x
2 1
4 I
6 1
8 1
其中: 为角度值 ,O为其对应 的弧度值 。通 过变换 的 O t / 值, 且利用弧度与频率之间的关 系很容易实现变频处理 。 1 . 字正 弦 振荡 器 4数 数字正弦波振荡器的系统函数可表示为 :
1 正 弦波 信号 的 产 生 方式 1 采样回放法 . 1

DSP课程设计报告正弦波的实现

DSP课程设计报告正弦波的实现

太原理工大学DSP原理及应用课程设计报告专业班级:通信0802姓名:邢剑卿学号:20080013162010年12月30日一、设计目的学会用ccs 集成开发软件,在开发环境下完成工程项目创建,程序编辑,编译,链接,调试和数据分析。

二、设计内容编写程序,利用ccs 软件产生正弦波三、设计原理正弦波信号发生器已被广泛地应用于通信、仪器仪表和工业控制等领域的信号处理系统中。

通常有两种方法可以产生正弦波,分别为查表法和泰勒级数展开法。

查表法是通过查表的方式来实现正弦波,主要用于对精度要求不很高的场合。

泰勒级数展开法是根据泰勒展开式进行计算来实现正弦信号,它能精确地计算出一个角度的正弦和余弦值,且只需要较小的存储空间。

本次主要用泰勒级数展开法来实现正弦波信号。

产生正弦波的算法正弦函数和余弦函数可以展开成泰勒级数,其表达式:取泰勒级数的前5项,得近似计算式:递推公式:sin(nx ) = 2cos(x )sin[(n -1)x ]-sin[(n -2)x ]cos(nx ) = 2cos(x )sin[(n -1)x ]-cos[(n -2)x ]由递推公式可以看出,在计算正弦和余弦值时,需要已知cos(x )、sin(n -1)x 、sin(n -2)x 和cos(n -2)x 。

-+-+-=!9!7!5!3)sin(9753x x x x x x -+-+-=!8!6!4!21)cos(8642x x x x x ))))((((981761541321 !9!7!5!3)sin(22229753⨯-⨯-⨯-⨯-=+-+-=x x x x x x x x x x x )))(((87165143121 !8!6!4!21)cos(22228642⨯-⨯-⨯--=+-+-=x x x x x x x x x四、总体方案设计(1)建立工程:点击菜单project-new,在弹出的窗口中输入工程名,后缀是.pjt;(2)建立文件:点击菜单file-new-source file,建立汇编语言文件和链接命令文件;(3)将文件加入工程:点击菜单project-add files to project,选择要加入的文件添加到工程;(4)工程的汇编链接:点击菜单project-rebuild all,若汇编链接成功会生成.out文件;(5)装载可执行程序:点击菜单file-load program,装载.out文件;(6)执行程序:点击菜单debug-run;(7)观察结果。

DSP常见算法的实现

DSP常见算法的实现

DSP常见算法的实现3.6常见的算法实现在实际应用中虽然信号处理的方式多种多样,但其算法的基本要素却大多相同,在本节中介绍几种较为典型的算法实现,希望通过对这些例子(单精度,16bit)的分析,能够让大家熟悉DSP编程中的一些技巧,在以后的工作中可以借鉴,达到举一反三的效果。

1.函数的产生在高级语言的编程中,如果要使用诸如正弦、余弦、对数等数学函数,都可以直接调用运行库中的函数来实现,而在DSP编程中操作就不会这样简单了。

虽然TI公司提供的实时运行库中有一些数学函数,但它们所耗费的时间大多太长,而且对于大多数定点程序使用双精度浮点数的返回结果有点“大材小用”的感觉,因此需要编程人员根据自身的要求“定制”数学函数。

实现数学函数的方法主要有查表法、迭代法和级数逼近法等,它们各有特点,适合于不同的应用。

查表法是最直接的一种方法,程序员可以根据运算的需要预先计算好所有可能出现的函数值,将这些结果编排成数据表,在使用时只需要根据输入查出表中对应的函数值即可。

它的特点是速度快,但需要占用大量的存储空间,且灵活度低。

当然,可以对上述查表法作些变通,仅仅将一些关键的函数值放置在表中,对任意一个输入,可根据和它最接近的数据采用插值方法来求得。

这样占用的存储空间有所节约,但数值的准确度有所下降。

迭代法是一种非常有用的方法,在自适应信号处理中发挥着重要的作用。

作为函数产生的一种方法,它利用了自变量取值临近的函数值之间存在的关系,如时间序列分析中的AR、MA、ARMA等模型,刻画出了信号内部的特征。

因为它只需要存储信号模型的参量和相关的状态变量,所以所占用的存储空间相对较少,运算时间也较短。

但它存在一个致命的弱点,由于新的数值的产生利用了之前的函数值,所以它容易产生误差累积,适合精度要求不高的场合。

级数逼近法是用级数的方法在某一自变量取值范围内去逼近数学函数,而将自变量取值在此范围外的函数值利用一些数学关系,用该范围内的数值来表示。

正弦发生器的DSP实现

正弦发生器的DSP实现

正弦发生器的DSP实现摘要DSP芯片,也称数字信号处理器,是一种具有特殊结构的微处理器。

DSP芯片的内部采用程序和数据分开的哈佛结构,具有专门的硬件乘法器,广泛采用流水线操作,提供特殊的DSP指令,可以用来快速的实现各种数字信号处理算法电子技能、机械、电声、水声及生物等领域可能经常要用到正弦波,而一般它都由数字集成电路或分立元件构成的信号发生器产生,这里介绍一种用DSP实现的正弦信号发生器,其调幅、调频功能均由软件实现,而且有较好的可扩展性、稳定性,与计算机接口方便。

用DSP设计的正弦信号发生器电路基本,调节方便,误差在万分之一以内,产生的波形失真度较小,而且还有进一步拓展功能,如产生三角波信号、方波信号、直流信号、调制信号等,从而使其能运用到更加广泛的领域中。

关键字:DSP芯片,正弦信号发生器, TMS320C5402, 流程图一、DSP芯片DSP芯片,也称数字信号处理器,是一种具有特殊结构的微处理器。

DSP芯片的内部采用程序和数据分开的哈佛结构,具有专门的硬件乘法器,广泛采用流水线操作,提供特殊的DSP指令,可以用来快速的实现各种数字信号处理算法。

1.DSP芯片主要特点根据数字信号处理的要求,DSP芯片一般具有如下的一些主要特点:(1)在一个指令周期内可完成一次乘法和一次加法。

(2)程序和数据空间分开,可以同时访问指令和数据。

(3)片内具有快速RAM,通常可通过独立的数据总线在两块中同时访问。

(4)具有低开销或无开销循环及跳转的硬件支持。

(5)快速的中断处理和硬件I/O支持。

(6)具有在单周期内操作的多个硬件地址产生器。

(7)可以并行执行多个操作。

(8)支持流水线操作,使取指、译码和执行等操作可以重叠执行。

与通用微处理器相比,DSP芯片的其他通用功能相对较弱些。

2.DSP芯片的分类DSP芯片可以按照下列三种方式进行分类。

(1)按基础特性分这是根据DSP芯片的工作时钟和指令类型来分类的。

如果在某时钟频率范围内的任何时钟频率上,DSP芯片都能正常工作,除计算速度有变化外,没有性能的下降,这类DSP芯片一般称为静态DSP芯片。

DSP正弦波——查表法原理

DSP正弦波——查表法原理

正弦波的产生方法目前,正弦波的产生方法主要有两种:(1)查表法(2)利用数字振荡器产生正弦波1)查表法考虑一个模拟正弦波的表达式,并以固定的时间间隔对其进行采样,即,...)2,1,0,()2sin(][)2sin()(==+=+=n F F f fn n x Ft t x sθπθπ 其中,θ为初始相位;F 为模拟频率,即需要产生的频率;F s 为采样频率;s s F T 1=即为采样间隔。

因此,要想产生一个正弦波,需要在每一个采样间隔计算x[n]的值,并通过数模转换器(DAC ,Digital-to-Analog Convector )输出。

通过将x[n]的值以不同的幅度和不同的采样间隔输出,就可以得到任意幅度、任意频率的正弦波或余弦波。

根据上式,x[n]通过计算正弦函数而得。

基于此,可以构造一个查找表,表中所列为余弦函数的值。

考虑到不可能把正弦函数或余弦函数的所有值都放在查找表内,不妨将表的大小初设为517项。

又考虑到正弦函数和余弦函数之间只有一个90°的相移,可以将表的大小缩减为257项。

表中的第一个值对应于︒0,最后一个值对应于180°,或者说π。

这样,表中相邻两点之间的间隔为180/256=0.7031250°,即表格中的第1项是cos0°的值,第2项是cos0.7031250°的值,第3项是cos1.406250°的值,以此类推,最后一项是cos180°的值。

利用该表所能构成的波形的相位步进通常是0.7031250°的整数倍。

在采样过程中,上式中的n 值在每一个采样间隔递增,从而得到模拟正弦波的采样版本。

但是,如何通过查找余弦表的方法来产生一个任意频率F 的正弦波呢?由于在前面构造的余弦函数表中,已经包括了以0.7031250°为间隔的余弦函数值,现在的问题就变成了,当n 递增时,怎样估计出相位fn π2的值。

基于DSP的正弦信号发生器

基于DSP的正弦信号发生器

基于DSP的正弦信号发生器1.正弦信号在各种科学和工程领域中广泛应用,如通信系统、音频处理、医学诊断等。

因此,制作一个能够生成正弦信号的设备是非常必要的。

传统的方法是使用模拟电路,但这种方法需要用到很多电子元器件,难以控制和调整。

同时,传统的模拟电路还容易受到电磁干扰、温度等环境因素的影响,导致输出的信号失真。

因此,数字信号处理(DSP)技术逐渐成为生成正弦波信号的常见方法,能够实现高精度、低失真的输出。

2. 设计概述本文介绍一种基于DSP的正弦信号发生器的设计。

该设计采用TMS320C5505数字信号处理芯片和信号解调电路,通过软件和硬件设计,实现了一个高精度、低失真的正弦信号发生器。

2.1 硬件设计本设计采用了TMS320C5505数字信号处理器集成电路作为主控芯片。

该芯片具有低功耗、高性能、灵活性和易于开发等优点。

除此之外,还需要电源模块、时钟模块、信号解调模块等。

2.2 软件设计本设计采用了C语言进行程序设计。

使用Code Composer Studio作为开发环境,将程序编译后烧录到芯片中。

代码的主要实现过程为:1.生成一个只包含一周期正弦波形的信号2.将该信号送入DA(Digital to Analog)转换器,使其变为模拟信号3.经过信号解调器后输出到外部接口信号的生成采用的是Taylor级数展开,可以实现高精度的波形生成。

信号解调电路主要是由低通滤波器、防干扰电路和放大电路等模块组成。

3. 实验结果经过实验测试,本设计输出的正弦波信号的频率可以在0~10kHz范围内任意设定。

信号的失真率小于0.1%。

同时,本设计还支持正弦波的相位调节和幅度调节等功能。

通过外部的控制,可以实现信号的精准控制和调节。

4.本文介绍了一种基于DSP的正弦信号发生器的设计,通过使用数字信号处理技术,实现了高精度、低失真的正弦波信号的生成。

该设计具有灵活性和可扩展性,可以为各种科学和工程领域提供高精度的正弦信号源。

基于DSP的正弦波信号发生器(汇编语言)

基于DSP的正弦波信号发生器(汇编语言)

正弦波信号发生器一、实验目的1.了解用泰勒级数展开法计算角度正弦值和余弦值;2.了解产生正弦信号的方法;3.熟悉使用汇编语言编写较复杂的程序;4.熟悉在CCS 环境下计算角度正弦值和余弦值及产生正弦波的方法;二、实验原理泰勒级数展开法是根据泰勒展开式进行计算来实现正弦信号,它能精确地计算出一个角度的正弦和余弦值,且只需要较小的存储空间。

正弦函数和余弦函数可以展开成泰勒级数,其表达式:递推公式: sin()2cos()sin[(1)]sin[(2)]cos()2cos()sin[(1)]cos[(2)]nx x n x n x nx x n x n x =---=--- 由递推公式可以看出,在计算正弦和余弦值时,需要已知cos(x )、sin(n -1)x 、sin(n -2)x 和cos(n -2)x 。

用这种方法求少数点还可以,如产生连续正弦波、余弦波,则积累误差太大,不可取。

下面主要用泰勒级数展开法求正弦和余弦值,以及产生正弦波的方法。

三、实验内容与步骤1.用泰勒级数展开法计算sin(x)的值;(1)在 CCS 中新建项目:sinx.pjt ,建立文件sinx.asm 、vectors.asm 和sinx.cmd 。

并将此三个文件加入到项目中。

******************************************************* 用泰勒级数开展开式计算一个角度的正弦值 **sin(x)=x(1-x*x/2*3(1-x*x/4*5(1-x*x/6*7(1-x*x/8*9))))*******************************************************.title "sinx.asm".mmregs .def startSTACK: .usect "STACK",10start: STM #STACK+10,SPLD #d_x,DPST #6487H,d_x ;x-->d_x CALLsin_start end:B end sin_start:35792222sin()3!5!7!9! 111123456789(((())))x x x x x x x x x x x =-+-+=----⨯⨯⨯⨯24682222cos()12!4!6!8! 11112345678((()))x x x x x x x x x =-+-+=----⨯⨯⨯.def sin_startd_coeff .usect "coeff",4.datatable: .word 01C7H ;c1=1/(8*9).word 030BH ;c2=1/(6*7).word 0666H ;c3=1/(4*5).word 1556H ;c4=1/(2*3)d_x .usect "sin_vars",1d_squr_x .usect "sin_vars",1d_temp .usect "sin_vars",1d_sinx .usect "sin_vars",1c_1 .usect "sin_vars",1.textSSBX FRCTSTM #d_coeff,AR5RPT #3MVPD #table,*AR5+STM #d_coeff,AR3STM #d_x,AR2STM #c_1,AR4ST #7FFFH,c_1SQUR *AR2+,A ;A=x^2ST A,*AR2 ;(AR2)=x^2||LD *AR4,B ;B=1MASR *AR2+,*AR3+,B,A ;A=1-x^2/72,T=x^2MPYA A ;A=T*A=x^2(1-x^2/72)STH A,*AR2 ;(d_temp)=x^2(1-x^2/72)MASR *AR2-,*AR3+,B,A ;A=1-x^2/42(1-x^2/72),T=x^2(1-x^2/72)MPYA *AR2+ ;B=x^2(1-x^2/42(1-x^2/72))ST B,*AR2 ;(d_temp)=x^2(1-x^2/42(1-x^2/72))||LD *AR4,B ;B=1MASR *AR2-,*AR3+,B,A ;A=1-x^2/20(1-x^2/42(1-x^2/72))MPYA *AR2+ ;B=x^2(1-x^2/20(1-x^2/42(1-x^2/72)))ST B,*AR2 ;(d_temp)=B||LD *AR4,B ;B=1MASR *AR2-,*AR3+,B,A ;A=1-x^2/6(1-x^2/20(1-x^2/42(1-x^2/72)))MPYA d_x ;B=x(1-x^2/6(1-x^2/20(1-x^2/42(1-x^2/72))))STH B,d_sinx ;sin(theta)RET.end*******************************************************中断向量文件vectors.asm******************************************************.title "vectors.asm".ref start.sect ".vectors"B start.end*******************************************************链接命令文件******************************************************vectors.objsinx.obj-O sinx.out-m sinx.map-estartMEMORY{PAGE 0:EPROM: org=0090H,len=0F70HVECS: org=0080H,len=0010HPAGE 1:SPRAM: org=1000H,len=1000HDARAM: org=2000H,len=2000H}SECTIONS{.text :>EPROM PAGE 0.data :>EPROM PAGE 0STACK :>SPRAM PAGE 1sin_vars :>DARAM PAGE 1coeff :>DARAM PAGE 1.vectors :>VECS PAGE 0}(2)编译、链接项目文件sinx.pjt。

基于DSP的音频信号发生器的设计及实现

基于DSP的音频信号发生器的设计及实现

基于DSP的音频信号发生器的设计及实现摘要本课题介绍了基于DSP芯片TMS320C5402实现正弦信号发生器的设计原理和实现方法。

使用TMS320C5402作为数据处理器,AT89C51作为控制器引导并控制DSP芯片。

采用直接数字合成(DDS)技术,在DSP上建立一个信号发生器,可产生指定频率(音频范围)的正弦波、方波等信号。

该信号发生器所产生的正弦波波形清晰、稳定性好,调频、调幅功能均由软件实现。

本设计主要实现正弦音频信号发生器,该系统由DDS模块、单片机控制模块、语音提示、输出运算放大模块、D/A转换模块、幅度控制模块组成。

这里介绍一种采用DSP实现的正弦信号发生器,其调幅、调频功能均由软件实现,而且有较好的可扩展性、稳定性,与计算机接口方便。

关键词:音频信号发生器,正弦波,DSP ,DDSAUDIO SIGNAL GENERATOR BASED ON TMS320C5402 DESIGN AND LMPLEMENTATIONABSTRACTThis design uses TMS320C5402 of DSP chip as a data processor,STC89C51 as a controller to guide and control the DSP chip. use TMS320C5402 as a data processor, STC89C51 as a controller to guide and control the DSP chip. Synthesis of direct sequence (DDS) technology, DSP, a signal generator, can generate the specified frequency (audio range) of the sine wave, square wave signal. Synthesis of direct sequence (DDS) technology, DSP, a signal generator, can generate the specified frequency (audio range) of the sine wave, square wave signal. The design of the main sine wave audio signal generator, the system by the DDS module, microprocessor control module, voice prompt, the output operational amplifier module, D/A converter module, rate control module.High-speed direct-sequence synthesis (DDS) technique, D/A and other technology, can generate any frequency sinusoidal signal and a variety of analog and digital modulation signal. Wide frequency range of the system, step small, magnitude and frequency with high accuracy.KEY WORDS:Signal generator,Sine tonic train signal, DSP ,DDS目录前言 (1)第1章系统描述 (3)§1.1 系统方案选择 (3)§1.2 本系统的方案 (3)§1.2.1 方案系统框图 (3)§1.2.2 DSK5402开发板硬件结构 (4)§1.2.3 DSK5402系统概述 (6)第2章音频信号发生器的硬件描述 (7)§2.1 DSP芯片 (7)§2.1.1 DSP芯片特点 (7)§2.1.2 C54x的引脚功能 (8)§2.2 串行口MCBSP (12)§2.3 主机接口 (13)第3章音频信号发生器的外设 (16)§3.1 89C51芯片的描述 (16)§3.1.1 89C51的主要性能高如下 (16)§3.1.2 89C51的引脚及说明 (17)§3.2 串口描述 (19)§3.2.1 RS232接口电路 (19)§3.2.2 RS232通信原理 (21)§3.3 声卡 (21)第4章音频信号发生器设计的算法 (24)§4.1 DDS算法简介 (24)§4.2 步长计算查表 (25)§4.3 DDS的特点 (25)第5章系统软件设计 (27)§5.1 DSP程序设计 (27)§5.2 单片机程序设计 (27)第6章系统调试及测试 (29)§6.1 DSP程序编写 (29)§6.2 把DSP程序转化成单片机程序 (35)§6.3 程序调试 (36)§6.3.1 调试流程 (36)§6.3.2 系统的调试 (37)结论 (39)参考文献 (40)致谢 (42)外文资料翻译 (43)前言随着21世纪的到来,人类跨入了信息网络时代。

基于DSP的正弦信号发生器设计(参考)

基于DSP的正弦信号发生器设计(参考)

正弦信号发生器是信号中最常见的一种,它能输出一个幅度可调、频率可调的正弦信号,在这些信号发生器中,又以低频正弦信号发生器最为常用,在科学研究及生产实践中均有着广泛应用。

引言引言正弦信号发生器是信号中最常见的一种,它能输出一个幅度可调、频率可调的正弦信号,在这些信号发生器中,又以低频正弦信号发生器最为常用,在科学研究及生产实践中均有着广泛应用。

广泛应用。

目前,常用的信号发生器绝大部分是由模拟电路构成的,当这种模拟信号发生器用于低频信号输出往往需要的RC 值很大,这样不但参数准确度难以保证,而且体积大和功耗都很大,而由数字电路构成的低频信号发生器,虽然其低频性能好但体积较大,大,而由数字电路构成的低频信号发生器,虽然其低频性能好但体积较大,价格较贵,价格较贵,价格较贵,而本而本文借助DSP 运算速度高,系统集成度强的优势设计的这种信号发生器,比以前的数字式信号发生器具有速度更快,且实现更加简便。

号发生器具有速度更快,且实现更加简便。

系统原理系统原理一般的采样型SPWM 法分自然采样法和规则采样法,自然采样法是将基准正弦波与一个载波三角波相比较,由两者的交点决定开关模式的方法。

由于自然采样法得到的数学模型需要解超越方程,因而并不适合微控制器进行实时控制,又因为实践检验对称波形比非对称波形在三相电的相电流中引起的谐波失真小,所以我们使用对称规则采样法作为本系统的数学模型。

学模型。

这里说明一下使用TI 公司的DSP 芯片TMS320LF2407(以下简称2407)来产生PWM 信号的原理:由于产生一个PWM 信号需要有一个适合的定时器来重复产生一个与PWM 周期相同的计数周期,并用一个比较寄存器来保持调制值,并用一个比较寄存器来保持调制值,因此,因此,比较寄存器的值应不断与定时寄存器的值相比较,这样,当两个值相匹配时,时寄存器的值相比较,这样,当两个值相匹配时,就会在响应的输出上产生一个转换(从低就会在响应的输出上产生一个转换(从低到高或从高到低),从而产生输出脉冲,输出的开启,从而产生输出脉冲,输出的开启(或关闭)(或关闭)(或关闭)时间与被调制的数值成正比,时间与被调制的数值成正比,因此,改变调制数值,相关引脚上输出的脉冲信号的宽度也将随之改变。

DSP正弦波——查表法原理

DSP正弦波——查表法原理

正弦波的产生方法目前,正弦波的产生方法主要有两种:(1)查表法(2)利用数字振荡器产生正弦波1)查表法考虑一个模拟正弦波的表达式,并以固定的时间间隔对其进行采样,即,...)2,1,0,()2sin(][)2sin()(==+=+=n F F f fn n x Ft t x sθπθπ 其中,θ为初始相位;F 为模拟频率,即需要产生的频率;F s 为采样频率;s s F T 1=即为采样间隔。

因此,要想产生一个正弦波,需要在每一个采样间隔计算x[n]的值,并通过数模转换器(DAC ,Digital-to-Analog Convector )输出。

通过将x[n]的值以不同的幅度和不同的采样间隔输出,就可以得到任意幅度、任意频率的正弦波或余弦波。

根据上式,x[n]通过计算正弦函数而得。

基于此,可以构造一个查找表,表中所列为余弦函数的值。

考虑到不可能把正弦函数或余弦函数的所有值都放在查找表内,不妨将表的大小初设为517项。

又考虑到正弦函数和余弦函数之间只有一个90°的相移,可以将表的大小缩减为257项。

表中的第一个值对应于︒0,最后一个值对应于180°,或者说π。

这样,表中相邻两点之间的间隔为180/256=0.7031250°,即表格中的第1项是cos0°的值,第2项是cos0.7031250°的值,第3项是cos1.406250°的值,以此类推,最后一项是cos180°的值。

利用该表所能构成的波形的相位步进通常是0.7031250°的整数倍。

在采样过程中,上式中的n 值在每一个采样间隔递增,从而得到模拟正弦波的采样版本。

但是,如何通过查找余弦表的方法来产生一个任意频率F 的正弦波呢?由于在前面构造的余弦函数表中,已经包括了以0.7031250°为间隔的余弦函数值,现在的问题就变成了,当n 递增时,怎样估计出相位fn π2的值。

试比较几种正弦信号发生器的DSP 实现方法

试比较几种正弦信号发生器的DSP 实现方法

试比较几种正弦信号发生器的DSP实现方法技术指标及功能:用CCS仿真,观察并记录几种实现方法产生的波形情况,还有它们展开一个周期样值所用的时钟数,然后用具体的实际数据比较几种基于DSP的正弦信号发生器的实现方法的特点及优劣。

设计目的及要求:正弦信号发生器是信号中最常见的一种,它能输出一个幅度可调、频率可调的正弦信号,在科学研究及生产实践中均有着广泛应用。

目前,常用的信号发生器绝大部分是由模拟电路构成的,当这种模拟信号发生器用于低频信号输出往往需要的RC值很大,这样不但参数准确度难以保证而且体积大和功耗都很大,而借助DSP运算速度高,系统集成度强的优势设计的信号发生器速度更快,且实现更加简便,稳定性高。

本次设计的目的就在于寻求一种基于DSP的正弦信号发生器的实现方法,要求分析出几种实现方法的优劣,以供不同场合要求下的应用。

基本原理及基本程序设计:本次设计主要分析三种用DSP 产生正弦信号的方法:查表法,迭代法和级数逼近法。

(1)查表法查表法是最直接的一种方法,其原理是根据运算的需要预先计算好所有可能出现的正弦函数值,将这些结果编排成数据表,在使用时只要根据输入查出表中对应的函数值即可。

预先计算正弦函数值可用C语言程序实现,也可用MATLAB语言产生,产生的数据文件保存为sinwave.dat文件,其四分之一余的数据为0x0000 0x0C8B 0x18F8 0x2528 0x30FC 0x3C560x471D 0x5134 0x5A82 0x62F2 0x6A6D 0x70E30x7641 0x7A7C 0x7D89 0x7F62 0x7FFF 0x7F630x7D8A 0x7A7C 0x763E 0x70E1 0x6A6C 0x62EF…… … …运行仿真后在DA输出端用示波器观测到正弦波,如下图(1)所示:直接法的特点是速度快,但需要占用大量的存储空间,且灵活度低。

(2)级数逼近法正弦函数和余弦函数的台劳级数展开如下式(1)和(2)所示。

DSP课程设计--正弦信号发生器的设计

DSP课程设计--正弦信号发生器的设计

DSP课程设计–正弦信号发生器的设计简介正弦信号发生器是一种常见的电子信号发生器。

在数字信号处理中,正弦信号是非常重要的一种基础信号。

在本次课程设计中,我们将使用MATLAB软件设计一个正弦信号发生器。

设计步骤步骤一:信号采样我们的信号采样频率为fs,即每秒采样多少个点。

首先我们需要设置采样频率。

信号采样频率的选取需要满足采样定理,保证采样信号能够完全还原原信号。

我们使用MATLAB的“fs”命令设置采样频率。

假设我们的采样频率为10KHz,代码为:fs = 10000; % 设置采样频率为10KHz步骤二:生成时域正弦信号根据正弦波方程,我们可以生成时域上的正弦信号:f0 = 1000; % 正弦信号的频率为1kHzA = 1; % 正弦信号的幅度为1Vt = 0:1/fs:1; % 假设信号长度为1秒y = A * sin(2 * pi * f0 * t);代码中,我们生成了一个正弦信号,频率为1kHz,幅度为1V,信号长度为1秒,并将其存放在y变量中。

步骤三:对信号进行FFT变换为了验证我们生成的信号是否正确,我们需要对信号进行FFT变换。

FFT变换可以将一个时域信号转化为频域信号。

我们使用MATLAB的“fft”命令对信号进行FFT变换。

代码如下:Y = fft(y); % 对信号y进行FFT变换,得到频域信号YL = length(y); % 计算信号的长度P2 = abs(Y/L); % 取FFT变换结果的绝对值,然后除以长度LP1 = P2(1:L/2+1);P1(2:end-1) = 2*P1(2:end-1);f = fs*(0:(L/2))/L; % 生成频率坐标轴代码中,我们使用FFT变换对信号y进行变换,并将结果存放在Y变量中。

然后我们根据FFT变换结果,得到频率分量以及对应的幅度分量。

步骤四:绘制频域正弦信号最后,我们使用MATLAB的plot函数绘制频域信号采样结果图。

DSP原理及应用实验六:泰勒级数展开法设计正弦信号发生器

DSP原理及应用实验六:泰勒级数展开法设计正弦信号发生器
实验六: 泰勒级数展开法设计正弦信号发生器
• 实验要求: 用软件仿真的方法编译并调试课件 所提供的实验参考程序,在图形窗 口利用动画执行的方式观察输出的 波形结果。
主程序文件shiyan6.asm
注意:
中断向量表文件vectors.asm 链接命令文件shiyan6.cmd 两个文件同学们不用自己新建, 将由课件文件夹直接提供。
• 续前页:
3、打开CCS的图形显示窗口,修改如 下参数: start address=0x1010 Page=Data Acquisition Buffer Size=1 Display Data Size=1000 DSP Data Type=16-bit signed integer
修改后的界面如下图所示:
• 实验步骤:
1、本实验程序编写、文件添加、 编译、链接、装载可执行文件的 过程与前面实验相同。 2、在语句“MVDK *AR6,@dis_buff” 处加上一个断点。作用:这里定 义了一个显示缓冲区dis_buf,将 要输出到DA的数据送到显示缓冲 区当中去,以便在CCS图形显示的 时候可以从图形显示中得到数据。
Байду номын сангаас
4、点击CCS的Debug/Animate运行此程序,
就可以在CCS的图形观察窗口看到正弦波的 显示。 注:Animate 运行方式是在 遇见断点后继 续执行的一种 方式,在显示 图形上面特别 方便。
• 实验思考(最后五次实验统一完成 上交) • 1、本程序的编程方法和思路同于教材
参考程序,请大家对每条指令都认真 揣摩,画出程序的流程图并思考可否 用其他方法实现。 2、利用Matlab软件计算一个周期360点 的正弦波数据,利用查表的方法实现 正弦波的产生。 3、试用C语言完成本次实验。

实验五数字正弦振荡器的DSP实现

实验五数字正弦振荡器的DSP实现

OFF_INTIMER
.set 04Ch
; vector of INTtimer at VECTOR+OFF_INTIMER
INIT_A
.set
079bch
; A/2=0.9510498
INIT_B
.set
0c000h
; B/2=-0.5
- 28 -
INIT_C
.set
013c7h
; C/2=0.1545105
∑ H(Z)=
1 2j
⎡ ⎢⎣
∞ k =0
(e
jkω

e

jkω
)
z

k
⎤ ⎥⎦
∑ = 1

[(e jω z −1 ) k − (e− jω z −1 ) k ]
2 j k=0
=
1 2j
⎜⎛ ⎝
z
z −e


z z − e− jω
⎟⎞ ⎠
=
1 2j
⎡ ⎢ ⎣
z2 z2
− ze− jω − z 2 − z(e− jω + e
3、C54X 定时器的操作
在数字振荡器的设计中,既有设计者期望的振荡频率 fd ,也有数字化的采样频率 fs 。
用(1)式产生的正弦序列的频率是一个相对值。只有给定采样频率,也就是确定采样点之
- 24 -
间的时间间隔后,才能最终决定模拟频率 fd 。在本实验中,采样点的输出时间间隔由 DSP
处理器的定时器决定,而定时器的初值 N 则由下式决定
当 DSP 响应中断时,PC 指针指向中断向量表中对应中断的地址,进入中断服务子程序。
中断向量表是 C54X 存放中断服务程序的一段内存区域,大小为 80H。在中断向量表中,每

DSP课设——正弦波发生器

DSP课设——正弦波发生器

摘要数字信号处理(Digital Signal Processing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。

20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。

数字信号处理是一种通过使用数学技巧执行转换或提取信息,来处理现实信号的方法,这些信号由数字序列表示。

数字信号处理器(DSP)是在模拟信号变成数字信号以后进行高速实时处理的专用处理器。

DSP 芯片以其独特的结构和快速实现各种数字信号处理算法的突出优点,发展十分迅速。

本文中提出的基于DSP技术设计的正弦波信号发生器已被广泛地应用于通信、仪器仪表和工业控制等领域的信号处理系统中。

在本文中简要的概括了一种基于TMS320C5402实现正弦信号发生器的设计原理与方法,介绍了所设计的正弦信号发生器硬件电路结构和软件程序流程图。

结合DSP硬件特性,通过使用泰勒级数展开法得到设定参数的正弦波形输出,达到设计目的。

该信号发生器弥补了通常信号发生器模式固定,波形不可编程的缺点,其具有实时性强,波形精度高,可方便调节频率和幅度、稳定性好等优点。

关键字:DSP;TMS320C5402;信号发生器;正弦信号;目录1 设计目的及要求 (1)1.1 设计目的 (1)1.2 设计内容及要求 (1)2设计方案及原理 (2)2.1总体方案 (2)2.2设计原理 (2)3系统硬件设计 (3)3.1系统硬件框图 (3)3.2 TMS320C5402简介 (4)3.3 D/A转换部分设计 (5)4系统软件设计及调试 (6)4.1变频调幅的方法 (6)4.2程序设计 (6)4.3程序编写 (8)4.4 CCS简介 (14)4.5运行步骤及结果 (15)5 设计心得 (19)参考文献 (20)附录设计程序 (21)1 设计目的及要求1.1 设计目的DSP课程设计是对《数字信号处理》、《DSP原理及应用》等课程的较全面练习和训练,是实践教学中的一个重要环节。

正弦信号发生器的DSP实现方法及比较

正弦信号发生器的DSP实现方法及比较

正弦信号发生器的DSP实现方法及比较
俞兴明
【期刊名称】《福建电脑》
【年(卷),期】2009(025)009
【摘要】本文介绍了几种基于数字信号处理器(DSP)的正弦渡产生法,给出了这些产生正弦信号的算法和主要源程序代码或流程.同时给出了TMS320VC5402 DSP 与DA转换器TLC320ADC50的接口电路.经过程序的实际运行,得出了软件仿真和硬件仿真所得的正弦波形.最后,分析了各种方法的优缺点,讨论了调整输出信号频率的方法.
【总页数】2页(P11-12)
【作者】俞兴明
【作者单位】苏州职业大学
【正文语种】中文
【中图分类】TP276
【相关文献】
1.基于泰勒级数展开法的DSP正弦信号发生器设计 [J], 姜志鹏;程嫚嫚
2.基于DSP的正弦信号发生器设计 [J], 李奇英;彭森
3.基于DSP Builder的高精度正弦信号发生器的设计 [J], 闫璞
4.基于LPM_ROM的正弦信号发生器电路实现方法 [J], 杨守良
5.基于泰勒级数展开法的DSP正弦信号发生器设计 [J], 姜志鹏;程嫚嫚
因版权原因,仅展示原文概要,查看原文内容请购买。

正弦波的dsp实现

正弦波的dsp实现

正弦波的dsp实现1.计算一个角度x的正弦值,可利用泰勒级数的展开式,采用子程序的调用方式来实现。

在调用前先在数据存储器d_xs单元中存放x的弧度值,计算结果存放在d_sinx单元中。

程序中要用到一些存储单元存放数据和变量,存储单元的分配如下:d_xs:x;d_squr_xs:x2d_temp_s:暂存;d_sinx:计算结果sinxc_1_s:7FFFh (数值1);d_coef_s :泰勒系数2 正弦波信号发生器设计正弦波信号发生器已被广泛地应用于通信、仪器仪表和工业控制等领域的信号处理系统中。

用DSP实现正弦波信号发生器通常有三种方法:(1) 查表法将某个频率的正弦/余弦值计算出来后制成一个表,通过查表的方式来实现正弦波,主要用于对精度要求不很高的场合。

(2) 泰勒级数展开法根据泰勒展开式进行计算来实现正弦信号,它能精确地计算出一个角度的正弦和余弦值,且只需要较小的存储空间。

(3) 迭代法利用数字震荡器通过迭代方法产生正弦信号。

2.1 产生正弦波的算法正弦函数和余弦函数可以展开成泰勒级数,其表达式:取泰勒级数的前5项,得近似计算式:由上可推导出递推公式:sin(nx) = 2cos(x)sin[(n-1)x]-sin[(n-2)x]cos(nx) = 2cos(x)sin[(n-1)x]-cos[(n-2)x]由递推公式可以看出,在计算正弦和余弦值时,需要已知cos(x)、sin(n-1)x、sin(n-2)x和cos(n-2)x。

TMS320C5409芯片C5490内部具有16K×16bit的ROM和32K×16bit的RAM。

芯片内部RAM和ROM可根据PMST寄存器中的OVL Y、DROM位灵活设置。

数据区,00H~5FH为存储器映射寄存器,60H~70H为双寻址RAM(DARAM),80H~1FFFH为DARAM,2000H~7FFFH为单寻址RAM(SARAM)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

*out = (int)(x[i]*16300.0); WRITEAD50(); /* sinwave output*/ } } } 该程序运行时DA输出波形与图(1)相同。 在上面程序中,f可取3600Hz,fs可取16000Hz。 迭代法只需要存储信号系统模型的参量和相关的状态变量,优点是 占用的存储空间相对较少,运算时间短。但它存在一个致命的弱点:由 于新的数值产生利用了之前的函数值,所以它容易产生误差积累,故迭 代法只用于精度要求不高的场合。如图3为用迭代法产生的正弦波仿真 波形。此波形数据经DA转换后用示波器测得的正弦信号还相当不错, 在视觉上看不出正弦波失真。
硬件设计:
本次设计的几种正弦信号发生器的硬件结构均相同, 主要由DSP 和DA转换器组成。DSP 用常用的TMS320VC5402,DA TLC320AD50C。图1 是DSP 和DA 转换器的接口电路图。TLC320AD50C 为16 位串行接口AD
和DA 转换器,其功能由内部4 个控制寄存器设置;DSP 通过多通道缓 冲串行口McBSP 与TLC320AD50C 接口, 所以要使TLC320AD50C 与DSP 通信,必须设置好DSP 中关于McBSP 的有关寄存器和DA 中的控制寄存 器。
设计总结:
本次实验的三种正弦信号产生方法中, 经计算机软件仿真和硬件 运行测量, 得出用台劳级数逼近法和查表法所得的正弦波均十分完 美。而用迭代法产生的正弦波仿真波形失真较大,但均DA转换和低通滤 波后,用示波器测得的正弦信号还比较理想。 另一方面,经在CCS软件平台上测得,用汇编语言编程计算台劳技 术展开法计算一个周期样值所化的时钟数约69773个,用C语言计算台劳 级数的方法所用时钟约774310个,用迭代法所用时钟为362494个,用查 表法为83857个,可见查表法速度最快,迭代法次之,C语言计算台劳级 数最慢。 对于输出正弦波的频率,通过改变一个周期内的样值个数或改变DA 转换器的采样频率即可实现,前者改变的范围可更大。用DSP和DA结合 的正弦信号发生器比传统的模拟电路发生器相比, 性能更稳定, 参数 改变方便,广泛应用于数字信号处理系统中。
直接法的特点是速度快,但需要占用大量的存储空间,且灵活度 低。 (2) 级数逼近法 正弦函数和余弦函数的台劳级数展开如下式(1)和(2)所示。在实际 编程时, 用汇编语言分别编写计算sinx和cosx的子程序,然后再编写 计算sin(2x)=2 *sinx*cosx的主程序。根据正弦信号在[0°,90°]与 [90°,180°]区间数值对称,[0°,180°]和[180°,360°]数值 对称的关系,复制出[0°,360°]一个周期的正弦值,最后通过DA不 断输出来达到产生正弦波的目的。正弦函数的台劳级数展开如下式所 示。 sinx=x- x33!+ x55!- x77!+ x99!=x(1- x22*3(1- x24*5(1- x26*7(1- x28*9)))) (1) cosx=1- x22!+ x44!- x66!+ x88!=1- x22(1- x23*4(1- x25*6(1- x27*8))) (2) 台劳级数展开法用C语言编程比较方便, 其主要程序段如下: for (i=0; i<=N; i++) {//计算一个周期内的N个样值 x=i*r-pi; xx = x*x; x0 = 1-xx/(8*9); x1 = 1-x0*xx/(6*7);来自基本原理及基本程序设计:
本次设计主要分析三种用DSP 产生正弦信号的方法:查表法,迭代 法和级数逼近法。 (1) 查表法 查表法是最直接的一种方法, 其原理是根据运算的需要预先计算 好所有可能出现的正弦函数值, 将这些结果编排成数据表,在使用时 只要根据输入查出表中对应的函数值即可。预先计算正弦函数值可用C 语言程序实现,也可用MATLAB语言产生,产生的数据文件保存为 sinwave.dat文件,其四分之一余的数据为 0x0000 0x0C8B 0x18F8 0x2528 0x30FC 0x3C56 0x471D 0x5134 0x5A82 0x62F2 0x6A6D 0x70E3 0x7641 0x7A7C 0x7D89 0x7F62 0x7FFF 0x7F63 0x7D8A 0x7A7C 0x763E 0x70E1 0x6A6C 0x62EF … … … … 运行仿真后在DA输出端用示波器观测到正弦波,如下图(1)所示:
试比较几种正弦信号发生器的DSP实现方法
技术指标及功能:
用CCS仿真,观察并记录几种实现方法产生的波形情况,还有它们 展开一个周期样值所用的时钟数,然后用具体的实际数据比较几种基于 DSP的正弦信号发生器的实现方法的特点及优劣。
设计目的及要求:
正弦信号发生器是信号中最常见的一种,它能输出一个幅度可调、 频率可调的正弦信号,在科学研究及生产实践中均有着广泛应用。 目前,常用的信号发生器绝大部分是由模拟电路构成的,当这种模 拟信号发生器用于低频信号输出往往需要的RC值很大,这样不但参数准 确度难以保证而且体积大和功耗都很大,而借助DSP运算速度高,系统 集成度强的优势设计的信号发生器速度更快,且实现更加简便,稳定性 高。 本次设计的目的就在于寻求一种基于DSP的正弦信号发生器的实现 方法,要求分析出几种实现方法的优劣,以供不同场合要求下的应用。
x2 = 1-x1*xx/(4*5); x3 = 1-x2*xx/(2*3); y[i] = x*x3; } for (;;) {//主循环 for (i=0; i<=N-1; i++) { *py = (int)(y[i]*32000); WRITEAD50(); } } 该程序运行时DA输出波形与图(1)相同。 级数逼近法的最大优点是灵活度高,且不存在误差积累,数值精度 由程序员完全控制。一个周期内计算的样值越多越精确。 (3) 迭代法 迭代法的关键是函数值之间的递推关系,也就是系统的差分方程或 系统函数模型。如果一个离散时间系统其系统函数H(z)没有零点,只有 一对处在单位圆上的共扼极点,则其单位冲激响应为恒幅度振荡,即产 生了正弦信号。 H(z)=b01+a1z-1+a2z-2 (3) 式中:b0=AsinωTs,a1=-2cosωTs,a2=1,ω为正弦信号频率,Ts为 采样间隔, 其倒数fs=1/Ts为采样频率。经反变换后得: y(n)=2cosωT*y(n-1)-y(n-2) (4) 令y(-1)=0,y(-2)=-AsinωTs,逐一迭代就能够获得采样间隔为Ts的 正弦序列。其C语言主程序中的主要部分如下: for (i=0; i<N; i++) { x[-1]=0; x[-2]=-2*sin(2*pi*f/fs); x[i]=2*cos(2*pi*f/fs)*x[i-1]-x[i-2]; } for (;;) { for (i=0; i<N; i++) {
相关文档
最新文档