小梅哥-DDS原理和代码详解

这篇具有很好参考价值的文章主要介绍了小梅哥-DDS原理和代码详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.DDS是什么?

DDS(Direct Digital Synthesis):是一种信号产生器。

二.DDS公式原理及结构图

小梅哥-DDS原理和代码详解

2.1频率控制字控制输出频率的原理

DDS主要通过频率控制字(FWORD)和相位控制字(PWORD)来对信号的频率和相位进行改变。输出频率的公式为,其中B是FWORD,Fclk为系统时钟。公式这么写的原理推导如下:小梅哥-DDS原理和代码详解

 2.2相位控制字控制输出相位的原理

由DDS结构图可知频率控制字对频率进行改变后,将其和相位控制字进行了相加,然后通过相位控制字的值改变输出波形相位。原理如下:小梅哥-DDS原理和代码详解

三.代码部分及其详细解释

module DDS(
    clk,
    reset,
    Fword,
    Pword,
    data
    );
    input clk;
    input reset;
    input [31:0]Fword;//取32位是因为想让频率范围调整范围变大,对应2的32次方。
    input [11:0]Pword;//采样点是4096个,所以需要0-4095位,4095就需要12位。
    output [13:0]data;//输出是14位,因为数模转换模块是14位的。
    reg [31:0]Fword_r;
    reg [11:0]Pword_r;
    reg [31:0]Freg_acc;
    reg [11:0]Rom_addr;
    ROM ROM(
     .clka(clk),
     .addra(Rom_addr),
     .douta(data)
    );
    //频率控制字的寄存器
    always@(posedge clk or posedge reset)
        if(!reset)
           Fword_r<=0;
        else
            Fword_r<=Fword;
    //相位控制字的寄存器
    always@(posedge clk or posedge reset)
        if(!reset)
           Pword_r<=0;
        else
            Pword_r<=Pword;
    //相位累加寄存器
   always@(posedge clk or posedge reset)
        if(!reset)
            Freg_acc<=0;
        else
            Freg_acc<=Freg_acc+Fword_r; 
    //波形地址获取     
    always@(posedge clk or posedge reset)
        if(!reset)
            Rom_addr<=0;
        else 
            Rom_addr<=Freg_acc[31:20]+Pword_r;
     
endmodule

代码中的Rom_addr<=Freg_acc[31:20]+Pword_r;中Freg_acc[31:20]取前12位的原因如下:小梅哥-DDS原理和代码详解

四.疑惑与问题

小梅哥在testbench验证输出频率是否正确时使用的公式是(其中的2^N是指采样点数)小梅哥视频使用的正弦信号采样点是4096(2^12),但是在计算时确把2^N带入2^32次方,这是为什么?

解答:小梅哥-DDS原理和代码详解

 文章来源地址https://www.toymoban.com/news/detail-474040.html

 

到了这里,关于小梅哥-DDS原理和代码详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 具于xilinx FPGA的可动态配置DDS频率控制字的DDS IP核使用例程详解

    本文用于讲解xilinx IP 的dds ip examples(动态配置频率)的功能说明,方便使用者快速上手。 本examples 是月隐编写的针对DDS的使用demo,实现通过vio控制频率控制字来调整DDS的输出频率,为大家演示一个可动态配置DDS频率的例程。 例程的平台: 1) 硬件平台:XC7Z020CLG484-2 2) FP

    2024年02月02日
    浏览(41)
  • RabbitMQ详解(三):消息模式(fanout、direct、topic、work)

    参考官网:https://www.rabbitmq.com/getstarted.html 简单模式 Simple, 参考RabbitMQ详解(二):消息模式 Simple(简单)模式 简单模式是最简单的消息模式,它包含一个生产者、一个消费者和一个队列。生产者向队列里发送消息,消费者从队列中获取消息并消费。 发布订阅模式 fanout 同时向

    2024年02月10日
    浏览(46)
  • (完结篇)什么是语义分割?原理+手写代码实现?

    目录 Unet语义分割 1. 如何理解“语义”“分割”。 2. 语义分割原理(重点) 3. 语义分割意义 4. 语义分割应用场景 5. Unet的优势(医学领域) 6. 先行知识储备 7. 语义分割流程 8. 项目结构及介绍 9. 安装环境(python=3.8,pytorch) 10. 实现流程(重点) 11. 损失函数 12. 评估指标 13.

    2024年02月04日
    浏览(67)
  • VRRP协议是什么?详解它的工作原理

    作者: Insist-- 个人主页: insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 前言 本文将讲解VRRP是什么,以及它的工作原理,优点以及基本概念。 目录 一、VRRP协议是什么? 二、VRRP协议的工作原理 1、在抢占方式下 2、在非抢占方式下 三、VRRP的优点

    2024年02月13日
    浏览(44)
  • ConvNeXt原理+代码详解(通透)

    ConvNeXt 论文名称: A ConvNet for the 2020s 论文下载链接: https://arxiv.org/abs/2201.03545 源码链接: https://github.com/facebookresearch/ConvNeXt 太阳花的小绿豆的视频讲解: https://www.bilibili.com/video/BV1SS4y157fu 自从 ViT(Vision Transformer) 在CV领域大放异彩,越来越多的研究人员开始拥入 Transformer 的怀

    2024年02月06日
    浏览(33)
  • 什么叫SSH?原理详解,看这一篇就够了!

    你们好,我的网工朋友。 SSH是一种加密的网络安全协议,用于安全地远程登录和执行命令。 目前SSH协议已经被全世界广泛使用,大多数设备都支持SSH功能。 但你真的会用吗? 今天就从SSH是什么、怎么用出发,给你详解一下之后在远程登录、端口转发等多种场景下要怎样使用

    2024年04月26日
    浏览(42)
  • Kafka第二课-代码实战、参数配置详解、设计原理详解

    引入依赖 生产者代码以及参数详解 消费者代码以及参数详解 实体类 引入基本依赖 配置application.yml 当配置ack-mode: MANUAL_IMMEDIATE时,需要手动在消费者提交offset,否则会一直重复消费 消费者 测试,访问生产者控制层,可以自动监听到消费者 Kafka核心总控制器Controller 在Kafka集

    2024年02月16日
    浏览(35)
  • CLIP模型原理与代码实现详解

    目前,大模型十分活跃,openai公司呈现GPT系列,特别是Chat-GPT给人深刻印象,意识到大模型厉害之处,随后推出GPT4模型,更是将大模型进一步推到一个高度,并将多模态融合技术留下深刻印象,同时,学者也对多模态融合技术研究呈现百花齐放之势。然而,多模态模型大多以

    2024年02月07日
    浏览(40)
  • 自动驾驶解决方案有 adaptive autosar 与 ROS2+DDS这两种各有什么优势劣势?

    adaptive autosar 是一种面向汽车行业的标准软件架构,它提供了一系列基础平台组件和面向服务的协议,如 SOME/IP、DDS 等。它可以支持不同的操作系统,如 Yocto Linux 或其他 RTOS。它从一开始就考虑了功能安全和信息安全的要求,适合用于 高安全性完整性的应用 ,如 ADAS、AD 等。

    2024年02月09日
    浏览(47)
  • 基于FPGA的DDS原理信号发生器设计 quartusII 9.1平台 Verilog HDL语言编程 可产生正弦波

    基于FPGA的DDS原理信号发生器设计 quartusII 9.1平台 Verilog HDL语言编程  可产生正弦波、方波、锯齿波以及三角波   频率幅度可调节   代码+原理图 在现代电子技术领域,针对各种应用的信号发生器是一种非常核心的设备,而基于现场可编程逻辑门阵列(FPGA)的直接数字合成(

    2024年04月27日
    浏览(60)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包