课程设计(论文)-基于ARM7LPC2138的多功能信号源设计.doc_第1页
课程设计(论文)-基于ARM7LPC2138的多功能信号源设计.doc_第2页
课程设计(论文)-基于ARM7LPC2138的多功能信号源设计.doc_第3页
课程设计(论文)-基于ARM7LPC2138的多功能信号源设计.doc_第4页
课程设计(论文)-基于ARM7LPC2138的多功能信号源设计.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

多功能信号源设计基于ARM的多功能信号源设计【摘要】本设计主要研究和设计基于ARM(LPC2138)嵌入式系统的多功能数字信号发生器,采用数值计算合成和D/A转换模块来完成,可产生输出频率及幅度可调,频率范围为1HZ50KHZ的正弦波、方波、三角波及其复合波信号,具有信号频率、波形、幅度变化容易,硬件简单可靠等特点。目 录引言 1 1 系统设计任务与要求11.1设计任务 1 1.2 设计要求1 2 方案论证及选择12.1信号产生部分1 2.2 幅度调制(AM)信号的产生22.3 频率调制(FM)信号的产生22.4 滤波电路23 系统设计 33.1 系统框图33.2 各功能模块3 3.2.1波形产生电路3 3.2.2键盘模块33.2.3滤波器设计33.2.4显示模块33.3各个功能块的实现原理及分析 3 3.3.1正弦波的产生3 3.3.2三角波的产生43.3.3方波的产生43.3.4复合波形的产生43.3.5幅度的控制4 3.3.6频率的控制43.3.7滤波器设计43.3.8键盘模块44 软件设计 55 系统测试与数据分析 75.1 测试工具7 5.2 测试数据及表格75.2.1 频率与间隔点数的计算75.2.2 不同波的幅度与频率的测试75.3 调试结果图9 5.3.1 三角波95.3.2 正弦波95.3.3 方波105.3.4 合成波106 结论 11致谢语 11参考文献11附录 13引 言信号发生器是用来提供各种测量所需信号的仪器,它是一种常用的信号源,广泛应用于电子电路、自动控制和科学试验等领域。在分析电子线路时,常常需要了解输出信号与输入信号之间的关系,为此常信号发生器产生一个信号来激励系统,以便观察、分析它对激励信号的反映。自十九世纪六十年代以来,信号发生器有了迅速的发展出现了函数发生器、扫频信号发生器、合成信号发生器、程控信号发生器等新种类,各类信号发生器的主要性能指标也都有了大幅度的提高,同时在简化机械结构、小型化、多功能等各方面也有了显著的进展1。在实际应用中,低频信号发生器用来产生1HZ一1MHZ的低频信号,这种信号发主器在电子线路与系统的设计、测试和维修中的应用最为广泛。本设计以LPC2138为控制芯片,探索研究了低频信号发生器的原理和应用,设计输出频率及幅度可调,频率范围为1HZ50KHZ的正弦波、方波、三角波、调幅波、调频波及其复合波信号,具有信号频率、波形、幅度变化容易,硬件简单可靠等特点的多功能信号源。1 系统设计任务与要求1.1 任务设计一个多功能信号发生器1.2 要求(1)能够产生正弦波、方波和三角波(频率范围1HZ50KHZ)(2)能产生由以上波形整合成的复合波形()实现波形间的切换2 方案论证及选择2.1 信号产生部分方案一:使用集成函数发生器芯片ICL8038。芯片ICL8038能输出方波、三角波、正弦波和锯齿波四种不同的波形,将他作为信号发生器。它是电压控制频率的集成芯片,失真度很低。可输入不同的外部电压来实现不同的频率输出。为了达到数控的目的,可用高精度DAC来输出电压以控制正弦波的频率。方案二:锁相环频率合成器(PLL)2锁相环频率合成器(PLL)是常用的频率合成方法。锁相环由参考信号源、鉴相器、低通滤波器、压控振荡器几个部分组成。通过鉴相器获得输出的信号FO与输入信号Fi的相位差,经低通滤波器转换为相应的控制电压,控制VCO输出的信号频率,只有当输出信号与输入信号的频率于相位完全相等时,锁相环才达到稳定。 如果在环路中加上分频系数可程控的分频器,即可获得频率程控的信号。由于输出信号的频率稳定度取决于参考振荡器信号fi ,参考信号fi 由晶振分频得到,晶振的稳定度相当高,因而该方案能获得频率稳定的信号。一般来说PLL的频率输出范围相当大,足以实现1kHz10MHZ的正弦输出。如果fi100Hz只要分频系数足够精细(能够以1步进),频率100Hz步进就可以实现。方案三:直接数字频率合成(DDS)3 DDS是一种纯数字化方法。它现将所需正弦波一个周期的离散样点的幅值数字量存入ROM中,然后按一定的地址间隔(相位增量)读出,并经DA转换器形成模拟正弦信号,再经低通滤波器得到质量较好的信号。方案四:基于计算的数字频率合成4 利用函数将波形的点数保存在芯片的RAM中,根据所要的波形的频率计算出它的周期,经计算得到在定时器定时时间固定的前提下产生一个完整的波形所需要的输出的点数,这样数据指针可以根据点数的数量来进行移动,得到频率准确、切换快速的信号。方案一(VOC)不能实现稳定频率信号的输出并且难于数字控制。并且电容、电阻参数随温度等其他因素的影响,频率稳定度以及电路的稳定度都较低,实现也较复杂,不予采纳。虽然ICL8038可很好的实现频率输出的控制,但查看ICL8038的设计资料4可知其频率输出范围为0.01Hz300kHz,不能达到题目的要求,故不予选用。PLL方案和DDS方案都能实现1kHz10MHz的稳定的信号输出,且能达到100Hz频率步进,但是PLL的动态特性却很差,在频率改变时,环路从不稳定到稳定的过程有时间延迟。相比较而言,DDS的频率输出范围一般低于PLL,且杂散也大于PLL方案,但DDS信号源具有输出频率稳定度高、精度更高、分辨率更高且易于程控等优点,且频率改变不存在失调过程,尽管有杂散干扰,只需在输出级加滤波器仍可以得到质量很好的波形。而方案四集中了上述三个方案的各个优点,因此采用方案四来实现波形信号的产生。2.2 对幅度进行调整方案一:用高速模拟乘法器实现采用AD835高速模拟乘法器,来实现模拟调制。模拟乘法器AD835的3dB截止频率为250MHz,能够满足题目的要求。但是AD835的差分输入范围仅为1V,因此必须对输入信号进行预处理,这样在增加硬件的同时,又加大了设计的难度。方案二:采用高速的D/A转换器在LPC2138中集成着一个高速的D/A转换器5,我们可以直接在软件中设置一个幅度的参数来改变输出波形的幅度大小。综上所述,采用方案(二)虽然增加了软件的难度,延迟了波形的输出时间,但是可以不用外加硬件拓展,节省了成本。2.3 对频率进行调整方案一: 通过在存储芯片ROM中保存不同频率信号的信号发生点数,在频率切换时调用ROM中所存储的不同点数模块来实现频率的切换。方案二: 在存储芯片RAM中保存由软件实时产生的波形点数,通过所取的点数的不同来决定发生的波形的频率。 由于设计中的信号要进行不断的改变,因此波形的数据不能存储在ROM中,应该存储RAM中,因此采用方案二的设计方法。2.4 滤波电路方案一:利用运放芯片TL082构成的有源二阶巴尔沃基滤波器6,它的频率范围可以达到1MHZ,远远高于我们所要的达到的最高频率,而且可以同时提高输出电压的稳定性即带载能力。方案二:采用硬件构建的模拟滤波器,通常这种滤波电路主要采用无源元件R,L和C组成的低通滤波电路6。其优点是具有不用电感,体积小,重量轻等优点;缺点是其集成运放的带宽有限,电路的工作频率有限难以做得很高。由于所设计的信号源的频率相对来说不是很高,采用RC滤波器已经可以很好的完成设计的要求。因此采用方案二。3 系统设计3.1 系统框图(如图3-1) 图3-1 系统方框图3.2 各功能模块3.2.1 波形产生电路通过软件将波形数据存储到RAM当中去,再把这些数据输送到D/A转换器进行转换得到模拟波形。3.2.2 键盘模块用LPC2138开发板上自身带有的键盘得到键值,通过中断服务程序将键盘信息传给控制芯片。3.2.3 滤波器设计直接采用RC过程的简单的滤波电路,此方法设计简单,又完全满足设计要求。 3.2.4 显示模块 波形直接在示波器上显示,波形的中间调试参数在上位机EasyARM2131上显示,这样节省了外部显示模块的扩展,使得硬件电路更加的简便。3.3 各个功能块的实现原理及分析3.3.1 正弦波的产生 本设计中信号的产生直接用LPC2138芯片上集成的D/A转换器和软件的结合来生成。波形的信号数据采用了函数计算的方法来取得: Y=sin(N)7 (3-1)其中,N表示所要取得的点数的多少。在设计中我选择N=1024,即一个完整的基本的正弦信号有1024个数据信号点组成。将数据存储到控制芯片LPC2138的RAM当中,根据所要的频率来取得信号数据的多少,点数多少的计算如下: N=T/2t7 (3-2)其中,N表示点数,T表示所要产生的波形信号的周期,t表示定时器的时间长短.从RAM中 取得点数的间隔为: M=1023/N8 (3-3)其中M表示在RAM中的表格取得点数的间隔.根据不同的间隔的大小决定产生一个完整的波形信号所要的数据多少不同.设计中要求信号的最高产生的频率为50KHZ, 根据奈奎斯特定理,采样的频率最少要为所要信号的频率的两倍,但是为了更好的保证信号的完整输出,我们至少要让它采样10个点才能输出完整波形,就要求采样的频率为他的10倍即500KHZ,采样时间的大小为2us,这刚好满足了LPC2138控制芯片上的集成D/A转换器最高转换时间为1us的限制。3.3.2 三角波的产生在设计中,三角波的产生就直接利用定时器定时时间的长短来控制信号数据的输出,信号数据从一个较低(或高)的位置开始按照一定的规律步进9,当其达到一个高度时再按照相同的步进下降到原来的数据大小,如此反复的输出就构成了三角波模拟信号的输出。3.3.3 方波的产生 在设计中,方波的产生由大小不同的两个信号数据交替输出形成,每个信号数据输出的时间长短根据所要点信号频率来决定。3.3.4 复合波形的产生 复合波形由正弦波、方波和三角波合成。V(wt)=A*Vsin(wt)+B*Vpul(wt)+C*Vtri(wt)10 (3-4)其中:V(wt)为复合波形函数,Vsin(wt) 为正弦,Vpul(wt)为方波, Vtri(wt)三角波,A、B、C为他们在复合波形中所占的比率系数,只要改变三个比例系数就可以得到不同的复合波形。根据波形合成的知识,要使多个波形合成必须保证子波形的频率是一致的,因此,设计时三种波形的组成信号数据的多少是一样的,这样在定时时间一样的情况下就保证了三个波形的频率是一样的。3.3.5 幅度的控制在设计中,为了能使波形在示波器中显示,这样就要设定好波形的幅度,在设计时我把波形的幅度控制在1024之内,才能很好的显示波形。同时为了改变幅度的大小,我设置了一个参数直接与所取得的信号数据相乘,这就改变了信号数据的大小,也就使得D/A转换时的数据大小产生变化,从而体现在输出的信号波形在幅度上发生改变。3.3.6 频率的控制在输出的信号数据的时间间隔一定时,当产生一个完整波形时所需要的点数发生变化时信号的周期就发生变化,这样它的频率就相应的变化。因此,在设计中, 通过固定定时器的定时长短,改变波形数据的点数多少就改变了信号的频率。3.3.7 滤波器设计由于我所设计的信号源的输出频率还不是很高,所以可以用简单的低通滤波器就可以完成滤波的功能,因此我选择使用RC低通滤波器。参数为:R=100欧姆,C=0.1UF。具体结构如下: 3.3.8 键盘模块键盘是直接与ARM(LPC2138)芯片的P0口P0.16P0.21连接,通过ARM芯片对P0.16P0.21输入数据,0表示有效,1表示无效11。键1用来选择输出波形,键2用来选择所要改变的参数,键3和键4用来加/减键3所选的参数4 软件设计键2键1NY进入中断键盘扫盘判断是否有键按下?正弦波三角波方波合成波幅度频率正弦比例方波比例三角波比例参数加参数减中断结束中断0中断1对波形进行选择4321NY进入中断CANSHU=?正弦波方波三角波合成波退出中断5 系统测试与数据分析5.1 测试工具双踪示波器 YB-4325(20MHZ)万用表5.2 测试数据及表格5.2.1 频率与间隔点数的计算由于正弦波总的波形长度分为1024个分点,即01023,因此在频率为fKHz时,点数n=1000/2/f,所以间隔=1023*n,具体如下:频率(KHz)间隔点数频率(KHz)间隔点数频率(KHz)间隔点数频率(KHz)间隔点数153124493368428616332551347043881735265335724490183727553674459219392857377646942041295938784796214330613980489822453163408249100234732654184501025.2.2 不同波的幅度与频率的测试根据精度的计算方法可知,波形产生的精度=1/10230.001,即偏差为0.0005,这使产品产生的波形达到了很高的精度。波形预定频率(HZ)正弦波方波三角波合成波幅度(V)频率(HZ)幅度(V)频率(HZ)幅度(V)频率(HZ)幅度(V)频率(HZ)100 2.51002.01002.51002.01001000 2.510002.010002.510002.0100015002.515002.015002.515002.01000020002.520002.020002.520002.02000025002.525002.025002.525002.0250030002.530002.030002.530002.0300035002.535002.035002.535002.0350040002.540002.040002.540002.0400050002.550002.050002.550002.0500060002.560002.060002.560002.0600070002.570002.070002.570002.0700080002.580002.080002.580002.0800090002.590002.090002.590002.09000100002.5100002.0100002.5100002.010000110002.5110002.0110002.5110002.011000120002.5120002.0120002.5120002.012000130002.5130002.0130002.5130002.013000140002.5140002.0140002.5140002.014000150002.5150032.0150002.5150002.015005160002.5160032.0160002.5160002.016007170002.5170052.0170002.5170002.017009180002.5180062.0180002.5180002.018010190002.5190022.0190002.5190002.019004200002.5200032.0200002.5200002.020005250002.5249952.0250002.5250002.024999300002.5301502.0300002.5300002.030150350002.5351002.0350002.5350002.035120400002.5402552.0400002.5400002.040261450002.5451002.0450002.5450002.04525050002.5502002.0500002.5500002.0502205.3 调试结果图5.3.1 三角波 频率=200HZ 幅度=2.4V5.3.2 正弦波 频率=40HZ 幅度=100MV5.3.3 方波频率=1000HZ 幅度=2V5.3.4合成波频率=100HZ 幅度=0.8V6 结论本设计以LPC2138为核心很好的完成了设计的要求,在设计中力求硬件电路的简单,充分发挥软件的编程的方便灵活的特点,并最大限度挖掘嵌入式系统内资源,来满足系统设计要求。附录:(程序)*#include config.h#include math.h#include stdio.hconst uint32 LED1=( 1 18);/ P0.7控制蜂鸣器,低电平蜂鸣(#DEFINE BEEP OX00000070)const uint32 LED2=( 1 19);const uint32 LED3=( 1 20);const uint32 LED4=( 1 21);const uint32 LED5=( 1 22);const uint32 LED6=( 1 23);const uint32 LED7=( 1 24);const uint32 LED8=( 1 25);#define BEEP 17#define key1 116#define key2 117#define key3 118#define key4 119#define key5 120#define key6 121 uint32 pinsave; #define pinvalue (0x3f= 80)x = 0;y+;/*/ *正弦/*/ void sin_wave(void) if(a = 1024) a=0; DACR=(tablea+)*hight/26)1020) zj_flag=1; else b-=2; if (b10) b=10; zj_flag=0; DACR=(b*hight/26)6); /*/ *方波/*/ void fang_wave(void) k+; if(k1024) k=1;DACR=(c6); /*/ *合成波 /*/ void hecheng(void) if(l512) b=b+1;da=(tablea+)/20+256+(b)/10;elseb=b-1;da=(tablea+)/20+1+(b)/10; DACR=(da1024) l=0; if(a = 1024) a=0; T0IR = 0x01; VICVectAddr = 0x00; /*/* 函数名称 :IRQ_Timer0()* 函数功能 :定时器0中断服务程序,取反LED9控制口。* 入口参数 :无* 出口参数 :无/*/void _irq IRQ_Timer0(void) pinsave=(IO0PIN&pinvalue); if(pinsave!=pinvalue) while(delay+=2) delay=0; if(pinsave = (IO0PIN&pinvalue) switch(pinsave) case 0x003e0000: bo=bo+1; if(bo4) bo=1; break; case 0x003d0000: canshu+=1; if(canshu2) canshu=1; break; case 0x003b0000: switch(canshu) case 1: if(hight26) hight=hight+1; break; case 2: if(fc100) fc=fc+2; break; break; case 0x00370000: switch(canshu) case 1: if(hight26) hight=hight-1; break; case 2: if(fc100) fc=fc-2; break; break; T0IR=0x01; VICVectAddr=0x00;/*/* 函数名称 :Timer1_CapInt()* 函数功能 :定时器1捕获中断服务程序* 入口参数 :无* 出口参数 :无/*/void _irq IRQ_Timer1(void) switch(bo) case 1: sin_wave(); break; case 2: trip_wave(); break; case 3: fang_wave(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论