首页 > 其他分享 >笔记:从Aurora 8b/10b 到Aurora 64b/66b (一):64b/66b 基本知识

笔记:从Aurora 8b/10b 到Aurora 64b/66b (一):64b/66b 基本知识

时间:2024-07-31 19:51:11浏览次数:9  
标签:编码 64b Aurora 发送 64 Gearbox 数据 66b 时钟

参考搬运:

https://mp.weixin.qq.com/s/ZSNyjpZpimjyxyO9riIRNQ

Aurora 64B/66B (xilinx.com)

https://docs.amd.com/r/en-US/pg074-aurora-64b66b

8/10:SATA SRIO

64/66:10G以太网

值得注意:

64b/66b 编码在多LANE模式下,EOF(T)仅在一个LANE上出现;

介绍

8B10B的开销比较大,每传输10位数据,就需要发送2位无效数据。

为了减小8B10B编码的开销,同时保留编码方案的优点,提出了64B66B编码。

64B66B编码与8B10B编码方式有本质区别,8B10B编码可以从码表中获取一个数据编码结果,而64B66B在发送前需要通过白噪声对数据加扰,在接收数据时也要先对数据解扰。

用户在实际使用时,GTX的64B66B编码会比8B10B更简单,因为64B66B会提供控制帧和数据帧,相比8B10B会简单一点点。

64B66B编码原理
下图是万兆网的数据编码框图,将两个32位的TXD数据拼接为64位,

然后经过加扰(Scrambling)来保证零一均衡,避免直流失调和时钟恢复困难。

之后在64位数据之前加入2位的同步头(Sync header),用来指示后面的64位数据是数据帧还是控制帧,

用户每发送64位数据,高速收发器需要传输64位数据和2位同步头。

变速器(Gearbox)可以看成一个深度为64位的存储器,

每个用户时钟输入64位数据,高速收发器在一个用户时钟内也只能发送64位编码后的数据,就会导致每个时钟会有2位数据没有被发送,暂存在变速器(Gearbox)。

经过32个时钟后,变速器(Gearbox)就会存满64位数据,用户下个时钟周期需要暂停输入数据,高速收发器在下个时钟将变速器(Gearbox)的64位数据发送,之后用户就可以继续输入需要发送的数据了,就这样循环往复。

编码过程是由加扰器(Scrambling)完成的,因此相同的数据经过加扰后会得到不同的数据,编码后的数据是不能预测的。

2位同步头有两个作用,可以用来指示帧类型,接收端也可以根据同步头来实现数据对齐,

同步头只有2’b01和2’b10两种取值,其余两种为无效取值。

01类型是需要全部加扰的,而10类型的TYPE部分则是不需要加扰的,因为涉及了一些指示字符;

当同步头为2’b01时,表示后面的64位数据是纯数据,不包含任何控制字符,如下图所示。

图2 纯数据帧格式

如果同步头为2’b10,则表示后面的64位数据是控制帧,可能是起始帧,也可能是结束帧,

如下图所示,注意同步码后面的第一字节数据表示控制帧的类型,根据该数据的值确定该帧数据内容。

下图是上面几种帧的一些格式,

D表示数据,C表示空闲字符(7位数据)或控制字符Z,

S表示帧起始字符,T表示帧结束字符。

其中当同步码为2’b01时,8字节全部为数据。

64B66B编码的起始帧有两种格式,

一种是起始位位于第一个字节,对应的类型字符为8’h78,

另一种是起始位位于第五字节,对应的类型字符为8’h33。

但是控制字符的具体数值可能不需要关心,因为不同协议之间是有差异的;

黄色部分是无效区,填充0;

RS Trans指的是RS(协调子层)发送的数据,D Z T S E均是其中的标识符;

D 数据

Z 空闲

T 结束

S 起始

E 控制

因为控制字符都是七位的,所以需要补0;每有一个数据字符,就可以少补充一个0;

夹带控制字符的帧最多只能传递7个字节的D;

由于用户每次可以传输任意字节数据,导致停止位可能出现在数据的任何字节,因此结束帧会有8种类型,类型字符不相同,接收端可以根据结束帧的类型判断这帧有多少有效数据。

下表是这些控制字符的具体取值,比如起始位S的取值是8’hfb,停止位T的取值是8’hfd,空闲字符C为8’h07。

在不同的TYPE类型下,空闲字符C的填充是可能不同的;

IDLE类型下填充的是7'h0,

ERROR类型下填充的是7'h1e,

开始和结束字符填充的字符根据具体的类型来决定,这是因为

开始类型的包有两种,而结束的有8种;

加扰

加扰和解扰一般使用的表达式为X^58+X^19+1,这部分内容可以在后续的示例工程中直接获取,也比较简单,实现方式与M序列类似。

GTX的64B66B编码发送原理
GTX内部不能对待发送数据加扰,也不能对接收的数据解扰,需要用户在FPGA逻辑中自己完成加扰和解扰。

由下图可知,8B10B经过蓝色走线后到达FIFO,而64B66B编码只经过了一个TX Gearbox,并没有经过什么编码模块,因此加扰和解扰相关操作需要用户在IP外部自己完成。

TX Gearbox的作用就是前文所说的变速器,工作方式如下图所示,

如果用户数据位宽设置成32位,并且PCS每次也只能传输32位数据,两个时钟才能发送一个64位数据。

因此需要两个时钟用户才能发送64位数据,

第一个时钟向GTX发送2位同步码和32位数据,变速箱先发送2位同步码和高30位数据,第2位数据留在TX Gearbox中。

第二个时钟用户发送剩余32位数据,TX Gearbox需要先把上个时钟剩余2位数据发送,然后发送本次接收的高30位数据,最后还是会剩余2位数据。

因此每经过2个时钟,TX Gearbox中就会增加2位数据,

当经过64个时钟后,TX Gearbox中存在64位数据,与一个用户数据位宽一致。

后两个时钟周期用户不能往GTX发送数据,TX Gearbox会将内部64位数据发送出去,完成清空。

在使用64B66B编码时,一般用户端口位宽使用64位,会更方便,原理都是一样的。

所以本质上是66个周期发送64个64位数据+2x64位gearbox,其中用户直接使用的是前64个。

 gearbox显然具有计数器,使用计数器来标记何时将其中的数据取出;

这个计数器可以使用内部的也可以使用外部的,这个设置在GT收发器中是可以修改的;

外部计数器需要用户提供和数据调控;

 在GT后面的版本里内部计数器被版本迭代取消,推荐使用外部计数器;

如果把用户数据带宽设置成64,这种情况下GTX内部的数据带宽只有32,我觉得会出现之前描述的USERCLK是USERCLK2两倍频率的情况;(确实如此,在SUMMARY中可以看到)

 

标签:编码,64b,Aurora,发送,64,Gearbox,数据,66b,时钟
From: https://www.cnblogs.com/VerweileDoch/p/18335338

相关文章

  • 笔记:从Aurora 8b/10b 到Aurora 64b/66b (一):Aurora 8b/10b
    参考:https://www.xilinx.com/products/intellectual-property/aurora8b10b.html#documentationhttps://docs.amd.com/r/en-US/pg046-aurora-8b10bhttps://docs.amd.com/v/u/en-US/aurora_8b10b_ds797https://mp.weixin.qq.com/s/gT4QUgvoFF6UI0PAhfEPvQ补丁:Aurora系IP内部......
  • 使用 pgvector 和 Lambda 生成基岩嵌入并存储在 Aurora 中
    我在Aurora中的不同表中有一些数据,我想对其执行RAG。为此,我创建了一个微服务(Lambda),它可以生成不同表的嵌入并将该数据存储在Aurora中。但是矢量更新插入应该基于某些数据库流集合。例如:如果有5个以上的数据库更新,那么我应该重新生成嵌入,并且应该有一个端点,我可以在其中......
  • AWS JDBC Driver连接中国区的Aurora需要配置参数 enableClusterAwareFailover=false
    AWSJDBCDriver中国区和Global区域的区别是,由于中国区AuroraEndpoint与Global的后缀不同,中国区的AWSJDBCDriver其实无法识别中国区endpoint,因为中国区的资源endpoint是以".cn"结尾,这个endpoint不被认为是aurora的endpoint,会被认为是customdomain.因此应用程序在使用AW......
  • [题解]CF666B World Tour
    CSP-2022S2T1弱化版。思路首先因为边权均为\(1\),所以我们可以在\(\Theta(n^2)\)的复杂度用BFS求解出任意两点\(i,j\)的最短距离\(d_{i,j}\)(如果\(i\)不能到达\(j\),则令\(d_{i,j}=-1\))。有一个贪心的结论,就是使每一条\(A\toB,B\toC,C\toD\)的路径长度......
  • P9537 [YsOI2023] CF1764B
    洛谷传送门很棒的题。考察终态,可以发现最后输的人拥有的数的数量大概率是比赢家的数量少的。唯一的例外是等差数列,因为一个长为\(n\)的等差数列只能组成\(n-1\)个不同的差值。考虑若一开始先手就是一个公差为\(d\)的\(n+1\)项等差数列,后手是一个公差为\(d\)的\(......
  • Amazon Aurora Limitless Database :数据库管理的全新境界
    在当今数亿用户、PB级数据和数百万交易的业务环境中,数据库管理面临着巨大的挑战。传统数据库扩展的繁琐性和耗时性使得许多组织需要花费数月甚至数年的时间来构建自定义软件以满足其极端的工在当今数亿用户、PB级数据和数百万交易的业务环境中,数据库管理面临着巨大的挑战。 ......
  • SRIO(Serial RapidIO)PCS层 64B/67B编码介绍(二)
     64b/67b传输码字    PCS使用的64b/67b传输码将64位数据块和/或控制信息编码为67位码字,用于传输,并在接收时反转过程。码字有两种类型:“数据”码字和“控制”码字。数据码字编码64位的数据。控制码字编码64位的控制信息或数据和控制信息的某种组合。码字格式  ......
  • Hero Talk|无缝扩展:Kubernetes 上的 Amazon Aurora 分片和流量管理
    亚马逊云科技DataHero潘娟正在打开开源之门。作为“2020中国开源先锋人物”以及“2021OSCAR尖峰开源人物”奖项获得者,她致力于赋能数据领域的开发者,助力他们把握先机。在亚马逊云科技re:Invent2023大会上,潘娟就Kubernetes上的 Amazon Aurora 分片和流量管理发表了精......
  • notepad++ compare plus/compare plugin 64bit
    *[Releases·pnedev/comparePlus](https://github.com/pnedev/comparePlus/releases)https://objects.githubusercontent.com/github-production-release-asset-2e65be/50095301/5d0a2666-67f4-4971-9354-12339a75dd1f?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credent......
  • 02 aurora 8b10b回环测试
    软件版本:VIVADO2021.1操作系统:WIN1064bit硬件平台:适用XILINXA7/K7/Z7/ZU/KU系列FPGA登录米联客(MiLianKe)FPGA社区-www.uisrc.com观看免费视频课程、在线答疑解惑!1概述8B/10B编码是1983年由IBM公司的AlWidmer和PeterFranaszek所提出的数据传输编码标准,目前已经被广泛应......