DDS IP 库 - 2023.2 简体中文

Vitis 高层次综合用户指南 (UG1399)

Document ID
UG1399
Release Date
2023-12-18
Version
2023.2 简体中文

您可在 C++ 设计内通过使用 hls_dds.h 库来使用 AMD 的 Direct Digital Synthesizer (DDS) IP 块。本节解释了如何在 C++ 代码中配置 DDS IP。

重要: DDS IP 核的 C 语言 IP 实现支持针对 Phase_Increment 与 Phase_Offset 参数采用混合模式,并且支持针对 Phase_Offset 采用 none 模式,但不支持针对这些参数采用 programmablestreaming 模式。

要在 C++ 代码中使用 DDS,请执行以下操作:

  1. 在代码中包含 hls_dds.h 库。
  2. 使用预定义的 hls::ip_dds::params_t 结构体来设置默认参数。
  3. 调用 DDS 函数。

首先,在源代码中包含 DDS 库。此头文件位于 Vitis HLS 安装区域内的 include 目录中,执行 Vitis HLS 时会自动搜索该目录。

#include "hls_dds.h"

定义 DDS 的静态参数。例如,定义相位宽度、时钟速率和相位与增量偏移。DDS C 语言库包含 hls::ip_dds::params_t 参数化结构体,它可用于初始化含默认值的所有静态参数。通过重新定义此结构体中的任意值,即可自定义实现。

以下示例显示了如何使用用户定义的 param1 结构体覆盖相位宽度、时钟速率、相位偏移以及通道数量的默认值,此结构基于现有预定义的 hls::ip_dds::params_t 结构体:

struct param1 : hls::ip_dds::params_t {
 static const unsigned Phase_Width = PHASEWIDTH;
 static const double   DDS_Clock_Rate = 25.0;
 static const double PINC[16];
 static const double POFF[16];
};

使用含已定义的静态参数(例如,param1)的 HLS 名称空间创建 DDS 函数实例。然后,使用运行方法调用并执行该函数。以下是按顺序显示的数据和相位函数实参:

static hls::DDS<config1> dds1;
dds1.run(data_channel, phase_channel);