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

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

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
=
:
5
国 7
9
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原理及应用课程设计报告专业班级:通信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常见算法的实现3.6常见的算法实现在实际应用中虽然信号处理的方式多种多样,但其算法的基本要素却大多相同,在本节中介绍几种较为典型的算法实现,希望通过对这些例子(单精度,16bit)的分析,能够让大家熟悉DSP编程中的一些技巧,在以后的工作中可以借鉴,达到举一反三的效果。
1.函数的产生在高级语言的编程中,如果要使用诸如正弦、余弦、对数等数学函数,都可以直接调用运行库中的函数来实现,而在DSP编程中操作就不会这样简单了。
虽然TI公司提供的实时运行库中有一些数学函数,但它们所耗费的时间大多太长,而且对于大多数定点程序使用双精度浮点数的返回结果有点“大材小用”的感觉,因此需要编程人员根据自身的要求“定制”数学函数。
实现数学函数的方法主要有查表法、迭代法和级数逼近法等,它们各有特点,适合于不同的应用。
查表法是最直接的一种方法,程序员可以根据运算的需要预先计算好所有可能出现的函数值,将这些结果编排成数据表,在使用时只需要根据输入查出表中对应的函数值即可。
它的特点是速度快,但需要占用大量的存储空间,且灵活度低。
当然,可以对上述查表法作些变通,仅仅将一些关键的函数值放置在表中,对任意一个输入,可根据和它最接近的数据采用插值方法来求得。
这样占用的存储空间有所节约,但数值的准确度有所下降。
迭代法是一种非常有用的方法,在自适应信号处理中发挥着重要的作用。
作为函数产生的一种方法,它利用了自变量取值临近的函数值之间存在的关系,如时间序列分析中的AR、MA、ARMA等模型,刻画出了信号内部的特征。
因为它只需要存储信号模型的参量和相关的状态变量,所以所占用的存储空间相对较少,运算时间也较短。
但它存在一个致命的弱点,由于新的数值的产生利用了之前的函数值,所以它容易产生误差累积,适合精度要求不高的场合。
级数逼近法是用级数的方法在某一自变量取值范围内去逼近数学函数,而将自变量取值在此范围外的函数值利用一些数学关系,用该范围内的数值来表示。
正弦发生器的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正弦波——查表法原理

正弦波的产生方法目前,正弦波的产生方法主要有两种:(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的正弦信号发生器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的正弦信号发生器的设计,通过使用数字信号处理技术,实现了高精度、低失真的正弦波信号的生成。
该设计具有灵活性和可扩展性,可以为各种科学和工程领域提供高精度的正弦信号源。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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++) {