《课程设计(论文)基于DDS的波形发生器设计.doc》由会员分享,可在线阅读,更多相关《课程设计(论文)基于DDS的波形发生器设计.doc(30页珍藏版)》请在三一办公上搜索。
1、课 程 设 计 任 务 书1设计目的:在学习专业基础课和专业课的基础上,主要在电子仪器、微机综合设计与实践、单片机与A/D和D/A和光、计、电综合应用等几个方面开展实践活动,巩固所学知识、培养动手能力。2设计内容和要求(包括原始数据、技术参数、条件、设计要求等):1、 学习DDS频率控制的原理。2、 研究AD9850芯片的工作原理和实用方法。3、 学习89C51单片机的基本理论。4、 设计流程图5、 根据流程图设计电路。3设计工作任务及工作量的要求包括课程设计计算说明书(论文)、图纸、实物样品等:1) 设计说明书符合要求;2) 相应器件的工作原理;3) 系统工作原理图;4) 参考文献原文不少于
2、3篇。 课 程 设 计 任 务 书4主要参考文献:1.盛启龙,董燕,汪小燕.基于DDS的高稳高纯频谱频率源的设计.无线电工程,2003年12期2.游少芳.基于DDS的任意信号发生器设计.哈尔滨工程大学,2007年3.白振华,赵兴群,夏翎,袁帅.基于DDS的任意波形发生器.现代科学仪器,2001年06期4.毛敏,郑珍,周渭.基于DDS的低通滤波器的设计与实现.电子科技,2006年03期5.张玉兴.DDS高稳高纯频谱频率源技术.系统工程与电子技术,1997年12期5设计成果形式及要求:设计说明书及相关电路图6工作计划及进度:12月 19日 12月 22日 了解设计题目及熟悉资料 12月 23日 1
3、2月 26日 确定各题目要求计算相关参数,确定具体设计方案12月 27日 1月 2日结合要求具体设计与仿真1月 3 日 1 月6日 整理课程设计说明书,答辩或成绩考核,系主任审查意见: 签字: 年 月 日 目录 1 DDS介绍 62 AD9850简介 11 2.1芯片性能 112.2AD9850的控制字及控制时序 122.3管脚定义 133 硬件部分 133.1基于AD9850的模块原理图 13 3. 硬件电路设计 144 软件部分 164软件部分设计 164.参考程序 17波形图 266结束语 29 7参考文献 30 基于DDS、AD9850芯片波形发生器的设计摘 要: 基于直接数字频率合成
4、 (DDS) 原理,利用 AT89C52 单片机作为控制器件,采用 AD9850型DDS器件设计一个信号发生器。给出了信号发生器的硬件设计和软件设计参数,该系统可输出正弦波、方波,且频带较宽、频率稳定度高,波形良好。该信号发生器具有更强的市场竞争力,在跳频技术、无线电通信技术方面具有比较广阔的发展前景。关键词: 信号发生器;直接数字频率合成;AD9850 芯片;AT89C52 单片机 1 DDS介绍一、DDS 引言频率合成技术是将一个(或多个)基准频率变换成另一个(或多个)合乎质量要求的所需频率的技术。在通信、雷达、导航、电子侦察、干扰与抗干扰等众多领域都有应用。随着各种频率合成器和频率合成方
5、案的出现,频率合成技术得到了不断的发展。1971年3月美国学者J.Tierncy,C.M.Rader和B.Gold首次提出了直接数字频率合成(DDS_Direct Digital Synthesis)技术。这是一种从相位概念出发直接合成所需要的波形的新的全数字频率合成技术。同传统的频率合成技术相比,DDS技术具有极高的频率分辨率、极快的变频速度,变频相位连续、相位噪声低,易于功能扩展和全数字化便于集成,容易实现对输出信号的多种调制等优点,满足了现代电子系统的许多要求,因此得到了迅速的发展。目前市面上的DDS芯片,价格昂贵、功能固定单一,应用受到限制。本综合实验项目采用基于FPGA的EDA技术设
6、计实现DDS芯片,并可以根据实际需要对其功能进行灵活地修改,配置。二、DDS 工作原理 一个纯净的单频信号可表示为: (2-1)只要它的幅度U和初始相位不变,它的频谱就是位于的一条谱线。为了分析简化起见,可令U=1,=0,这将不会影响对频率的研究。即: (2-2)如果对(2-2)的信号进行采样,采样周期为(即采样频率为),则可得到离散的波形序列: (2-3)相应的离散相位序列为: (2-4)式中: (2-5)是连续两次采样之间的相位增量。根据采样定理: (2-6)只要从(2-3)出来的离散序列即可唯一的恢复出(2-2)的模拟信号。从(2-2)可知,是相位函数的斜率决定了信号的频率;从(2-5)
7、可知,决定相位函数斜率的是两次采样之间的相位增量。因此,只要控制这个相位增量,就可以控制合成信号的频率。现将整个周期的相位2分成M份,每一份为,若每次的相位增量选择为的K倍,即可得到信号的频率: (2-7)相应的模拟信号为: (2-8)式中K和M都是正整数,根据采样定理的要求,K的最大值应小于M的1/2。综上所述,在采样频率一定的情况下,可以通过控制两次采样之间的相位增量(不得大于)来控制所得离散序列的频率,经保持、滤波之后可唯一的恢复出此频率的模拟信号。DDS工作原理框图如图2.1所示:图2.1 DDS原理框图其实质是以基准频率源(系统时钟)对相位进行等间隔的采样。由图2.1见,DDS 由相
8、位累加器和波形存储器(即,ROM查询表)构成的数控振荡器(NCO_ Numerically Controlled Oscillators)、数模转换器(DAC)以及低通滤波器(LPF)三部分组成。在每一个时钟周期,N位相位累加器与其反馈值进行累加,其结果的高L位作为查询表的地址,然后从ROM中读出相应的幅度值送到DAC。再由DAC将其转换成为阶梯模拟波形,最后由具有内插作用的LPF将其平滑为连续的正弦波形作为输出。因此,通过改变频率控制字K就可以改变输出频率。在这里,。由上面的分析可得DDS的输出频率: (2-9)由上式可知,DDS的最小输出频率为: (2-10)DDS的频率分辨率为: (2-
9、11)DDS频率输入字的计算:FW(N-1:0) = 2Nf0/fc (2-12)三、 DDS基本结构组成一个基本的DDS系统由数控振荡器(NCO)、数模转换器(DAC)和低通滤波器(LPF)三部分构成,如图3.1所示:图3.1 DDS的基本结构数控振荡器(NCO)产生频率可控制的数字正弦载波,通过数模转换器(DAC)得到模拟正弦波,最后经过低通滤波器(LPF)除去各种干扰信号。本实验项目中的设计主要针对数控振荡器(NCO)部分,DAC部分直接采用实验系统箱提供的数/模转换电路。四、DDS的设计在DDS的设计中其最基本的构件是相位累加器和波形存贮器。通常也可在波形存贮器前面加一个相位调制器,使
10、其具有相位调制的功能,为了防止频率控制字、相位控制字改变时干扰相位累加器和相位调制器的正常工作,分别在这两个模块前面加入了两组寄存器,从而灵活且稳定地控制频率字和相位字的输入。如图4.1所示:图4.1 DDS的构成图图中相位累加器(phasea)是整个DDS的核心,在这里完成相位累加功能,其输入是相位增量,又可称为频率控制字,由于与输出频率是简单的线性关系: (41)事实上当基准时钟是时, 就等于。相位调制器(phasemod)接收相位累加器的相位输出,在这里加一个相位偏移值,主要用于实现信号的相位调制,如PSK(相移键控)等,在不使用时可以去掉该部分,或加一个固定的相位控制字。波形存储器(即
11、,正弦ROM查找表)(sinlup)把存储在相位累加器中的抽样值转换成正弦波幅度的数字量函数,可理解为相位到幅度的转换。它的输入是相位调制器输出的高M位(而并非全部N位)值,将其作为正弦ROM查找表的地址值;查询表把输入的地址相位信息映射成正弦波幅度信号;输出送往DAC,转化为模拟信号。2 AD9850简介2.1芯片性能随着数字技术的飞速发展,用数字控制方法从一个参考频率源产生多种频率的技术,即直接数字频率合成(DDS)技术异军突起。美国AD公司推出的高集成度频率合成器AD9850便是采用DDS技术的典型产品之一。AD9850采用先地蝗CMOS工艺,其功耗在3.3V供电时仅为155mW,扩展工
12、业级温度范围为-4080,采用28脚SSOP表面封装形式。AD9850的引脚排列,图2为其组成框图。图2中层虚线内是一个完整的可编程DDS系统,外层虚线内包含了AD9850的主要组成部分。AD9850内含可编程DDS系统和高速比较器,能实现全数字编程控制的频率合成。可编程DDS系统的核心是相位累加器,它由一个加法器和一个N位相位寄存器组成,N一般为2432。每来一个外部参考时钟,相位寄存器便以步长M递加。相位寄存器的输出与相位控制字相加后可输入到正弦查询表地址上。正弦查询表包含一个正弦波周期的数字幅度信息,每一个地址对应正弦波中0360范围的一个相位点。查询表把输入地址的相位信息映射成正弦波幅
13、度信号,然后驱动DAC以输出模式量。相位寄存器每过2N/M个外部参考时钟后返回到初始状态一次,相位地正弦查询表每消费品一个循环也回到初始位置,从而使整个DDS系统输出一个正弦波。输出的正弦波周期To=Tc2N/M,频率fout=Mfc/2N,Tc、fc分别为外部参考时钟的周期和频率。AD9850采用32位的相位累加器将信号截断成14位输入到正弦查询表,查询表的输出再被截断成10位后输入到DAC,DAC再输出两个互补的电流。DAC满量程输出电流通过一个外接电阻RSET调节,调节关系为ISET=32(1.148V/RSET),RSET的典型值是3.9k。将DAC的输出经低通滤波后接到AD9850内
14、部的高速比较器上即可直接输出一个抖动很小的方波。AD9850在接上精密时钟源和写入频率相位控制字之间后就可产生一个频率和相位都可编程控制的模拟正弦波输出,此正弦波可直接用作频率信号源或经内部的高速比较器转换为方波输出。在125MHz的时钟下,32位的频率控制字可使AD9850的输出频率分辨率达0.0291Hz;并具有5位相位控制位,而且允许相位按增量180、90、45、22.5、11.25或这些值的组合进行调整。流程如图(2)。2 .2AD9850 的控制字及控制时序AD9850 的控制字有 40 位 ,其中 32 位是频率控制位 ,5 位是相位控制位 ,1 位是电源休眠控制位 ,2 位是工作
15、方式选择控制位。在应用中 ,工作方式选择位设为00 ,因为 01 ,10 ,11 已经预留作为工厂测试用。频率控制位可通过下式计算得到:f out = ( f r W) / 232其中: f out 要输出的频率值; f r 为参考时钟频率;W 为相应的十进制频率控制字, 然后转换为十六进制即可。AD9850 有串行和并行两种控制命令字写入方式。其中串行写入方式是采用 D7 作为数据输入端 ,每次W_CL K的上升沿把一个数据串行移入到输入寄存器40 位数据都移入后 ,FQ_UD 上升沿完成输出信号频率和相位的更新。串行控制字的写入时序如图 3 所示。但是要注意的是 ,此时数据输入端的三个管脚
16、不可悬空 ,其中D0 ,D1 脚接高电平 ,D2 脚要接地。 参考时钟 微 控制器 相位累加器低通滤波 模数转换器 波形转换和算法Sin信号矩形波端口比较器 图(2) 图(3)2.3管脚定义3 硬件部分3.1基于AD9850的模块原理图硬件电路设计AD9850 控制字的写入方式有串行和并行两种。并行写入方式的优点是数据传输的速度快 ,能够提升整个系统的处理速度 ,但占用的单片机的 I/ O 口资源太多。与并行方式相比 ,串行写入方式在数据传输的速度上要慢些 ,但它更大优点是能节省很多 I/ O 口资源8 。所以 ,本系统采用A T89S52 单片机作为控制核心 ,通过串行写入控制字的方式控制
17、AD9850 芯片 ,加上键盘和L ED 显示部分等外围电路 ,构成整个系统电路。为了详细介绍 AD9850 的用法 ,这里重点给出本系统中A T89S52 单片机与 AD9850 芯片连接电路 ,如图 4 所示 ,其中 R1 = 1 k, R2 = 10k, R3 = 1k,单片机晶振选用12 MHz ,电容采用 30 p F 经典值。单片机采用12 MHz晶振时 ,它的高电平时间能够满足 AD9850 。图() 4软件部分4 软件部分设计软件程序的功能就是通过程序使整个系统按照人们的设想要求工作起来 ,本系统中最主要的部分就是将AD9850 的 40 位控制字通过单片机写入到 AD9850
18、 芯片内 ,系统的程序流程图如图 4 所示。要根据写入控制字方式的不同严格按照 AD9850 的时序图来编写控制字写入子程序。本文主要给出串行写入方式的C源程序以供读者调试参考。开始单片机初始化 串口初始化 控制字下载到控制子程序更新的控制字结束 4.参考程序/* 函数:关于AD9850的DDS调频*/#include #include #include #define uchar unsigned char #define uint unsigned int#define WRITE_DATA_IO P1 /定义AD9850数据端口#define LED_DATA_IO P0 /定义LED灯
19、数据端口Unsigned char code duanma=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x80;/设置数码管段码0-9unsigned char code weima=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/设置数码管位码uchar WRITE_DATA5; /9850频率和控制字,WRITE_DATA5为控制字,其他32位为频率字uchar display_data8; /8位数码管的数值unsigned long frequence; /无符号长整形数值,我们需要输入的频率u
20、int MHZ, KHZ , HZ; /将需要的频率分解为MHZ,KHZ,HZuchar AD9850_temp; /AD9850工作标志位sbit W_SLK = P20; /AD9850字节输入,上升沿有效sbit DQ_VD = P21; /AD9850四字节输入后,上升沿有效sbit key_unit = P22; /按键的个位sbit key_decade = P23; /按键的十位sbit key_power = P24; /按键的十次幂 sbit key_sure = P25; /按键确认sbit weila = P26;/LED数码管的位码sbit duanla = P27;/
21、LED数码管的段码/*函 数:延时函数,延时tms入口函数:无出口频率:无*/void delay1ms(uchar t)uchar tt;while(t-)tt= 125;while(tt-);/*LED显示函数*/*函 数:初始化定时器0入口函数:无出口频率:无*/void INIT_time0()TMOD |= 0x01;TH0 = -2000 / 256;TL0 = -2000 % 256;EA = 1;ET0 = 1;TR0 = 1;/*函 数:LED数码管在start位开始显示num数据入口函数:start是数据从第几位显示,num是显示多少位出口频率:无*/void LED_di
22、splay(uchar start, uchar num)static unsigned char i = 0;uchar delay = 15; if(AD9850_temp = 1) display_data0 = MHZ / 10; /将频率分解让数码管显示display_data1 = MHZ % 10;display_data2 = KHZ / 100;display_data3 = KHZ % 100 / 10;display_data4 = KHZ % 10;display_data5 = HZ / 100;display_data6 = HZ % 100 / 10;displa
23、y_data7 = HZ % 10; LED_DATA_IO = 0xed; /显示两个小数点weila = 1; /位码锁存weila = 0;LED_DATA_IO = duanma10;duanla = 1;duanla = 0;while(delay-);LED_DATA_IO = weimai+start;weila = 1;weila = 0;LED_DATA_IO = duanmadisplay_datai;duanla = 1;duanla = 0; i+;if(i = num)i = 0; /*函 数:中断函数入口函数:无出口频率:无*/void INT_time0() in
24、terrupt 1 TH0 = -2000 / 256;TL0 = -2000 % 256;LED_display(0, 8);/*按键函数*/*函 数:按键初始化,确定频率的大小入口函数:无出口频率:无*/void INIT_key()reentrant /可从入函数uchar unit = 0,decade = 0, power = 0, i;AD9850_temp = 0;/AD9850开始标志位关闭memset(display_data, 0, 8); while(1) if(key_unit = 0)/个位键delay1ms(20); /延时,防抖动if(key_unit = 0)w
25、hile(key_unit = 0);unit+;if(unit = 10 )unit = 0;display_data6 = unit;if(key_decade = 0)/十位键delay1ms(20);if(key_decade = 0)while(key_decade = 0);decade+;if(decade = 10)decade = 0;display_data5 = decade;if(key_power = 0) /10次幂键delay1ms(20);if(key_power = 0)while(key_power = 0);power+;if(power = 7)powe
26、r = 0;display_data7 = power;if(key_sure = 0) /确定键delay1ms(20);if(key_sure = 0)while(key_sure = 0);break; frequence = unit + 10*decade; /将按键得到的数值进行变换,得到我们需要的频率 for(i = 1; i = 20000000) /由于AD9850的频率范围是120MHZ,所以超过了就重新输入frequence = 0;INIT_key(); MHZ = frequence / 1000000; /将频率分解位MHZ,KHZ,HZ,主要是为了在中断中计算量少
27、些,以免影响中断效果KHZ = frequence % 1000000 / 1000;HZ = frequence %1000;AD9850_temp = 1; /AD9850开始标志位开启/*AD9850函数*/*函 数:进行9850的DDS函数发生,写入控制字,写入频率字 从高字往低字写入口函数:需要的频率出口频率:无*/void AD9850_WRITE() unsigned long temp;char i;W_SLK = 0;DQ_VD = 0; temp = (unsigned long)(34.359738368 * frequence);for(i = 0; i (i * 8)
28、;for(i = 4; i = 0; i-)W_SLK = 0;WRITE_DATA_IO = WRITE_DATAi;W_SLK = 1;_nop_();DQ_VD = 1; /*主函数*/*函 数:主函数,完成对全局的操控入口函数:无出口频率:无*/void main() INIT_time0();/初始化时间中断 while(1) if(key_sure = 0)delay1ms(20);if(key_sure = 0)while(key_sure = 0); INIT_key(); AD9850_WRITE(); 5波形图 1.9MHZ正弦波 1HZ方波 1HZ正弦波 1方波 实物 正弦波 6结束语 本模块学习是基于AD9850的DDS信号发生器的基础上,通过了解AD9850的工作原理和工作要求来完成正弦波.矩形波等波形在系统时钟125M的条件下的学习。 本次学习得到了精度很高的正弦波和矩形波,其占空比为46.5%已经很接近预期的结果。7参考文献1 张迎春.单片微型计算机原理、 应用及接口技术M .北京:国防工业出版社 ,2004.2 陈小忠.单片机接口技术实用子程序M . 北京:人民邮电出版社 ,2005.3 ADI公司. ht tp :/ / www. analog. com EB/ OL 4alldatasheet.网站