您好,欢迎访问三七文档
时间:周五6、7、8节组号:5创新性实验报告题目基于FPGA的信号发生器学院电子信息学院专业电子信息工程班级09041814/09041815学号09041801/09041715/09041737学生姓名霍恩来王高科王潜指导教师刘公致陈龙完成日期2012年5月2摘要:本系统是基于FPGA的DDS直接数字频率合成技术,以STM32单片机为控制核心,频率范围1kHZ~10MHZ,稳定度优于10-4;实现了正弦信号发生以及AM,FM,ASK,PSK,还有方波、三角波的多种信号调制功能。本设计最大的优点在于其数字化,硬件电路很少,全部波形都是在FPGA片内算法实现的,硬件电路很少,这样使系统稳定度更加强了。关键字:FPGA,DDS,STM32单片机,数字化。Abstract:thesystemisbasedonFPGAdirectdigitalfrequencysynthesistechnology,withSTM32microcontrollerascontrolcoreandfrequencyrange1kHZ~10MHZ,stabilitythan10-4;CompletedthepositivespinsignaloccursandAM,FM,ASK,andsquare-wavePSKvarietyofsignal,trianglewavemodulationfunction.Thisdesignisthebiggestadvantageliesinitsdigital,hardwarecircuitrarely,allwaveformimplementationwithintheFPGApieceofrealizingalgorithm,thehardwarecircuitsystem,sofewstrengthensstability.Keyword:FPGA,STM32,DDS,microcontroller.3正文一、方案设计与论证1、方案方案一:基于单片机的方式。以单片机为控制中心,通过专门的DDS芯片如AD9852编程,产生所需的正弦波信号,然后用硬件电路搭建产生其他各种调制波信号,该方案简单,易于实现。方案二:数字锁相环频率合成技术,利用锁相环把压控振荡器的输出频率锁定在所需的频率上,可以很好的选择所需的频率信号,抑制杂散分量,可以采用集成芯片,但这种锁相环倍频电路中,要减小频率间隙,就必须减小频率fi,导致频率转换时间增加,而减小输出间隙与减小频率转换时间是矛盾的,且输出频率在很大范围变化时,N也要随之变化,环路增益也要增大幅度变化,从而使环路的动态性急剧变化。4方案三:采用基于以FPGA为平台的DDS直接数字频率合成技术,以单片机和FPGA相结合的方式完成,用单片机完成人机交互;系统控制部分,用FPGA完成波形发生以及各种调制功能,本方案利用了单片机在软件控制设计方面的通用性和FPGA在逻辑设计上的优势,可以很好的完成系统设计。2、方案确定综合考虑以上三种方案的优缺点以及题目的基本要求和发挥要求,以及成本问题,我们选择了第三种方案,即基于FPGA和单片机结合的设计方案,利用新技术、新的解决方案来实现本题目的各项功能。FPGA选择cycloneII系列的EP2C5T144C8。单片机采用STM32芯片来实现,显示部分采用性价比较高的NOKIA5110液晶显示器。控制键盘采用4X4的矩阵键盘。二、系统设计和理论分析1.DDS的基本原理是利用采样定理,通过查表的方法产生波形。DDS的结构有很多种,其中基本的电路原理图可以用下图表示:5采用FPGA实现DDS,可以将要输出的波形数据预先存放在RAM中,然后在系统标准时钟频率下,按照一定的顺序从RAM单元中读出数据,再进行DA转换和低通滤波,就可以得到一定频率的输出波形。上述过程可使用HDL硬件描述语言对FPGA编程实现。2.全数字实现各种波形(1)基本波形:正弦波,方波,三角波。直接采用DDS技术,在三个不同的RAM中存放三种不同的波形数据,然后经过描述语言对其输出数据和数据的选择做适当的处理,即得到三种不同的波形。QUARTUSII综合RTL图如下图所示:(2)幅度调制信号(AM)采用AM信号的基本公式结合VerilogHDL语言中对有符号数的计算,来实现AM信号的产生,QUARTUSII综合RTL图:Count模块是复杂的信号处理模块(3)模拟频率调制信号(FM)基于FM的原理,根据调平信号变化的规律采用数字方式控制DDS信号发生的频率控制字,直接作用于输出波形的频率值,即实现了对信号源的频率的调节,该方式下,DDS调制信号输出的波形频率与调制信号频率控制字成正比,而载波信号的频率控制字又随调制信号成正比例变化,本系统采用调制信号,固定为1KHZ,而改变载波频率控制字的方式来实现的。流程图:6(4)键控法产生ASK信号通过HDL语言在FPGA里实现时,数字电路内的0,1数字及代码作为选择开关信号对应于键控信号,DDS波形发生器对于载波发生器,如下图:其中用分频时钟作为0,1基带码产生的数据流(5)键控法产生PSK信号和ASK信号类似,同样用时钟模拟0,1基带码的基带流来模拟开关选择,具体实现用到HDL语言和原理图结合的方法,RTL图如下:7三、系统组成本系统包括FPGA,模拟以及外设三部分。由于基本波形以及各种调制信号发生的功能都是通过DDS方式在FPGA内实现的,因此模拟部分仅包含高速DA,滤波电路,带宽运放部分,控制部分和显示控制部分,采用32位的STM32单片机实现。电路图见附录。四、硬件设计1.数字部分即用DDS原理在FPGA里构建一个能产生正弦,方波,三角波,还有AM,FM,ASK,PSK信号的系统,并且能够受STM32控制和选择输出想要的波形和频率等信息。QUARTUSIIRTL图具体在附件:2.模拟部分(1)DA部分采用十二位高速DA转换器DAC902,作为本系统的DA,然后通过opa690差分输出。电路截图如下:8五、测试方法与数据(1)正弦,方波,三角波信号设定频率测试频率相对误差峰峰值/v100HZ100HZ06.4500HZ500HZ06.41000HZ1000HZ06.42000HZ2000HZ06.43KHZ3KHZ06.494KHZ4KHZ06.45KHZ5KHZ06.46KHZ6KHZ06.47KHZ7KHZ06.48KHZ8KHZ06.49KHZ9KHZ06.41MZ1MZ05.15MZ5MZ04.810MZ10MZ04.2(2)AM信号示波器观察在载波频率增大时AM频率也加大的,而调制度从10%到100%调节时信号的幅度越来越小。(3)FM信号示波器观察在载波频率加大时FM频率也在加大,但频偏不随之改变,当改变最大频偏时,测得的最大频偏也随之改变。(4)ASK和PSKASK0100khz0100khz0100khz0100khzPSK200khz100khz200khz100khz200khz100khz200khz100khz以上都符合调制规则,说明准确完成了题目要求。六、测试结论(1)输出频率范围为100HZ到10MHZ以上,步进100HZ,稳定度优于10-4;(2)AM信号可以在10%到100%程控调节,步进10%;(3)FM信号最大频偏为10KHZ,且可二级程控调节载波信号频率;(4)实现ASK,PSK信号;(5)扩展实现方波跟三角波的发生。10附录:STM32部分程序voidkey_con(void){if(key[0][0]){Delay(100);if(key[0][0]){state=1;while(key[0][0]);}}if(state){if(key[0][1]){Delay(100);if(key[0][1]){num++;if(num==65536)num=1;11while(key[0][1]);}}if(key[0][2]){Delay(100);if(key[0][2]){num--;if(num==0)num=65535;while(key[0][2]);}}if(key[1][1]){Delay(100);if(key[1][1]){if(num=65280)num=1;elsenum=(num-(num%256))+256;if(num=65536)num=1;while(key[1][1]);}}if(key[1][2]){Delay(100);if(key[1][2]){if(num256)num=num;elsenum=(num-(num%256))-256;if(num=1)num=65535;while(key[1][2]);}}12if(key[0][3]){Delay(100);if(key[0][3]){state=0;while(key[0][3]);}}}if(key[2][0]){Delay(100);if(key[2][0]){bo++;if(bo==8)bo=1;while(key[2][0]);}}if(key[2][1]&&AM==1){ma++;if(ma==1024)ma=1;LCD_WriteString_En(10,130,chengkong(AM),RED,0xffff);LCD_WriteNumber(150,130,ma,0x0000,0xffff);}if(key[2][2]&&AM==1){ma--;if(ma==0)ma=1023;LCD_WriteString_En(10,130,chengkong(AM),RED,0xffff);LCD_WriteNumber(150,130,ma,0x0000,0xffff);}if(key[2][3]&&AM==1){ma=ma*10;if(ma==1024)ma=1;LCD_WriteString_En(10,130,chengkong(AM),RED,0xffff);LCD_WriteNumber(150,130,ma,0x0000,0xffff);}if(key[3][3])13{Delay(100);if(key[3][3]){ff++;if(ff%2==0&&FM==1){GPIO_SetBits(GPIOB,GPIO_Pin_8);LCD_WriteString_En(10,110,PPG50%(5KHZ),RED,0xffff);}elseif(ff%2==1&&FM==1){GPIO_ResetBits(GPIOB,GPIO_Pin_8);LCD_WriteString_En(10,110,PPG100%(10KHZ),RED,0xffff);}while(key[3][3]);}}if(bo!=0){switch(bo){case1:GPIO_SetBits(GPIOB,GPIO_Pin_2);FM=0;AM=0;//正弦波GPIO_ResetBits(GPIOB,GPIO_Pin_3);GPIO_ResetBits(GPIOB,GPIO_Pin_4);//Pant(0xffff);LCD_WriteString_En(20,85,SIN,RED,0xffff);//显示正弦标志break;case2:GPIO_ResetBits(GPIOB,GPIO_Pin_2);FM=0;AM=0;//方波GPIO_SetBits(GPIOB,GPIO_Pin_3);GPIO_ResetBits(GPIOB,GPIO_Pin_4);//Pant(0xffff);LCD_WriteString_En(20,85,FANG,RED,0xffff);break;case3:GPIO_SetBits(GPIOB,GPIO_Pin_2);FM=0;AM=0;//三角波GPIO_SetBits(GPIOB,GPIO_Pin_3);GPIO_ResetBits(GPIOB,GPIO_Pin_4);//Pant(0xffff);LCD_WriteString_En(20,85,SAN
本文标题:信号发生器
链接地址:https://www.777doc.com/doc-7346404 .html