0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在AMD FPGA上简单实现Xilinx DDS IP

OpenFPGA 来源:OpenFPGA 2023-01-09 09:31 次阅读

介绍

直接数字合成器 (DDS) 是软件定义无线电和数字通信系统中的关键工具,因为它们提供了一种在数字域中生成复杂信号的方法,该信号也是可变的。

虽然 DDS 背后的理论相当简单,但第一次在 FPGA 中实现它可能有点挑战,这就是为什么我想创建这个项目作为一个简单的示例,说明如何使用Xilinx DDS Compiler IP并把它运行在 Ultra96 板上的可编程逻辑中。

DDS 也称为数控振荡器 (NCO),包含正弦波数据值的查找表,该表接收给定的相位值并输出正弦波的适当数据/幅度值。

该输入值决定了输出波形的频率,值越小,DDS 通过正弦查找表的步进越慢,输出波形的频率越低。

相反,输入值越高,DDS 步进查找表的速度越快,输出波形的频率也越高。此输入值通常称为调谐字,但在 Xilinx DDS Compiler IP 中,它称为相位增量。

c0e2bcac-8fba-11ed-bfe3-dac502259ad0.gif

c1100356-8fba-11ed-bfe3-dac502259ad0.png

如上图所示,此相位增量值 (Δθ) 越大,DDS 围绕表示复杂波形的单位圆的步进速度越快。当 M 加倍时,生成的复杂波形的频率也加倍,因为它绕单位圆的步进速度是原来的两倍。与该单位圆的相位值相关的数据点存储在 DDS 的查找表中。

在这一点上,我们可以看到 DDS 的主要优势之一:我们可以快速、平滑地改变输出波形的频率,只需告诉 DDS 多快步进查找表的输入值(又名 - 多快绕单位圆移动)。

输入相位增量值不断添加到自身 (A1 & D1) 以生成所需输出波形的每个瞬时值,从而从查找表 (T1) 中获得该瞬时相位值的适当数据值/幅度。

c1263298-8fba-11ed-bfe3-dac502259ad0.png

为了演示 DDS 及其输出波形频率变化的难易程度,我决定使用简单的线性调频波形比较合适。线性调频是指正弦波以一个频率开始,然后在一段时间内线性增加或减少(有时也称为扫描)。

c13a2abe-8fba-11ed-bfe3-dac502259ad0.png

决定在 26 us的时间内以 1MHz 的步长从 1MHz 到 25MHz 进行简单的线性调频(时钟是 100MHz,每个时钟周期 10 ns,我随机选择让 DDS 编译器输出每个频率 1 us只是为了在逻辑分析器窗口中容易看到它)。

c16e3052-8fba-11ed-bfe3-dac502259ad0.png

通过递归地将 1MHz 的相位增量值添加到自身,然后将其作为输入提供给 Xilinx DDS Compiler IP ,这实现了从 1MHz 到 FPGA 结构时钟一半的线性调频(在 ILA 中采样时保留奈奎斯特规则)以 1MHz 为步长。选择只提高到 25MHz,这样整个 chirp 就可以立即显示在我的屏幕上进行截图,但我的结构时钟设置为 100MHz,所以可以降低到 50MHz。

使用 PG141 中的以下等式为 B 列中的每个输出波形频率计算了 C 列中的相位增量值:

c1bf42c6-8fba-11ed-bfe3-dac502259ad0.png

然后我将 C 列中的相位增量值转换为十六进制以去除小数位,因为我是在 Verilog 中编写此代码的。我创建了 E 列和 F 列以表明相位增量的差异确实导致了与 1MHz 相同的十六进制值。

接下来就是搭建工程进行验证,详细的搭建过程就不展示了,可以在最后的工程中找到,在工程中主要有以下IP:

1 - Xilinx DDS Compiler IP;

2 - 连接 DDS 的 AXI Stream 从设备和主设备的逻辑;

3 - 一个集成逻辑分析仪 (ILA) IP,用于查看 DDS 的输出波形。

在 Vivado 的 Flow Navigator 列下,打开 IP 库并搜索“DDS”。当 DDS Compiler IP 出现在 IP 存储库的列表中时双击它,将弹出一个对话框。单击“Customize IP”按钮,将出现 DDS 编译器的配置窗口。

c1db44f8-8fba-11ed-bfe3-dac502259ad0.png

在如上所示的第一个选项卡中,为了我们的目的,保留所有默认设置。

在第二个选项卡下,为相位增量和偏移可编程性选择AXI Stream 接口

c1f6d402-8fba-11ed-bfe3-dac502259ad0.png

同样关于 DDS 编译器的 AXI Stream 接口,在详细实施选项卡下,选中“Output TREADY”框。在处理 AXI Stream 时,TREADY 信号是一个必要的信号。

c2143a7e-8fba-11ed-bfe3-dac502259ad0.png

在加ILA的时候,一共加了4个探头监测DDS从接口的输入相位增量值和DDS主接口的输出数据和相位值。将芯片的深度设置为 65536。

c23584d6-8fba-11ed-bfe3-dac502259ad0.png

实例化 ILA 和 DDS IP 后,编写了简单状态机来创建 AXI Stream 接口,将相位增量值输入到 DDS,然后等待 1 us,然后将 1MHz 步长添加到相位增量值并将其输入到DDS。

该状态机还保持计数,在达到 25MHz 的相位增量值后,在下一次迭代中从 1MHz 开始返回。

这个简单的 AXI Stream 接口状态机在许多不同的应用程序中都非常方便。主要逻辑步骤是:

1 - 设置初始值。

2 - 在目标 IP 的从属接口上将 Tvalid 信号设置为高电平。

3 - 设置要在目标 IP 的从接口上输入的数据值(DDS 的相位增量值)。

4 - 检查来自目标 IP 从接口的 Tready 信号,验证它已准备好接收下一个数据值。

c2569630-8fba-11ed-bfe3-dac502259ad0.png

生成新的比特流后,打开 FPGA 开发板的电源并连接到其 JTAG 端口

在 Vivado 的 Flow Navigator 中,选择Open Hardware Manager ,然后选择Open Target和Autodetect选项。Hardware Manager与 FPGA 建立连接后,选择Program Device选项并指定刚刚生成的比特流。

成功下载后,ILA 窗口将出现,单击即时捕获按钮(带有 >> 字符的蓝色按钮),将看到 DDS 的波形。

c28604e2-8fba-11ed-bfe3-dac502259ad0.png

ILA 顶部的图是 DDS 输出的实际正弦波形,下面的图是它的瞬时相位值。第三张图是输入到 DDS 的相位增量值。

底部的十六进制值只是状态机状态,用于演示每个状态如何与 DDS 控制关联。

c2a8a5ec-8fba-11ed-bfe3-dac502259ad0.png







审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1603

    文章

    21326

    浏览量

    593242
  • DDS
    DDS
    +关注

    关注

    21

    文章

    614

    浏览量

    151733
  • NCO
    NCO
    +关注

    关注

    0

    文章

    22

    浏览量

    24574
  • 数字合成器
    +关注

    关注

    1

    文章

    9

    浏览量

    7444

原文标题:Xilinx DDS Compiler IP 使用教程

文章出处:【微信号:Open_FPGA,微信公众号:OpenFPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Xilinx FPGA MIPI 接口简单说明

    MIPI 接口现在非常流行,国产FPGA目前基本都带MIPI接口,而AMD-Xilinx是从U+系列开始支持MIPI电平,从国内使用情况来看,7系列FPGA是使用最广的器件,所以这次使用的FP
    发表于 04-24 09:30 4137次阅读
    <b class='flag-5'>Xilinx</b> <b class='flag-5'>FPGA</b> MIPI 接口<b class='flag-5'>简单</b>说明

    #硬声创作季 #FPGA Xilinx入门-22B DDS结构的FPGA实现-2

    fpgaXilinxDDS
    水管工
    发布于 :2022年10月09日 02:07:56

    SoPC实现的波形发生器

    基于FPGA的嵌入式系统的开发工具包。本文介绍基于SoPC的波形发生器EDK工具包下的设计与实现。本设计采用嵌入式软处理器核 MicroBlaze以及自主编写的包括实现
    发表于 06-25 08:12

    请问DDS ip是否允许控制生成波形的相移?

    的MSB来使用Xilinx DDS IP内核? DDS ip是否允许控制生成波形的相移?谢谢您的回答最好的祝福以上来自于谷歌翻译以下为原文H
    发表于 04-04 14:20

    基于DDS原理和FPGA技术的基本信号发生器设计

    信息显示LCD液晶显示屏。各硬件模块之间的协调工作通过嵌入式软核处理器NiosⅡ用编程实现控制。本设计所搭建的LCD12864控制器是通过编程实现
    发表于 06-21 07:10

    TCP/IP通信协议FPGA怎么实现

    近年来,随着信息技术的发展,网络化日加普遍,以太网被广泛应用到各个领域。例如在数据采集领域,一些小型监测设备需要增加网络实现远程数据传输的功能,只要那些设备增加一个网络接口并实现了TCP/I
    发表于 03-09 06:50

    如何使用Xilinx DDS Compiler IP并把它运行在Ultra96板的可编程逻辑中?

    实现它可能有点挑战,这就是为什么我想创建这个项目作为一个简单的示例,说明如何使用Xilinx DDS Compiler IP并把它运行在
    发表于 02-08 15:39

    基于FPGADDS信号源设计与实现

    基于FPGADDS信号源设计与实现 利用DDSFPGA 技术设计一种信号发生器.介绍了该信号发生器的工作原理、 设计思路及
    发表于 02-11 08:48 223次下载

    基于FPGADDS IP核设计方案

    以Altera公司的Quartus Ⅱ 7.2作为开发工具,研究了基于FPGADDS IP核设计,并给出基于Signal Tap II嵌入式逻辑分析仪的仿真测试结果。将设计的DDS
    发表于 04-05 16:04 85次下载
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>DDS</b> <b class='flag-5'>IP</b>核设计方案

    Xilinx TCP_IP协议实现

    Xilinx FPGA工程例子源码:Xilinx TCP_IP协议实现
    发表于 06-07 14:54 31次下载

    基于TCP/IP通信技术在Xilinx FPGA上的实现

    研究了TCP/IP通信协议栈在Xilinx 公司现场可编程门阵列FPGA上的实现,介绍了其软硬件的系统组成   和原理,提出一种不需操作系统的TCP/
    发表于 09-04 09:24 9次下载
    基于TCP/<b class='flag-5'>IP</b>通信技术在<b class='flag-5'>Xilinx</b> <b class='flag-5'>FPGA</b>上的<b class='flag-5'>实现</b>

    关于XilinxDDS IP的运用与讲解

    本次项目我们主要是为了讲解DDS,所以我们使用了混频这个小项目来讲解。DDS自己手写是比较简单且灵活,但是Xilinx给我们提供了相应的IP
    的头像 发表于 04-27 16:00 6401次阅读
    关于<b class='flag-5'>Xilinx</b>中<b class='flag-5'>DDS</b> <b class='flag-5'>IP</b>的运用与讲解

    关于Ultra96的Xilinx DDS编译器IP教程

    电子发烧友网站提供《关于Ultra96的Xilinx DDS编译器IP教程.zip》资料免费下载
    发表于 12-13 10:17 1次下载
    关于Ultra96的<b class='flag-5'>Xilinx</b> <b class='flag-5'>DDS</b>编译器<b class='flag-5'>IP</b>教程

    Xilinx Vivado DDS IP使用方法

    DDS(Direct Digital Frequency Synthesizer) 直接数字频率合成器,本文主要介绍如何调用XilinxDDS IP核生成某一频率的Sin和Cos信号
    的头像 发表于 07-24 11:23 2143次阅读
    <b class='flag-5'>Xilinx</b> Vivado <b class='flag-5'>DDS</b> <b class='flag-5'>IP</b>使用方法

    XILINX FPGA IPDDS Compiler_ip例化仿真

    之前的文章对dds ip 的结构、精度、参数、接口进行了详细的说明,本文通过例化仿真对该IP的实际使用进行演示。本文例化固定模式和可配置模式两种模式分别例化ip并仿真,说明该
    的头像 发表于 09-07 18:31 943次阅读
    <b class='flag-5'>XILINX</b> <b class='flag-5'>FPGA</b> <b class='flag-5'>IP</b>之<b class='flag-5'>DDS</b> Compiler_<b class='flag-5'>ip</b>例化仿真