首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏FPGA开源工作室

    Vivado DDS IP核仿真

    1 DDS IP概述 直接数字合成器(DDS)或数控振荡器(NCO)是许多数字通信系统中的重要部件。 •相位生成器和SIN/COS查找表可以单独生成,也可以与可选抖动一起生成,以提供完整的DDS解决方案。 •光栅化功能消除了相位截断产生的相位噪声。 •正弦、余弦或正交输出。 •3位至26位带符号输出采样精度 IP 文档连接:PG141 2 DDS IP 架构 3 DDS IP 配置 (1)Component Name 可以修改IP核名字 (2)Configuration area(区域)、speed(速度) DSP48 use(控制相位累加器和后续添加阶段(相位偏移或抖动噪声添加)的实现):minimal(默认最小)、maximal(最大) 4 FPGA 实验 调用DDS DDS_top: module dds_top( input wire aclk, input wire reset_n, output valid, output

    1.1K10编辑于 2024-02-22
  • 来自专栏机器人课程与技术

    ROS2+DDS+RTPS

    DDS 使用 QoS 来定义 DDS 实体的行为特征。 QoS 由单独的 QoS 策略(源自 QoSPolicy 的类型的对象)组成。这些在政策中有所描述。 DDS 域由域 ID 标识。 DomainParticipant 定义域 ID 以指定它所属的 DDS 域。具有不同 ID 的两个 DomainParticipants 不知道彼此在网络中的存在。 此外,Fast DDS 还支持 TCP 和共享内存 (SHM) 传输。 它旨在支持单播和多播通信。 在继承自 DDS 的 RTPS 顶部,可以找到域,它定义了一个单独的通信平面。 但是,Fast DDS 支持多种配置,允许您更改 RTPSWriters/RTPSReaders 的行为。 您可以继续阅读 RTPS 层部分,了解更多关于快速 DDS 中 RTPS 协议的实现。 ----

    1.3K20编辑于 2022-06-27
  • 来自专栏Lauren的FPGA

    DDS Rasterized模式怎么用?

    直接数字频率合成器(DDS: Direct Digital Synthesizers)又称数字压控振荡器(NCO: Numerically Controlled Oscillator)在数字通信系统中被广泛使用 AMD提供了专门的DDS IP,用户只需根据设计需求进行定制。 这个IP有两种工作模式:Rasterized模式和Standard模式,如下图所示,可通过Mode Of Operation进行设定。 我们先了解一下DDS的工作原理,如下图所示,DDS由两部分构成:相位累加器和相位波形转换器。前者根据给定的初始相位和相位步进值输出目标相位值,后者又称波形存储器,根据输入的相位值输出对应的幅度值。 我们看一个案例,系统工作频率200MHz,模值M=1000,输出信号频率5MHz,故可得 基于此,DDS IP的参数配置如下图所示: 在Summary页面可以看到整体信息,这里需要注意无杂散动态范围SFDR 实际上,根据DDS的工作原理,除了可以输出正弦信号之外,还可以输出其他波形的信号。无需其他额外逻辑,在上述参数配置的情况下,相位累加器的输出将呈现锯齿波,而相位累加器的最高位将呈现方波,如下图所示。

    64121编辑于 2024-02-06
  • 来自专栏FPGA开源工作室

    基于LUT的DDS的设计

    基于LUT的DDS的设计 DDS(Direct Digital Synthesis)直接数字频率合成技术由USA J.Tierncy首先提出。 DDS主要出现在数字混频系统中。在数字混频中,通过DDS产生正交的本地振荡信号即正、余弦信号与输入信号相乘实现频谱搬移,如通信系统的调制、解调。 1 基于LUT的DDS理论 一个典型的基于LUT的DDS系统由相位累加器和波形存储器两部分构成,如图1所示。图中相位累加器的位宽为nbit,步进值为μ,LUT的深度N为2n,宽度为Lbit。 tb_dds源码: 1. `timescale 1ns / 1ps 2. end 77. end 78. 79. 80. 81. dds_rom U_dds_rom( 82. .clk(clk), 83. .addr

    1.2K10发布于 2019-10-29
  • 来自专栏机器人课程与技术

    ROS2之DDS问题汇集

    333 见过类似的问题,不是每个网络都有,但主要是无线网状网络有许多无线 AP 相互通信,其中 ROS2/DDS 流量导致它停止运行。

    1.3K20编辑于 2022-08-10
  • 来自专栏OpenFPGA

    Xilinx DDS Compiler IP 使用教程

    该输入值决定了输出波形的频率,值越小,DDS 通过正弦查找表的步进越慢,输出波形的频率越低。相反,输入值越高,DDS 步进查找表的速度越快,输出波形的频率也越高。 在加ILA的时候,一共加了4个探头监测DDS从接口的输入相位增量值和DDS主接口的输出数据和相位值。将芯片的深度设置为 65536。 实例化 ILA 和 DDS IP 后,编写了简单状态机来创建 AXI Stream 接口,将相位增量值输入到 DDS,然后等待 1 us,然后将 1MHz 步长添加到相位增量值并将其输入到DDS。 第三张图是输入到 DDS 的相位增量值。 底部的十六进制值只是状态机状态,用于演示每个状态如何与 DDS 控制关联。 ://docs.xilinx.com/v/u/en-US/pg141-dds-compiler 总结 希望这个简单的 DDS 示例对您有所帮助。

    2.5K31编辑于 2023-02-14
  • 来自专栏开源FPGA

    基于Vivado调用ROM IP core设计DDS

    DDS直接数字式频率合成器(Direct Digital Synthesizer)   下面是使用MATLAB生成正弦波、三角波、方波的代码,直接使用即可。 48 fprintf(fid,','); 49 end 50 if i%15==0 51 fprintf(fid,'\n'); 52 end 53 end 54 fclose(fid);    设计DDS 这是DDS的原理图,DDS并没有像它的名字一样说的那么玄乎,它的核心便是控制频率的fword字输入,和相位字pword输入,最后调用IP核查找表即可,代码也十分简单,下面给出DDS design代码。 1 module DDS( 2 input mclk, 3 input rst_n, 4 input [31:0]fword wire [11 : 0] addra 37 .douta(da_data) // output wire [9 : 0] douta 38 ); 39 40 endmodule DDS_design

    1.7K50发布于 2018-01-05
  • 来自专栏EMQ 物联网

    QUIC 双向认证、DDS 代理功能升级

    } }NanoMQ 的 MQTT over TCP 部分采用的是 MbedTLS 库进行加解密,与标准的 TCP 连接不同,QUIC 部分采用的是 MsQUIC 子模块项目内置的 forward_rules = { ## DDS to MQTT dds_to_mqtt = { from_dds = "MQTTCMD/topic1" to_mqtt = "DDS/topic1" struct_name = "remote_control_result_t" } ## MQTT to DDS mqtt_to_dds 目前虽然有了自动化代码生成工具,但 DDS Porxy 功能编译安装过程较为繁琐,对于不熟悉工程结构和 DDS 操作的用户来说比较困难。 此功能的讨论:点击查看在 NanoNNG 模块中更新了新的 nng_mqtt_quic_open_conf API 用于开启 QUIC 连接。

    1.9K50编辑于 2023-04-07
  • 来自专栏云深之无迹

    迷人的DDS数字下变频(YUNSWJ 仿真版)

    亲爱的看官,昨天后半夜没忍住,写了一个高速 ADC,其实表面参数之外,还有很多值得研究的东西,比如这么大的采样率,后面究竟在处理什么?

    20310编辑于 2026-01-07
  • 来自专栏C++开发学习交流

    【C++】DDS:FastDDS环境配置与使用示例

    :https://fast-dds.docs.eprosima.com/en/latest/ FastDDS的前身是Fast-RTPS,实现了许多 DDS 规范。 4.多语言支持:Fast DDS 支持多种编程语言,包括 C++、Java、Python 等,使得开发人员可以在不同的编程环境中使用 Fast DDS 进行开发。 下载地址:https://www.eprosima.com/index.php/component/ars/repository/eprosima-fast-dds/eprosima-fast-dds- /dds/publisher/Publisher.hpp> #include <fastdds/dds/publisher/DataWriter.hpp> #include <fastdds/dds/publisher /dds/subscriber/Subscriber.hpp> #include <fastdds/dds/subscriber/DataReader.hpp> #include <fastdds/dds

    6.8K11编辑于 2024-07-24
  • 来自专栏C++开发学习交流

    【C++】DDS:OpenDDS环境配置与使用示例

    Distribution Service)是一个开源的、高性能的实时数据分发和通信框架,符合OMG(Object Management Group)发布的Data Distribution Service(DDS

    1.9K10编辑于 2024-07-24
  • 来自专栏机器人课程与技术

    ROS2编程基础课程--DDS

    ROS 2和不同的DDS / RTPS供应商 ROS 2 is built on top of DDS/RTPS as its middleware, which provides discovery 本节详细介绍采用DDS实现和(或)DDS的RTPS有线协议的缘由,但先总述一下,DDS是一个端到端的中间件,它提供了ROS系统相关的功能,例如分布式发现(并不是ROS 1采用的集中式,如roscore) 供应商可能会提供多个针对满足不同需求的DDS或RTPS实现版本。 对于每个策略,还有“system default”选项,它使用可以通过DDS供应商工具(例如XML配置文件)定义的底层中间件的默认值。DDS本身具有可以配置的更广泛的策略。 虽然ROS 2为常见用例提供了一些QoS配置文件,但使用DDS中定义的策略允许ROS用户利用现有DDS文档的庞大知识库来为其特定用例配置QoS配置文件。

    1.7K41发布于 2019-09-18
  • 来自专栏机器人课程与技术

    ROS2和DDS學習筆記

    參考資料鏈接: ROS on DDS:http://design.ros2.org/articles/ros_on_dds.html ROS 2 and different DDS/RTPS vendors :https://index.ros.org/doc/ros2/Concepts/DDS-and-ROS-middleware-implementations/ ROS2 + DDS: When ROS2 and DDS? More technical Pub/Sub model difference between ROS and DDS DDS Participant, topic, publisher, subscriber but not using the ROS2 API over DDS.

    1.4K30发布于 2019-08-15
  • 来自专栏海风

    ROM存储14周期正弦信号构造DDS

    简单的dds程编写过程中我遇到问题以及一些个人的思考。初次接触FPGA,如有问题请多多指教~ 1.几个疑问,解决和没有解决的。 为何采用ROM而不是直接采用DDS核来进行正弦信号的合成? 实际中如果只需要合成正弦信号,那么DDS核是一个很好的选择,而且DDS核可以选择是否采用泰勒校正以获取更低的杂散。由于ROM表中的数据可以由我们自己选择,采用ROM做DDS具有更强的灵活性。 程序(请原谅我没有用case……) %% 正弦波dds产生 F_CLK=10*10^6; %时钟频率10M PINC_IN_L=32; %增量长度 DDS_CLK=10*10^3; %dds end end end end plot(dds_out); 3.DDS的解释 Xilinx的DDS核的User Guide中队DDS做了很详细的说明 ,本节不再重复此内容,本节将叙述一种全新的DDS理解方式。

    1.1K20发布于 2019-09-11
  • 来自专栏德思特

    德思特DDS模块如何实现极致精密的动态斜率控制?

    上一期内容中,我们为大家介绍了如何调整DDS设置。本期德思特将带大家进一步深入,解析固有频率与幅度斜率的相关知识,并探讨频率与幅度斜率中存在的量化误差——包括时间量化误差、行为时间误差以及值量化误差。 01固有频率和斜率频率说明除了频率、幅度和初始相位之外,德思特DDS 模块还支持线性频率和幅度斜率作为动态参数。具有线性斜率的序列编程序列顺序初始重置后:所有参数设置为 0,触发源设置为外部卡触发器。 对于TS-66xx DDS 模块,最小斜率刷新速率 t_re 为 6.4 ns,这对于它们设计的大多数应用来说绰绰有余。 值量化误差为了减少值误差, 斜率在内部以比DDS的频率分辨率fstep更高的斜率fstep分辨率进行计算。 示例:德思特66xx DDS模块具有大约0.3 Hz的频率分辨率fstep。 如果您将斜率速度设置为fstep/tre,则频率每6.4 ns会 增加exactly 0.3 Hz。

    27600编辑于 2025-08-27
  • 来自专栏全栈程序员必看

    求生之路2ping高_DDS信号源

    高少星:萌宝集团创始人、稻荷资本创始合伙人、《好玩的书》作者。曾任顺为资本董事总经理、百度高级投资经理,是好大夫、丁香园、一点资讯、宝宝巴士、IT桔子、拓词等公司的早期投资人。

    56630编辑于 2022-11-17
  • 来自专栏C/C++进阶专栏

    自动驾驶技术栈——DDS分布式通信协议

    ,最近由于自动驾驶技术的兴起,在车载软件的通信中间件开发中也使用了DDSDDS协议大致流程如下图所示: *DDS采用的通信方式是多对多的单向数据交互,通信模型为分布式结构,没有中心节点,同一个数据空间任何两个节点之间都能直接通信。 三,关于通信中间件: 中间件是位于操作系统平台和应用程序之间的软件层,它屏蔽了一些通信协议的细节,使组件之间通信模块的代码逻辑变得更简洁。 RTPS协议还可以允许不同的DDS模块之间进行交互。 3.借助开源的DDS编译工具,编译用于生成C++语言或Java语言的IDL文件,获得发布者/订阅者对应的头文件和源代码。 4.将发布者/订阅者的模块代码进行改造并嵌入到项目工程文件中进行通信。

    21.9K12编辑于 2023-02-23
  • 来自专栏EMQ 物联网

    QUIC 多流桥接、新增 DDS 协议转换代理

    NanoMQ 0.16 发布了 DDS Proxy 插件,其基于 Cyclone DDS (基于 OMG(Object Management Group)DDS 规范的开源 DDS 实现)开发,能够完成将 目前还需要用户自行将生成的代码 dds_type.h 和 dds_type.c 替换 dds_mqtt_type_conversion.h/dds_mqtt_type_conversion.c/dds_client.c ninja install 配置打开 DDS Proxy 配置 /etc/nanomq_dds_gateway.conf 来设置需要进行桥接和转发的 MQTT 和 DDS 主题。 " to_mqtt = "DDS/topic1" } ## MQTT to DDS 主题 mqtt_to_dds = { from_mqtt = 启动 DDS 客户端订阅 DDS 主题 MQTT/topic1 $ .

    1.1K30编辑于 2023-03-07
  • 来自专栏FPGA技术江湖

    常用的雷达信号:基于DDS的线性调频信号的产生

    DDS模块工作时,每来一个参考时钟,相位累加器就将频率控制字与寄存器输出的值累加,将相加后的值继续输入到寄存器中,这样构成一个循环,可以不停的对频率控制字进行累加。 在DDS模块中,输出频率的公式为:Fout = fclk/2*Fword 从公式可以看出,DDS输出的频率由频率控制字Fword决定。 首先根据带宽及采样率通过fword_gen模块产生线性的DDS的频率控制字,并且给出初始相位和斜率选择;将计算得到的频率控制字输出给DDS,产生频率在Band带宽内线性变化的余弦信号;最后通过幅度调制模块对输出信号的振幅进行调整 DDS模块调用xilinx的IP核DDS compiler6.0,可以双击IP核进行配置其系统时钟、相位位宽、输出信号位宽等。 ? ? 其中poff为相位控制字,pinc为频率控制字。 需要注意的是,在搭建模型调用IP核时,输入的相位控制字和频率控制字均需要为小数,可以通过调用reinterpret模块,将fword_gen模块生成的频率控制字转换成小数后输入给DDS IP核。 ?

    2.6K20发布于 2020-12-29
  • 来自专栏FPGA技术江湖

    源码系列:基于FPGA的任意波形发生器(DDS)设计(附源工程)

    设计架构 根据上述的原理图分析,本设计的架构如下图: 架构图中的端口功能描述如下表: dds_addr模块是实现相位累加器的模块,这里用参数来调制FWORD和PWORD的值,累加之后,将地址高八位(addr_out 打开sin.mif后,如下图所示: dds_addr模块代码: 这里我们以初始相位为180度,频率为5KHz为例: module dds_addr (clk, rst_n, addr_out); dds顶层模块代码: module dds (clk, rst_n, q); input clk, rst_n; //系统时钟复位 output [7:0] q; //输出波形数据 wire [7:0] addr_out; //8位地址,对应到ROM内的数据 /*****相位累加器模块*****/ dds_addr dds_addr_inst( .address ( addr_out ), .clock ( clk ), .q ( q ) ); endmodule 仿真测试 dds_tb顶层模块的测试模块: `timescale

    69610编辑于 2025-01-02
领券