首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于FPGA的函数信号发生器设计

基于FPGA的函数信号发生器设计

将函数信号发生器的设计作为电类专业本科生的毕业设计选题,既综合了三大基础课程:“电路分析”、“模拟电子技术”和“数字电子技术”的知识内容,又实现了硬件电路设计、制作和软件编程的要求,可使学生能得到专业技能的综合性训练。
常规的信号发生器采用集成电路器件设计实现的。其输出信号只能是某种特定的周期性信号。如果采用FPGA进行波形存储器设计之后,将能合成任意波形的信号。
本文设计的函数信号发生器具有足够的输入通道数、多种触发方式、多功能显示和比较功能等性能。能产生正弦波、方波、三角波、锯齿波和脉冲波等信号,频率范围可从几Hz至数百kHZ。
1总体设计方案
本文设计的函数信号发生器利用ACTEL公司的Fusion StartKit为开发平台[1],以FPGA为硬件电路核心部件,基于FPGA的函数发生器原理如图1所示。如图向信号发生器内的计算机输入各种波形参数,经计算或转换得到所需数据,由USB通道传送给单片机后进入FPGA。利用直接数字频率合成技术(DDS)产生数字波形信号,经DAC转换成模拟信号,最终通过放大滤波输出所需波形。

2 硬件设计
1)FPGA总体设计
FPGA的输入为时钟输入和来自单片机的并行数据输入,其输出为幅度控制字输出(用于控制DAC输出的幅度)和波形数据输出。FPGA的六个组成模块是:adder模块为核心模块,实现频率及相位累加;ram模块用于暂存波形数据;pll模块用于提供不同频率的时钟信号;rec模块、share模块以及writeramctr模块一起完成波形数据存人ram内备用,并传送频率和相位控制字给adder模块[2]。
2)USB固件程序和驱动程序开发
储存代码的固件程序事先写好下载到单片机里,由单片机来执行。以实现USB接口芯片与主机和外设中其他电路的通信,固件开发文件构成关系如图2所示[3]。

USB设备驱动程序可使操作系统能识别USB设备和建立主机端与设备端之间的通信,本设计通过Windows提供的API函数实现其设计。USB设备驱动程序的整体流程如图3所示。

3)DDS设计(对应FPGA中adder模块)
DDS基本原理框图如图4所示。

DDS的工作原理是用数控振荡器产生频率、相位可控的正弦波。DDS由系统时钟、同步寄存器、频率累加器、频率寄存器、相位累加器和波形查找表等构成。在每一个时钟周期,频率累加器以输入的频率控制字FW为步进进行自增累加;累加结果的加结果作为地址查找波形表,将其对应输出送入DAC转换器,最后经过低通滤波器和后级放大等信号调理电路形成模拟量的波形输出。
4)DAC电路
DAC基本原理框图如图5所示。其中DAC_2将FPGA出的波形数据转换为模拟信号,DAC_1为DAC_2提供参考电压。最终DAC一2接收来自FPGA的幅度控制字改变输出幅度。

3 软件实现
1)上位机软件设计
本文设计采用Visual C++进行上位机软件设计‘引。其主要功能包括:打开/关闭并检测USB设备、发送各种控制数据指令、显示图形区及传送数据等。具体流程图及用户界面如图6所示。

2)单片机软件设计
单片机部分负责数据传输。对单片机而言,首先接收由计算机发送的数据,然后再发送给FPGA,其中接收数据通过控制USB模组采用USB协议与计算机部分通讯,发送数据是通过9根数据线以并行的方式传送数据。设计采用的是凌阳16位单片机SPCE061AE引。FPGA、SPCE061A与USB模组接口连接图如图7所示。

5 结语
基于FPGA的函数发生器设计作为一项毕业设计的成果,综合运用了FPGA,USB,VC++等软硬件资源,充分结合开发套件所具备的模数混合处理的强大功能,及其一些外部资源如SRAM和PLL模块等,通过计算机USB数据及控制指令传递,实现波形信号的输出,并在计算机上显示。
设计的系统可输出正弦波、三角波、斜波、方波等波形,其频率、相位、幅度及占空比(输出方波时)可调,且同时输出单极性和双极性的波形。系统用户操作界面如图8所示。

通过本次毕业设计,参加本项设计的三位学生得到了专业技能的综合性锻炼。通过团队协作基本掌握了软件和硬件开发工具,综合能力得到了实际锻炼。
本次设计仍然存在一些问题有待改进,比如发生信号频率达到300kHz以上时波形失真较明显,滤波电路有待后续工作继续完善。
来源:易宏,杜志明,吴国辉,赵汝波,韩明
记录学习中的点点滴滴,让每一天过的更加有意义!
返回列表