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

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

3天内不再提示

SERDES的工作原理及实现细节

倩倩 来源:CSDN 作者:CSDN 2022-09-05 14:30 次阅读

高速串行通信经常需要用到 XILINX FPGA 内部专用的 SERDESE 模块来实现串并转换。LVDS 配合 SERDESE可以充分发挥 FPGA 的高速接口优势。SERDESE 分输入和输出,输入采用 ISERDESE, 输出采用 OSERDESE,OSERDESE 的使用要比 ISERDESE 简单。

本文涉及到一些重要原语概念,包括 idelay 延迟原语,IDELAYCTRL原语, ISERDESE 、OSERDESE。其中很关键一点时使用 idelay 延迟模块以及 ISERDESE 原语中 BITSLIP 功能,实现比特流的时钟对齐,以及数据流的位流顺序对齐。XILINX FPGA 高速通信中经常会用到 idelay模块对信号比特流做细微的时序调整。

参考文档包括:官方手册ug471,xapp585,第三方米联客教程

1、IDELAYCTRL模块

30a7c0c8-2cd8-11ed-ba43-dac502259ad0.png

2、IDELAY模块

30d3a026-2cd8-11ed-ba43-dac502259ad0.png

3、IDELAY模块工作时序

30fb49b4-2cd8-11ed-ba43-dac502259ad0.png

3113a144-2cd8-11ed-ba43-dac502259ad0.png

4、OSERDES模块

3132c92a-2cd8-11ed-ba43-dac502259ad0.png

OSERDES模块数据传输方式支持SDR,DDR两种,数据位宽支持级联以扩展到14比特。

3152b8e8-2cd8-11ed-ba43-dac502259ad0.png

317156c2-2cd8-11ed-ba43-dac502259ad0.png

由上图可知,OSERDES串行输出的数据流与原始并行数据比较,大小端是相反的。

5、ISERDES模块

ISERDESE2 在 SDR 模式下数据转换的位宽可以为 2、 3、 4、 5、 6、 7、 8bit,在 DDR 模式时,数据转换位宽为 4、 6、 8bit, 2 个 ISERDESE2 级联使用, DDR 模式可以支持 10、 14bit。如下图所示通过 2 个 ISERDESE2 级联输出14bit 位宽数据接口。

31993e3a-2cd8-11ed-ba43-dac502259ad0.png

6、Bitslip数据对齐功能

31bb8d00-2cd8-11ed-ba43-dac502259ad0.png

31de5010-2cd8-11ed-ba43-dac502259ad0.png

7、Serdes时钟源设计要求

3200fe4e-2cd8-11ed-ba43-dac502259ad0.png

二、源码解析

1、SDR ISERDESE 时钟恢复

ISERDESE 的作用是和 OSERDESE 相反的过程,但是比 OSERDESE 稍微复杂一些。ISERDESE 代码需要实现自动找到最佳的数据采样点, 自动完成数据对其,其中的加入了 IDELAY 和 BITSLIP 功能的使用,以及一些状态机代码。笔者下面根据 XAPP585 中给出的 demo 源码分析。

1.1使用IDELAY之前,需配置IDELAYCTRL。

322af5f0-2cd8-11ed-ba43-dac502259ad0.png

1.2 计算比特流最大速率参数

官方源码仿真使用的并行时钟为80M,SDR模块采用1_to_7串并转换,则Serdes工作速率为560Mbps,由此可以得到Idelay调节Tap最大的步数。

3247f092-2cd8-11ed-ba43-dac502259ad0.png

设置 bit_rate_value=0560,那么代表了 serdes 的速率是 560Mbps,根据下面代码得出 bt_val=5’h17(bt_val=5’d23)。由上文可知, idelay 的参考时钟是 200MHZ, 那么每个延迟节拍是 78ps,则23*78ps= 1,794 ps = 557 Mb/s.最接近 560Mbps。

1.3 如何实现时钟恢复时,差分时钟信号正负相位对齐

查看源码可知,SERDES工作速率为560Mbps参数,就可以选出 bit_rate_value 为 0557, 所以 bt_val 为 17h。先取出 bt_val 的中间值,即17h 的中间值是 0Bh。把差分时钟n 的延迟时间设定为0Bh,把差分时钟p的初始延迟设定为17h,然后保持差分时钟n 的延迟时间不变,每次调节1个Tape,用于差分时钟p和差分时钟n的反向 进行相位对比,直到二者相位差为零。这个细节就是实现差分时钟信号对齐的核心,看代码时很容易忽略。我在第一遍时就犯了这个错误,导致始终不明白所以然。

32795d6c-2cd8-11ed-ba43-dac502259ad0.png

32a97664-2cd8-11ed-ba43-dac502259ad0.png

1.4 Bitslip进行比特流位顺序调节

32c69870-2cd8-11ed-ba43-dac502259ad0.png

这段代码不复杂,Bitslip的调节原理见上文,也容易理解。

1.5 差分时钟正负信号时序补偿

32e55aee-2cd8-11ed-ba43-dac502259ad0.png

需要把上述代码段看明白就知道补偿原理了。

通过控制每次减 1 个 tap,减少 idelay 延迟,并且通过 ISERDESE 检测时钟的跳变。当第一次跳变发生的时候,代表检测到了时钟的跳变沿,假设这个时候 bt_val=05h,05h<0Bh 所以计算出时钟的 0BH+05H =10H。

如果恢复出的时钟信号不是目标Pattern值 1100001 或者 1100011,就需要用到 Bslip 调整,每次设置 Bslip 调整一次。

330cc2a0-2cd8-11ed-ba43-dac502259ad0.png

仿真结果如上图的箭头所示,接收的 clk_data 是 7bit 时钟数据,通过调整 c_delay_in 值调整 idelay每次减 1 个 tap,直到 clk_data 发生改变,可以看到这个值是 0b 整好是和中间值相等。这个时候状态机 state2 也会进入状态 1,这个时候计算出 c_delay_in_target=0,这个就是我们需要延迟的时间,可以看到需要延迟的时间为 0,这种情况非常理想,如果实际程序跑起来一般不会是 0,之后进入状态 2。在状态 2 中继续调整 c_delay_in 直到和 c_delay_in_target 相等,如下图,可以看到 clk_data=1100001b 是占比3:4 的时钟就恢复出来了。

总结:

本篇文档通过学习米联客的教程,并结合UG471的学习,XAPP585的源码学习,来不断加深SERDES的工作原理及实现细节,并记录一下自己学习过程,仿真有助于理解源码。

审核编辑 :李倩

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

    关注

    11

    文章

    711

    浏览量

    65248
  • 源码
    +关注

    关注

    8

    文章

    633

    浏览量

    29152
  • SerDes
    +关注

    关注

    6

    文章

    197

    浏览量

    34864

原文标题:XAPP585 - Serdes 1_to_7_sdr 解读

文章出处:【微信号:Hack电子,微信公众号:Hack电子】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    成像器件的工作原理是什么

    工作原理 1. 成像器件的分类 成像器件可以根据其工作原理和应用领域进行分类。主要的成像器件类型包括: 电荷耦合器件(Charge-Coupled Device, CCD) :是一种基于半导体材料的成像器件,通过电荷的存储和转移来实现
    的头像 发表于 10-14 14:05 259次阅读

    TMS320C6474 SERDES实现指南

    电子发烧友网站提供《TMS320C6474 SERDES实现指南.pdf》资料免费下载
    发表于 10-14 09:29 0次下载
    TMS320C6474 <b class='flag-5'>SERDES</b><b class='flag-5'>实现</b>指南

    KeyStone I器件的SerDes实现指南

    电子发烧友网站提供《KeyStone I器件的SerDes实现指南.pdf》资料免费下载
    发表于 10-12 09:25 0次下载
    KeyStone I器件的<b class='flag-5'>SerDes</b><b class='flag-5'>实现</b>指南

    cmos电流反馈运放的工作原理是什么?

    这是一个cmos电流反馈型运放的原理图 谁能详细的解释一下它的工作原理 具体每个mos有什么用 如何实现放大的 谢谢了
    发表于 09-23 07:40

    CMOS型LDO的工作原理和特点

    差线性稳压器。它结合了CMOS技术的高集成度、低功耗和低压差稳压器的稳定电压输出特性,成为现代电子设备中广泛应用的电源管理组件。以下将详细介绍CMOS型LDO的工作原理、特点、优势、应用场景以及相关的技术细节
    的头像 发表于 09-11 10:11 598次阅读

    运放恒流源的工作原理

    运放恒流源的工作原理,主要基于运算放大器(Operational Amplifier,简称运放)的“虚短”和“虚断”特性,以及负反馈机制来实现对负载提供恒定电流的目的。以下是对运放恒流源工作原理的详细解析,内容将围绕其基本原理、
    的头像 发表于 08-28 09:55 1213次阅读

    NFC天线的工作原理和结构

    NFC(Near Field Communication)天线作为实现近距离无线通讯技术的关键组件,其工作原理和结构对于理解NFC技术的运作至关重要。
    的头像 发表于 08-27 10:52 1538次阅读

    ASP4644在FPGA SERDES供电中的应用

    ASP4644是一款高集成度、四输出的降压型模组稳压器,专为需要低纹波和高效率的供电场合设计,如FPGA和SERDES供电。本文将探讨如何利用ASP4644的特性实现FPGA和SERDES供电的优化
    发表于 08-16 14:55

    控制阀的工作原理和特点

    控制阀是一种广泛应用于工业自动化领域的设备,其主要作用是实现对流体的控制和调节。控制阀的工作原理和特点对于确保工业系统的稳定运行和提高生产效率具有重要意义。本文将详细介绍控制阀的工作原理、特点以及
    的头像 发表于 06-30 09:30 1941次阅读

    速度继电器的工作原理、分类、应用及设计

    速度继电器是一种电气自动控制元件,广泛应用于各种机械设备和电力系统中,用于实现对电动机转速的自动控制。本文将详细介绍速度继电器的工作原理、分类、应用以及设计和使用中的注意事项。 一、速度继电器
    的头像 发表于 06-28 14:25 2533次阅读

    压电换能器的工作原理、特点及应用

    压电换能器,作为一种能够实现电能与机械能之间相互转换的器件,其独特的工作原理和广泛的应用特点使其在多个领域发挥着重要作用。本文将详细阐述压电换能器的工作原理,并深入探讨其应用特点,以期为相关领域的研究和应用提供参考。
    的头像 发表于 05-24 16:17 2106次阅读

    霍尔开关的工作原理及应用

    霍尔开关的工作原理及应用
    的头像 发表于 04-09 10:29 2895次阅读
    霍尔开关的<b class='flag-5'>工作原理</b>及应用

    ev电机的工作原理是什么

    作为电动汽车的核心部件,电动机(EV电机)的工作原理实现车辆驱动力的转换,将电能转变为机械能。EV电机的工作原理主要包括电磁感应定理、电磁场、电流控制等方面。下面将从原理、结构和工作
    的头像 发表于 01-08 10:04 1447次阅读

    SERDES的作用 SerDes基础知识详解

    SERDES是英文SERializer(串行器)/DESerializer(解串器)的简称。
    的头像 发表于 01-04 09:04 4097次阅读
    <b class='flag-5'>SERDES</b>的作用 <b class='flag-5'>SerDes</b>基础知识详解

    轻触开关的工作原理和应用探析

    轻触开关的工作原理和应用探析  轻触开关是一种常见的电子开关装置,在我们的日常生活中被广泛应用于各种电子设备和电路中。它的工作原理是通过轻触开关元件的力学结构和内部电气设计来实现的。本文将详尽、详实
    的头像 发表于 12-21 10:50 2784次阅读