vivado DDS学习

news2024/11/18 22:44:38

     实现DDS通常有两种方式,一种是读取ROM存放的正弦/余弦信号的查表法,另一种是用DDS IP核。这篇学习笔记中,我们要讲解说明的是VIVADO DDS IP核的应用。 目前本篇默认Phase Generator and SIN/COS LUT(DDS)的standard模式,至于其他模式,目前没有研究使用过,没有话语权,以后研究明白再来续写。

一、DDS IP配置

        下面的配置说明都是本人参考技术手册加上自己的理解,可能会有误解的地方,追求原汁原味的知识点的话还是去看技术手册。

Configuration Tab

Configuration Options:

        1.Phase Generator and SIN/COS LUT

        2.Phase Generator only

        3.SIN/COS LUT only

               从配置选项的名字就能够清晰的看出每种选项代表的功能,但是有必要注意的是 Phase Generator and SIN/COS LUT才是DDS。

                Phase Generator:如上图所示,Phase Generator由一个accumulator和一个可选的adder组成,以提供相位偏移的附加。在制定IP核时,相位增量(PINC)和相位偏移(POFF)可以被配置为fixed、programmable(用config 通道)或者streaming(用phase通道)三种模式。          

                SIN/COS LUT:当仅配置为SIN/COS LUT,不生成Phase Generator时PHASE_IN信号通过phase通道输入,并使用look-up table(LUT)转化为sine和cosine信号。IP核可以配置为仅sine输出,仅cosine输出或两者(正交)都输出,每个输出都可以独立配置为反向输出。可使用可选的Taylor series correction(泰勒级数校正)增加精度。

                Phase Generator and SIN/COS LUT:Phase Generator与SIN/COS LUT一起使用可以组合成为phase truncated DDS(相位截位DDS)或Taylor series correction DDS(泰勒级数校正DDS),也可以在两个块之间添加一个可选的dither generator组合成phase dithered DDS(相位抖动DDS)。

System Clock:DDS核心的时钟频率。其实就是输出信号的采样率

Number of Channels:最多支持16个通道,这些通道时间被复用,这降低了每个信道的有效时钟频率。开启多个通道相当于降低采样率

Mode of Operation:有standard和rasterized两种模式选择。(目前默认讲解standard

Frequency per Channel (Fs):由于分时复用,每个信道的有效时钟是System clock除以Number of Channels

Parameter Selection:DDS关键参数可以使用System parameters来指定,这些参数针对系统架构师(频域参数),也可以使用Hardware parameters,主要针对硬件工程师(时域参数)。这个条件下
Phase Generator和SIN/COS LUT仅根据Hardware parameters指定。

        System parameters:如上图System parameters界面,

                1.Spurious Free Dynamic Range(SFDR):DDS产生信号的质量,用于设置输出宽度以及内部总线宽度和各种实现决策。

                2.Frequency Resolution设置最小频率分辨率,并用于确定相phase accumulator及其相关的相位增量(PINC)和相位偏移(POFF)值所使用的相位宽度(Phase Width)。值越小,分辨率越高,需要更大的累加器。通过选择Noise Shaping可以使Phase Width增加,频率分辨率比指定的更高,

                3.Noise Shaping控制是否使用相位截位(phase truncation)、抖动(dithering)或Taylor series correction(泰勒级数校正)。None:Phase truncation DDS。Dithering:相位抖动用于改善SFDR,但代价是增加本底噪声。Taylor Series Corrected:相位截位中丢弃的bit对Sine/cosine进行插值。Auto:根据SFDR等System parameters自动确定Noise Shaping。

        Hardware parameters:如上图Hardware parameters界面。

                1.Phase Width:设置m_axis_phase_tdata中PHASE_OUT字段的宽度。

                2.Output Width:只有在选择DDS或SIN/COS LUT部件时才启用,因为Phase

                 Generator不需要它,用来设置在m_axis_data_tdata中设置SINE和COSINE字段的宽

                度。它提供的SFDR取决于Noise Shaping 的选项,计算方式如图:

Implementation Tab

Phase Increment Programmability:选择设置PINC值的方法。
Phase Offset Programmability:选择设置POFF值的方法。
        对于这些选项在上面介绍 Phase Generator时提到过,现在再来细说一下。
        Programmable:使用CONFIG通道更改PINC和POFF,对于 configuration inputs(s_axis_config_t*),输入和输出的延时是不固定的。建议当DDS的频率和相位在不同的操作模式之间切换时使用。
        顺势,我们讲讲 CONFIG Channel。
        要对CONFIG通道进行编程,必须进行N次传输,其中N是通道的数量。 按顺序从通道0开始的每个通道在每次传输时都包含 PINC或(和)POFF值。在最后一次传输时,对于通道(N-1)必须断言TLAST,如果不这样做,将导致event_s_config_tlast_missing或event_s_config_tlast_unexpected输出断言一个时钟周期。数据包只有在完成时才被视为收到。只有在完全接收到它时,它才有资格用于挂起同步事件( 同步事件在这里不说了,没有仔细研究过)。如图3-18所示,在第一个编程周期中,不正确地应用了TLAST,因此触发了事件输出。
第二个编程周期显示了TLAST的正确应用。
        当核心配置为单通道操作时,不需要TLAST,并且引脚不存在于CONFIG通道上。
        再讲CONFIG Channel TDATA Structure。
        当CONFIG通道为每个通道提供PINC和POFF值时,每个字段被符号扩展,以适应字节边界,也就是以8bit为单位。例如,对于11位的phase width,PINC将占用10:0位,而POFF将占用26:16位。因此s_axis_config_tdata的总体值为31:0。以下配置的示例宽度结构如图3-19所示:
        
         Streaming:使用PHASE通道更改PINC和POFF,对于 streaming inputs( s_axis_phase_t* ),输入和相关的输出有最小的延迟。建议当DDS的频率和相位需要经常改变时使用。
        顺势,我们讲讲 Input PHASE Channel。
       输入Phase通道用于DDS编译器执行一个动态功能,如相位或频率调制,每个输入样本都会有一个输出样本的应用程序。事实上,在输入和输出之间存在一对一的关系意味着输出Phase通道上的 TREADY无效会导致输入Phase通道上的TREADY也无效( 两者延时根据内部buffer的容量决定)。同样,Phase通道上输入数据的TVALID无效会导致输出通道上的TVALID无效。
        再讲Input PHASE Channel TDATA Structure。
        当Phase_Width = 11时,s_axis_phase_tdata的结构如图3-20所示:

Resync:选中后,s_axis_phase通道有一个RESYNC字段。当断言这个位元时,重置通道上积累的相位。在这个周期的累积相位的值是伴随RESYNC断言的PINC值加上POFF值。如图所示。
Output_Selection:DDS可以在m_axis_data_tdata总线中有一个SINE和COSINE字段,或者只有这两个字段中的一个。图3-22显示了三种配置的TDATA内部结构;quadratureoutputs, cosine only and sine only。例如,图中显示了一个11位的输出,符号扩展到16位,<<<表示符号扩展。

Detailed Implementation Tab

         ARESETn:当选中时,IP核有一个 aresetn (active-Low同步复位)端口。aresetn必须拉低 至少两个周期来复位IP核。
        至此,重要的配置就讲到这,后面如有技术深耕,再回来补充。接下来讲述一个实际使用的例子。

举例:

        DDS IP核配置如下:
        按照以上配置,就产生了一个系统时钟(采样率)是100M,单通道,相位输出位宽32bit,sine(16bit)和cosine(16bit)同时输出,用phase通道对PINC和POFF进行配置,带有aresetn的DDS。
dds_compiler_0 your_instance_name (
  .aclk(aclk),                                // input wire aclk
  .aresetn(aresetn),                          // input wire aresetn
  .s_axis_phase_tvalid(s_axis_phase_tvalid),  // input wire s_axis_phase_tvalid
  .s_axis_phase_tdata(s_axis_phase_tdata),    // input wire [63 : 0] s_axis_phase_tdata
  .m_axis_data_tvalid(m_axis_data_tvalid),    // output wire m_axis_data_tvalid
  .m_axis_data_tdata(m_axis_data_tdata),      // output wire [31 : 0] m_axis_data_tdata
  .m_axis_phase_tvalid(m_axis_phase_tvalid),  // output wire m_axis_phase_tvalid
  .m_axis_phase_tdata(m_axis_phase_tdata)    // output wire [31 : 0] m_axis_phase_tdata
);
        计算输出频率的公式如图。
        根据这个公式,按照我们举例生成的DDS要是想生成一个1M的信号,则需要输入PINC=1*2^32/100='h28F_5C29,POFF根据需求来设置。

拓展延申

        如果在此基础上,要求改变系统的采样率为2400M,要求输出一个600M的信号要怎么做呢?系统时钟不可能直接提供一个2400的时钟,DDS IP核最高接受1000M的时钟,但是FPGA也没法使用这么快的时钟。怎么办呢? 采用多个此DDS同时输出信号来提高采样率
        第一个问题,提高采样率。
                一个DDS的采样率是100M,要并行24路才能达到2400M的采样率。
        第二个问题,输出600M信号。
                按照上面的计算公式,DDS要输出600M,PINC=600*2^32/100='h6_0000_0000。
        第三个问题,24路如何输出一个连续信号?
                其实就是把每个阶段的相位增量(PINC)平均分给24个DDS,DDS从第1个开始依次输出的信号相位为PINC+POFF,PINC+POFF+POFF,PINC+POFF+POFF+POFF……一直到第24个DDS。如下图,24个DDS输出24个点。
                
附上代码:
genvar i;
generate

    for(i=0; i<channal; i=i+1)begin:channal_i       
        always @(posedge clk or posedge rst)begin
            if(rst)begin
                PINC[i] <= 'h0;    
                POFF[i] <= 'h0;    
                s_axis_phase_tvalid[i] <= 1'b0;
            end    
            else begin
                PINC[i] <= PINC_adjust;
                POFF[i] <= (PINC_adjust/channal)*i;      
                s_axis_phase_tvalid[i] <= 1'b1;         
            end
        end 
    
        dds_compiler_0 dds_compiler_0 (
          .aclk(clk),                                
          .aresetn(aresetn),                          
          .s_axis_phase_tvalid(s_axis_phase_tvalid[i]),  
          .s_axis_phase_tdata({POFF[i],PINC[i]}),    
          .m_axis_data_tvalid(m_axis_data_tvalid[i]),
          .m_axis_data_tdata({sine[i],cosine[i]}), 
          .m_axis_phase_tvalid(m_axis_phase_tvalid[i]), 
          .m_axis_phase_tdata(m_axis_phase_tdata[i]) 
        );
    end
endgenerate

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1413417.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

运行时提示d3dx9_43.dll错误的解决办法,d3dx9_43.dll为什么会丢失

当你在运行某些程序或游戏时出现"找不到d3dx9_43.dll"的错误提示时&#xff0c;不要慌张&#xff01;这是一个常见的问题&#xff0c;但有多种有效的解决办法可以帮助你修复这个文件丢失的情况。今天就来教大家d3dx9_43.dll文件丢失的多种解决办法。 一、d3dx9_43.dl…

【微信小程序】怎样创建formdata对象,并通过 wx.request 发送file文件

一、场景 业务需求&#xff1a;微信小程序开发需要选择本地照片file连同一些表单数据&#xff0c;通过接口发送给服务器 问题&#xff1a; 因涉及到域名安全问题以及并不是单独上传图片&#xff0c;不能使用 wx.uploadFile 。 微信本身没有FormData对象&#xff0c;无法使用 n…

【yaml 文件使用】pytest+request 框架中 yaml 配置文件使用

又来进步一点点~~ 背景&#xff1a;最近在学习pytestrequest框架写接口测试自动化&#xff0c;使用yaml文件配置更方便管理用例中的数据&#xff0c;这样更方便 yaml 介绍&#xff1a; 什么是 yaml 文件&#xff1a;YAML 是 “YAML Ain’t a Markup Language”&#xff08;Y…

硬件知识(1) 手机的长焦镜头

#灵感# 手机总是配备好几个镜头&#xff0c;研究一下 目录 手机常配备的摄像头&#xff0c;及效果举例 长焦的焦距 焦距的定义和示图&#xff1a; IPC的焦距和适用场景&#xff1a; 手机常配备的摄像头&#xff0c;及效果举例 以下是小米某个手机的摄像头介绍&#xff1a…

防御保护----防火墙的安全策略、NAT策略实验

实验拓扑&#xff1a; 实验要求&#xff1a; 1.生产区在工作时间&#xff08;9&#xff1a;00-18&#xff1a;00&#xff09;内可以访问DMZ区&#xff0c;仅可以访问http服务器&#xff1b; 2.办公区全天可以访问DMZ区&#xff0c;其中10.0.2.10可以访问FTP服务器和HTTP服务器…

动能资讯 | 新能源充电桩

充电桩是新能源汽车快速发展不可或缺的一环。充电桩是为新能源汽车充电的充电设施&#xff0c;类似于加油站里的加油机&#xff0c;安装于公共建筑和居民小区停车场或充电站内&#xff0c;可以根据不同的电压等级为各种型号的电动汽车充电。 按照其输出的电压电流为交流电还是…

单片机学习笔记---矩阵键盘密码锁

目录 一&#xff0c;设置密码按键 1.设置密码区域 2.设置输入的数字左移 3.设置记录按键的次数 二&#xff0c;设置确认键 1.密码正确时显示OK 2.密码错误时显示ERR 3.密码错误恢复初始状态重输 三&#xff0c;设置取消键 学了这么久&#xff0c;迫不及待想要做一个密…

虹科数字化与AR部门升级为安宝特AR子公司

致关心虹科AR的朋友们&#xff1a; 感谢您一直以来对虹科数字化与AR的支持和信任&#xff0c;为了更好地满足市场需求和公司发展的需要&#xff0c;虹科数字化与AR部门现已升级为虹科旗下独立子公司&#xff0c;并正式更名为“安宝特AR”。 ”虹科数字化与AR“自成立以来&…

力扣hot100 实现Trie(前缀树) 字典树 一题双解

Problem: 208. 实现 Trie (前缀树) 文章目录 思路复杂度&#x1f49d; TrieNode版&#x1f49d; 二维数组版 思路 &#x1f469;‍&#x1f3eb; 宫水三叶 复杂度 &#x1f49d; TrieNode版 public class Trie {class TrieNode{boolean end;//标记是否有以当前节点为结尾的字…

算法笔记:地理探测器

1 空间分层异质性&#xff08;spatial stratified heterogeneity&#xff09; 空间分层异质性&#xff08;空间分异性/区异性&#xff09;&#xff1a;层内方差小于层间方差的地理现象例如气 候带、土地利用图、地貌图、生物区系、区际经济差异、城乡差异以及主体功能区等 等[…

Git 删除已经 Push 到远程多余的文件

例如要删除 data/log 文件 1. 在当前项目下打开终端 2. 查看有哪些文件夹 dir 3. 预览将要删除的文件&#xff08;如果不清楚该目录下是否存在不应该删除的文件&#xff09; git rm -r -n --cached 文件/文件夹名称 加上 -n 这个参数&#xff0c;执行命令时&#xff0c;是不会…

vue 样式隔离原理

日常写单文件组件时&#xff0c;会在style添加scoped属性&#xff0c;如<style scoped>&#xff0c;目的是为了隔离组件与组件之间的样式&#xff0c;如下面的例子&#xff1a; <template><p class"foo">这是foo</p><p class"bar&q…

React16源码: React中commitAllHostEffects内部的commitDeletion的源码实现

commitDeletion 1 &#xff09;概述 在 react commit 阶段的 commitRoot 第二个while循环中调用了 commitAllHostEffects&#xff0c;这个函数不仅仅处理了新增节点&#xff0c;更新节点最后一个操作&#xff0c;就是删除节点&#xff0c;就需要调用 commitDeletion&#xff0…

SAP包的操作-修改程序所在的包

SAP包的操作 目录 SAP包的操作SAP GUI转换程序所在的包Eclipse转换程序所在的包 SAP GUI转换程序所在的包 Eclipse转换程序所在的包

YOLOv8优化策略:分层特征融合策略MSBlock | YOLO-MS ,超越YOLOv8与RTMDet,即插即用打破性能瓶颈

🚀🚀🚀本文改进:分层特征融合策略MSBlock,即插即用打破性能瓶颈 🚀🚀🚀在YOLOv8中如何使用 1)作为MSBlock使用;2)与c2f结合使用; 🚀🚀🚀YOLOv8-seg创新专栏:http://t.csdnimg.cn/KLSdv 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 1)手把…

Docker数据卷挂载(以容器化Mysql为例)

数据卷 数据卷是一个虚拟目录&#xff0c;是容器内目录与****之间映射的桥梁 在执行docker run命令时&#xff0c;使用**-v 本地目录&#xff1a;容器目录**可以完成本地目录挂载 eg.Mysql容器的数据挂载 1.在根目录root下创建目录mysql及三个子目录&#xff1a; cd ~ pwd m…

SpringMVC 环境搭建入门

SpringMVC 是一种基于 Java 的实现 MVC 设计模型的请求驱动类型的轻量级 Web 框架&#xff0c;属于SpringFrameWork 的后续产品&#xff0c;已经融合在 Spring Web Flow 中。 SpringMVC 已经成为目前最主流的MVC框架之一&#xff0c;并且随着Spring3.0 的发布&#xff0c;全面…

2024年材料、控制工程与制造技术国际学术会议(ICMCEMT 2024)

2024年材料、控制工程与制造技术国际学术会议(ICMCEMT 2024) 2024 International Conference on Materials, Control Engineering, and Manufacturing Technology (ICMCEMT 2024) 会议简介&#xff1a; 2024年材料、控制工程与制造技术国际学术会议(ICMCEMT 2024)定于2024年在…

LiveGBS流媒体平台GB/T28181常见问题-如何快速查看推流上来的摄像头并停止摄像头推流?

LiveGBS流媒体平台GB/T28181常见问题-如何快速查看推流上来的摄像头并停止摄像头推流&#xff1f; 1、负载信息2、负载信息说明3、会话列表查看3.1、会话列表 4、停止会话5、搭建GB28181视频直播平台 1、负载信息 实时展示直播、回放、播放、录像、H265、级联等使用数目 2、负…

AR眼镜_ar智能眼镜显示方案|光学方案

AR眼镜是一种智能眼镜&#xff0c;能够将虚拟现实和现实世界相结合&#xff0c;使人们能够在日常生活中体验和参与虚拟现实。然而&#xff0c;AR智能眼镜的制造成本高&#xff0c;开发周期长。要实现AR眼镜的各项功能&#xff0c;需要良好的硬件条件&#xff0c;而AR智能眼镜的…