基于AVR和FPGA数字式移相信号发生器的设计

分享到:

1 引 言
移相信号发生器属于信号源的一个重要组成部分,但传统的模拟移相有许多不足,如移相输出波形易受输入波形的影响,移相角度与负载的大小和性质有关,移相精度不高,分辨率较低等。

而且,传统的模拟移相不能实现任意波形的移相,这主要是因为传统的模拟移相由移相电路的幅相特性所决定,对于方波、三角波、锯齿波等非正弦信号各次谐波的相移、幅值衰减不一致,从而导致输出波形发生畸变。目前利用DDS技术产生信号源的方法得到了广泛的应用,但是专用DDS芯片由于采用特定的集成工艺,内部数字信号抖动很小,不可以输出高质量的模拟信号。随着现代电子技术的发展,特别是随单片机和可编程技术的发展而兴起的数字移相技术却很好地解决了这一问题。在众多的单片机之中,AVR 单片机是目前最新单片机系列之一,其突出的特点在于速度高、片内硬件资源丰富等。以FPGA为核心的PLD产品,是近几年集成电路中发展最快的产品。采用FPGA芯片,可并行处理多项任务,其高速性能好(执行速度达到纳秒级),纯硬件系统的可靠性高。利用FPCA实现DDS能很好地解决专用DDS芯片的诸多缺点,他可以根据需要方便地实现各种比较复杂的调频、调相和调幅功能,具有良好的实用性。

本文结合AVR系列单片机ATmega16和采用FPGACyclone器件实现DDS的一种数字式移相信号发生器设计新方案。该方案具有灵活可变的特点,更重要的是可以和其他功能模块组合扩展为任意信号发生器。

2 系统总体方案设计及实现

图1是系统总体方案设计示意图,他包括键盘按键控制部分,单片机系统部分,FPGA部分,以及幅度控制和D/A转换电路。单片机采用ATmega16,他根据矩阵式键盘输入给FPGA送出频率控制字与相位控制字,用于设定输出正弦波的频率与相位。高速D/A转换器用于正弦波的DA转换,利用单片机的幅度控制字来控制他的参考电压可以达到数字调幅的目的。FPGA构成DDS的核心部分,用于接收送来的频率字与相位字,同时给DA转换器输出正弦波数据。采用字符型液晶1602A显示屏实时显示输出的频率与相位。

2.1 单片机与FPGA间的通信

ATmega16的同步串行接口允许在芯片和外设之间,或几个AVR单片机之间,以与标准SPI接口协议兼容的方式进行高速的同步数据传输。本系统中,ATmega16只负责发送数据,不需要接收数据,故设置为主机工作模式。图2为单片机与FPGA通过SPI通信的框图。

 

2.2 数控移相信号发生器设计

DDS的主要思想是从相位的概念出发合成所需的波形,他的基本原理框图如图3所示。他采用了相位累加振荡方法的直接数字合成系统,把正弦波在相位上的精度定为N位,得分辨率为1/2N。用时钟频率fclk一次读取数字相位圆周上各点作为地址,对出相应ROM中的正弦波的幅度值,然后经DAC重构正弦波。相位累计器的作用是读取数字相位圆周上各点时可以每隔M个点读一个数值,从而得到输出正弦波频率fsin为:

 

基于DDS的数字移相信号发生器是整个系统的设计核心部分,其电路模型图如图4所示。这部分完全是由VHDL语言设计,并在FPGA Cyclone器件上实现的。电路要求能输出2路正弦信号,由2路10位D/A实现波形输出。信号频率能通过输入的8位频率控制字同步控制;其中一路作为参考信号,另一路是可移相的信号,可通过输入的8位相位控制字控制。其中“FWORD”是8位频率控制字,控制输出波形信号的频移量;“PWORD”是8位相移控制字,控制输出波形的相移量;ADDER32B及AD-DER10B分别为32位和10位加法器;SIN_ROM是存放波形数据的ROM,10位数据线,10位地址线(数据和地址线最大可以到32位),其中正弦波数据文件是后缀为mif的文件,可由C程序直接生成。REG32B和REG10B分别是32位和10位寄存器;POUT和FOUT为8位输出,可以分别与两个高速D/A连接,输出参考信号和可移相波形信号。

 

2.3 嵌入式锁相环的设计

当输出波形频率较高时,由于采样一个完整周期的波形数据点数减少,势必引起波形失真,要消除波形失真,一是可以增加采样波形数据的点数,二是提高系统的主工作时钟频率。若不增加外配ROM的情况下,可以使用后一种方法。本系统设计时在充分利用FPGA的存储空间的情况下,为了提高波形的输出频率(在不失真的条件下),还使用了Cyclone器件中的嵌入式锁相环,提高系统的主工作时钟频率,在实际工作时的主时钟频率达120 MHz。其在QuartusⅡ下的仿真图如图5所示。

 

3 实验结果

最后D/A输出的信号经过滤波后得到的信号波形如图6所示。

 

4 实验结论

通过设计和实验,得出以下结论:

(1)本设计通过键盘控制波形输出的频率和相位,波形频率可调范围为:10 Hz~15 MHz,相位可调范围为:0°~360°,频率最小步进值为1.795 15 Hz。

(2)波形失真度与储存波形ROM的位数及主工作时钟频率有关。

(3)使用FPGA中的嵌入式锁相环或者增加采样波形数据的点数(此时需要外配置ROM),可以大大提高主工作时钟的频率,消除波形失真。采用哪种方法或同时采用两种方法,取决于实际应用的需要。采用VHDL语言,具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大简化了硬件设计任务,提高了设计效率和可靠性。

(4)基于FPGA和VHDL的在系统可重编程的特点,系统更新只需修改VHDL程序即可,无需重新制作系统。外围电路数/模转换器的控制也可由VHDL程序实现,因此数/模转换芯片更换方便。

(5)采用ATmega16单片机,可实现在线编程,方便灵活,提高了开发效率,同时采用串行数据传送方式占用口线少,减少了资源的浪费。

(6)本设计中的DDS电路与专用DDS集成芯片相比,其灵活性更好,可生成任意波形,频率分辨率高,转换速度快,稳定性好,精度高,且均可对频率、相位、幅度实现程控,更重要的是,他如果作为IP核将具有更大的可移植性。

 

继续阅读
Microchip推出两大全新单片机系列

Microchip 8位MCU产品部副总裁Steve Drehobl表示:“新一代Arduino开发板选用ATmega4809器件,不仅加强了两家公司的合作关系,还为Arduino平台带来了CIP和智能模拟的优势”。

基于Atmega16的电流采样电路设计

文中研制了一套模拟并网发电系统,实现了频率跟踪、最大功率跟踪、相位跟踪、输入欠压保护、输出过流保护、反孤岛效应等功能

51单片机、AVR单片机和PIC单片机IO口的操作

51单片机、AVR单片机和PIC单片机IO口结构的均不同,导致了IO口操作也不同。操作单片机IO口的目的是让单片机的管脚输出逻辑电平和读取单片机管脚的逻辑电平。下面我们来看看51单片机、AVR单片机和PIC单片机IO口的操作的方法。

一个小经验,让你的AVR单片机功耗超低

休眠电流要最小:掉电模式必须的,然后能关闭的功能全部关闭,关闭BOD检测,关闭看门狗,电压越低越好,1.8V,频率越低越好。

51、AVR与PIC,三种单片机IO口的操作

51单片机、AVR单片机和PIC单片机IO口结构的均不同,导致了IO口操作也不同。操作单片机IO口的目的是让单片机的管脚输出逻辑电平和读取单片机管脚的逻辑电平。下面我们来看看51单片机、AVR单片机和PIC单片机IO口的操作的方法。

©2018 Microchip Corporation
facebook google plus twitter linkedin youku weibo rss