核心功能:
通过 HMC7044 时钟芯片提供精准时钟,配合 JESD204B 高速串行接口实现 DAC 的数据传输
配置流程:
- 初始化 HMC7044 时钟发生器,为 DAC、FPGA 提供精准的工作时钟和 JESD204B 协议所需的 SYSREF 同步信号;
- 配置 AD9172 DAC 芯片的 SPI 通信、GPIO 控制、JESD204B 接口参数;
- 初始化 AXI 总线的 JESD204 TX 核、高速串行收发器 (ADXCVR)、DAC 核心模块;
- 可选支持 DMA 数据传输和 IIO(Industrial I/O)框架,用于 DAC 数据输出和上位机交互。
头文件部分

核心参数配置
(1)SPI通信参数(HMC7044/AD9172) 1. SPI 是 HMC7044/AD9172 与 FPGA 通信的接口,这里配置了 SPI 的时钟频率、模式、片选引脚,以及 Xilinx 平台的 SPI 驱动参数; 2. no_os_*前缀表示这是跨平台的无操作系统驱动层,适配不同 MCU/FPGA 平台。 
(2) HMC7044 时钟通道配置 1. HMC7044 是高精度时钟发生器,这里配置了 4 个输出通道:2 个给 DAC(时钟 + 同步信号)、2 个给 FPGA(时钟 + 同步信号); 2. is_sysref = true表示该通道输出 JESD204B 协议必需的 SYSREF 同步信号,用于多芯片同步; 3. PLL2 输出高频时钟(2.94912GHz),通过分频得到 DAC/FPGA 所需的低频时钟(如 DAC_CLK=2.94912G/8=368.64MHz)。 
(3) JESD204B TX 核配置 1. JESD204B 是高速串行接口协议,用于 DAC 与 FPGA 之间的高速数据传输; 2. 这里配置了协议的帧结构、链路时钟、分辨率等核心参数,是高速数据传输的关键。 
(4) AD9172 DAC 配置 1. 配置了 AD9172 的 SPI、GPIO(复位 / 使能)、采样率、输入时钟、JESD204B 接口参数; 2. dac_clkin_Hz对应 HMC7044 的 DAC_CLK 输出(368.64MHz),是 DAC 的核心工作时钟。 
主函数核心逻辑
(1) 缓存使能(Xilinx 平台) Xilinx FPGA 的 PS 端(处理系统)需要手动使能缓存,提升运行效率。 
(2) 硬件初始化流程 1. 初始化顺序严格:先时钟(HMC7044)→ 再接口(JESD204/ADXCVR)→ 再 DAC → 最后 DAC 核心; 2. 每一步初始化后检查返回值,失败则跳转到错误处理流程。 
(3) DAC 数据输出配置 1. DDS 模式:DAC 内部生成 40MHz 正弦波(默认); 2. DMA 模式:从 FPGA 的 DDR 内存读取自定义波形数据,通过 DMA 传输到 DAC。 
(4) 错误处理与资源释放 采用 goto 语句实现 “错误链” 处理:某一步初始化失败时,按逆序释放已初始化的资源,避免内存泄漏。 
(5) IIO 框架(可选) IIO(Industrial I/O)是 Linux 下的工业 I/O 框架,这里实现了串口透传,上位机可通过 libiio 库控制 DAC(如修改输出频率、幅值)。 