资料介绍
描述
直接数字合成器 (DDS) 是软件定义无线电和数字通信系统中的关键工具,因为它们提供了一种在数字域中生成复杂信号的方法,该信号也是可变的。虽然 DDS 背后的理论相当简单,但第一次在 FPGA 中实现它可能有点挑战性,这就是为什么我想创建这个项目作为一个非常简单的示例,说明如何采用 Xilinx DDS 编译器 IP 并获得它在 Ultra96 板的可编程逻辑中运行。
也称为数控振荡器 (NCO),DDS 包含一个正弦曲线数据值的查找表,该表采用给定的相位值并输出正弦曲线的适当数据/幅度值。该输入值决定了输出波形的频率,该值越小,DDS 通过正弦查找表的速度越慢,输出波形的频率越低。相反,输入值越高,DDS 通过查找表的速度越快,输出波形的频率越高。这个输入值通常被称为调谐字,但在赛灵思 DDS 编译器 IP 中,它被称为相位增量。
如上图所示,该相位增量值 (Δθ) 越大,代表复杂波形的单位圆周围的 DDS 步长越快。当 M 加倍时,产生的复杂波形的频率也加倍,因为它绕单位圆的速度是原来的两倍。与该单位圆的相位值相关的数据点存储在 DDS 的查找表中。
在这一点上,我们可以看到 DDS 的主要优势之一:我们可以通过改变告诉 DDS 多快通过查找表的输入值(又名 - 多快绕单位圆移动)。
输入相位增量值不断添加到自身 (A1 和 D1) 以生成所需输出波形的每个瞬时值,从而从查找表 (T1) 中获取该瞬时相位值的适当数据值/幅度。
为了演示 DDS 及其输出波形频率变化的容易程度,我决定一个简单的啁啾波形是合适的。啁啾是正弦曲线以一个频率开始,然后在一段时间内线性增加或减少(这有时也称为扫描)。
我决定在 26 微秒内以 1MHz 的步长从 1MHz 到 25MHz 做一个简单的啁啾(我的结构时钟是 100MHz,即每个时钟周期 10 纳秒,我随机选择让 DDS 编译器输出每个频率 1 微秒以便在逻辑分析仪窗口中轻松查看)。
通过递归地将 1MHz 的相位增量值添加到自身,然后将其作为输入馈送到 DDS 编译器,这实现了我的啁啾从 1MHz 到 FPGA 结构时钟的一半(在 ILA 中采样时保持奈奎斯特规则)以 1MHz 步长。我选择只提高到 25MHz,这样整个啁啾声就可以立即显示在我的屏幕上以进行截图,但是我的结构时钟设置为 100MHz,所以我可以提高到 50MHz。
我使用来自 PG141 的以下等式计算了 B 列中每个输出波形频率的 C 列中的相位增量值:
然后我将 C 列中的相位增量值转换为十六进制以去掉小数位,因为我是在 Verilog 中编写这段代码的。我创建了 E 列和 F 列来表明相位增量的差异确实导致了与 1MHz 相同的十六进制值。
从我在之前的一个项目中为 Ultra96 生成的 Vivado 项目开始,需要将三件事添加到此 DDS 啁啾的顶层包装器中:
1 - Xilinx DDS 编译器。2 - 与 DDS 的 AXI Stream slave 和 master 接口的逻辑。3 - 一个集成逻辑分析仪 (ILA) IP,用于查看 DDS 的输出波形。
在 Vivado 的 Flow Navigator 列下,打开 IP 存储库并搜索“DDS”。当 DDS 编译器 IP 出现在 IP 存储库的列表中时,双击它后,将弹出一个对话框。单击“自定义 IP”按钮,将出现 DDS 编译器的配置窗口。
在如上所示的第一个选项卡中,出于我们的目的,所有默认设置都可以保留。
在第二个选项卡下,为相位增量和偏移可编程性选择流式传输。我发现这使得从 AXI Stream 接口变得最简单。
此外,对于 DDS 编译器的 AXI Stream 接口,在详细实现选项卡下,选中“输出 TREADY”框。我发现在处理 AXI Stream 时,TREADY 信号几乎总是一个必要的信号。
在添加 ILA 时,我总共添加了 4 个探针,用于监控 DDS 从接口上的输入相位增量值以及 DDS 在其主接口上的输出数据和相位值。我将 Ultra96 上的 UltraScale 芯片设置的深度尽可能大,以方便我的设计,即 65536。我建议始终尝试设置 ILA 以捕获尽可能多的数据。
例化 ILA 和 DDS IP 模块后,我编写了自己的简单状态机来创建 AXI Stream 接口,将相位增量值输入到 DDS,然后等待 1 微秒,然后将 1MHz 步长添加到相位增量值并输入到DDS。该状态机还保持计数,因此在达到 25MHz 的相位增量值后,它会在下一次迭代中回到 1MHz。
我发现这个简单的 AXI Stream 接口状态机在许多不同的应用程序中都非常方便。主要的逻辑步骤是:1 - 设置初始值。2 - 将目标 IP 的从接口上的 Tvalid 信号设置为高电平。3 - 设置要在目标 IP 的从接口上输入的数据值(相位增量值到 DDS 编译器)。4 - 检查来自目标 IP 的从接口的 Tready 信号,以验证它是否已准备好接收下一个数据值。
我的所有文件都在链接的 Github 存储库中,以及这里状态机的完整代码。
生成新的比特流后,打开 Ultra96 的电源并连接到其 JTAG 端口(您可以使用飞线完成此操作,但 Ultra96 的 JTAG 到 USB 接口将使您的生活变得更轻松)。
从 Vivado 的 Flow Navigator 中,选择Open Hardware Manager ,然后选择Open Target和Autodetect选项。一旦硬件管理器与 Ultra96 建立连接,选择Program Device选项并指定刚刚使用 DDS 逻辑创建的新比特流。
成功闪光后,ILA 窗口将出现,如果您单击即时捕捉按钮(带有 >> 字符的蓝色按钮),您将看到 DDS 不断循环的啁啾声。
ILA 顶部的图是 DDS 编译器输出的实际正弦波形,下图是其瞬时相位值。向下的第三个图是输入到 DDS 编译器的相位增量值。
底部的十六进制值只是状态机状态,用于演示每个状态如何与 DDS 编译器的控制相关。
我希望这个简单的 DDS 编译器示例对您有所帮助。如果您想进一步阅读,我附上了 Xilinx 的 DDS 编译器 (PG141) 产品指南,其中深入解释了其操作理论。
- Ultra96硬件用户指南
- Ultra96 CSI-2视频输出到Raspberry Pi摄像头输入
- Ultra96上的实时摄像头馈送网页
- 使用PYNQ的Ultra96面部识别锁栓
- 用于Ultra96的夹层板96AnalogXperience
- Ultra96 FPGA上的Live NYC Subway Monitor应用程序
- 与Ultra96联网端口转发
- Ultra96 V2上基于标记的增强现实
- 使用Ultra96 PYNQ测定织物GSM
- Ultra96皮肤癌AI构建
- 设计的带嵌入式收发器的Gen1×1硬核IP的 PCI Express IP编译器
- 2018.2 Ultra96:从 Matchbox 桌面关断 PetaLinux BSP,无法关断电路板
- 一起玩Ultra96之GPIO操作
- Xilinx Logicore IP直接数字合成器DDS的用户手册免费下载 20次下载
- 直接数字综合器(DDS)编译器开发指南
- Triton编译器的原理和性能 2168次阅读
- TVM编译器的整体架构和基本方法 1825次阅读
- 领域编译器发展的前世今生 1473次阅读
- 交叉编译器安装教程 3273次阅读
- VScode编译器如何配置C/C++编译环境 5432次阅读
- 编译器优化对函数的影响 2734次阅读
- 虚拟机:编译器对C函数的名字修饰 2469次阅读
- 如何选择PIC单片机的C编译器 5245次阅读
- 详解Xilinx公司Zynq® UltraScale+™MPSoC产品 3184次阅读
- 深入编程语言和编译器是怎样工作的 4214次阅读
- 编译器原理到底是怎样的带你简单的了解编译器原理 1.1w次阅读
- 基于Arm技术的16nm MPSoC开发套件Ultra96 6099次阅读
- verilog编译指令_verilog编译器指示语句(数字IC) 1.4w次阅读
- 编译器是如何工作的_编译器的工作过程详解 1.5w次阅读
- 编译器跟编辑器有什么区别 2.9w次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多