热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

JESD204C入门:第2部分新特性及其内容

本文内容来自ADI的技术文章,作者:DelJones原网址为:https:www.analog.comcnanalog-dialoguea

本文内容来自ADI的技术文章,作者:Del Jones

原网址为:https://www.analog.com/cn/analog-dialogue/articles/jesd204c-primer-part2.html

在JESD204C入门系列的 第1部分 中,通过描述它解决的一些问题,对JESD204标准的新版本进行了说明。通过描述新的术语和特性来总结B和C版本标准之间的差异,然后逐层概述这些差异。因为第1部分已经奠定了理解基础,现在我们来进一步研究一下JESD204C标准几个更值得注意的新特性。

64b/66b和64b/80b链路层

对于64b/66b链路层,66位数据块由两个同步头位,后接八个八位位组的样本数据组成,其中部分是基于IEEE 802.3第49条定义的数据块格式。与IEEE标准不同的是,它没有编码——有效载荷数据只是转换器样本数据,由传输层打包到数据帧中。由于没有编码来确保发生一定数量的数据转换来提供dc平衡,因此必须对样本数据进行加扰。这些加扰的八位位组的帧数据被直接放入链路层,两个同步头位附加在其中。

64b/66b数据块的格式如图1所示。该示例展示了这样的情况:一个数据通道由帧组成,每个帧包含来自一个转换器的一个样本。块映射规则与来自JESD204B标准的帧映射规则非常相似。按顺序完成八位位组到64位数据块的映射,其中D0表示帧的第一个八位位组。例如,如果F = 8,D0表示JESD204C帧的第一个八位位组,D7表示JESD204C帧的最后一个八位位组。该帧的第 一个八位位组的MSB是Converter0的Sample0的MSB(与JESD204B一样)。例如,如果F = 2,D0和D1代表第一个帧,D2和D3代表第二个帧,以此类推。

为了与JESD204B中使用的方法保持一致,多块中的八位位组按MSB到LSB的顺序被转移到加扰器/解扰器中。

在E = 1的情况中,每个多块都从帧边界开始。如果E > 1,扩展多块将从(必须从)帧边界开始。有关更多信息,请参考多块 (MB)和扩展多块(EMB)章节。

3f0a0b1d89bbaf720b2bcf6914d48069.png

图1. 64b/66b数据块格式示例,LMFS = 1.1.2.1,N = N’ = 16。

同步头是一个2位未加扰值,位于每个数据块的开始位置,其内容经过解析之后,用于解码单个同步转换位。这些位要么采用0-1序列,表示逻辑1,要么采用1-0序列,表示逻辑0。表1列举了同步头的转换位值。

c9c42d8317527e11b582e5ac29024e8c.png

64b/80b数据块的格式如图2所示。除了样本数据的八个八位位组和两个同步头之外,还具有两个填充位,位于每个八位位组之间。填充位的值由17位PRBS序列决定,以减少杂散,并确保适当数量的数据转换以保持dc平衡。未加扰的填充位在样本数据加扰之后插入到块中。

0c712bff3e4c3e495b8c567d02890624.png

图2. 64b/80b数据块格式示例,LMFS = 1.1.2.1,N = N’ = 16。

提供64b/80b选项是为了与8b/10b保持相同的时钟比,帮助简化锁相环(PLL)设计,同时最小化杂散。对于希望通过使用前向纠错或利用同步字提供的其他功能的应用,相比8b/10b,更应该选择64b/80b,稍后将就这一问题进行详细讨论。

多块(MB)和扩展多块(EMB)

JESD204C多块中包含32个块。每个多块中的32个同步转换位构成一个32位同步字。稍后,我们将就此进行详细讨论。扩展多块是一个E多块容器,必须包含整数数量的帧。当多帧不包含整数数量的帧时,要求E > 1。多块和扩展多块的格式如图3所示。

d910d2fb1ece29eaaa9f6a6aa44e7cc3.png

图3. JESD204C多块和扩展多块的格式。

多块可以是2112 (32×66)位,或者是2560 (32×80)位,具体由所用的64位编码方案决定。对于大多数场景,扩展多块只是一个多块。JESD204C中引入了E参数,确定了扩展多块中的多块数 量。E的默认值为1。如上所述,当帧F中的八位位组的数量不是2的倍数时,该配置要求E > 1。E的公式为:E = LCM(F, 256)/256。发送12位样本且N’ = 12时,一般选择这些配置,以最大化链路中的带宽效率。这一要求确保EMB边界与帧边界一致。

图4和图5所示为E > 1的JESD204C配置示例。所示的JESD204C配置适用于以下情况:LMFS = 2.8.6.1,N’ = 12,E = 3。图4显示 了传输层的映射情况。在这个配置中,每个通道有4个12位样本,相当于6个八位位组。由于多块的每个块都需要8个八位位组,因此该块中填充了来自后续帧的2个八位位组(1.33个样本)。

b75a15aec9705f42b2106699b15eb79c.png

图4. 传输层映射,LMFS = 2.8.6.1,N’ = 12,E = 3。

图5显示了如何使用来自传输层的数据帧来形成块和多块。如图所示,可以看到帧边界与每三个块的块边界对齐。由于多块由32个块组成,所以要在第三个多块之后才能和多块对齐。因此,E = 3。

345317b47d3a77bf08a56fbb8c62f885.png

图5. 串行输出多块/帧对齐,LMFS = 2.8.6.1,N’ = 12,E = 3。

LEMC是扩展多块计数器,大致相当于8b/10b链路层中的LMFC。SYSREF对系统中的所有LEMC进行对齐,并使用LEMC边界来确定同步和通道对齐。

同步字

32位同步字由多块中32个块的每个同步头位组成,其中第一个传输的是位0。同步字用于提供通道同步,并使能确定性延迟。此外,它还可以选择性地提供CRC错误校验、前向纠错,或者提供一个命令通道,供发射器与接收器通信。

32位同步字有三种不同的格式选项。在每种情况下,都需要多块序列的结束,因为它用于获得多块同步和通道对齐。表2和表3显示了两个最常见用例中可用的不同位字段。

2086c5ca68fde7b485638dbeea74c933.png

29e7608d0c1cd37138217945a20133a0.png

fe463c47a010bf54d349cae9fcf9d5af.png

ea95b824cf3e5835dd2e0df3027ee9ab.png

64b/66b链路操作

当使用64b/66b链路层时,链路的建立过程从同步头对齐开始,然后是扩展多块同步,最后是扩展多块对齐。

同步头对齐

同步头中的同步转换位确保在每个块边界(66位)都有一个数据转换。JESD204C接收器中的状态机检测到一个数据转换,在66位后再查找另一个转换。如果状态机检测到64个连续以66位间隔进行的位转换,则会实现同步头锁定(SH_lock)。如果没有检测到64个连续转换,则重新启动状态机。

扩展多块同步

一旦实现同步头对齐,接收器就会在转换位中查找扩展多块结束(EoEMB)序列(100001)。同步字的结构确保此序列只能在适当的时间发生。一旦确定EoEMB,状态机将检查每32个同步字,以确保存在多块结束导频信号(00001)。如果E = 1,EoEMB位也会存在导频信号。如果E > 1,那么每个E × 32转换位,导频信号都将包含EoEMB位。一旦检测到四个连续的有效序列,就可以实现扩展多块结束锁定(EMB_LOCK)。继续监测每个E × 32转换位,如 果没有检测到有效的序列并重置对齐过程,则EMB_LOCK丢失。

扩展多块(通道)对齐

使用64b/66b链路层时的通道对齐与使用8b/10b链路层时的通道对齐非常相似,每个通道上的JESD204C接收器都使用一个弹性缓冲区来存储传入的数据。这被称为扩展多块对齐,缓冲区开始在EoEMB边界(而不是在使用8b/10b链路层时ILAS期间的/K/至/R/边界)存储数据。图6说明了如何实现通道对齐。每个通道的接收缓冲区在接收到EoEMB的最后一位之后开始缓冲数据(最后一个接收通道除外)。接收到最后一个接收通道 EoEMB之后,会触发释放所有通道的接收缓冲区,所以现在所有通道都是对齐的。

d7d253f323790bea6a7275eb4317e7c8.png

图6. JESD204C扩展多块(通道)对齐。

错误监测和前向纠错

JESD204C同步字选项让用户能够监测或纠正JESD204数据传输中可能发生的错误。纠错会导致额外的系统延迟。对于大多数应用,使用CRC-12同步字进行错误监测是可行的,因为它提供了大于 1 × 10–15的误码率(BER)。

JESD204C发射器中的CRC-12编码器接收每个多块的加扰数据位,并计算12个奇偶校验位。这些奇偶校验位在随后的多块中传输到接收器。接收器同样将从接收到的每个数据多块中计算12个奇偶校验位,并与同步字中接收到的位进行对比。如果所有奇偶校验位都不匹配,则接收到的数据中至少存在一个错误,可以触发错误标志。

对于对额外延迟不敏感但对错误敏感的应用(例如测试和测量设备),使用FEC可以得到优于 10 × 10–24的误码率。JESD204C发 射器中FEC电路计算多块中已加扰数据位的FEC奇偶校验位,并在下一个多块的同步头位流上对这些奇偶校验位编码。接收器计算接收位的校验子,本地生成的奇偶校验位和接收到的奇偶校验位之间的差异就在于此。如果校验子为0,则假定接收到的数据位正确。如果校验子非0,则可以用它来确定最可能的错误。

FEC奇偶校验位的计算方法与CRC相似。FEC编码器接收多块的 2048 位加扰数据位,并添加26位奇偶校验位,以构建一个缩短的二进制循环码。该码的发生器多项式为:

9c67bab48e61b283ca6e3eb90e4701c8.png

对于每个多块,这个多项式可以纠正最多9位突发错误。

总结

为了满足未来几年数据密集型应用更快处理数据的需求,JESD204C将多千兆位接口定义为数据转换器和逻辑器件之间必需的通信通道。高达32 GSPS的通道速率和64b/66b编码使超高带宽应用能以最小的开销来提高系统效率。这些和其他标准改进对于5G通信、雷达和电子战应用都大有裨益。再加上纠错功能,先进的仪器仪表和其他应用都能够无错运行多年。

‧  END  

be93c8c392151bc1b5d6001319ca077b.png

长按识别图中二维码关注

欢迎关注微信公众号【数字积木】,更精彩的内容等着你!



推荐阅读
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • Barbican 是 OpenStack 社区的核心项目之一,旨在为各种环境下的云服务提供全面的密钥管理解决方案。 ... [详细]
  • 本文详细介绍了如何正确安装Java EE SDK,并解决在安装过程中可能遇到的问题,特别是关于servlet代码在Apache Tomcat 10中无法运行的情况。 ... [详细]
  • 微信小程序中实现位置获取的全面指南
    本文详细介绍了如何在微信小程序中实现地理位置的获取,包括通过微信官方API和腾讯地图API两种方式。文中不仅涵盖了必要的准备工作,如申请开发者密钥、下载并配置SDK等,还提供了处理用户授权及位置信息获取的具体代码示例。 ... [详细]
  • 性能测试工具的选择与应用
    本文探讨了性能测试工具的重要性及其在软件测试中的作用,重点介绍了选择合适性能测试工具的考量因素,并对几种常用的性能测试工具进行了对比分析。 ... [详细]
  • 新手指南:在Windows 10上搭建深度学习与PyTorch开发环境
    本文详细记录了一名新手在Windows 10操作系统上搭建深度学习环境的过程,包括安装必要的软件和配置环境变量等步骤,旨在帮助同样初入该领域的读者避免常见的错误。 ... [详细]
  • 利用HTML5 Canvas高效构建电信网络拓扑图
    电信网络拓扑图在实际应用中具有很高的实用价值。本文介绍了一个基于HTML5 Canvas的电信网络拓扑图项目,不仅实现了基本的图形展示功能,还加入了自动布局和属性栏功能,使项目更加完善。此Demo经过细微调整即可直接应用于实际项目中。 ... [详细]
  • 本文详细探讨了如何在 C# 中使用 Infragistics 组件库解决常见的开发问题,包括工具栏按钮禁用、Grid 中的时间记录及样式设置、以及 Excel 导出功能的实现。 ... [详细]
  • Flutter入门指南:实现自动关闭的对话框与提示
    本文为Flutter系列教程的一部分,专注于讲解如何在Flutter应用中实现自动关闭的对话框和提示。通过具体的代码示例,帮助开发者掌握SnackBar、BottomSheet和Dialog的使用方法。 ... [详细]
  • 本文探讨如何利用Java反射技术来模拟Webwork框架中的URL解析过程。通过这一实践,读者可以更好地理解Webwork及其后续版本Struts2的工作原理,尤其是它们在MVC架构下的角色。 ... [详细]
  • 本文详细介绍了 Kubernetes 集群管理工具 kubectl 的基本使用方法,涵盖了一系列常用的命令及其应用场景,旨在帮助初学者快速掌握 kubectl 的基本操作。 ... [详细]
  • 框图|中将_DA14531 学习笔记经验总结
    框图|中将_DA14531 学习笔记经验总结 ... [详细]
  • 学习目的:1.了解android线程的使用2.了解主线程与子线程区别3.解析异步处理机制主线程与子线程:所谓主线程,在Windows窗体应用程序中一般指UI线程,这个是程序启动的时 ... [详细]
  • java学习日记对JFrame的操作
    设置背景图片、添加音乐、监控键盘、改变字体风格等等!importjava.applet.Applet;importjava.applet.AudioClip;importjava. ... [详细]
  • 右下角动态通知实现
    本文介绍如何在网页中实现右下角滑动通知的功能,包括前后台代码示例及具体实现步骤。 ... [详细]
author-avatar
Y死一般的痛过
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有