基于MATLAB和FPGA的DDS发生器的设计与实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

敬件打农与狡用信I ■与足1B China Computer & Communication 2021年第2期基于MATLAB 和FPGA 的DDS 发生器的设计与实现
李奇黄大胜李倩缪露露
(南京工业大学浦江学院计算机与通信工程学院,江苏南京211800)
摘 要:针对专用DDS 芯片存在功能单一等缺点,本文提出基于MATLAB 和FPGA 的DDS 发生器的设计方案.该方案 利用MATLAB 强大的计算能力对信号波形相位点对应的幅值进行预先计算,调用Usart 接收模块功能将MATLAB 接收的数 据固化到FPGA 的RAM 中,再通过相位在波表中查找幅值,可通过虚拟仪器ADALM2000查看输出的任意周期波形。

关键词:MATLAB; FPGA; DAC; DDS; RAM
中图分类号:TM935 文献标识码:A 文章编号:4003-9767 (2021) 02-080-03Design and Implementation of DDS Generator Based on MATLAB and FPGA
LI Qi, HUANG Dasheng, LI Qian, MIAO Lulu
(School of Computer and Communication Engineering, Nanjing Tech University Pujiang Institute, Nanjing Jiangsu 211800, China)Abstract : Aiming at the shortcomings of the dedicated DDS chip such as single function, this paper proposes a design scheme of DDS generator based on MATLAB and FPGA. This solution uses MATLAB's powerful calculation capabilities to pre-calculate the amplitude corresponding to the phase point of the signal waveform, call the Usart receiving module function to solidify the data received by MATLAB into the RAM of the FPGA, and then look up the amplitude in the wavetable through the phase. View the output arbitrary cycle waveform through the virtual instrument ADALM2000.
Keywords: MATLAB; FPGA; DAC; DDS; RAM
0引言信号发生器是指能提供各种频率、波形和输出电平信号 的设备叫在教学实验中常用于测试或检修各种电子仪器设 备中的低频放大器的频率特性,也可用信号发生器产生一些
经典的信号波形,如锯齿波、正弦波和方波等。

因为信号发 生器在各领域的应用日益广泛,所以开发出高性能、稳定性 高以及便携式的信号发生器具有非常重要的意义。

1设计概述1.1开发硬件及环境描述针对本次设计,分析其硬件需求后,选取STEP 小脚丫 开发板。

该系列中所有板子的大小兼容标准的DIP40封装,
并通过MicroUSB 端口进行供电和下载,板上选用的芯片为
Altera 公司的MAX10M08芯片,瞬时上电启动,无需外部重
新配置FPGA,能够直接插在面包板上或以模块的方式放置
在其他电路板上。

与其相匹配的拓展板Training v2.0,能够通过R-2R 阶梯 网络生成0 ~ 2 MHz 的任意波形,包括正弦波、三角波、锯
齿波、方波等,同时能通过PWM 生成0 ~ 20 KHz 的任意波形。

1.2总体设计为使FPGA 内部功能能够分工协作,设计采用模块化设 计和层次化设计。

本次设计主要将3个不同的独立功能逻辑 代码分成3个模块,分别是Usart 接收功能模块、逻辑控制
模块和DDS 信号发生模块,通过例化的方式在顶层文件中
将相互之间的接口相互串联起来。

信号发生器的设计原理如
图]所示。

MATLAB ADALM2000图1基于Matlab 和FPGA 的DDS 发生器的设计原理作者简介:李奇(1984-),男,江苏盐城人,硕士研究生。

研究方向:嵌入式设计、非视距定位等。

信思与电IE
China Computer&Communication 後件打茨与拓用
2021年第2期
2Uart串口通信
2.1Uart通信原理
Uart串口通信协议是常用的通信协议之一,全称为通用异步收发传输。

Uart可以实现全双工传输接收,能够灵活地与外部设备进行全双工数据交换。

基本的Uart仅有RXD接口与TXD发送端两条信号线就可以实现数据之间的通信,接收与发送之间不存在干扰,可实现全双工囚。

2.2FPGA串口通信实现
为STEP-MAX10M08开发板增加拓展功能的Training v2.0底板拓展功能上有集成CH340芯片的Uart串口,可利用Uart通过串口调试助手发送指令控制信号发生器产生波形。

FPGA中的Uart采用模块化的设计思想,利用Verilog HDL硬件描述语言可分为FPGA数据发送模块、FPGA波特率发生器控制模块及数据接收模块。

在Quartus II开发环境中利用Verilog HDL语言将开发板的FPGA_RX引脚和FPGA_TX引脚分别与CH340的TXD引脚和RXD引脚相连,实现数据的接受与发送功能。

开发板的原理如图2所示。

MATLAB提供了对串口进行打开、关闭等操作的一系列函数⑶。

本研究利用MATLAB的强大计算能力对发送的波形频率进行处理,调用serial函数设置串口通信参数,最后打开串口并读取数据。

3DDS模块设计
3.1DDS技术的工作原理
DDS技术是一种全新的频率合成方法,在合成频率的过程中并不是进行加减乘除等运算,而是由相位的概念出发,将模拟信号经量化后存入波形存储器中,通过查找表输出数据,最后平滑输出所需要的频率。

该技术具有输出频率分辨率高、功耗低、频率切换速度快等特点叫FPGA能根据用户的需要灵活设计DDS,其内部集成的大容量存储器也为设计波形存储器提供了方便。

本文采用FPGA定制IP核的方式实现DDS结构⑸。

3.2信号发生器DDS模块设计
相位累加器由N位加法器与N位累加寄存器构成,是
图2开发板的原理(部分)
DDS模块的重要部分。

在参考频率时钟的驱动下,DDS模块开始工作;当每来一个参考时钟时,累加器就把频率控制字FW与寄存器输出的值进行累加,将相加后的结果再输入到寄存器中,而累加寄存器就将在上一个参考时钟作用时通过反馈的方式输送到累加器中。

在时钟的作用下,就可以不停地对频率控制字进行累加。

波形存储器中存储的每个相位都是其所对应的二进制数字幅值,它主要用来完成波形从相位到幅值之间的转换,只需要事先写入相应相位上的幅值关系,便能得到对应的幅值,当一个所给波形的相位全部转换一遍后即可得到一个完整的信号波形。

本次设计采用Quartus II开发环境中自带的IP核RAM,RAM不仅可以存储正弦波形,还可以存储周期性的任意波形。

D/A转换器是将数字信号变换为模拟信号的器件,本设计主要使用R-2R电阻阶梯网络实现D/A转换功能,能够将从RAM查找表中得到的数字量形式的正弦波幅度信号转换为所要求的正弦阶梯信号⑹。

当正弦波RAM中存储的点数也是2的N次方时,使用相位累加值的高位寻址,并非每个时钟都从双口RAM中取一个数值,而是从多个时钟取同一个数值,这样能保证相位累加器溢出时,从双口RAM中刚好读取出一个正弦周期的样点。

因此,相位累加器每计数2的N次方次,便对应一个正弦周期。

联件打/与龛用信息与电IS
China Computer&Communication2021年第2期
4设计实现流程
本文首先根据需要的功能将总系统分成Uart接收功能模块、逻辑控制模块和DDS信号发生模块,并分别对其进行设计输入和综合,最终将所有模块的实现结果有机组织起来,在所创建的工程顶层文件中将各模块引脚连接起来实现功能协同并设置输入输出信号卩切。

以输出正弦波为例,由于正弦波等波形无法直接通过FPGA直接产生,因此在FPGA中例化一个位宽为10bit、深度为1024bit的双口RAM IP核,
采用MATLAB产生一个由256个采样点构成的正弦波形的数据点作为该RAM的初始化文件。

FPGA只需要从RAM中读取相应地址中的数据即可输出对应的波形。

在FPGA内部以模块化方式完成DDS结构的设计,并给出生成RAM查找表所需文件的程序,通过更改文件中的波形数据即可得到不同的模拟波形输出。

在产生正弦波的过程中,FPGA读取RAM地址中的数据速率决定了正弦波的周期,当FPGA的主时钟为50MHz时,输出一个完整的正弦波,即可看作经过了一个正弦波周期,此时波形周期为5120nso如果令每2个上升沿读取的地址加1,则周期为10240ns。

如果每个上升沿读取的地址加2,则周期为2560ns o因此通过这种改变读取RAM读取数据的速率可以改变输出波形的周期。

波形数据产生后将波形数据通过串口传送给状态机,状 态机将频率控制字写ADDS中,将处理好的波形数据输入双口RAM中,DDS通过频率控制字可以控制输出波形的频率,最终从RAM中读取的波形数据就是需要的波形信号,
然后由D/A数模转换模块将数字信号转变成模拟信号输出。

此时通过MATLAB打开串口并设置串口通信参数,串口连接成功后,利用虚拟仪器ADALM2000在上位机软件Scopy 上观察输出的波形,如图3所示。

图3ADALM2000测试波形图5结语
本文研究了基于MATLAB和FPGA的DDS发生器,实验结果验证了方案的可行性和准确性。

相比较于专用DDS 芯片,利用该方案将更加灵活,DDS可以产生任意调制波形,且分辨率较高,具有较高的性价比。

参考文献
[1]闫明亮•基于FPGA技术的信号发生器设计[D].哈尔滨:
哈尔滨工程大学,2011.
[2]唐明•基于FPGA与PC机串行通信Uart模块设计[D].武
汉:华中师范大学,2013.
⑶向先波,徐国华,张琴.Matlab环境下PC机与单片机
的串行通信及数据处理[J].单片机与嵌入式系统应用,2004(12):27-31.
[4]刘域•基于FPGA与DDS技术的任意波信号发生器设
计[D].西安:西安理工大学,2016.
⑸谢标•基于FPGA的任意波信号发生器的硬件设计与实
现[D].北京:北京工业大学,2015.
⑹贺军义,蒋坚,李男男•基于FPGA的DDS发生器设计[J],
计算机测量与控制,2017,25(2):231-233,237.
[7]余勇,郑小林•基于FPGA的DDS正弦信号发生器的设
计和实现[J].电子器件,2005,28(3):596-599.
[8]邓岳平,肖铁军•基于FPGA的并行DDS信号发生器的
设计与实现[J].计算机工程与设计,2011,32⑺:2319-2323.
[9]黄乡生,杨占才,胡世文•基于DDS和FPGA的数字函数
信号发生器设计和实现[J].东华理工大学学报(自然科学版),2009(4):390-393.
[10]吴晓华•基于FPGA的DDS信号发生器的设计[J],轻松
学电脑,2019(1):11.
[11]常国祥,吴德长•一种基于FPGA的N通道信号发生器
的研究与设计[J].电气自动化,2014⑵:47-4&102. [12]宋寅.基于FPGA的DDS波形发生器的设计与实现[J].
合肥学院学报(自科版),2007(2):67-70,87.
[13]崔永俊,王晋伟,贾磊,等•基于FPGA的DDS信号发生
器的设计与实现[J].电子器件,2016,39(2):339-343.。

相关文档
最新文档