基于单片机AVR与FPGA的正弦信号发生器设计摘要:在电子和通信产品中往往需要高精度的正弦信号,而传统的正弦信号发生器往往在低频输出时的频率的稳定度和精度等指标都不高。文中介绍了Micro Linear公司的一款单片正弦信号发生芯片ML2035,它可以在几乎不需要其它外围器件的条件下,产生从直流到25kHz的正弦信号,并利用此芯片完成了简易正弦信号发生器电路的设计。 关键词:信号发生器,信号源,正弦信号,ML2035, DDS 目录1. 绪论2. 技术概述3. 需求分析阶段 功能模块图 数据流图 E-R图 业务流程图4. 设计阶段(程序流程图)5. 详细设计阶段(运行的截图)6. 安装调试阶段7. 设计体会1.绪论信号发生器的概念信号发生器(signal generator)产生所需参数的电测试信号仪器。按其信号波形分为四大 类:①正弦信号发生器。主要用于测量电路和系统的频率特性、非线性失真、增益及灵敏度等。按其不同性能和用途还可细分为低频(20赫至10兆赫)信号发生器、高频(100千赫至300兆赫)信号发生器、微波信号发生器、扫频和程控信号发生器、频率合成式信号发生器等。②函数(波形)信号发生器。能产生某些特定的周期性时间函数波形(正弦波、方波、三角波、锯齿波和脉冲波等)信号,频率范围可从几个微赫到几十兆赫。除供通信、仪表和自动控制系统测试用外,还广泛用于其他非电测量领域。③脉冲信号发生器。能产生宽度、幅度和重复频率可调的矩形脉冲的发生器,可用以测试线性系统的瞬态响应,或用作模拟信号来测试雷达、多路通信和其他脉冲数字系统的性能。④随机信号发生器。通常又分为噪声信号发生器和伪随机信号发生器两类。噪声信号发生器主要用途为:在待测系统中引入一个随机信号,以模拟实际工作条件中的噪声而测定系统性能;外加一个已知噪声信号与系统内部噪声比较以测定噪声系数;用随机信号代替正弦或脉冲信号,以测定系统动态特性等。当用噪声信号进行相关函数测量时,若平均测量时间不够长,会出现统计性误差,可用伪随机信号来解决。正弦信号发生器作为电子技术领域中最基本的电子仪器,广泛应用于航空航天测控、通信系统、电子对抗、电子测量、科研等各个领域中[1~2]。随着电子信息技术的发展,对其性能的要求也越来越高,如要求频率稳定性高、转换速度快,具有调幅、调频、调相等功能,另外还经常需要两路正弦信号不仅具有相同的频率,同时要有确定的相位差。要实现两路信号具有确定的相位差,通常有两种实现方法:—‘种是采用移相器实现,如阻容移相网络、电感移相器、感应分压器移相器等。这种方法有许多不足之处,如移相精度受元件特性的影响大、移相精度差、移相操作不方便、移相角受负载和时间等因素的影响而漂移等;另一种是采用数字移相技术,这是目前移相技术的潮流[3]。数字移相技术的核心是先将模拟信号或移相角数字化,移相后再还原成模拟信号。本文采用直接数字频率合成技术设计了双通道正弦信号发生器,可以输出两路频率相同、相位差可调的正弦信号。两通道还可以独立使用,分别进行调频、调幅及调相。该信号发生器具有频率稳定度高及调频、调相迅速的优点。 正弦信号源是一种广泛应用的信号源,对它的要求也随着技术的发展越来越高。传统的正弦信号发生器往往在低频输出时的频率的稳定度和精度等指标都不高 。我们知道为了获得高频率稳定度的信号源,往往采用锁相环实现,但这种方法电路复杂、体积庞大。近年来,DDS技术由于具有容易产生频率快速转换、分辨率高、相位可控的信号,这在电子测量、雷达系统、调频通信、电子对抗等领域得到了十分广泛的应用 。然而,如果选用通常的Analog公司的系列DDS芯片研制低频正弦信号发生器,往往需要外部微处理器,因此电路较复杂,并且频率稳定度不佳。为此,本文将讨论基于ML2035设计简易的正弦信号发生器,它具有外围元器件少,电路实现简单,可以不需要外部微处理器的特点。2.技术概述1 直接数字频率合成器的基本原理频率合成是指对一个标准信号频率经过一系列算术运算,产生具有相同精度和稳定度的大量离散频率的技术。频率合成有多种实现方法,其中直接数字频率合成技术与传统频率合成技术相比具有难以比拟的优点,如频率切换速度快、分辨率高、频率和相位易于控制等[4~5]因此得到越来越广泛的应用,成为当今现代电子系统及设备中频率源设计的首选。直接数字频率合成器由参考时钟、相位累加器、正弦查询表和D/A转换器组成,如图1所示。 直接数字频率合成技术是根据相位间隔对正弦信号进行取样、量化、编码,然后储存在EPROM中构成一个正弦查询表。频率合成时,相位累加器在参考时钟的作用下对时钟脉冲进行计数,同时将累加器输出的累加相位与频率控制字K预置的相位增量相加,以相加后的吉果形成正弦查询表的地址;取出表中与该相位对应的单元中的幅度量化正弦函数值,经D/A转换器输出模拟信号,再经低通滤波器平滑得到符合要求的模拟信号。相位累加器的最大计数长度与正弦查询表中所存储的相位分隔点数相同,由于相位累加器的相位增量不同,将导致一周期内的取样点数不同,在取样频率(由参考时钟频率决定)不变的情况下,输出信号的频率也相应变化。如果设定累加器的初始相位,则可以对输出信号进行相位控制。 由采样原理可知,如果使用两个相同的频率合成器,并使其参考时钟相同,同时设定相同的频率控制字、不同的初始相位,那么在原理上就具备了实现输出两路具有一定相位差的同频信号的可能性。AD9852是ADI公司生产的高集成度的频率、相位、幅度可调的直接数字频率合成器,内部集成了高性能D/A转换器、高速比较器、程序寄存器、参考时钟倍频器及可实现各种运算的高性能的数字控制单元,并且可以实现全数字编程控制。AD9852的输出信号频率控制字为48位,使输出频率调节分辨率达到1μHz,输出信号的频率范围可从直流到150MHz,相位调节控制字为14位,相调节分辨率为0.022°,幅值调节控制字为12位。ML2035是Micro Linear公司的一款单片正弦信号发生芯片,它可以在几乎不需要其它外围器件的条件下,产生直流到25kHz的正弦信号,并且它的输出正弦信号频率可以由16比特的串行比特字控制 。因此,ML2035可以广泛地应用于需要价格低、精度高的正弦信号发生器的无线通信或调制解调等领域。ML2035的主要特点如下: 输出正弦信号频率为直流到25kHz; 具有低增益误差和低谐波畸变性能; 具有3线SPI兼容性串行微处理器接口,并具有数据锁存功能; 具有不需要外围器件的全集成解决方案功能;频率分辨率可达 (当输入时钟频率为 时); 自带 的内部晶振; 具有同步和异步的数据加载功能。 正弦信号的产生 ML2035的基本原理和DDS一样,它内部主要由正弦信号产生、晶振和串行数字接口等部分组成。但是,ML2035的外围电路及其简单,它仅有8个引脚。ML2035的可编程频率发生器的基本原理和直接频率合成器(DDS)的基本原理完全一样。我们知道,DDS芯片一般由频率控制字、相位累加器、正弦查询表、D/ A 转换器和低通滤波器组成。DDS芯片的核心部件是相位累加器,它由N 位加法器与N 位相位寄存器构成,它类似一个简单的计数器。每来一个时钟脉冲,相位寄存器的输出就增加一个步 的相位增量值,加法器将频率控制数据与累加寄存器输出的累加相位数据相加,把相加结果送至累加寄存器的数据输入端。相位累加器进入线性相位累加,累加至满量程时产生一次计数溢出,这个溢出频率即为DDS的输出频率。正弦查询表是一个可编程只读存储器(PROM),存储的是以相位为地址的一个周期正弦信号的采样编码值,包 含一个周期正弦波的数字幅度信息,每个地址对应于正弦波中 : 范围的一个相位点。将相位寄存器的输出与相位控制字相加得到的数据作为一个地址对正弦查询表进行寻址,查询表把输入的地址相位信息映射成正弦波幅度信号,驱动DAC,输出模拟信号;低通滤波器平滑并滤除不需要的取样分量,以便输出频谱纯净的正弦波信号。 由于ML2035的控制字长为16比特,因此据DDS的原理我们不难得出ML2035的输出频率关系式为 (1) 相应地,ML2035的频率分辨率(亦最小频率)为 (2) 3.需求分析阶段一、 设计任务 设计制作一个波形发生器,该波形发生器能产生正弦波、方波、三角波和由用户编辑的 特定形状波形。 二、 设计要求 1. 基本要求 具有产生正弦波、方波、三角波三种周期性的波形。 用键盘输入编辑生成上述三种波形(同周期)的线性组合波形,以及由基波及其谐波( 5次以下)线性组合的波形。 具有波形存储功能。 输出波形的频率为100Hz~20KHz(非正弦波频率按10次谐波计算):重复频率可调,频 率步进间隔≤100Hz。 输出波形幅度范围0~5V(峰-峰值),可按步进(峰-峰值)调整。 具有显示输出波形的类型、重复频率(周期)和幅度的功能。 2.发挥部分 输出波形频率范围扩展至100Hz~200KHz。 用键盘或其他输入装置产生任意波形。 增加稳幅输出功能,当负载变化时,输出电压幅度变化不大于±3%(负载电压变化范围 :100Ω~∞)。 具有掉电存储功能,可存储掉电前用户编辑的波形和设置。 可产生单次或多次(1000次以下)特定波形(如产生一个半周期三角波输出)。 其它(如增加频谱分析、失真度分析、频率扩展>200KHz、扫频输出等功能)。 三、方案设计和论证: 根据题目的要求,我们一共提出了三种设计方案,分别介绍如下: 1、 方案一 采用低温漂、低失真、高线性单片压控函数发生器ICL8038,产生频率受控可变的正弦波 ,可实现数控频率调整。通过D/A和5G353进行输出信号幅度的控制。输出信号的频率、 幅度参数由4x4位键盘输入,结果输出采用6位LED显示,用户设置信息的存储由24C01完 成。系统结构框图如图1所示。 2、 方案二 由2M晶振产生的信号,经8253分频后,产生100Hz的方波信号。由锁相环CD4046和8253进 行N分频,输出信号送入正弦波产生电路和三角波产生电路,其中正弦波采用查表方式产 生。计数器的输出作为地址信号,并将存储器2817的波形数据读出,送DAC0832进行D/A 转换,输出各种电压波形,并经过组合,可以得到各种波形。输出信号的幅度由0852进 行调节。系统显示界面采用16字x1行液晶,信号参数由4x4位键盘输入,用户设置信息的 存储由24C01完成。 3、 方案三 以4M石英晶振作为参考源,通过F374,F283以及LS164组成的精密相位累加器,通过高速 D/A变换器和ROM产生正弦波形,这个数字正弦波经过一个模拟滤波器后,得到最终的模 拟信号波形。通过高速D/A产生数字正弦数字波形和三角数字波形,数字正弦波通过带通 滤波器后得到一个对应的模拟正弦波信号,最后该模拟正弦波与一门限进行比较得到方 波时钟信号。通过相位累加器来实现多种波形的同相位输出,并可以连续地改变频率。 输出信号幅度由TLC7524进行数字控制。用户设置信息的存储由24C01完成。 以下为三种基本方案的具体电路实现: 方案一 单片压控函数发生器ICL8038产生频率为100Hz~20KHz的正弦波,其频率由DAC0832和5G 353进行控制。由于ICL8038自身的限制,输出频率稳定度只有10-3(RC振荡器)。而且 由于压控的非线性,频率步进的步长控制比较困难。输出信号的幅度数控由DAC0832和5 G353完成。幅度数码由单片机通过P0口输入。要求幅度数据为8位/ 100mV。用户设置信 息的存储由24C01完成。 微控制器由8051最小系统,键盘/显示接口芯片8279,16位键盘,6位LED数码显示器以及 相应译码、驱动电路及“自动扫描/手动设置”选择开关等组成。 方案二 基本信号产生:晶振频率为2M,经8253进行分频后,产生100HZ的方波信号,则分频比为 : M=fALE/100=2X104 其中FALE=2M 一般石英晶体振荡器的频率稳定性优于10-5,故输出信号的频率稳定性指标得以保证。 频率合成:CD4046和8253组成的锁相环中,fo=100N 其中8253的定时器做4046的N分频, 则占空比电路的输入脉冲信号频率也是N。 利用可编程定时器/计数器8253的三个定时器,正好可以承担上述2x104分频和锁相环中 而个分频器的任务。其中定时器0分频比设为2x104,定时器2做锁相环N分频。利用8253 做分频器,应使其工作于方式3。 波形变换采用查表方式,把正弦波一个周期的波形按时间平均划分为100个点,各点的电 压数据放在存储器2817中,通过DA0832实时查询输出。 输出信号的幅度数控由DAC0832完成,幅度数码由单片机通过P1口输入,要求幅度数据为 8位/ 100mV。当输出幅度为3V时,DAC输入数值应为240。 微控制器系统由89C51最小系统,4x4位键盘输入,字符型液晶显示器以及相应的译码、 驱动电路构成。液晶显示采用菜单显示方式,显示直观,操作方便,人机界面非常友好 . 用户设置信息的存储由24C01完成 方案三 以4M石英晶振作为参考源,通过F273,F283以及LS164组成的精密相位累加器和数字信号 处理,通过高速D/A变换器DAC0800和2817 E2ROM产生正弦波形,三角波形和任意波形。 正弦信号频率计算:在相位累加器中,每来一个时钟脉冲,它的内容就更新一次。在每 次更新时,相位增量寄存器的相位增量M就加到相位累加器中的相位累加值上。假设相位 增量寄存器的M为00...01,相位累加器的初值为00...00。这时在每个时钟周期,相位累 加器都要加上00...01。本设计累加器位宽n是24位,相位累加器就需要224个时钟周期才 能恢复初值。 相位累加器的输出作为正弦查找表、三角波查找表和用户自定义波形查找表(均为 E2PROM2817)的查找地址。查找表中的每个地址代表一个周期的波形的一个相位点,每 个相位点对应一个量化振幅值。因此,这个查找表相当于一个相位/振幅变换器,它将 相位累加器的相位信息映射成数字振幅信息,这个数字振幅值就作为D/A变换器的输入。 设计n=24, M=1, 这个相应的输出信号频率等于时钟频率除以224。如果M=2,输出 频率就增加1倍。对于一个n-bit的相位累加器来说,就有2n个可能的相位点,相位增量 寄存器中控制字M就是在每个时钟周期被加到相位累加器上的值。假设时钟频率为fc,那 么输出信号的频率就为: f0 = M*fc / 224 数字正弦波经过一个模拟滤波器后,得到最终的模拟信号波形。通过高速DAC产生数字正 弦数字波形和三角数字波形,数字正弦波通过带通滤波器后得到一个对应的模拟正弦波 信号,最后该模拟正弦波与一门限进行比较得到方波时钟信号。 输出信号的幅度数控由TLC7524数控衰减器完成,幅度数码由单片机通过总线寻址方式输 入,幅度为8位/100mV。当输出幅度为5V时,DAC输入值为400。 微控制器系统由89C52最小系统,4x4位键盘输入,字符型液晶显示器以及相应的译码、 驱动电路构成。液晶显示采用菜单显示方式,显示直观,操作方便,人机界面非常友好 。用户设置信息的存储由24C01完成 4、 方案比较 下面对三种方案的性能特点和实现的难易等作一些具体分析与比较。 1)方案一结构比较简单,但由于ICL8038自身的限制,采用了RC振荡器,故输出频率稳 定度只能达到10-3数量级。方案二采用石英晶体振荡器和数字锁相环技术,而一般石英 晶体振荡器的频率稳定性优于10-5,故输出信号的频率稳定性指标得以保证。方案三同 样采用石英晶体振荡器、精密的相位累加器,频率稳定性指标同样优于10-5。达到题目 的要求。 2)方案一由于压控振荡器F/V的线性范围有限,频率步进的步长控制比较困难,难以保 证1000倍的频率覆盖系数。方案二采用集成锁相环4046,配合8253很容易做到1000倍的 线性频率覆盖系数。方案三使用精密相位累加器和高速DAC,同样可以实现1000倍的线性 频率覆盖。 3)方案一的控制显示系统比较简单,六位LED的显示系统制作比较简单,但难以显示系 统输出信号的详细信息,使用时操作难度比较大,人机界面比较难懂。方案二和方案三 采用16字符x1行的液晶,菜单式操作方法,要求有比较高的硬件制作水平和软件编程技 术,但可以详细的显示波形,占空比,信号幅度等信息。人机界面友好,操作方便。而 且通过软件编程控制使系统输出信号的频率、波形预置变的非常简单。 4)方案一中,为获得1Hz的分辨率,必须采用高精度的DAC,不容易达到比较高的精度。 方案二中用单片机对8253可编程定时器进行控制,配合集成锁相环频率合成器4046可以 比较容易的提供1Hz分辨率。方案三采用精密相位累加器,具有相当好的频率分辨率,频 率的可控范围达 fc/2n=222/224= 5)方案一的ICL8038可以产生比较准确的波形。方案二通过实时查询输出正弦波,虽然 我们对每一个波形只采用了100个点,但在要求较高的场合,可以通过对每个波形取更多 个点的方法来提高波形精度。具有很好的升级扩展性能。方案三中E2PROM中存储了1024 个波形点,可以提供非常精确的波形。在200KHz的时候,仍然能够对每个波形提供8个点 ,通过滤波器后,同样会具有良好的波形。 6)方案一和方案二的频率变换时间主要是它的反馈环处理时间和压控振荡器的响应时间 ,通常大于1ms。而方案三的频率变换时间主要是数字处理延迟,通常为几十个ns。 7)方案一由于采用RC振荡器,不可避免具有比较大的相位噪声。方案二的相位噪声是它 的参考时钟—石英晶体振荡器—的噪声的两倍。而方案三由于数字正弦信号的相位与时 间成线形关系,整片电路输出的相位噪声比它的参考时钟源的相位噪声小。 从以上的方案比较可以看出,方案三结构比较复杂,但具有输出频率稳定性高、频率输 出线性度好、频率分辨率高、波形准确、频率变换时间小、相位噪声小、人机界面友好 ,易于控制等优点,性能优良。是本次设计的理想设计方案。而相对来说,方案一结构 很简单,制作容易,但是输出信号有频率线性度差、频率稳定度低、频率分辨率低、频 率变换时间比较长,相位噪声大以及人机界面不友好等缺点。方案二电路也比较简单, 但在频率分辨率、频率变换时间、相位噪声等方面都比第三种方案差。总之,方案一和 方案二都具有各自的比较大的弱点,难以达到理想的设计要求。故不宜采用。 经过比较,我们决定采用方案三的电路设计进行制作。 串行数字接口 ML2035的控制可以通过芯片的串行数字接口实现,数字接口部分主要由移位寄存器和数据锁存器组成。SID引脚上的16 bits 数据字在时钟SCK的上升沿时被送入16 bits的移位寄存器。需要注意的是,应该先送最低位,最后送最高位。然后在LAI的下降沿触发下,送入移位寄存器的数据被锁存进数据锁存器。为了确保数据的有效锁存,LAI的下降沿应该发生在SCI为“低”电平期间。同理,在SID数据移入移位寄存器期间,LAI应该保持“低”电平。 电源方式 ML2035具有电源“休眠”功能,这样可以有效提高电源的使用效率,这对于便携式产品是极其有利的。当希望ML2035保持“休眠”时,可以向移位寄存器输入全“0”,并向LATI加载“1”使其保持高电平。在这种情况下,ML2035的功耗可以降到 mW以下,而输出正弦信号的幅度降到0 V。需要提及的是,在电路设计中应该对ML2035的电源输入端进行电源去耦处理,在电路设计中可以采用如图1所示的电源去耦处理方案。 图1 ML2035的电源去耦处理方法简易正弦信号发生器设计 由DDS的基本原理可以知道,由于ML2035频率分辨能力有限,输出的正弦信号将有可能出现误差。对于不同的 考时钟,将产生不同程度的频率误差,表1例举了ML2035在常见的晶振下的频率控制字和频率误差情况。 表1 使用常见标准晶振时ML2035所需频率控制字和频率误差情况 本文拟采用ML2035设计一简易的频率为1000Hz的高精度无频率误差的正弦信号发生器,由于低于的晶振通常价格较高且体积较大,故这里选用的晶振。由式(1)可以得知需要的频率控制字为1280,因此需要的16 bits控制位为1111 D,这样输出正弦信号的频率误差将在理论上达到。图2便是实现该简易正弦信号发生器的电路原理图,这里74HC4060计数器的功能是振荡器和计时器,而74HC4002是高速CMOS 四与非门器件。为了实现ML2035的输出正弦信号频率为1000Hz,必须使在前8个脉冲移入8比特0,然后在接下来的后8个脉冲移入1111 1010。 图2 基于ML2035的1000Hz正弦信号发生器电路原理图三,软件篇AVR要完成的功能:1,处理通信2,计算要产生的信号所需的参数3,SPI通信,输出数据到FPGA,从FPGA取数据4,根据所取的数据计算出所测的信号的参数对于通信与算法,在这里也没什么好讲的,讲一下SPI通信吧,我没有使用AVR的SPI外设,我用普通I/O ,,,,,,,,,,,,,,,,