当前位置: 首页 > news >正文

[官方 IP] XPM_CDC

Xilinx XPM_CDC IP (PG382) 详细介绍

概述

Xilinx XPM_CDC(Xilinx Parameterized Macros - Clock Domain Crossing,Xilinx 参数化宏 - 时钟域交叉)是 AMD Xilinx 提供的一组参数化宏,用于在 FPGA 设计中实现安全高效的时钟域交叉(CDC,Clock Domain Crossing)。这些宏通过 Vivado 工具的模板实例化,基于 FPGA 的寄存器资源(FF)实现跨时钟域的信号同步,避免亚稳态问题。XPM_CDC 宏支持多种 CDC 场景,包括单比特同步、多比特同步、握手协议和异步复位同步,广泛应用于多时钟域的数字系统设计。

本文基于 PG382(XPM_CDC Generator v1.0 LogiCORE IP 产品指南,2022年4月20日发布),结合 AMD 官方文档(如 UG974、Vivado 设计套件用户指南:使用参数化宏)和社区资源,详细介绍 XPM_CDC 宏的功能、特性、配置、使用场景和注意事项,以中文内容呈现。


主要功能

XPM_CDC 宏提供一组标准化的 CDC 解决方案,旨在简化跨时钟域设计并确保信号同步的可靠性。其主要功能包括:

  1. 多种 CDC 宏类型
    • XPM_CDC_SINGLE:单比特信号同步,用于简单控制信号的跨时钟域传输。
    • XPM_CDC_GRAY:多比特格雷码同步,用于计数器或状态值的跨时钟域传输。
    • XPM_CDC_HANDSHAKE:握手协议同步,用于多比特数据(如总线)的安全传输。
    • XPM_CDC_PULSE:脉冲信号同步,将单周期脉冲从源时钟域传输到目标时钟域。
    • XPM_CDC_ASYNC_RST:异步复位同步,确保复位信号在目标时钟域的正确同步。
  2. 参数化配置
    • 支持用户定义的同步级数(2 至 10 级),平衡亚稳态保护和延迟。
    • 支持同步或异步时钟关系配置。
  3. 高效实现
    • 使用 FPGA 的寄存器(FF)资源,无需额外的黑盒 IP。
    • 优于传统 Block Memory/FIFO Generator 的 CDC 实现,减少仿真时间并提高综合精度。
  4. 灵活的接口
    • 支持简单的信号接口(如单比特输入/输出)或握手接口(如 req/ack 信号)。
    • 兼容 Vivado 的 RTL 实例化和综合流程。
  5. 广泛的器件支持
    • 7 系列 FPGA(Artix-7、Kintex-7、Virtex-7、Zynq-7000)。
    • UltraScale 和 UltraScale+ 系列。
    • Versal 自适应计算加速平台。
  6. 仿真和验证
    • 支持 Vivado 的功能仿真和时序仿真,确保 CDC 行为的正确性。
    • 兼容第三方 CDC 验证工具(如 Blue Pearl Software 的 Visual Verification Suite)。

XPM_CDC 宏类型详解

以下是对 XPM_CDC 宏的具体功能和典型应用的详细说明:

1. XPM_CDC_SINGLE

  • 功能:将单比特信号从源时钟域同步到目标时钟域,使用多级寄存器链(默认 2 级)防止亚稳态。
  • 端口
    • src_clk:源时钟。
    • src_in:源时钟域的单比特输入。
    • dest_clk:目标时钟。
    • dest_out:目标时钟域的同步输出。
  • 应用:同步控制信号(如使能信号、标志位)。
  • 参数
    • DEST_SYNC_FF:同步级数(2 至 10,推荐 2 或 3)。
    • INIT_SYNC_FF:是否初始化同步寄存器(0 或 1)。
    • SRC_INPUT_REG:是否在源时钟域添加输入寄存器(0 或 1)。

2. XPM_CDC_GRAY

  • 功能:将多比特格雷码信号从源时钟域同步到目标时钟域,适合计数器或状态值传输。
  • 端口
    • src_clkdest_clk:源和目标时钟。
    • src_in:源时钟域的格雷码输入(多比特)。
    • dest_out:目标时钟域的同步格雷码输出。
  • 应用:同步计数器值(如地址指针)或状态机状态。
  • 参数
    • WIDTH:格雷码位宽(1 至 32)。
    • DEST_SYNC_FF:同步级数。
    • INIT_SYNC_FFSRC_INPUT_REG:同 XPM_CDC_SINGLE。

3. XPM_CDC_HANDSHAKE

  • 功能:通过握手协议(req/ack)安全传输多比特数据,确保数据在目标时钟域正确采样。
  • 端口
    • src_clkdest_clk:源和目标时钟。
    • src_in:源时钟域的多比特数据输入。
    • src_send:源时钟域的发送请求信号。
    • src_rcv:源时钟域的接收确认信号。
    • dest_out:目标时钟域的同步数据输出。
    • dest_req:目标时钟域的请求信号。
    • dest_ack:目标时钟域的确认信号(可选)。
  • 应用:同步宽位数据总线(如配置寄存器、数据包)。
  • 参数
    • WIDTH:数据位宽(1 至 256)。
    • DEST_SYNC_FFINIT_SYNC_FFSRC_INPUT_REG:同上。
    • DEST_EXT_HSK:是否启用外部握手(0 或 1)。

4. XPM_CDC_PULSE

  • 功能:将源时钟域的单周期脉冲信号传输到目标时钟域,生成目标时钟域的单周期脉冲。
  • 端口
    • src_clkdest_clk:源和目标时钟。
    • src_pulse:源时钟域的脉冲输入。
    • dest_pulse:目标时钟域的脉冲输出。
  • 应用:同步事件触发信号(如中断请求)。
  • 参数
    • DEST_SYNC_FFINIT_SYNC_FF:同上。
    • REG_OUTPUT:是否在目标时钟域添加输出寄存器(0 或 1)。

5. XPM_CDC_ASYNC_RST

  • 功能:将异步复位信号同步到目标时钟域,确保复位信号的稳定性和时序正确性。
  • 端口
    • dest_clk:目标时钟。
    • src_arst:异步复位输入(高电平或低电平有效)。
    • dest_arst:目标时钟域的同步复位输出。
  • 应用:同步外部复位信号到内部时钟域。
  • 参数
    • DEST_SYNC_FF:同步级数。
    • RST_ACTIVE_HIGH:复位信号极性(0 为低电平有效,1 为高电平有效)。

配置与实例化

XPM_CDC 宏通过 Vivado 的 RTL 实例化实现,用户需在 Verilog 或 VHDL 代码中包含 XPM 库并实例化宏。以下是配置和使用步骤:

  1. 包含 XPM 库

    • 在 Verilog 中,添加以下语句:
      `include "xpm_cdc.sv"
      import xpm::*;
      
  2. 实例化宏

    • 使用 Vivado 的语言模板(Language Templates)或 PG382 中的示例代码。
    • 示例:XPM_CDC_SINGLE 宏的 Verilog 实例化:
module xpm_cdc_single_example (input wire src_clk,      // 源时钟input wire src_in,       // 源信号input wire dest_clk,     // 目标时钟output wire dest_out     // 同步输出
);xpm_cdc_single #(.DEST_SYNC_FF(3),    // 3 级同步.INIT_SYNC_FF(0),    // 不初始化.SRC_INPUT_REG(1)    // 添加源输入寄存器
) cdc_single_inst (.src_clk(src_clk),.src_in(src_in),.dest_clk(dest_clk),.dest_out(dest_out)
);endmodule

设计工具推荐

  • SZ901
    SZ901 是一款基于XVC协议的FPGA网络下载器。
    • 最高支持53M
    • 支持4路JTAG独立使用
    • 支持端口合并
    • 支持国产FLASH烧写
    • 下载器无限扩展
    • 配备专属程序固化软件,一键烧写,能大大减小程序固化时间!

相关文章:

  • Origin绘图——多标签散点图优化(蜂群图)
  • C#里创建一个TCP客户端连接类
  • FastGPT部署的一些问题整理
  • 第一个机器人程序
  • 大厂Java面试深度解析:Dubbo服务治理、WebSocket实时通信、RESTEasy自定义注解与C3P0连接池配置实践
  • 【AI面试准备】语言模型、语音、多模态等模型能力评估指标和能力边界
  • 制作一款打飞机游戏31:敌人数据库
  • MIT6.S081 - Lab11 networking(网络栈)
  • MyBatis 使用 POJO 参数动态查询教程
  • 从零搭建体育比分网站:技术选型与API调用实战(附完整源码)
  • 解锁植被参数反演密码:AI 与 Python 的融合之道
  • Andorid车机UI适配,AndroidUI图px的单位,如何适配1920x720,PPI100的屏幕设备
  • X11VNC远程屏幕连接了解一下
  • 免费Grok API Key获取,Grok API使用指南
  • [特殊字符]OCR,给交通领域开了“外挂”?
  • 【保姆级教程-Centos7环境下部署Prometheus并设置开机自启】
  • k8s术语master,node,namepace,LABLE
  • 堆栈和队列模拟
  • foc控制 - clarke变换和park变换
  • [TxRxResult] There is no status packet! 及 Incorrect status packet! 问题修复
  • 解放日报:持续拿出排头兵姿态先行者担当
  • 法院为“外卖骑手”人身权益撑腰:依法认定实际投保人地位
  • 找化学的答案,解人类的命题:巴斯夫的“变革者”成长之道
  • 影子调查丨危房之下,百余住户搬离梦嘉商贸楼
  • 广东一公司违规开展学科培训被罚没470万,已注销营业执照
  • 证监会发布上市公司信披豁免规定:明确两类豁免范围、规定三种豁免方式