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

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

3天内不再提示

如何利用XPIO构建并实现带有Strobe的高速接口设计

XILINX开发者社区 来源:XILINX开发者社区 2025-10-17 09:22 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文作者:AMD 工程师 Zhang Cheng

在 AMD Versal 自适应 SoC 器件中,SelectIO 是实现高速接口的重要组成部分。它为器件提供了灵活且高性能的通用 I/O 资源,支持多种工作模式,能够满足源同步接口、异步接口以及各类自定义接口的需求。高速接口设计中,源同步接口(Source-Synchronous Interface) 是一种常见方式,其特点是发送端不仅传输数据信号,还会同时发送一条或多条时钟或选通信号(Strobe),以帮助接收端在高速条件下实现精确的数据采样。

在 Versal 器件中,XPIO 提供了灵活的时钟与数据路径资源。本文将以源同步接口为例,说明如何利用 XPIO 构建并实现带有 Strobe 的高速接口设计。

XPIO 的内部架构

这里以 VP1802 的 Bank706 为例,如下图所示,一个 Bank 有9个 XPHY Nibble 和2个 XPLL 组成,每个 Nibble 有6个 NIBBLESLICE,对应6个引脚或3组差分对,每个 XPHY NIBBLESLICE 由串行器(Serializer)、解串器(Deserializer)、I/O 延迟单元和接收 FIFO 组成。

483ea518-a8ee-11f0-8c8f-92fbcf53809c.png

GC 和 XCC 管脚

GC 是全局时钟输入管脚,通常作为 XPLL 的时钟源,可以驱动同一 XPIO bank 内的所有 XPLL,以及相邻 Bank 内的 XPLL。

XCC 是 Strobe 的输入管脚,Strobe 通常是由对端的 TX 接口发送的。

在一个 Bank 中,只有 NIBBLESLICE [0] 和 NIBBLESLICE [1] 可以用作 GC 或 XCC 的输入。无论是单端还是差分,都必须从与 NIBBLESLICE [0] 关联的 I/O 引脚输入。如果时钟是差分信号,那么时钟的反相信号(输入到与 NIBBLESLICE [1] 关联的 I/O 引脚)应与输入到 NIBBLESLICE [0] 的 I/O 引脚的信号连接到同一个差分缓冲器。

时钟布线资源

如果源同步接口有一路 Strobe 输入和多路 Data 输入,则可以利用 XPIO 内部的两种时钟资源( Inter-nibble clocking和 Inter-byte clocking)来转发 Strobe。当SERIAL_MODE 属性为 FALSE 时, Inter-nibble clocking 和 Inter-byte clocking 会被使能,适用于同步模式; SERIAL_MODE 属性为 TURE 时,每个 Nibble 的采样时钟都来自于 PLL_CLK 输入,适用于异步模式。

1.Inter-nibble clocking

Inter-nibble clocking 用于两个相邻 XHPY Nibble 对之间传递时钟。比如 Nibble0 和 Nibble1 在同一个 Nibble 对里面,它们可以相互使用对方的时钟。同样的还有 Nibble2 和 Nibble3、Nibble4 和 Nibble5 以及 Nibble6 和 Nibble7。但是 Nibble8 因为没有与之配对的 Nibble,因此也就不能通过 Inter-nibble clocking 资源与其他 Nibble 传递时钟,只能通过 Inter-byte clocking 来传递时钟。

489ba36c-a8ee-11f0-8c8f-92fbcf53809c.png

2.Inter-byte clocking

Inter-byte clocking 支持在一个 Bank 中的两个特定非相邻的 Nibble 之间传递时钟,注意这里是特定的 Nibble,而不是所有的 Nibble 之间都可以传递。下面通过三个案例来做详细说明。

以 Nibble3 为例,它的 Inter-byte clocking MUX 的输出分别连到了 Nibble1 和 Nibble5 的 Inter-byte clocking MUX 输入端(下图红色线路),红框内的实心点表示水平与垂直线存在相交。因此对应到Table-7第五行第三列,Nibble3 的时钟可以通过Inter-byte clocking传递到Nibble1和Nibble5,在到达 Nibble5 之后还可以再通过 Nibble5 的 Inter-byte clocking 把时钟传递到 Nibble7,也就是上文所提到的特定 Nibble,而不是所有的 Nibble。

以 Nibble0 为例,它的 Inter-byte clocking MUX 的输出(下图黄色线路)只连到了 Inter-nibble Clocking MUX 的输入,没有与任何别的端口连接,因此 Nibble0 不能通过 Inter-byte Clocking 将自己的时钟传递到别的 Nibble,也对应了 Table-7第二行第三列的 “-” ,Nibble1 的原因相同。

以 Nibble8 为例,它的内部没有 Inter-nibble clocking MUX,Inter-byte clocking MUX 的输出直接连到了 XPHY 的外部,Nibble8 只能接收来自 Nibble2、Nibble4 和 Nibble6 传递过来的时钟,而无法将自己的时钟传递给别的 Nibble,正如在 Table-7 的最后一行的所示。

48f7e2a8-a8ee-11f0-8c8f-92fbcf53809c.png

3.组合使用

组合使用两种时钟路径可以更加灵活地将时钟传递到其他 Nibble 中,比如要将 Nibble2 的时钟传递给 Nibble7,可以先通过 Nibble2的 Inter-byte clocking 把时钟输出到 Nibble4(上图绿色路径),再通过 Nibble4 的 Inter-byte clocking 把时钟输出到 Nibble6(上图橙色路径),最后通过 Nibble6 的 Inter-nibble clocking把时钟输出到 Nibble7。

注意组合使用存在一定的限制,Inter-byte clocking 的时钟输出可以连到 Inter-nibble clocking 再次传递,但是不能反过来操作,这与 XPHY 的结构有关。从上图 XPHY 的结构图中可以看到,Inter-byte clocking MUX 的输入是 XCC 或 GC,输出与 Inter-Nibble clocking MUX 相连,所以时钟传递的顺序就必须是先到 Inter-byte clocking,再到 Inter-Nibble clocking,反过来没有对应的时钟路径。

以 Nibble7 为例,当1个 XCC 时钟被连到 Nibble7 以后,它可以通过 Inter-Nibble clocking 被传递到 Nibble6,但是在这个时钟到达 Nibble6 以后就不能再被传递到其他 Nibble 中。因为 Nibble7 通过 Inter-Nibble clocking 输出的时钟没有任何路径可以再回到 Inter-byte clocking MUX的输入端。因此,如果希望时钟被灵活的传递到同一个 Bank 的多个 Nibble 中,选择 Nibble2、Nibble4 的 XCC 或 GC 输入是比较好的选择。

应用分析

1.使用 Advanced IO wizard 生成 IP,这里需要注意以下几点:

Basic 页面,Application 有两个选项,分别是源同步和异步,这里选择源同步(SOURCE SYNCRONOUS)。Bus Direction 选择 RX ONLY,其余保持默认。

495357c8-a8ee-11f0-8c8f-92fbcf53809c.png

Pin Configuration 页面,这里需要设置 Data 通道的数量。因为 XPIO 的1个 Bank 有9个 Nibble,每个 Nibble 有3组差分对,这样1个 Bank 总共有27组差分对可以使用。其中1对用于 Strobe 输入,那么在使用差分电平输入的情况下,Number of Data Channels 最大只能设置为26。而使用单端输入时,可以最大设置为53。也就是说,1个 XPIO Bank 最多可以接收1路Strobe+26路 data(差分模式)或1路 Strobe+53 路 data(单端模式)。这里把 Number of Data Channels 设置为10。

49ad057a-a8ee-11f0-8c8f-92fbcf53809c.png

2.点击 OK 产生 IP,右击 IP 选择 Open example design。

3.Example design 生成完毕后,可以看到内部包含了两个 Advanced IO 的 IP,名字分别为 core_inst 和 exdes_inst,分别对应 RX 和 TX 两组接口。

4a010c4c-a8ee-11f0-8c8f-92fbcf53809c.png

4.管脚约束:

这里还是把1路 Strobe 和10路 Data 都约束在 VP1802 的 Bank706,Strobe 从 Nibble4 的 XCC 管脚输入,10路 Data 被约束到 Nibble5-8,参考下图:

4a5baaf8-a8ee-11f0-8c8f-92fbcf53809c.png

此外,TX 相关的端口也需要作相应的约束,TX 的管脚约束取决于外部信号的连接。所有输入到 MMCM 的时钟需要被约束到 GC 管脚,其余的输入输出管脚没有特别的要求,可根据实际情况连接。

5.约束完成后,点击 Generate Device Image,完成后 Open implemented Design,下面我们验证一下 XPHY 的时钟资源。

Strobe 管脚被约束到了 BN24,这个管脚属于 Bank706 的 Nibble4。

4ab0a1f2-a8ee-11f0-8c8f-92fbcf53809c.png

10路 Data 信号分别被约束到了 Nibble5-Nibble8,根据 XPHY 内部的时钟结构,Nibbe4 会通过 CLK_TO_UPPER 管脚经过Inter-byte clocking(下图蓝色线)输出时钟给 Nibble6 的 CLK_FROM_OTHER_XPHY 管脚和 Nibble8 的 CLK_FROM_OTHER_XPHY 管脚,如下图所示:

4b11c98c-a8ee-11f0-8c8f-92fbcf53809c.png

Nibble4 和 Nibble6 再通过 P/NCLK_NIBBLE_OUT 管脚经过 Inter-nibble clocking 分别输出时钟给 Nibble5 的 P/NCLK_NIBBLE_IN 和 Nibble7 的 P/NCLK_NIBBLE_IN,下图蓝色的走线都是 Inter-nibble clocking。

4b7261de-a8ee-11f0-8c8f-92fbcf53809c.png

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

    关注

    25

    文章

    5647

    浏览量

    139021
  • soc
    soc
    +关注

    关注

    38

    文章

    4514

    浏览量

    227615
  • 高速接口
    +关注

    关注

    1

    文章

    67

    浏览量

    15214
  • Versal
    +关注

    关注

    1

    文章

    172

    浏览量

    8385

原文标题:开发者分享|AMD Versal™ SelectIO 基于 XPHY 构建源同步接口

文章出处:【微信号:gh_2d1c7e2d540e,微信公众号:XILINX开发者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    带有PHY支持SD卡接口的MCU分享?

    本人是小白,求各位大神多指教。如题:求带有PHY支持SD卡接口的MCU。
    发表于 08-25 14:24

    如何利用FPGA实现高速连续数据采集系统设计?

    高速连续数据采集系统的背景及功能是什么?如何利用FPGA实现高速连续数据采集系统设计?FPGA在高速连续数据采集系统中的应用有哪些?
    发表于 04-08 06:19

    如何利用双口RAM实现DSP与单片机高速数据通信?

    本文介绍了一种利用双口RAM实现DSP与单片机高速数据通信的方法,给出了它们之间的接口电路以及软件实现方案。
    发表于 06-03 06:18

    基于FPGA的高速数据接口实现

    本文介绍了一种应用FPGA 器件完成高速数字传输的方法,利用这种方法实现无线收发芯片nRF2401A 的高速数据接口。为进一步提高信息的传输
    发表于 08-04 09:16 9次下载

    利用Allegro实现嵌入式系统高速电路设计

    本文首先简述了高性能ARM9微处理器EP9315集成的外设接口及硬件结构框架,提出了当前高速电路设计中的问题;然后,详细介绍了利用Allegro实现嵌入式系统中SDRAM和IDE总线
    发表于 08-26 09:51 97次下载

    利用FPGA 实现与TS201 的LinkPort 高速数据

    随着技术的发展, 往往需要在不同的系统之间实现高速通信, 现介绍了一种基于LVDS的高速数据传输的接口LinkPort , 给出了在Xilinx 的FPGA 中
    发表于 09-22 08:26 98次下载

    基于FPGA的高速串行传输接口研究与实现

    摘 要:介绍了FPGA最新一代器件Virtex25上的高速串行收发器RocketIO。基于ML505开发平台构建了一个高速串行数据传输系统,重点说明了该系统采用RocketIO实现1.
    发表于 09-22 08:41 44次下载

    IR-UWB通信系统高速USB接口的设计与实现

    IR-UWB通信系统高速USB接口的设计与实现 摘要: 采用高速USB接口连接计算机终端与UWB通信系统基带模块,设计
    发表于 03-13 11:32 2548次阅读
    IR-UWB通信系统<b class='flag-5'>高速</b>USB<b class='flag-5'>接口</b>的设计与<b class='flag-5'>实现</b>

    视频采集接口的设计与实现

    利用Blackfin DSP 特有的PP I接口设计了 视频采集接口 ,其特点是数据采集过程独立于DSP内核。给出了采集程序实例。试验证明, PP I
    发表于 08-09 17:26 71次下载
    视频采集<b class='flag-5'>接口</b>的设计与<b class='flag-5'>实现</b>

    基于USB协议的DSP高速上位机接口实现

    介绍一种基于USB接口芯片(CY7C68013A)和FPGA实现的ADSP-TS101扩展USB接口的设计方法,该方法利用DSP的Link-port
    发表于 08-22 16:02 4061次阅读
    基于USB协议的DSP<b class='flag-5'>高速</b>上位机<b class='flag-5'>接口实现</b>

    高速串行接口链路层的电路设计与实现

    高速串行接口链路层的电路设计与实现
    发表于 01-19 21:22 12次下载

    基于FPGA的高速DSP与液晶模块接口实现

    基于FPGA的高速DSP与液晶模块接口实现
    发表于 10-19 13:46 3次下载
    基于FPGA的<b class='flag-5'>高速</b>DSP与液晶模块<b class='flag-5'>接口</b>的<b class='flag-5'>实现</b>

    如何在Advanced IO Wizard(XPHY)中使用XPIO_VREF

    SelectIO架构手册 AM010 描述了如何使用 XPIO_VREF原语来调整 Internal Vref
    的头像 发表于 07-11 17:25 984次阅读
    如何在Advanced IO Wizard(XPHY)中使用<b class='flag-5'>XPIO</b>_VREF

    $monitor和$strobe有何差异?

    $strobe只有在被调用时才会对其中的参数进行监测,此时的参数所具有的值可以认为是其所在当前时间槽(time-slot)中的最终值。另外,$strobe在设计中可以多次被调用,且多次调用相互之间不产生任何影响。
    的头像 发表于 01-22 09:38 1509次阅读
    $monitor和$<b class='flag-5'>strobe</b>有何差异?

    哪些探头与带有 TekVPI 探头接口的示波器兼容?

    哪些探头与带有 TekVPI 探头接口的示波器兼容? TekVPI 接口有几种不同类型,一种有凹口,一种没有。这个凹口是后来实现的,因为前端的设计不同并且与这些类型的探头进行独特的通信
    的头像 发表于 03-22 10:30 1155次阅读
    哪些探头与<b class='flag-5'>带有</b> TekVPI 探头<b class='flag-5'>接口</b>的示波器兼容?