正弦信号dsp(共6篇)
正弦信号dsp 篇1
基于DSP的正弦信号发生器的设计
1、绪论 1.1 课题背景
数字信号处理(Digital Signal Processing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。数字信号处理是一种通过使用数学技巧执行转换或提取信息,来处理现实信号的方法,这些信号由数字序列表示。在过去的二十多年时间里,信号处理已经在通信等领域得到了极为广泛的应用。
长期以来,信号处理技术—直用于转换或产生模拟或数字信号。其中应用的最频繁的领域就是信号的滤波。此外,从数字通信、语音、音频和生物医学信号处理到检测仪器仪表和机器人技术等许多领域中,都广泛地应用了数字信号处理技术。数字信号处理己经发展成为一项成熟的技术,并且在许多应用领域逐步代替了传统的模拟信号处理系统。而本文中基于DSP技术设计的正弦波信号发生器已被广泛地应用于通信、仪器仪表和工业控制等领域的信号处理系统中。1.2 课题内容
利用基于CCS开发环境中的C54x汇编语言来实现正弦信号发生装置。
2、设计原理
一般情况,产生正弦波的方法有两种:查表法和泰勒级数展开法。查表法是使用比较普遍的方法,优点是处理速度快,调频调相容易,精度高,但需要的存储器容量很大。泰勒级数展开法需要的存储单元少,具有稳定性好,算法简单,易于编程等优点,而且展开的级数越多,失真度就越小。
本文采用了泰勒级数展开法。一个角度为θ的正弦和余弦函数,可以展开成泰勒级数,取其前5项进行近似得:
x3x5x7x9sin(x)x3!5!7!9!x2x2x2x2 x(1(1(1(1))))23456789x2x4x6x8cos(x)12!4!6!8!x2x2x2x2 1(1(1(1)))2345678式中:x为θ的弧度值,x2f/fs(fs是采样频率;f是所要发生的信号频率)
3、设计方案
本设计采用TMS320C54X系列的DSP作为正弦信号发生器的核心控制芯片。
通过计算一个角度的正弦值和余弦值程序可实现正弦波,其步骤如下:
开 始初始化设置调用sin和cos程序计算0~45°的值Sin2α=2sinα*cosα求0~90°的sin值(间隔为1°)1.利用sinx和cosx子程序,计算0—45°(间 隔为0.5°)的正弦和余弦值
2.利用sin(2x)=2sin(x)cos(x)公式,计算0—90°的正弦值(间隔为1°)3.通过复制,获得0—359°的正弦值 4.将0—359°的正弦值重复从PA口输出,遍可得到正弦波
整个系统相应的软件流程图如右图所示。
图1 程序流程图
结 束正弦波重复向PA口输出重复得到0~359°正弦值
4、程序设计
4.1 产生正弦波程序清单sin.asm.title “sin.asm” //为汇编文件取名为“sin.asm”.mmregs //定义存储器映像寄存器.def _c_int00.ref sinx,d_xs,d_sinx,cosx,d_xc,d_cosx //定义标号 sin_x:.usect “sin_x”,360 //为“sin_x”保留360个存储空间 STACK:.usect “STACK”,10 //为堆栈保留10个存储空间 k_theta.set 286 //theta=pi/360(0.5deg)PA0.set 0 _c_int00.text //定义文本程序代码段 STM #STACK+10,SP //设置堆栈指针
STM k_theta,AR0 //AR0-->K_theta(increment)STM 0,AR1 //(AR1)=X(rad)STM #sin_x,AR6 //AR6→sin(x)STM #90,BRC //form sin0(deg.)—sin90(deg)RPTB loop1-1 //重复执行块语句(下条语句开始至 loop1-1)91次 LDM AR1,A LD #d_xs,DP STL A,@d_xs //(A)低16位→d_xs STL A,@d_xc //(A)CALL sinx // CALL cosx // LD #d_sinx,DP //DP LD @d_sinx,16,A //A=sin(x)MPYA @d_cosx //B= sin(x)*cos(x)STH B,1,*AR6+ //AR6 MAR *AR1+0 //loop1: STM #sin_x+89,AR7 //sin91(deg.)STM #88,BRC RPTB loop2-1 // LD *AR7-,A //((AR7))STL A,*AR6+ //(A)loop2: STM #179,BRC //sin180(deg.)(BRC)=179, STM #sin_x,AR7 //AR7 RPTB loop3-1 LD *AR7+,A //((AR7))NEG A // STL A,*AR6+ //Aloop3: STM #sin_x,AR6 //AR6 STM #1,AR0 //AR STM #360,bk //BKloop4: PORTW *AR6+0%,PA0 //PA0=*AR6+0%, B loop4 sinx:.def d_xs,d_sinx //.data //低16位→d_xc 调用sinx程序 调用cosx程序 ←d_sinx →2*sin(x)*cos(x)修改辅助寄存器AR1
—sin179(deg.)重复执行下条指令至loop2-1处90次 →A,然后AR7减去1 低16位→AR6
—sin359(deg.)重复执行180次 指向sin_x首地址 →A,然后AR7加1 累加器变负 低16位→AR6 指向sin_x ←01 ←360
向PA0输出数据 定义标号d_xs,d_sinx 定义数据代码段 table_s.word 01c7h //c1=1/(8*9).word 030bh //c1=1/(6*7).word 0666h //c1=1/(4*5).word 1556h //c1=1/(2*3)d_coef_s.usect “coef_s”,4 //为“coef_s”保留4个存储空间 d_xs.usect “sin_vars”,1 //为d_xs中sin_vars保留1个存
储空间
d_squr_xs.usect “sin_vars”,1 //d_temp_s.usect “sin_vars”,1 // d_sinx.usect “sin_vars”,1 //c_l_s.usect “sin_vars”,1 //.text // SSBX FRCT // STM #d_coef_s,AR5 //AR5 RPT #3 // MVPD #table_s,*AR5+ //table_s STM #d_coef_s,AR3 //AR3 STM #d_xs,AR2 //AR2 STM #c_l_s,AR4 //AR4 ST #7FFFh,c_l_s //7FFFh SQUR *AR2+,A //AR2 ST A,*AR2 // ||LD *AR4,B // MASR *AR2+,*AR3+,B,A // MPYA A // STH A,*AR2 // MASR *AR2-,*AR3+,B,A // MPYA *AR2+ //AR2 ST B,*AR2 // ||LD *AR4,B //为d_squr_xs中sin_vars保留1个
存储空间
为d_temp_s中sin_vars保留1个 存储空间
为d_sinx中sin_vars保留1个存储
空间
为d_xs中sin_vars保留1个存储 空间
定义代码开始段
设置FRCT=1以解决冗余符号位 指向d_coef_s首地址 重复下条指令4次
中的数复制到AR5指向 的单元
指向d_coef_s首地址 指向d_xs首地址 指向c_l_s首地址 →c_l_s
指向累加器A中的数值求其平方(A)左移16位→AR2(AR4)左移16位→B
从累加器A中减去(AR2)*(AR3)操作数与累加器A中高位相乘(A)高16位→AR2
从累加器A中减去(AR2)*(AR3)指向的数与累加器A的高16位相乘(B)左移16位→AR2(AR4)左移16位→B MASR *AR2-,*AR3+,B,A //从累加器A中减去(AR2)*(AR3)MPYA *AR2+ //与累加器A中高16位相乘 ST B,*AR2 //(B)左移16位→AR2 ||LD *AR4,B //(AR4)左移16位→B MASR *AR2-,*AR3+,B,A //从累加器A中减去(AR2)*(AR3)MPYA d_xs //d_xs指向的操作数与累加器A中高16位相乘 STH B,d_sinx //(B)高16位→d_sinx RET //cosx:.def d_xc,d_cosx //d_coef_c.usect “coef_c”,4 //.data //table_c.word 0249h //c1=1/(7*8).word 0444h //c1=1/(6*5).word 0aabh //c1=1/(3*4).word 4000h //c1=1/2 d_xc.usect “cos_vars”,1 //d_squr_xc.usect “cos_vars”,1 // d_temp_c.usect “cos_vars”,1 //d_cosx.usect “cos_vars”,1 //c_l_c.usect “cos_vars”,1 //.text // SSBX FRCT //FRCT=1 STM #d_coef_c,AR5 //AR5 RPT #3 // MVPD #table_c,*AR5+ // STM #d_coef_c,AR3 //AR3 STM #d_xc,AR2 //AR2 STM #c_l_c,AR4 //AR4 ST #7FFFh,c_l_c //7FFFh SQUR *AR2+,A //返回 定义标号d_xc,d_cosx 为coef_c保留4个存储空间 定义数据代码段 为d_xc中cos_vars保存1个存储单元 为d_squr_xc中cos_vars保存1个 存储单元
为d_temp_c中cos_vars保存1个存储
单元
为d_cosx中cos_vars保存1个存储单
元
为c_l_c中cos_vars保存1个存储单
元
定义文本代码段
以清除冗余符号位 指向d_coef_c首地址 重复下条指令4次
把table_c中的数复制到中AR5 指向d_coef_c首地址 指向d_xc首地址 指向c_l_c首地址 →c_l_c
求x的平方存放在累加器A中 ST A,*AR2 //(A)左移16位→AR2 ||LD *AR4,B //(AR4)左移16位→B MASR *AR2+,*AR3+,B,A //A=1-x^2/56,T=x^2 MPYA A //A=T*A=x^2(1-x^2/56)STH A,*AR2 //(d_temp)= x^2(1-x^2/56)MASR *AR2-,*AR3+,B,A //A=1-x^2/30(1-x^2/56)T= x^2(1-x^2/56)MPYA *AR2+ //B=x^2(1-x^2/30(1-x^2/56))ST B,*AR2 //(d_temp)= x^2(1-x^2/30(1-x^2/56))||LD *AR4,B //B=1 MASR *AR2-,*AR3+,B,A //A= 1-x^2/12(1-x^2/30(1-x^2/56))SFTA A,-1,A NEG A MPYA *AR2+ //B=1-x^2/2(1-x^2/12(1-x^2/30(1-x^2/56)))MAR *AR2+ RETD ADD *AR4,16,B //B=1-x^2/2(1-x^2/12(1-x^2/30(1-x^2/56)))STH B,*AR2 //cos(theta)RET.end 4.2 正弦波程序链接命令文件sin.cmd.cmd文件描述输入文件和输出文件,说明系统中有哪些可用存储器、程序段、堆栈及复位向量和中断向量等安排在什么地方。其中MEMORY段就是用来规定目标存储器的模型,通过这条指令,可以定义系统中所包含的各种形式的存储器,以及它们占据的地址范围;SECTIONS段说明如何将输入段组合成输出段以及在可执行文件中定义输出段、规定输出段在存储器中的位置等。MEMORY { PAGE 0: EPROM: org = 0E000h, len = 1000h VECS: org = 0FF80h, len = 0080h PAGE 1: SPRAM: org = 0060h, len = 0020h DARAM1: org = 0080h, len = 0010h DARAM2: org = 0090h, len = 0010h DARAM3: org = 0200h, len = 0200h } SECTIONS {.text :>EPROM PAGE 0 //文本代码段其实地址为0E000h,长度为 1000h.data :>EPROM PAGE 0 //数据代码段其实地址为0D000h STACK :>SPRAM PAGE 1 //堆栈起始地址为0060h,长度为0020h sin_vars :>DARAM1 PAGE 1 //标号为sin_vars段的起始地址为0080
长度为0010h coef_s :>DARAM1 PAGE 1 //标号为coef_s段的起始地址为0070h 长度为0010h cos_vars :>DARAM2 PAGE 1 //标号为cos_vars段的起始地址为0090h 长度为0010h coef_c :>DARAM2 PAGE 1 //标号为coef_c段的起始地址为0080h 长度为0020h sin_x : align(512){} > DARAM3 PAGE 1.vectors :>VECS PAGE 0 }
5、仿真与调试
5.1 CCS工程项目的调试
利用 CCS 集成开发环境,用户可以在一个开发环境下完成工程定义、程序 编辑、编译链接、调试和数据分析等工作环节。⑴ 创建工程(project)文件
选择 Project→New,在“Project”文本框中键入将要创建的工程项目名,本例工程项目名为“sin” ⑵ 向工程中添加文件
选择 Project→Add Files to Project,将 sine.asm文件自动添加到 Project→Source 中。用同样的方法 将 sine.cmd 文件添加到对应的目录中。⑶ 构建工程,工程所需文件编辑完成后,可以对该工程进行编译链接,产生可执行文件,为调试做准备。
选择 Project→Build,系统提示没有出错信息后,系统自动生成一个可执行文件,sine.out 文件。⑷ 载入可执行文件 选择 File→Load Program 载入编译链接好的可执行文件sine.out ⑸ 运行程序
选择 Debug→Run运行,可以通过查看内存表等方法,看到程序运行的结果。5.2 仿真结果
选择 View→Graph→Time/Frequence
得到的正弦波形如下图所示:
输出结果显示,在CCS图形观察窗口得到了频率稳定,信号干扰小,波形失真度较小的正弦信号。
6、心得体会
通过这次的课程设计使我进一步加深了对于DSP这门课程的学习以及对于平时所学内容的实际应用。在设计中发现问题和同学互相讨论研究,并在编程过程中进一步提高自身的创作、创新水平,扎实基础,扩展所学。在输入程序时发现编程确实是要求很认真细心的,如果稍有差错就会导致整个程序的错误,也由此体现了DSP这门课程的严谨性。相信在以后的学习中一定会更好的应用所学内容的。
正弦信号dsp 篇2
涡流无损检测以其独特的优点已成为成品或半成品金属材料和设备在役检测的主要技术之一。目前,国内广泛使用的涡流探测系统大部分属于定性检测,即判断缺陷是否存在,只有大于设定值的缺陷,才进行报警。这种方法不仅依赖于检测人员的素质,而且小于设定值的缺陷也存在极大的安全隐患。因此目前国内外的无损检测技术正在从一般的无损检测技术向自动无损检测和定量无损检测技术发展。加速检测过程,实现产品的连续在线检测对无损检测技术有着重要的作用。随着涡流探伤检查在国内越来越受到重视,各种涡流检测装置也得到了广泛发展和应用。但是这类检测装置要求性能稳定,可靠性高,自动化程度高,为此需要一个合理的控制系统来满足其要求[1]。
文中采用DSP对涡流检测装置进行自动化控制。DSP(DIGITAL SIGNAL PROCESSING)即数字信号处理器,它是在模拟信号变成数字信号以后进行高速实时处理的专用处理器[2]。自从20世纪70年代末问世以来以其独特的结构和快速实现各种数字信号处理算法的突出优点已经广泛的应用于社会生活的各个领域,例如:通信、雷达、声纳、仪器仪表、医疗设备、家用电器等,同时它也推动了其他各个学科的发展和创新[3]。而正弦波是任何波形构成的基本单元,在此介绍了基于DSP的正弦信号发生方法,产生系统所需要的设定频率的正弦波。
1 基于DSP的涡流无损检测系统
涡流无损检测系统的硬件电路框图如图1所示,它的主要设计思路为:由DSP模块发出设定频率的正弦波,此信号经过六阶椭圆滤波器滤波、功率放大器放大后作为探头的激励源信号,探头在检测平台的控制下沿着被检测件运动,检测放大器分别把探头的电压和电流信号放大,送入DSP模块中,经过系列数字信号处理,求出探头的阻抗增量,再经过小波变换求出信号的特征值,做为神经网络的输入,RBF网络根据此输入,即可求出缺陷的具体值完成缺陷的在线定量识别。
2 利用DSP产生正弦波的方法
利用DSP产生正弦波的方法主要有以下几种[3,4,5,6,7,8,9]。
2.1 采样回放法
该方法很容易实现,只需对已有的标准正弦信号源进行采样,得到数据后直接回放或进行变频变幅处理后回放。该方法关键在于采用高性能的A/D、D/A芯片并合理设计硬件电路,使信号处理过程中保证波形良好,以保证采样数据的精准性。进行数字变频及变幅处理时,要清楚数据的格式并保证回放数据的点数满足奈奎斯特定理,防止频谱混迭。
2.2 查表法产生正弦波
查表法是使用比较普遍的方法,也是本装置采用的方法,首先自己生成正弦数据表,再进行查表、D/A转换后,得到所需要的波形。优点是处理速度快,调频调相容易,较采样回放法,避免了数据的单一,增加了精度。如果存储空间足够大,那么就可以通过制作较大的查找表来得到较高的精度。如建立一个200个数据点的正弦数据表,具体过程如下,采用查表法来实现对某一正弦波的频率及幅值的设定,在程序里要建立一张正弦查找表。根据分析及计算得到每周期最多向D/A送多少个数据点,假设送200个数据,因此建立一张有200个数据的正弦查找表。对于频率为f的正弦波来说,若每周期取200点数据,则取样间隔为(1/f)/200=1/(200f),则对幅值为1的正弦波如下式:
这里采用MATLAB软件来产生一个200个数据点的正弦波数据文件,之后将其添加到CCS工程中进行编译、连接、调试直至成功[6]。
利用下面一段MATLAB程序来产生sin200.dat的数据文件。
sine=sin([0:199]’*2*pi/200);%生成正弦数据
save sin200.dat sine-ascii%输出数据文件sin200.dat
2.3 查表结合插值法产生正弦波形
查表结合插值法是在查表法的基础上加以改进得到[4]。发生相同性能的正弦波,查表法结合插值法的长度远远要小于单纯查表法的表格长度,从而克服了查表法中占用大量内存资源的缺点,节约了存储空间。查表法结合插值法的表格格式如表1所示。先将一个周期的单位正弦波N等分,并计算所有离散点的幅值,之后将这些幅值依次排列存入数据区,从而构成一张表格。
查表结合插值法产生正弦波形方法是通过在两个表项点之间插入若干个值来实现的,插入值的大小决定于相邻的两个表项值和插入点的位置。考虑到DSP的处理速度,一般采用线性插值。
每一个插值根据下式得到:sin[360°(I+D)/N]=sin(360°I/N)+D{sin[360°(I+1)/N]-sin(360°I/N)}。
其中,D是一个介于0到1之间的小数,表示插值点离左边表项点的相对位置;N是表格长度;sin(360°I/N)和sin[360°(I+1)/N]是相邻的两个表项值。
2.4 泰勒级数法产生正弦波
在高等数学中,正弦函数和余弦函数可以展开成泰勒级数,其表达式为:
若要计算一个角度x的正弦和余弦值,可取泰勒级数的前五项进行近似计算。
由式(4)、式(5)可以推导出公式,即:
由递推公式可以看出,在计算正弦和余弦值时,不仅需要已知cos(x),而且还需要知道sin(n-1)x,sin(n-2)x,cos(n-2)x的值。
程序的编程思想:正弦波的波形可以看作由无数点组成,这些点与x轴的每一个角度值相对应,可以利用DSP处理器处理大量重复计算的优势来计算x轴每一点对应的y的值(在x轴取360个点来进行逼近)。x=f×2π/fs(fs是采样频率,f是所要发生的信号频率)。如给出x值为=0.785 4 rad,执行结果:sin(x)=0.707 106,误差在万分之一内,如果改变x值,便可以计算其他角度的正弦值了。
利用式(4)、式(5),可以计算出一个角度x的正弦值和余弦值,可采用子程序调用的方式来实现。在调用前先在数据存储器dxs单元以及dxc单元存放x的弧度值,计算结果存放在单元dsin和dcos中。具体实现步骤如下:(1)计算0~45°的正弦和余弦值;(2)利用正弦函数倍角公式:sin(2x)=2sin(x)cos(x),计算0~90°的正弦;(3)通过复制,获得0~359°的正弦值;(4)将0~359°的正弦值重复输出,便可以得到正弦波。
在实际中,正弦波是通过D/A口输出的。选择每个正弦周期中的样点数,改变每个采样点之间的延迟,就能够产生不同频率的波形,也可以利用软件改变波形的幅度以及起始相位。
2.5 迭代法产生正弦波
迭代法是利用数字振荡器通过迭代方法产生正弦波。首先介绍数字振荡器原理。正弦函数sin(x)可以表示为指数形式:
由此可以得到正弦序列:
z变换:
式(10)在│z│>1时成立,且式中的A=2cos(ωT),B=-1,C=sin(ωT)。
设单位冲击序列经过一系统后,其输出为正弦序列C=sin(kωT),则系统的传递函数为:
就是正弦序列sin(kωT)的z变换,求其极点为:
由上式可以看出,P1,2是一对复根,其幅值为1,相角为ωT。幅值为1的极点对应一个数字振荡器,其振荡频率由系数A、B、C来决定。因此,振荡器主要用于确定系数。由式(11)得:
设初始值为0,求上式的z反变换,得:
这是一个二阶差分方程,其单位冲击响应为sin(kωT)。利用单位冲击函数x[k-1]的性质,即当k=1时,x[k-1]=1,代入上式得:
当k>2,y[k]能用y[k-1]和y[k-2]算出,这是一个递归差分方程。
以上就是数字振荡器的原理,根据此原理,一个正弦波序列可以通过递归的方法得到,系数A、B和C一旦确定后,代入上式就可以得到期望频率的正弦序列。
3 结语
随着电子技术的高速发展,DSP的各项性能得到不断提高,其独特的硬件结构和快速实现各种信号处理,高速而精确的运算能力以及内部操作极大的灵活性,使得DSP得到广泛的应用[10]。利用DSP产生正弦波,能充分利用了DSP的优点,使得产生的信号波形精度高,稳定性好,编程简单、灵活,在涡流无损检测系统中取得了很好的应用效果。
摘要:介绍了涡流无损检测系统,分析了涡流无损检测装置的原理,为提高系统性能采用了DSP作为涡流无损检测装置的正弦信号发生器,提供了目前常用的几种利用DSP产生正弦波的方法,利用DSP产生正弦波,能充分利用其优点,使得产生的信号波形精度高,稳定性好,编程简单、灵活,在涡流无损检测系统中取得了很好的应用效果。
关键词:数字信号处理器,正弦波,信号发生器,涡流无损检测系统
参考文献
[1]严怀龙.基于PLC的涡流检测装置系统控制设计[J].现代电子技术,2007(11):135-137;142.
[2]乔瑞萍,崔涛,张芳娟.TMS320C54xx DSP原理及应用[M].西安:西安电子科技大学出版社,2006.
[3]刘剑科,王艳芬,王胜利.基于DSP的信号发生器的设计与实现[J].制造与设计,2005(5):125-128.
[4]王江,杨敏,陈亚骏.一种基于DSP的数字合成正弦波发生器[J].仪表技术,1999(2):9-11.
[5]郑红,吴冠.TMS320C54xx应用系统设计[M].北京:北京航空航天大学出版社,2003.
[6]李真芳,苏涛,黄小宇.DSP程序开发——MATLAB调试及直接目标代码生成[M].西安:西安电子科技大学出版社,2003.
[7]刘丹,周又玲.用DSP实现幅频可调的正弦波[J].信息技术,2003,27(1):74-76.
[8]孙清.数字信号处理(DSP)系统的正弦波发生器[J].沈阳工业大学学报,2001,23(1):45-46.
[9]李敏,陈兴文.基于DSP的任意波形合成技术[J].微计算机信息(嵌入式与SOC),2005,21(7):82;90-91.
正弦信号dsp 篇3
关键词电力远动系统;智能节点;DSP技术
中图分类号TM文献标识码A文章编号1673-9671-(2011)081-0101-01
1概述
电力系统智能节点是完成运动数据采集、处理、发送、接收以及输出执行等功能的设备。
它具备了传统RTU的所有功能。各RTU系统之间由计算机网络连接,它们之间的数据交换由网络厂商提供的网络通讯协议完成;除了具备面向对象的I/O系统的一般功能外,最重要的特点就在于每一个系统从通讯网络的角度而言,它均为一个网络“节点”,即电力系统智能节点。
2DSP芯片的选择
本设计选择TMS320LF2407A作为本设计的DSP芯片,C240x系列DSP是面向数字控制系统的新一代数字信号处理器。该控制器集实时处理能力和控制器设计功能于一身,为控制系统应用提供了一个理想的解决方案。其内部的哈佛结构使数据空间和程序空间分离,独立的数据总线和程序总线允许程序数据同时操作;专用的硬件乘法器极大提高了运算速度;具有独特的逆寻址方式,能高效地进行快速傅里叶变换运算;指令系统采用流水线操作,减小了指令周期;采用内存映射方式管理I/O,能灵活方便地扩充外围电路。
3电源电路
TMS320LF2407A(以下简称2407A)采用3.3V电压,减小了芯片功耗;但常用直流电源为5V,因此必须考虑电平转换问题。一种方法是直接采用可调直流电源获得3.3V电压,但这样很难保证电源电压的稳定性,影响DSP的正常运行。另一种方法是采用专门的电源芯片,将5 V电压降为3.3V。TPS7333、TPS76HD318、MAX604为常用的电平转换芯片。基于本系统外围供电为5V,但DSP芯片需要的是3.3V的电压,故选择输入电压为5V,输出为3.3V的TPS7333作为电源芯片。
4智能节点的时钟电路
外部时钟信号由晶体振荡器提供,而晶体振荡器分为有源和无源,通过无源晶体连接的振荡器价格便宜,但是它的驱动能力比较差,一般不能提供多个器件共享,而且它可以提供的频率范围也比较小(一般在20kHz~60MHz)。所以,本设计采用了一个有源晶体振荡器,但是,使用有源晶振要注意时钟信号的电平,一般市场的晶振输出信号电平为5V或者3.3V。由于,DSP外围电压是3.3V,所以,本设计采用的是低电压型号(3.3V供电)的有源晶体振荡器15MOSC,这避免了对其输出进行电平转换。
5复位电路
本设计选用TL7705A作为复位电路的核心芯片,TL7705是电源监控用集成电路,采用8脚双列直插式封装,其具有处理上电复位、欠电压检测复位、手动复位功能.本文用它来实现外部复位信号管理功能,其复位信号输出引脚与DSP的复位引脚相连。其内部基准电压发生器具有较高的温度稳定性,可由1脚输出2.5V基准电压。为了吸收电源的纹波和脉冲干扰,通常在1脚接上0.1μF的滤波电容来提高其抗干扰能力。被监视的电源电压由SENSE脚引入,当其值小于基准电压时,输出脚RESET和RESET反分别为高、低电平。当被监视的电源电压高于基准电压时,端子RESET和RESET反输出关断,它能诊断电源瞬间短路、降压、尖峰脉冲干扰,并产生复位信号,外围电路的电压下降到门限设定电压时,完成数据保护,即将需要保护的数据写入DSP的内部RAM中,并使DSP进入掉电工作方式。
6JTAG电路
为了方便系统的调试和升级,电路设计时必须留出JTAG(连接测试组)调试接口,以便对DSP模块进行仿真和调试。JTAG接口用于连接最小系统和仿真器,实现仿真器对DSP的访问,JTAG接口的连接需要和仿真器上的接口一致。JTAG仿真器比较便宜,而且连接方便。标准的JTAG接口是4線:TCK为测试时钟输入;TDI为测试数据输入,数据通过TDI引脚输入JTAG接口;TDO为测试数据输出,数据通过TDO引脚从JTAG接口输出;TMS为测试模块选择,用来设置JTAG接口处于某种特定的测试模式;TRST为测试复位,输入引脚,低电平有效。
7存储器外围扩展电路
在设计TMS320LF2407A电路的时候,一般都会设计存储器外围扩展电路。外扩存储器不仅可以方便程序调试,而且也便于系统升级。2407ADSP可以访问的程序存储空间为64K字,根据MP/MC引脚的电子决定其配置方式。当MP/MC为低电平时,片内Flash存储空间使能,地址范围是0000h~7FFFFh,8000h~FFFFh的地址留给外部程序存储器。当
MP/MC为高电平时,片内Flash被禁止,64K字存储空间全部位于外部程序存储器中,即只能从片外存储器中读取数据,使得仿真调试时通过仿真器对程序修改比较容易。2407A DSP有64K的16位数据存储器空间,
32K字的内部存储器地址范围是0000h~7FFFh,包括存储器映射寄存器、DARAM和外设映射寄存器。另外,地址范围是8000h~FFFPh的32K字留给外部数据存储器空间。片外存储器的选择主要考虑电压、容量、速度等指标。本文采用工作电压3.3V,容量64K×16位,访问时间15ns的高速静态RAM,IS6lLV6416作为片外存储器。片外存储器的数据、地址线分别与DSP对应相连;输出使能引脚OE和输入使能引脚WE分别与DSP的读选通DSPRD相连。仿真调试时,用跳线把片选引脚DSPWE与DSP的程序空间选通引脚CE相连,当外部程序存储器用。程序烧写到片内Flash后,把片选引脚CE与DSP的数据空间选通引脚DSPDS相连,当外部数据存储器用。
8结论
本文完成了基于DSP电力系统自动化智能节点的硬件电路设计和软件设计。以TMS320LF2407A芯片作为核心处理器,通过对DSP信号处理电路、数据采集电路和数据通信电路的设计,实现了现场信号的采集、数字信号在CAN总线上的传输、对现场控制装置的控制以及管理。
参考文献
[1]张雄伟,等.DSP芯片原理与应用[M].北京:机械工业出版社,2005.
[2]扈宏杰.DSP控制系统的设计与实现[M].北京:机械工业出版社,2004.
[3]柳永智,等.电力系统远动[M].北京:中国电力出版社,2002.
正弦信号dsp 篇4
摘要:深入研究高速数字电路设计中的信号完整性问题;分析电路中破坏信号完整性的原因;结合一个实际的DSP数据采集系统、阐述实现信号完整性的具体方案。
关键词:信号完整性 ADSP21161 数据采集 噪声控制
引言
当前,日渐精细的半导体工艺使得晶体管尺寸越来越小,因而器件的信号跳变也就越来越快,高速数字系统的快斜率瞬变和极高的工作频率,以及很大的电路密集度,导致高速数字电路系统设计领域的信号完整性问题以及电磁兼容性问题日趋严重。破坏了信号完整性将直接导致信号失真、定时错误,以及产生不正确数据、地址和控制信号,从而千万系统误工作甚至导致系统崩溃。因此,信号完整性问题已经越来越引起高速数字电路设计人员的关注。
1 信号完整性问题产生的机理
信号完整性的问题主要包括传输线效应,如反射、时延、振铃、信号的过程与下冲以及信号之间的串扰等,涉及传输线上的信号质量及信号定时的准确性。
良好的信号质量是确保稳定时序的关键。由于反射和串扰造成的信号质量问题都很可能带来时序的偏移和紊乱。例如,串扰会影响信号的传播延迟,导致在时钟的上升沿或下降沿处采不到准确的逻辑;反射会造成数据信号在逻辑门限附近波动,从而影响信号上升沿或下降沿变化;时钟走线的干扰会造成一定的时钟偏移。
(本网网收集整理)
信号完整性分析与设计是最重要的高速PCB板级和系统级分析与设计手段,在硬件电路设计中扮演着越来越重要的作用。一个数字系统能否正确工作,其关键在于信号定时是否准确。信号定时和信号在传输线上的传输延迟与信号波形的损坏程度密切相关。信号传输延迟和波形破损的原因复杂多样,但主要是以下三种原因破坏了信号的完整性。
①电源、地址噪声。它主要是源自于电源路径以及IC封装所造成的分布电感的存在。当系统的速度愈快,同时转换逻辑状态的I/O引脚个数愈多时,会产生较大的瞬态电流,导致电源线上和地线睥电压波动和变化,这就是平进所说的接地反弹。接地反弹是数字系统的几个主要噪声来源之一。接地反弹的噪声常见的现象是,会造成系统的逻辑运作产生误动作,尤其近年来日益风行的3.3V逻辑家族。
②串扰。信号在沿着传输线传输时,是以电磁波的形式传输的。电磁波包含时变的电场和磁场。因为电磁场的能量主要是在传输线的外部,根据麦克斯韦方程知道,时变场会在周围的传输线产生电压和电流。那么对受到干扰的传输线而言,这个电压和电流就是由串扰造成的。串扰主要源自两相邻导体之间所形成的互感与互容。串扰会随着印刷电路板的绕线布局密度增加而越显严重,尤其是长距离总线的布局,更容易发生串扰的现象。这种现象是经由互容互感将能量由一个传输线耦合到相邻传输线上的。
③反射。反射现象的原因是:信号传输线的两端没有适当的阻抗匹配,印刷电路板上的分支布局产生特性阻抗的断点,过孔的尺寸以及其它互连所造成的阻抗不连续。所谓特性阻抗是定义为,“当导线上流经有高频信号时,所呈现的电压/电流比值”。那么对于确定的传输线而言,其特性阻抗为一个常数。信号的反射现象就是因为信号的驱动端和传输线的特性阻抗以及接收端的阻抗不一致所造成的。
2 保证信号完整性的方法
2.1 抑制接地反弹
通过以上分析可知,电源路么以及IP封装所造成的分布电感是决定接地反弹的关键之一。要抑制接地反弹的影响,首先是减少IC封装的分布电感。在考虑IC引脚的配置图时,就应该将时钟脉冲信号或数据/地址总线的引脚位置摆放在较靠近芯片的地方。其次,是采用分布电感量较小的IC封装技术。表1列举了几种常见的IC封装技术的分布电感量,可以看出表面贴片的封装技术通常会比DIP封装技术少30%的接地反弹;然后是降低印刷电路板端的分布电感量。由于电感与导体的长度成正比,与宽度成反比,所以在高速数字系统里大都采用多层板。其中会在里层摆放一个或一个以上的接地层,接地层面积相当宽广,目的旨在减少其地端回路的电感量。另外,电路设计时应尽可能避免让某个逻辑门驱动太多的负载。因为在数字电路若有多个并联的逻辑装置。总输入电容是将每个逻辑装置的输入电容直接相加。
表1 几种IC封装技术的分布电感与电容
IC封装技术分布电容/pF分布电感/nHDIP封装0.412~18PGA封装12表面贴片封装11~12Write Bond0.51~2TAB0.61~6PCB thru-hole via11
2.2 解决串扰问题
信号之间由于电磁场的相互耦合而产生的不期望的噪声电压信号称为信号串扰。“串扰”主要是源自两相领导体之间的所形成的互感和互容。串扰超出一定的值将可能引发电路误动作,从而导致系统无法正常工作。下面分别探讨互容、互感与串扰的关系,以及如何解决串扰问题。
(1)电容耦合
串扰=(ZbCm)/tr
式中,Zb为受扰线的特性阻抗;Cm为互容;tr为输入到干扰线的入射电压之上升时间。
要改善互容产生的串扰,可以从两个方面着手。一是减少互容Cm,做法是在两相邻的传输线中间加进屏蔽措施。通常,在两个铜箔通路中加装一个接地屏蔽通路,用以改善互容的干扰。二是在时序规定允许的情况下,增加转态较频繁的信号之上升时间。
改善互感所产生的串扰,惟有减少流经互感的电流所形成的回路面积才是较为简易可行的办法。可以借助降低导线与接地平面之间的距离,减小并行信号长度,缩短信号层与平面层的间距,增大信号线间距等措施,来减少两导线的互感量。
2.3 改善反射
反射是产生干扰的几个重要来源之一。为改善因线路的阻抗不匹配而造成反射的现象,可以选择采用“布线拓扑”和“终端技巧”的办法。
利用适当的布线拓扑法来改善反射现象,通常不需要增添额外的电子组件(例如,终端电阻或者钳位二极管)。常见的布线拓扑法有4种,分别是树状法、菊链法、星状法和回路法,如图1所示。其中树状法是最差的布线法,它所造成的反射量最大,额外的负载效应和振铃现象都需要加费心来处理;就“反射”的观点,菊链法是较佳的布线法。菊链法相当适合于地址或者数据总线以及并联终端的布线,基本上是没有分支旁路的。星状法适合串联终端的布线,但条件是输出缓冲器(驱动器)必须是低输出阻抗以及具有较高的驱动能量。回路法基本上与菊链法类似,但是回路法会耗费较多的回路面积,对于共模噪声的免疫能力较差。
除了布线拓扑法,为克服反射现象的干扰,“终端技巧”是最有效的方法。传输线的特性阻抗一般是定值。对于CMOS电路而方,信号的驱动端的输出阻抗比较小,为几十Ω,而接收端的输入阻抗比较大。可以在信号最后的接收端匹配一个电阻(在接收端并联一个电阻),这样匹配和接收端并联的结果就可以和传输线的特性阻抗相匹配了,信号的性能得到了比较好的改善。终端技巧的目的旨在提供一个完全阻抗匹配的传输线环境以及保持电位的稳定。
3 高速DSP系统的信号完整性分析
下面结合一个实际的DSP高速图像数据采集系统,阐述一下信号完整性问题的产生以及具体的解决方案。
整个DSP数据采集系统由三部分构成:模拟前端CCD数据采集板、CCD控制板和数据处理主控制DSP板。处理后的数据通过USB2.0接口传入上行PC机,如图2所示。
模拟前端CCD数据采集板由CCD扫描器件、模数转换器件A/D构成。光源照射到称之为CCD(ChargeCoupled Device,电荷耦合器件)的光敏元件上实现光电转换。由于要扫描的胶片上不透明的区域透射的光较少,透明的区域透射的光较多,而CCD器件可以检测图像上不同区域透射的不同强度的光。CCD扫描器件将胶片扫描,并将RGB三色信号分别变成三路模拟信号送到A/D进行采样,转换成RGB数字信号,供后续处理板处理。
模数转换器件A/D的采样精度、对采样信号的抗噪声处理,都影响到采集信号的完整性,直接影响后续处理板的处理效果。我们采用的A/D是16位15Msps的A/D转换器,主要对CCD采集的三色电平信号采样成数字信号。有三个输入通道,分别对应CCD器件的R、G、B信号输出。每个通道都由输入CLAMP、双校正采样器CDS、偏移DAC和可编程的增益放大器PGA构成。这样就复合成了一个高效的16位A/D转换器,在精度上可以满足要求。同时,为了减少CCD在采样模拟信号时把外界的噪声耦合到系统,在电路设计上采用光电耦合器件对RGB三路信号进行隔离。
CCD控制板以CPLD为核心。CPLD接收DSP的控制信号,产生相应的控制总线和数据总线,控制CCD采集板同DSP板进行握手方式传输数据。这部分采用异步方式工作,速率可以通过可编程的等待周期和器件的应答信号来实现,容易达到信号的完整性要求。
数据处理主控制DSP板,是整个数据采集系统的核心,负责对数字信号作校正处理,并通过USB2.0接口将图像数据上传给计算机。系统由ADSP21161、CPLD EPM7128AE、16位的SDRAM、Flash芯片AM29F040、USB接口控制器CY7C68013构成,如图3所示。由于系统工作在很高的.时钟频率上,所以这部分的信号完整性问题就显得十分重要了。
主控制DSP板中不仅有高速部分,也有异步的低速部分,所以要对系统进行侵害。分割的目的是要重点保护高速部分。DSP与USB2.0控制芯片、SDRAM接口是同步高速接口,对它的处理是保证信号完整性的关键;与Flash、CPLD接口采用异步接口,速率可以通过可编程的等待周期和硬件应答信号来实现,容易达到信号的完整性要求。
高速设计部分要求信号线尽量短,尽量靠近DSP器件。但是,如果将DSP的信号线直接接到所有的外设上,一方面DSP的驱动能力可能达不到要求,另一方面由于信号布线长度的急剧增加,必然会带来严重的信号完整性问题。所以,在该系统中具体的处理办法是,将高速器件与异步低速器件进行隔离。在这里采用74LS245实现数据隔离,利用准确的选择逻辑将不同类型数据分开。用74LS244构成地址隔离,同时还增加了DSP的地址驱动能力。这种解决方案可以缩短高速信号线的传输距离,以达到信号完整性的要求。
另外,解决好系统内信号的阻抗匹配,防止信号的反射、串扰噪声等问题,这时DSP系统正常工作的基本条件之一。DSP电路传输阻抗应与芯片I/O脚的输出阻抗匹配。不匹配会引起信号反射,结果可能造成逻辑混乱。传输线越长,影响越大。通常采样串接电阻来改善传输线的阻抗匹配,信号引线长度应尽量小于15cm。对于长度超过15cm的引线,在驱动端(源端)和目的端应串接33Ω的匹配电路,避免由于信号反射引起干扰。在工程实践中,我们还采用在接收端接一个上拉电阻,以改善系统的驱动能力。这是考虑到芯片的高电平驱动能力较差,通过外接电压加以补偿。
最后,解决DSP系统的电源配置和电源装置的传导干扰。我们采用的ADSP21161是ADSDP SHARC系列DSP处理器,对系统供电电源的要求都比较严格,电源的抖动范围不超过5%。芯片内核电压为2.5V,芯片I/O口部分采用3.3V供电,而片外的一些常规集成电路又采用5V供电。系统采用多种电压供电无疑增加了各种电压之间的串扰。其中,模拟电源AVDD为DSP的时钟产生器PLL供电,要求比较稳定的电源,纹波干扰比较小。因为,我们采用磁珠和电容相结合的高质量滤波网络对电源AVDD滤波。这里的磁珠和电容对电源纹波有明显的抑制使用。磁珠在某些高频区域内,其阻抗急剧上升,从而在特定的频率区域可获得较好的衰减效果,而对DSP的信号传输不会产生影响。该滤波网络应尽量靠近芯片引脚。为了避免噪声干扰,模拟地布线还要求尽可能粗。
结语
简易低频正弦信号发生器的设计 篇5
在科学研究、工程教育及生产实践中, 常常需要用到低频、高精度的正弦信号, 而传统的信号发生器绝大部分都是由模拟电路构成, 频率虽然可达百兆赫兹并在高频范围内其频率稳定性与可调性好, 但在低频信号输出时, 其需要RC值很大, 频率的稳定度和精度等指标都不高。随着电路系统的数字化发展, 直接数字频率合成 (Direct Digital Synthesizer, DDS) 作为一种波形产生方法, 具有相位连续、频率分辨率高、转换速度快、信号稳定等诸多优点, 从而使得DDS技术得到了广泛的应用。
本文利用Cortex-M3内核的ARM芯片LM3S101与ML2035相配合, 完成了简易数控频率可调低频正弦信号发生器电路的设计。
1 DDS技术简介
直接数字合成技术 (Direet Digital Synthesis, 简称DDS) 是一种全数字化的频率合成器。DDS基本原理框图如图1所示, 主要由相位累加器、波形ROM、D/A转换器和低通滤波器构成。时钟频率给定后, 输出信号的频率取决于频率控制字, 频率分辨率取决于累加器位数, 相位分辨率取决于ROM的地址线位数, 幅度量化噪声取决于ROM的数据位字长和D/A转换器位数。DDS技术作为一种先进的直接数字频率合成技术, 用数字控制的方法从一个频率基准源产生多种频率, 具有高可靠性、高集成度、高频率分辨率及频率变化快、控制灵活等特点, 在通信与仪表领域得到了广泛的应用。
2 系统结构
本发生器主要由利用Cortex-M3内核的ARM微控制器LM3S101驱动使用DDS技术的单片低频正弦信号发生器ML2035完成信号的产生, 同时使用专业的ZLG7290按键和数码管显示芯片完成人机交互。本信号发生器的结构框图如图2所示。
2.1 ML2035简介
ML2035是Micro Linear公司的一款基于DDS技术的可编程输出频率单片集成正弦波信号发生芯片, 它甚至可以在几乎不需要其它外围器件的条件下, 产生从直流到25kHz的正弦信号, 是低频率低成本正弦波应用的理想选择。ML2035的主要特点有:
ML2035仅有8个引脚, 具有3线SPI兼容性串行接口, 它的外围电路非常简单。它输出正弦信号频率为DC-25KHz, 振幅达到±VCC/2。它输出的频率由l6bits的串行数据字控制, 当输入时钟频率为12MHz时, 频率分辨率可达1.5Hz (±0.75Hz) 。
2.2 LM3Sl01简介
LM3S101微控制器是Luminary公司 (现为TI公司) 推出的一款结构简单、性能出众且带有ARM Cortex-M3处理器内核的32位微控制器。Cortex-M3处理器是首个基于ARMv7M架构, 主要针对成本极端敏感的高系统性能的嵌入式应用领域。LM3S101的的销售价格在1美元以下, 却拥有了Cortex-M3内核, 并且其内部集成了8KB的Flash和2KB的SRAM, 含有两个32位定时器, 一个同步串行接口 (SSI) , 一个看门狗定时器, 一个UART, 两个模拟比较器以及18个GPIO等。芯片采用6MHz的晶振, 可通过片内软件PLL来将工作时钟频率设置为20MHz。
2.3 正弦信号的产生
低频正弦信号主要由LM3S101产生控制字通过内置的SSI接口模拟SPI口将控制字输出至ML2035, 最终由ML2035产生相应的低频正弦信号。
图3是ML2035的内部框图。其内部主要由串行输入、相位累加器、正弦波发生器、晶体振荡器和低通滤波器五大部分组成。串行输入电路负责将用户输入的16位串行频率控制字转化为并行数据, 并送给相位累加器, 控制相位生成的速度, 然后正弦波发生器通过查表生成正弦波样值, 波形数据被送到一个8位的D/A进行数模转换形成正弦脉冲波, 最后正弦脉冲波经过一个低通滤波器L平PF滑并滤除不需要的取样分量后, 形成频谱纯净的正弦波信号输出。
ML2035数据加载的时序如图4所示。其时序为:在LATI为低电平期间, SID引脚上的16bits数据字在时钟SCK的上升沿时被送人16bits的移位寄存器。需要注意的是, 应该先送最低位, 最后送最高位。16位数据全部送入16位移位寄存器后, 将LATI变为高电平, 延迟一定时间后再将LATI变为低电平, 在LATI的下降沿触发下, 16位移位寄存器中的数据被锁存入16数据锁存器中。为了确保数据锁存正确, LATI的下降沿要在SCK的低电平期间发出, 在SID数据移入移位寄存器期间, LATI应该保持低电平。
当希望ML2035进入“休眠”时, 可以向移位寄存器输入全0, 并0使LATI保持高电平。在这种情况下, ML2035的输出正弦信号的幅度降到0V。为保持信号的稳定, 在电路设计中应该对ML2035的电源输入端进行电源去耦处理, 即在VCC和VSS电源端各接一个0.1uf到GND的去耦电容。
ML2035的输出频率以及频率分辨率与控制字的关系式为:
2.4 按键和显示系统
ZLG7290键盘/LED驱动器是周立功公司针对仪器仪表行业的是一款功能强劲的驱动芯片。它内置I2C串行接口并可驱动8位共阴数码管或64个独立LED和64个按键, 提供键盘中断信号, 可控扫描位数并且可控任一数码管闪烁, 提供数据译码和循环、移位、段寻址等控制, 8个功能键可检测任一键的连击次数, 无需外接元件即可直接驱动LED, 提供工业级芯片, 抗干扰能力强。该芯片在工业测控中已有大量应用, 本文中就不再赘述。
本发生器使用LM3S101的I/O口模拟I2C串行接口驱动ZLG7290驱动器, 外接共阴LED数码管显示当前输出的正弦波频率, 用户还可以通过按键系统通知LM3S101改变频率控制字, 从而改变ML2035正弦信号发生器的输出频率。
3 结论
传统的正弦信号发生器往往在低频率输出时其频率的稳定度和精度等指标都不高, 数字DDS技术的诞生, 使波形发生器技术有了进一步的飞跃。鉴于此, 本文讨论了基于ML2035作为低频正弦信号发生芯片, 通过微控制器LM3S101作为主控元件, 以ZLG7290按键显示驱动器建立了LED数码管显示和按键的人机交互系统, 完成了一款简易的低频正弦函数信号发生器。本信号发生器外围元器件少、电路实现简单, 但可以产生稳定度好, 精度高的低频正弦信号。此类信号发生器的应用需求量大, 而本设计方案实现成本较低, 可以得到广泛的应用。本设计中的信号发生器输出信号幅度不可调节。如未来应用需调节输出幅度和功率, 可通过外扩运放和功放解决, 在解决过程中, 如需数字可调输出幅度和功率, 可适当选用数字电位器即可, 由于该部分功能属于扩展使用部分, 本文就不再赘述。
参考文献
[1]LM3S101 Microcontroller DATA SHEET[M].http://www.Luminarymicro.com, 2008.
[2]Stellaris Peripheral Driver Library USER’S GUIDE[M].http://www.Luminarymicro.com, 2008.
[3]周立功等编著.EasyARM101实验教程[M].广州致远电子有限公司, 2006.
[4]ML 2035 Data sheet[M].MicroLinear LTD, 1997.
正弦信号dsp 篇6
含噪声正弦信号的频率估计是信号处理领域研究的重要课题之一, 被广泛应用于雷达、通信、声纳、电子对抗等多个领域。目前正弦信号频率估计方法众多[1,2,3,4,5], 各种现代谱估计方法可实现正弦信号频率的精确估计, 但这些方法算法复杂、计算量大[6]。基于DFT的经典幅值谱 (一维谱) 分析方法, 由于可利用FFT而具有运算速度快、对正弦信号具有显著的信噪比增益、算法参数不敏感等优点而被广泛使用[7]。但当采样频率为DFT频率分辨率[8]的非整数倍, 即信号截断长度不是信号周期整数倍时, 信号频谱就发生泄漏[9]。即使无噪声影响, 信号真实频率仍落于主瓣内两根离散的谱线之间, 导致频率估计精度无法满足要求。低信噪比情况下, 频率估计精度更低。基于FFT的各种插值算法改善了估计精度, 但以增大计算量或复杂算法为代价, 因此寻求一种算法简单、估计精度高, 且具有一定抗噪声能力的正弦信号频率估计方法成为人们的研究目标。本文从拓展信号幅值谱的表征方式出发, 以Matlab为平台, 在DFT的基础上将一维谱扩展到突显信号更多信息的二维幅值谱 (简称二维谱) , 并在其基础上推导出正弦信号频率与信号采样频率、信号一个周期内样本点数以及频率直线斜率之间的定量关系, 进而实现正弦信号的频率估计。实验结果验证了该方法具有鲁棒性好、估计精度高的特点。
1二维谱的理论依据及解读
1.1 二维谱的理论依据
设时域离散信号为x (n) , 频域为X (k) , 信号时域截断长度为N, 当N为定值、k为变量时, 可将X (k) 看成关于k的函数, 则根据有限长序列的DFT公式:
可做出x (n) 在某个频率点k的一维谱。若将DFT公式中信号时域截断长度N、频率点k均看作变量, 则信号幅值与N, k均有关, 可将信号幅值表达为X (k, N) , 那么有限长序列的DFT公式就可看作以信号时域截断长度N和频率点k为自变量、以信号幅值X (k, N) 为因变量的二元函数, 如式 (2) :
式 (2) 确定了一个以信号长度和频率为自变量的二维信号谱。
对有限长信号序列, 非整周期截断时一维谱发生频谱泄漏而使其有用信息可能淹没于泄漏的能量之中, 致使信号分析时无法解读出足够的有用信息;而对于二维谱 (二维谱亦为双边谱, 文中二维谱均指频率点k取正值的右半边谱) , 由于将信号长度亦作为变量使采样信号中必包含信号的整周期点而使二维谱的可读性受能量泄漏影响较一维谱小, 故而二维谱突显了信号更多有用信息, 具有良好的可读性。
1.2 二维谱的解读
当用来作二维谱的信号长度满足条件N≥8T时, 二维谱频率分辨率好[10], 展示出的信号周期 (频率) 信息完整, 具有较佳表现力, 便于做谱分析来完成信号的频率估计, 故称之为二维谱较佳表现力条件。与一维谱相比较, 二维谱具有以下特点:
(1) 直观反映出信号周期及幅值信息
设T为信号一个周期里的样本点数, N为信号的样本点数, 则T=100, N=1 000的正弦信号在k取1~10时的二维谱如图1所示, 可解读为:一个直线走向的“山脊”表示信号中含有一个频率成分, 信号的频率信息包含在直线状的“山脊”中。“山脊”由若干“山顶”组成。实验观察发现:一个“山顶”对应信号的一个周期, 若作二维谱的信号长度不是信号周期的整数倍时, 则二维谱中会出现不完整的“山顶”。对“山顶”做定量分析有:二维谱中的“山顶”个数是作二维谱的信号中实际包含的信号周期个数的一半, 若作二维谱的信号长度不为T的整数倍, 则“山顶”对应的周期数为非整数。“山顶”高度对应信号的幅值大小。
二维谱中表征信号周期及幅值信息的“山顶”对应存在着尖点。对于确定的有限长信号序列, 在N方向, 尖点随着信号长度N的变化遵从信号周期而周期性地出现;沿k方向, 尖点随着信号长度N的变化有规律地平移, 尖点的这些特征包含了信号的周期信息, 尖点高度表征了信号的幅值信息。暂称这些尖点为信息点。有限长信号序列的信息点位于一条直线上。根据上文对信息点的分析可知, 信息点包含了精确的信号周期信息。这是基于二维谱实现正弦信号频率估计的重要依据。
(2) 受制约条件少、频率分辨率高
工程实际中, 信号的周期信息往往是未知的, 信号采集时很难做到整周期截取。对于有限长信号, 无干扰整周期截断时一维谱具有良好的频率分辨率, 此处指从谱中能够判断出信号所含的频率个数[10], 非整周期截断或信号含有噪声干扰时时频谱泄漏导致一维谱频率分辨率急剧下降。作二维幅值谱的信号长度只要满足二维谱较佳表现力条件, 就可得到频率分辨率高的二维谱, 信号周期信息未知时, 延长信号采集时间即可满足上述条件。对于信噪比低至-10 dB的含噪声正弦信号, 在满足二维谱较佳表现力条件时, 从其二维谱仍能清晰地判断信号能量集中的位置, 且易知该信号仅包含一个频率成分, 如图2所示。
(3) 可解读出更多信息
与一维谱相比较, 二维谱不仅包含了频率、幅值信息, 还包含了幅值随信号长度N的变换规律以及幅值随频率点k的变化规律。从不同角度观察二维谱可获得N, k及幅值各物理量之间的相互变化规律。
① 沿信号长度N方向纵切二维谱, 即频率点k一定时, 随着N的连续取值可得信号在某个频率点对应的幅值与信号长度N之间的变化规律遵从|sinc|函数, 如图3 (a) 所示。频率不同, 对应的|sinc|函数大小及出现周期亦不同。对于单频信号, 在采样信号的长度范围内N每变化一个周期里样本点数即T对应的长度时, |sinc|函数沿N轴做T长度的平移。
② 沿频率点k方向纵切二维谱, 即信号长度N为定值时, 即为经典幅值谱, 如图3 (b) 所示。幅值与频率点k的变化规律不再赘述。
2基于二维谱的正弦信号频率估计
根据二维谱理论依据, 对信号序列做DFT, 由变换后得到的数据做二维谱, 观察二维谱并根据二维谱规律特征建立模板将信息点所在的k, N位置找出。信息点的位置坐标 (k, N) 二维数据在二维谱的k-N平面中表征信号的周期信息。在以频率点k为横轴、以信号长度N为纵轴的二维平面 (以下简称k-N二维平面) 中根据信息点的 (k, N) 坐标描出信息点, 可获得一条由信息点组成的直线, 称之为信号的频率直线, 如图4所示, 其物理意义如图5所示。实验发现, 对有限长信号做DFT时, 随着信号序列采样位置的变化, 信息点的位置有规律地发生变化, 但信息点组成的频率直线的斜率不发生变化, 即频率直线所包含的信号周期信息不发生变化, 这是采用分析频率直线进而实现正弦信号频率估计的方法可靠性所在。下面依据此结论进行正弦信号频率估计原理的推导。
设信号采集设备的采样频率为fs, 信号采集时间为t, 采集到的信号长度为M, 那么有:
若设信号实际频率为f0, 信号一个周期内样本点数为T, 长度为M的信号中实际包含的周期数 (可为非整数) 为n, 则有:
由式 (3) ~式 (5) 可推导出:
式 (6) 即为正弦信号频率估计计算公式。可知, T的估计是实现正弦信号频率估计的关键。
在k-N二维平面中, N′表示频率直线起止信息点之间的信号长度, Δk表示起止信息点所占频率点k的范围差。则正弦信号一个周期里的样本点数T可表示为:
设正弦信号的频率直线为y=Ax+B, 如图5所示, 易知其斜率A为N′/Δk, 那么频率直线斜率A的物理意义为:正弦信号一个周期里的样本点数。则有:
故正弦信号频率估计公式亦可表示为:
以上分析可知, 要实现正弦信号的频率估计, 只需求出频率直线的斜率然后将其代入式 (9) 即可。
3实验及结论分析
表1为在满足二维谱较佳表现力条件下, 对任意长度 (相对于一维谱要不发生频谱泄漏而须满足信号整周期截断而言) 、不同信噪比的正弦信号进行频率估计的实验结果。其中, N为做DFT的信号长度;T1为正弦信号一个周期里样本点数估计值;f1为正弦信号频率估计值;εf为频率估计的相对误差。不含噪声正弦信号的T=100、幅值为单位1、信号采样频率fs=100 Hz、信号频率f0=1 Hz。频率相对误差为
4结语
通过扩展传统DFT计算公式中信号长度N亦为变量, 给出了能够突显出信号更多有用信息、具有一定抗噪声能力、频率分辨率高的二维谱。在信号长度满足N≥8T时二维谱具有较佳表现力和准确度。二维谱的应用可推广至多频信号的分析处理中, 为信号的谱分析提供了一种新的频谱表征方式。本文给出的是一种以适度增大数据量为代价获得二维幅值谱, 从而达到提高信号频率估计精度和稳定性的方法, 为正弦信号的频率估计方法提供了一种新的参考思路。
参考文献
[1]祝俊, 唐斌, 陈真.快速高精度实正弦信号频率估计算法[J].电子测量与仪器学报, 2008, 22 (6) :65-69.
[2]QUINN B G.Estimating frequency by interpolation usingFourier coefficients[J].IEEE Transaction on Signal Pro-cessing, 1994, 42 (5) :1264-1268.
[3]RIFE D C, VINCENT G A.Use of the discrete Fouriertransform in the measurement of frequencies and levels oftones[J].Bell.Syst.Tech., 1970, 49 (2) :197-228.
[4]FUNGA H W, ALEX C, KOTB K H, et al.Parameter es-timation of a real signal tone from short data records[J].Signal Processing, 2004, 84:601-617.
[5]ZAKHAROV Y V, TOZER T C.Frequency estimator withdichotomous search of periodogram peak[J].ElectronicsLetters, 1999, 35 (19) :1608-1609.
[6]张松.基于FFT的正弦信号频率估算新方法[J].大理学院学报, 2009, 8 (8) :36-39.
[7]黄玉春, 黄载禄, 黄本雄, 等.基于FFT滑动平均极大似然法的正弦信号频率估计[J].电子与信息学报, 2008, 30 (4) :831-835.
[8]胡广书.数字信号处理——理论、算法与实现[M].北京:清华大学出版社, 1997.
[9]刘春艳, 韩峰, 梅秀庄.一种基于最小能量泄漏的信号周期估计方法[J].现代电子技术, 2009, 32 (7) :4-10.