基于FPGA的简易 DDS 信号发生器的设计

这篇具有很好参考价值的文章主要介绍了基于FPGA的简易 DDS 信号发生器的设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

DDS 是直接数字式频率合成器(Direct Digital Synthesizer)的英文缩写,是一项关键的数字化技术。与传统的频率合成器相比, DDS 具有低成本、低功耗、高分辨率和快速转换时间等优点,广泛使用在电信与电子仪器领域,是实现设备全数字化的一个关键技术。作为设计人员,我们习惯称它为信号发生器,一般用它产生正弦、锯齿、方波等不同波形或不同频率的信号波形,在电子设计和测试中得到广泛应用


提示:以下是本篇文章正文内容,下面案例可供参考

一、pandas是什么?

DDS 技术是一种全新的频率合成方法,其具有低成本、低功耗、高分辨率和快速转换时间等优点, 对数字信号处理及其硬件实现有着很重要的作用。DDS 的基本结构主要由相位累加器、相位调制器、波形数据表 ROM、 D/A 转换器等四大结构组成,其中较多设计还会在数模转换器之后增加一个低通滤波器。 DDS 结构示意图
基于FPGA的简易 DDS 信号发生器的设计
上图是不含低通滤波器的 DDS 结构示意图,图中主要包括相位累加器、相位调制器、波形存储器、数模(D/A)转换器等四大结构。接下来我们会结合 DDS 结构示意图,为大家讲解一下 DDS 的工作原理。在讲解之前,先来对其中各参数做一下说明。系统时钟 CLK 为整个系统的工作时钟,频率为 fCLK;频率字输入 F_WORD,一般为整数,数值大小控制输出信号的频率大小,数值越大输出信号频率越高,反之,输出信号频率越低,后文中用 K 表示;相位字输入P_WORD,为整数,数值大小控制输出信号的相位偏移,主要用于相位的信号调制,后文用 P 表示;设输出信号CLK_OUT,频率为 fOUT。

图中所展示的四大结构中,相位累加器是整个 DDS 的核心,在这里完成相位累加,生成相位码。相位累加器的输入为频率字输入 K,表示相位增量,设其位宽为 N,满足等式K = 2N * fOUT / fCLK 。其在输入相位累加器之前,在系统时钟同步下做数据寄存,数据改变时不会干扰相位累加器的正常工作。相位调制器接收相位累加器输出的相位码, 在这里加上一个相位偏移值 P, 主要用于信号的相位调制, 如应用于通信方面的相移键控等, 不使用此部分时可以去掉, 或者将其设为一个常数输入, 同样相位字输入也要做寄存。波形数据表 ROM 中存有一个完整周期的正弦波信号。假设波形数据 ROM 的地址位宽为 12 位,存储数据位宽为 8 位,即 ROM 有 212 = 4096 个存储空间,每个存储空间可存储 1字节数据。将一个周期的正弦波信号,沿横轴等间隔采样 212 = 4096 次,每次采集的信号幅度用 1 字节数据表示,最大值为 255,最小值为 0。将 4096 次采样结果按顺序写入 ROM的 4096 个存储单元, 一个完整周期正弦波的数字幅度信号写入了波形数据表 ROM 中。波形数据表 ROM 以相位调制器传入的相位码为 ROM 读地址,将地址对应存储单元中的电压幅值数字量输出。D/A 转 换 器 将 输 入 的 电 压 幅 值 数 字 量 转 换 为 模 拟 量 输 出 , 就 得 到 输 出 信 号CLK_OUT。输出信号 CLK_OUT 的信号频率 fOUT = K * fCLK / 2N。当 K = 1 时,可得 DDS 最小分辨率为: fOUT = fCLK / 2N,此时输出信号频率最低。根据采样定理, K 的最大值应小于 2N /2。

对于 N 位的相位累加器,它对应的相位累加值为 2N,如果正弦 ROM 中存储单元的个数也是 2N 的话,这个问题就很好解决,但是这对 ROM 的对存储容量的要求较高。在实际操作中,我们使用相位累加值的高几位对 ROM 进行寻址,也就是说并不是每个系统时钟都对 ROM 进行数据取,而是多个时钟读取一次,因为这样能保证相位累加器溢出时,从正ROM 表中取出正好一个正弦周期的样点。因此,相位累加器每计数 2N 次,对应一个正弦周期。而相位累加器 1 秒钟计数 fCLK次,在 k=1 时, DDS 输出的时钟频率就是频率分辨率。频率控制字 K 增加时,相位累加器溢出的频率增加,对应 DDS 输出信号 CLK_OUT 频率变为 K 倍的DDS 频率分辨率。

二、ROM 内波形数据写入

1.MIF

我们设计的 DDS 简易信号发生器想要实现正弦波、方波、三角波和锯齿波 4 种波形的输出,需要事先在波形数据表 ROM 中存入 4 种波形信号各自的完整周期波形数据。 ROM作为只读存储器,在进行 IP 核设置时需要指定初始化文件, 我们将波形数据作为初始化文件写入其中,文件格式为 MIF 文件。使用 MatLab 绘制 4 种信号波形,对波形进行等间隔样,以采样次数作为 ROM 存储地址,将采集的波形幅值数据做为存储数据写入存储地址对应的存储空间。
基于FPGA的简易 DDS 信号发生器的设计

2.DDS 模块参考代码

代码如下(示例):

//********************************************************************//
//fre_add:相位累加器
always@(posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0)
        fre_add <=  32'd0;
    else
        fre_add <=  fre_add + FREQ_CTRL;

//rom_addr:ROM读地址
always@(posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0)
        rom_addr <= 14'd0;
    else
    case(wave_select)
        sin_wave:
            begin
                rom_addr_reg    <=  fre_add[31:20] + PHASE_CTRL;
                rom_addr        <=  rom_addr_reg;
            end     //正弦波
        squ_wave:
            begin
                rom_addr_reg    <=  fre_add[31:20] + PHASE_CTRL;
                rom_addr        <=  rom_addr_reg + 14'd4096;
            end     //方波
        tri_wave:
            begin
                rom_addr_reg    <=  fre_add[31:20] + PHASE_CTRL;
                rom_addr        <=  rom_addr_reg + 14'd8192;
            end     //三角波
        saw_wave:
        begin
                rom_addr_reg    <=  fre_add[31:20] + PHASE_CTRL;
                rom_addr        <=  rom_addr_reg + 14'd12288;
            end     //锯齿波
        default:
            begin
                rom_addr_reg    <=  fre_add[31:20] + PHASE_CTRL;
                rom_addr        <=  rom_addr_reg;
            end     //正弦波
    endcase

//********************************************************************//

波形仿真

基于FPGA的简易 DDS 信号发生器的设计文章来源地址https://www.toymoban.com/news/detail-469334.html

到了这里,关于基于FPGA的简易 DDS 信号发生器的设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 毕设分享|基于51单片机DDS信号发生器设计

    在电子通信技术日益发展的时代潮流下,直接式(DFS)和锁相式(PLL)已经不能满足生活和科研方面对于频率技术的需求。经过科研人员的不断攻坚下,直接数字频率合成器(DDS)应运而生。它现在广泛运用于移动通信、电子雷达、航天等方面。本次设计主要通过FPGA模块+单片机最小

    2024年02月03日
    浏览(41)
  • DDS信号发生器Verilog波形发生器FPGA

    名称:DDS信号发生器Verilog波形发生器 软件:Quartus 语言:Verilog 要求:  1.可产生正弦波,锯齿波,三角波,方波4种波形,频率可调  2.具有波形选择、起动、停止功能。 代码下载:DDS信号发生器Verilog波形发生器_Verilog/VHDL资源下载 代码网:hdlcode.com 部分代码展示 设计文档

    2024年02月07日
    浏览(41)
  • FPGA实验笔记_Vivado:DDS信号发生器;数码管;基于DHT11的温湿度传感器

    目录 1、 FPGA的DDS信号发生器 1.1、DDS简介 1.2、ROM IP核的生成 1.3、波形数据的生成 1.4、 ROM的调用 1.5、 完整代码(包括拓展部分) 2、数码管显示 2.1、数码管简要说明 2.2、SM410564 3、基于DHT11的温湿度传感器 3.1、DHT11 3.2、基本思路 3.3、数据分离模块(BTD) 3.4、数据转换模块(

    2024年02月04日
    浏览(37)
  • 基于STC89C52RC芯片 高频DDS信号发生器AD9851信号源方波正弦波系统设计

    一开始是使用按键进行频率输出数值的增加或者减少,后改进成使用EC11调节输出数值,使数值的输出更加顺滑流畅。 AD9851.c AD9851.h LCD12864.c LCD12864.h EC11.c EC11.h main.c

    2024年02月05日
    浏览(43)
  • 信号发生器:Intel FPGA DDS(NCO)+双路DAC(AD9767)输出正余弦信号

    Quartus18.1 小梅哥AC620开发板+ACM9767模块 示波器 ACM9767模块使用的是ADI公司的AD9767芯片,14位CMOS 双通道DAC,125Msps转换率。 输出形式为差分电流输出,输出电流满量程范围为可设置为 2~20mA。 AD9767的两路DA输出都为补码形式的电流输出IoutA和IoutB。当AD9767数字输入为满量程时(DAC的

    2024年03月24日
    浏览(45)
  • 基于vivado DDS ip核的DDS信号发生器(可调频调相)

    基于Vivado DDS ip核的DDS信号发生器: 在Vivado软件中调出DDS ip核进行设置,很多参数可以参考xilinx官方手册,比较重要的是System Clock系统时钟和Phase Widh相位宽度的设置,这是最终得到波形的频率和相位所需要的基础参数,在这里我分别设置为50Mhz和16bit。 在implementation页面设置频

    2024年02月12日
    浏览(27)
  • 【毕业设计—DDS信号发生器】Quartus II 软件新建工程

    大学四年的时间转瞬即逝,2023年我将迎来我的本科毕业。为了记录自己的研究进展,我将在这儿分享我的毕业设计进度~~博客涉及的知识点,如有不对,欢迎大家及时纠正,共同进步! 我安装的是Quartus II 13.1 版本。 1.在电脑D磁盘下新建一个文件夹【DDS】,然后分别新建4个子

    2024年02月03日
    浏览(33)
  • 基于AD9767高速DAC的DDS信号发生器(Verilog&Vivado)

    基于AD9767高速DAC的DDS信号发生器 提示:以下是本篇文章正文内容,下面案例可供参考 1.做一个双通道的信号发生器; 2.简单调整每个通道的频率输出; 3.能够调整每个通道的输出相位; 4.能够输出正弦波,三角波,方波。 代码如下(示例): 代码如下(示例): 【附件:】

    2024年02月06日
    浏览(48)
  • FPGA学习任意波函数信号发生器的设计(基于quartus II13.0)

    平台: quartus II 13.0 仿真:signal tap II 语言:VHDL 方式:原理图bdf输入 芯片:Cyclone IV E: EP4CE6E22C8 设计一任意波函数信号发生器,具备以下两功能: ①能输出标准正弦波波形。 ②能输出任意函数波形。 首先明确实验用到的宏模块操作是在tool——MeGaWizard Plug-In Manager中(如下图)

    2024年02月03日
    浏览(33)
  • 基于STM32单片机和AD9850的智能DDS函数信号发生器

    CSDN话题挑战赛第2期 参赛话题:学习笔记 有一天,我在浏览CSDN时看到一篇关于 AD9850 的帖子。AD9850是一款可以产生1hz到40mhz左右正弦波的芯片。淘宝的产品经销商能够将芯片与提供 TTL 电平控制的小板配对,然后以令人难以置信的 60元(或更低!)的价格出售。 要控制 AD985

    2024年02月13日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包