频率合成器课程设计总结报告指导教师:***组员:李刚、魏虹宇、张朋、蒙荣鸿专业:电子信息科学与技术092日期: 2012年1月1日摘要:本设计是关于锁相环频率合成器的设计,设计主要由电源、自制压控振荡器(VCO)、锁相环频率合成器(PLL)、单片机控制(MCU)显示以及键盘操作五部分组成。
电源部分采用稳压芯片获得稳定的3.3V以及5V的电压输出,压控振荡器采用MAX2620芯片外接电感电容并联谐振回路制成,锁相环频率合成器采用ADF4106制成,、采用AT89C52单片机作为系统的控制单元。
基本要求:输出频率可改变,输出功率可调整。
扩展要求:具有显示功能,具有键盘控制功能。
关键词:锁相环(PLL)、压控振荡器(VCO)、环路滤波(LPF)、单片机(MCU)Abstract:This design is about lock cirtle frequency synthesizer design, design mainly by power supply, self-control voltage control oscillation (VCO), and phase lock loop (PLL) frequency synthesizer and single-chip microcomputer control (MCU) display and keyboard five parts. The power supply voltage of the chip made steady 3.3 V and 5 V voltage output, controlled oscillator MAX2620 adopts chip made, lock cirtle frequency synthesizer made by ADF4106, by AT89C52 single chip microcomputer as system, the control unit. Basic requirements: output frequency can change, output power can be adjusted. Expand requirements: display function with the keyboard control function.Key words:Phase lock loop (PLL)、Voltage control oscillation (VCO)、LPF、SCM (MCU)目录11..任务111..11..要求 (1)1.1.1.自制VCO振荡器 (1)1.1.2.锁相环频率合成器设计 (1)22..方案的比较论证及选择 (1)22..11..VCO振荡器部分 (2)2.1.1.方案一: (2)2.1.2.方案二: (2)2.1.3.方案比较与选择: (2)22..22..PLL锁相环部分 (2)2.2.1.方案一: (2)2.2.2.方案二: (2)2.2.3.方案比较与选择: (2)22..33..显示部分 (3)2.3.1.方案一: (3)2.3.2.方案二: (3)2.3.3.方案比较与选择: (3)22..44..键盘部分 (3)2.4.1.方案一: (3)2.4.2.方案二: (3)2.4.3.方案比较与选择: (3)33..单元模块的设计 (4)33..11..VCO电路设计 (4)33..22..鉴相器电路设计 (4)33..33..控制电路设计 (5)33..44..电源电路设计 (5)33..55..整体电路设计 (6)33..66..软件设计 (7)44..安装调试说明 (8)44..11..元器件装配图 (8)44..22..硬件部分调试步骤: (8)4.2.1.电源模块 (8)4.2.2.压控振荡器 (8)4.2.3.鉴相器 (9)4.2.4.软件控制部分调试步骤 (9)55..测试报告 (10)55..11..测试条件 (10)55..22..测试步骤 (10)55..33..测试结果 (10)66..设计总结 (10)77..附录一111.任务图1 整体框图11..11..要求1.1.1.自制VCO振荡器要求:VCO振荡器输出频率在77MHz~113MHz之间选择,输出功率≥-10dBm。
1.1.2.锁相环频率合成器设计要求:输出频率在10MHz~1000MHz之间选择,输出范围≥10MHz,输出功率≥-10dBm。
输出频率由按键控制,可增加、可减小,最小步进≤1MHz。
输出功率可调整,调整范围至少在-10dBm~ -40dBm之间。
2.方案的比较论证及选择项目分析:根据教学大纲要求,结合本专业学生的专业知识,设计出一个频率合成器电路。
基本要求:自制压控振荡器,选用锁相环芯片构建锁相环频率合成器,输出频率可改变,输出功率可调整。
扩展要求:具有显示功能,具有键盘控制功能。
电路设计中,VCO电路采用芯片加外围谐振电路的方式,用外接变容管实现频率变化。
PLL电路采用集成芯片,结合控制电路,通过键盘输入,改变输出信号的频率,并采用数码管方式,显示出输出频率的值。
输出功率通过电位器调节,实现输出功率的变化。
22..11..VCO振荡器部分2.1.1.方案一:采用分立元器件搭;2.1.2.方案二:采用集成芯片MAX2620进行制作;2.1.3.方案比较与选择:方案一采用分立元件搭,工程量较大,不稳定因数较多,对于调试难度较大,方案二采用集成的芯片,大大的减少了外围电路,稳定性得到了较大的提高,调试起来也比较的方便,因而对于VCO部分我们采用基于MAX2620集成芯片的制作方案。
22..22..PLL锁相环部分2.2.1.方案一:采用分立元器件搭;2.2.2.方案二:采用集成的芯片ADF4106进行制作;2.2.3.方案比较与选择:方案一采用分立元件搭,工程量较大,不稳定因数较多,对于调试难度较大,方案二采用集成的芯片ADF4106,利于小型化与集成化.具有良好的短期与长期稳定度。
集成化后的反应速度也有所提高,可以进一步缩短锁定的时间,因而采用方案二来的更加合理。
22..33..显示部分2.3.1.方案一:采用字符式LCD显示;2.3.2.方案二:采用数码管动态扫描显示;2.3.3.方案比较与选择:方案一采用LCD首先在制作成本上比较高,对于教学实验课程没有这个必要性,再有它的体积比较大,对于小型化设计不是很理想。
方案二原理简单,编程容易,结构小巧,对于本课程实验完全可以满足显示需求。
并且价格低廉,综上我们选择方案二。
22..44..键盘部分2.4.1.方案一:使用PC机键盘,通过PS/2接口与单片机相连;2.4.2.方案二:直接用单片机的I/O口接常开开关做成按键。
2.4.3.方案比较与选择:方案一输入方便,与单片机连接只需要两个I/O口,但是PC机键盘比较大,编程量大;方案二硬件连接简单,编程也简单。
为了操作界面简单简洁,我们用只需要用四个按键就可以实现所有的操作,因此我们选择方案二。
3.单元模块的设计33..11..VCO电路设计压控振荡器主要功能是产生并输出具有一定频率的正弦信号,其振荡源由外加电压控制。
1VCO部分图 2 自制VCO原理图33..22..鉴相器电路设计由于锁相频率合成技术具有优良的特性,特别是随着数字电路的高速发展,锁相合成器件更是得到进一步的使用,锁相合成器具有良好的窄带跟踪特性,可以很好的选择所需的频率信号,抑制杂散分量,并且具有避免了大量滤波器的优点,利于小型化。
同时还具有良好的短期与长期稳定度。
这里我们采用ADF4016锁相环芯片,结合外围电路,设计出频率合成器电路。
V3图3 锁相环原理图33..33..控制电路设计采用AT89C52单片机进行控制,配备有有键盘输入功能和数码管显示功能。
键盘输入改变输出信号频率,能实现100KHz的最小频率步进。
数码管能够显示相应的输出信号的频率。
PLL芯片的控制采用串行数据输入。
码管X4单片机控制部分图4 单片机控制原理图33..44..电源电路设计由于电路设计中,有几组电源要求,采用电源管理芯片,分别输出3.3V与5V两组电源给系统供电,并设计出电源监测和保护电路。
电源部分图5 电源部分原理图33..55..整体电路设计对PLL电路、控制电路和电源管理电路进行综合,绘制出整体电路原理图和印制板图。
图6 整体原理图图 7 PCB 图33..66.. 软件设计根据控制电路的要求,画出软件流程图,并结合选用的控制电路,设计出对应的程序,并能够编译、下载完成。
开始检查设定频率是否改变频率设置 定时器初始化ADF4106初始化按键扫描并处理是否图8 程序流程图4.安装调试说明44..11..元器件装配图图8 元件装配图44..22..硬件部分调试步骤:4.2.1.电源模块焊接完电源模块后,从AMS1117—5V芯片输出应在5V左右,AMS1117—3.3V芯片输出在3.3V左右,电源模块就正常工作了。
通过测试,最大输出为4.97V和3.29V,说明电源电路正常工作。
4.2.2.压控振荡器焊接完后,压控振荡器能够起振,加控制电压时,VCO的频率发生变化,VCO正常工作,实际测得,当加0-4.5V直流电压时,VCO频率范围为77Mhz—113Mhz,但在反馈回路上的信号幅度太小达不到要求,因此通过把上拉电阻改成上拉电感,使输出幅度提高,达到指标。
图9 调试效果图4.2.3.鉴相器焊接完后,先下个测试程序检测输出是否正确,如果结果不对,首先应检查电路是否有错,否则就是程序不对,要改程序。
4.2.4.软件控制部分调试步骤我们采用Keil软件进行程序设计。
首先调试数码管和按键,确保数码管和按键能够正常工作,然后调试鉴相器程序,通过设置ADF4106的MUXOUT输出R分频频率确保程序能够控制芯片,然后测量CP端,保证电荷泵能够正常输出。
5.测试报告55..11..测试条件测试温度:室温(5—20摄氏度)测试电压:0V—5V55..22..测试步骤(1)电源及各元器件电压测试(2)VCO在测试电压下的频率测试(3)测试鉴相器是否正常工作(4)整机系统的测试55..33..测试结果(1)电源输出测试正确(2)VCO频率测试结果(3)测试鉴相器能够正常工作6.设计总结1.通过此次课程设计,将所学的理论知识很好的运用到了实践中,让我们将理论知识理解得更加深入。
2.通过实践,锻炼了大家的动手能力和调试能力,通过分组的形式,锻炼了大家的团结协作能力。
3.通过此次课程设计,我们懂得了工程项目的制作过程。
7.附录一#include <AT89X52.h>#define uchar unsigned char#define uint unsigned int#define ulint unsigned long intsbit Pll_LE =P1^0;sbit Pll_DATA =P1^1;sbit Pll_CLK =P1^2;sbit Pll_CE =P1^3;sbit KEY_down =P2^0;sbit KEY_right =P2^1;sbit KEY_up =P2^2;sbit KEY_left =P2^3;uchar Time0_flag=0,wei_flag=1,Dis_value[4]={1,0,0,0};ulint R_ref = 100;uint freq_value=1000,freq=0;uchar CodeTable[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//ma biao void Init_Timer0(void);void Key(void);void Display(void);void delay(uint i);void ADF4106_Write(ulint value);void ADF4106_init(void);void ADF4106_Setfreq(void);void main(){Init_Timer0();ADF4106_init();while(1){Key();freq_value=Dis_value[0]*1000+Dis_value[1]*100+Dis_value[2]*10+Dis_value[3];if(freq_value!=freq){freq=freq_value;EA=0;ADF4106_Setfreq();EA=1;}}}void ADF4106_Write(ulint value){ulint temp=0x800000;uchar i;Pll_LE=0;Pll_CLK=0;for(i=0;i<24;i++){if(value&temp){Pll_DATA=1;}else{Pll_DATA=0;}Pll_CLK=0;Pll_CLK=1;temp=temp>>1;}Pll_LE=1;}void ADF4106_init(void){Pll_CE=1;ADF4106_Write(0x5F8213); //init 16/17;fastlock 1;negative;digitallock detect;ADF4106_Write(0x5F8212); //functionADF4106_Write((R_ref<<2)+(2<<16)+(1<<20));//R; ANTI-BACKLASH WIDTH 6.0ns ADF4106_Write(0x000301);//N;ADF4106_Setfreq();}void ADF4106_Setfreq(void){uint B=0,A=0;ulint value=0;B = freq_value/16;A = freq_value%16;value = (B<<8)+(A<<2)+1;ADF4106_Write(0x4482c6); //function.ADF4106_Write((R_ref<<2)+(1<<17)+(1<<20));ADF4106_Write(value);ADF4106_Write(0x4482c2); //function.}void Key(void){if((P2&0x0f)!=0x0f){delay(50);if(!KEY_down){if(Dis_value[wei_flag]!=0){Dis_value[wei_flag]--;}else{if(wei_flag!=0){if(Dis_value[wei_flag-1]!=0){Dis_value[wei_flag-1]--;Dis_value[wei_flag]=9;}else{if((wei_flag-1)!=0){if(Dis_value[wei_flag-2]!=0){Dis_value[wei_flag-2]--;Dis_value[wei_flag]=9;Dis_value[wei_flag-1]=9;}else{if((wei_flag-2)!=0){if(Dis_value[wei_flag-3]!=0){Dis_value[wei_flag-3]--;Dis_value[wei_flag]=9;Dis_value[wei_flag-1]=9;Dis_value[wei_flag-2]=9;}}}}}}}}else if(!KEY_up){if(Dis_value[wei_flag]!=9){Dis_value[wei_flag]++;}else{if(wei_flag!=0){if(Dis_value[wei_flag-1]!=9){Dis_value[wei_flag-1]++;Dis_value[wei_flag]=0;}else{if((wei_flag-1)!=0){if(Dis_value[wei_flag-2]!=9){Dis_value[wei_flag-2]++;Dis_value[wei_flag]=0;Dis_value[wei_flag-1]=0;}else{if((wei_flag-2)!=0){if(Dis_value[wei_flag-3]!=9){Dis_value[wei_flag-3]++;Dis_value[wei_flag]=0;Dis_value[wei_flag-1]=0;Dis_value[wei_flag-2]=0;}}}}}}}}else if(!KEY_right){if(wei_flag!=3){wei_flag++;}}else if(!KEY_left){if(wei_flag!=0){wei_flag--;}}while((P2&0x0f)!=0x0f);}}void Init_Timer0(void){TMOD|=0x01; //方式1TH0=0xdC;TL0=0; //20msET0=1; //中断开TR0=1; //定时器开EA=1;}void Time0_ISF() interrupt 1{TMOD|=0x01; //方式1TH0=0xdC;TL0=0; //20msDisplay();Time0_flag++;if(Time0_flag==50){Time0_flag=0;}}void Display(void){uchar wei[4]={0x7f,0xbf,0xdf,0xef};//千,百,十,个,uchar i;for(i=0;i<4;i++){if(Time0_flag<25){if(i!=wei_flag){P2=0xff;P0=CodeTable[Dis_value[i]];P2=wei[i];delay(100);}}else{P2=0xff;P0=CodeTable[Dis_value[i]];P2=wei[i];delay(100);}}P2=0xff;}void delay(unsigned int i){while(i--);}。