一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

前向纠错(FEC)编解码器的编码器和解码器的制作方法

2021-10-12 10:53:00 来源:中国专利 TAG:
前向纠错(FEC)编解码器的编码器和解码器的制作方法

本申请根据35 U.S.C§119要求享有于2020年4月8日提交的美国临时申请第63/006,979号的优先权,其内容通过引用以其整体并入本文。

技术领域

各种实施例可以总体上涉及通信和计算的领域,并且可以具体地涉及用于前向纠错(FEC)编解码器的编码器/解码器,其特别地应用于计算机总线和/或与计算机总线耦合的设备。

背景技术

出于总体上呈现本公开内容的上下文的目的,本文提供了背景描述。除非本文另外指出,否则本节中描述的材料不是本申请的权利要求书的现有技术,并且并不由于包含于本节中而被承认是现有技术。

计算机系统或平台可以包括许多组件(例如,主机),其包括中央处理单元(CPU)、存储器、芯片组和/或通过一条或多条计算机总线耦合在一起的许多其他设备。计算机总线是一种通信系统,其可以在设备或计算机内部的组件之间或者在计算机之间传输数据。计算系统或平台可以广泛地使用耦合到计算机总线的各种设备。计算机总线可以包括相关的硬件组件(电线、光纤等)和软件,包括通信协议。可能存在许多种计算机总线,例如,串行总线或并行总线。编解码器可以包括编码器、解码器或两者。

附图说明

通过以下结合附图的详细描述,将容易地理解实施例。为了促进该描述,相同的附图标记指代相同的结构元件。在附图的图中,通过示例而非限制的方式示出了实施例。

图1示出了根据各种实施例的示例装置,该示例装置包括通过计算机总线耦合到另一设备的设备。

图2示出了根据各种实施例的示例平面前向纠错(FEC)编码器实现方式。

图3(a)-3(b)示出了根据各种实施例的示例FEC编码器和解码器。

图4示出了根据各种实施例的由FEC编解码器的端口编码器执行的高级逻辑图和操作。

图5示出了根据各种实施例的针对FEC的alpha幂和数据字节关联。

图6示出了根据各种实施例的用于×8配置的alpha幂。

图7示出了根据各种实施例的用于×4配置的alpha幂。

图8(a)-8(b)示出了根据各种实施例的各种解码算法。

图9示出了根据各种实施例的适用于实践本公开的各个方面的示例设备。

图10示出了根据各种实施例的具有用于实践参考图1-9描述的方法的指令的存储介质。

具体实施方式

以下具体实施方式参考附图。在不同的附图中可以使用相同的附图标记来标识相同或相似的元件。在下面的描述中,出于解释而非限制的目的,阐述了诸如特定结构、架构、接口、技术等之类的具体细节,以便提供对各种实施例的各种方面的透彻理解。然而,将对于受益于本公开的本领域技术人员显而易见的是,可以在脱离这些具体细节的其他示例中实践各种实施例的各种方面。在某些实例中,省略了对公知的设备、电路和方法的描述,以免以不必要的细节模糊对各种实施例的描述。

计算系统或平台可以广泛地使用耦合到计算机总线的各种设备。计算机总线可以包括相关的硬件组件(电线、光纤等)和软件,包括通信协议。外围组件互连(PCI)总线或PCI快速(PCIe、PCI-E)可以是基于规范的计算机总线,该规范提供了一种用于系统软件或系统驱动器的机制,以执行与耦合到PCI总线或PCIe总线的设备的配置相关的各种操作。耦合到计算机总线的设备或组件也可以被称为功能。PCIe可以在消费者、服务器和工业应用中作为主板级别的互连(以链接安装在主板上的外围设备)、无源底板互连以及作为用于附加板的扩展卡接口操作。PCIe设备经由被称为互连或链路的逻辑连接进行通信。链路是在两个PCIe端口之间的点对点通信信道,从而允许两个PCIe端口发送和接收普通的PCI请求,例如,配置、输入/输出(I/O)或存储器读取/写入以及中断。在物理级别,链路可以由一个或多个通道组成。低速外围设备(例如,802.11Wi-Fi卡)使用单通道(×1)链路,而图形适配器典型地使用宽得多且快得多的16通道链路。PCI快速连接的每个通道包含两对电线——一对用于发送,并且一对用于接收。数据的分组以每周期一位的速率跨通道移动。×1连接(最小的PCIe连接)具有由四根电线组成的一个通道。它在每个方向上每周期携带一位。×2链路包含八根电线,并且一次发送两位;×4链路发送四位,依此类推。其他配置是×12、×16和×32。

在下面的描述中,PCI总线或PCIe总线可以用作计算机总线的示例。PCIe的更多细节可以在PCIe的网站“http://www.pcisig.com”中找到。类似地,PCI设备或PCIe设备可以用作耦合到计算机总线的设备的示例。关于PCIe设备的描述可以适用于耦合到任何计算机总线的任何其他设备。

本文的实施例呈现了针对例如PCIe Gen6规范的计算机总线设计的前向纠错(FEC)编解码器的有效实现方式。这些实现方式可以减少面积和延迟。这些编解码器也可以用于下一代计算快速链路(CXL)和超级路径互连(UPI)互连,但是以不同的微片(flit)大小。给出了实现编码器和解码器的不同选项。本文的实施例可以对于计算机总线生态系统具有低延迟的实现方式是有用的。

本文的实施例呈现了FEC编码器的平面实现方式。针对不同的链路细分提出了FEC编码器的流水线化的实现方式,以减少实现方式面积。编码器使用伽罗瓦域(Galois Field,GF)算术的属性来大大减少面积开销。还提出了FEC解码器的平面实现方式。解码器可以减少FEC解码的延迟,这有助于关键路径中的多个逻辑级别。本文的实施例提供了面积有效和延迟改进的流水线化的版本,其可以在同一引脚上并且甚至在存在链路细分(例如,×16、2个×8、4个×4等)的情况下跨多种协议(PCIe 6.0、CXL、UPI)使用。

本文的实施例提出了一种用于生成针对消息的校验字节的FEC编解码器。该FEC编解码器包括:端口编码器,其用于对针对当前时钟周期的消息的输入字节的当前集合执行一组操作。端口编码器包括:存储单元;伽罗瓦域乘法器,其耦合到存储单元;以及求和单元,其耦合到伽罗瓦域乘法器和存储单元。存储单元用于存储第一阶段结果,该第一阶段结果是基于针对从第一时钟周期到紧接在当前时钟周期之前的时钟周期的所有时钟周期的消息的输入字节的先前集合而累积的。伽罗瓦域乘法器用于接收第一阶段结果和针对当前时钟周期的alpha的第一幂,并且对第一阶段结果和alpha的第一幂执行伽罗瓦域乘法以生成当前时钟周期的第一伽罗瓦域乘积。求和单元用于对基于当前时钟周期的合并的字节的内部输入和第一伽罗瓦域乘积执行伽罗瓦域加法,以生成第二阶段结果并且将其存储在存储单元中,以供随后用于生成校验字节。当前时钟周期的合并的字节是基于输入字节的当前集合和alpha的多个幂的第二集合生成的多个伽罗瓦域乘积的第二集合的伽罗瓦域总和。多个伽罗瓦域乘积的第二集合中的一个伽罗瓦域乘积是输入字节的当前集合中的一个输入字节与从alpha的多个幂的第二集合中选择的alpha的一个幂的伽罗瓦域乘积。alpha是伽罗瓦域上的本原多项式的单位根。

本文的实施例提出了一种包括多个FEC编码器的集合的通信设备。每个FEC编码器接收输入消息,该输入消息是到通信设备的输入串的一部分。FEC编码器还被布置为将到FEC编码器的多个输入消息中的输入消息划分为多个输入子串,以在多个时钟周期中将其馈送到FEC编码器的一个或多个端口编码器中,从而生成针对到FEC编码器的输入消息的校验字节。当前时钟周期的输入子串包括针对当前时钟周期的消息的输入字节的当前集合。一个或多个端口编码器中的端口编码器包括:多个伽罗瓦域乘法器的集合;一个或多个伽罗瓦域加法器,其耦合到多个伽罗瓦域乘法器的集合;以及存储单元。多个伽罗瓦域乘法器的集合用于基于消息的输入字节的当前集合和alpha的多个幂的集合来生成多个伽罗瓦域乘积的集合。多个伽罗瓦域乘积的集合中的一个伽罗瓦域乘积是输入字节的当前集合中的一个输入字节与从alpha的多个幂的集合中选择的alpha的一个幂的伽罗瓦域乘积。alpha是伽罗瓦域上的本原多项式的单位根。一个或多个伽罗瓦域加法器用于生成多个伽罗瓦域乘积的集合的伽罗瓦域总和作为当前时钟周期的合并的字节。存储单元用于存储当前时钟周期的阶段结果,该阶段结果是基于针对从第一时钟周期到紧接在当前时钟周期之前的时钟周期的所有时钟周期的消息的输入字节的先前集合而累积的。基于当前时钟周期的合并的字节和被存储在端口编码器的存储单元中的阶段结果来生成针对到FEC编码器的输入消息的校验字节。

本文的实施例提出了一种用于FEC编解码器生成针对消息的校验字节的方法。该方法包括:在当前时钟周期通过FEC编解码器的端口编码器接收到端口编码器的消息的输入字节的当前集合,并且生成当前时钟周期的合并的字节。合并的字节是基于输入字节的当前集合和alpha的多个幂的第一集合生成的多个伽罗瓦域乘积的第一集合的伽罗瓦域总和。多个伽罗瓦域乘积的第一集合中的一个伽罗瓦域乘积是输入字节的当前集合中的一个输入字节与从alpha的多个幂的第一集合中选择的alpha的一个幂的伽罗瓦域乘积。该方法还包括:在当前时钟周期从端口编码器的存储单元提供基于针对从第一时钟周期到紧接在当前时钟周期之前的时钟周期的所有时钟周期的消息的输入字节的先前集合而累积的第一阶段结果。另外地,该方法包括:通过端口编码器的伽罗瓦域乘法器,对第一阶段结果和alpha的第二幂执行伽罗瓦域乘法以生成当前时钟周期的第二伽罗瓦域乘积;以及通过端口编码器的求和单元,对基于当前时钟周期的合并的字节的内部输入和第二伽罗瓦域乘积执行伽罗瓦域加法,以生成第二阶段结果并且将其存储在存储单元中,以供随后用于生成校验字节。alpha是伽罗瓦域上的本原多项式的单位根。

以最有助于理解说明性实施例的方式将各种操作依次描述为多个离散操作;然而,描述的次序不应解释为暗示这些操作必须与次序有关。特别是,这些操作可能不以呈现的次序执行。

重复使用短语“在各种实施例中”、“在一些实施例中”等。短语“通常”并不指代相同的实施例;然而,该短语可以指代相同的实施例。除非上下文另有指明,否则术语“包括”、“具有”和“包含”是同义的。短语“A和/或B”表示(A),(B),或(A和B)。类似于短语“A和/或B”,短语“A/B”和“A或B”表示(A),(B),或(A和B)。出于本公开的目的,短语“A和B中的至少一个”表示(A),(B),或(A和B)。说明书可以使用短语“在实施例中”、“在多个实施例中”、“在一些实施例中”和/或“在各种实施例中”,其可以各自指代相同或不同实施例中的一个或多个实施例。此外,关于本公开的实施例使用的术语“包括”、“包含”、“具有”等是同义的。

示例实施例可以被描述为被描绘为流程图、流图、数据流图、结构图或框图的过程。虽然流程图可以将操作描述为顺序过程,但是可以并行、并发或同时地执行操作中的许多操作。另外地,可以重新安排操作的次序。过程可以在其操作完成时终止,但也可以具有(多幅)附图中未包括的附加步骤。过程可以对应于方法、函数、过程、子例程、子程序等。当过程对应于函数时,其终止可以对应于该函数返回到调用函数和/或主函数。

可以在由上述电路中的一个或多个执行的计算机可执行指令(例如,程序代码、软件模块和/或功能过程)的通用上下文中描述示例实施例。程序代码、软件模块和/或功能过程可以包括执行特定任务或实现特定数据类型的例程、程序、对象、组件、数据结构等。本文讨论的程序代码、软件模块和/或功能过程可以使用现有通信网络中的现有硬件来实现。例如,本文讨论的程序代码、软件模块和/或功能过程可以使用现有网络元件或控制节点处的现有硬件来实现。

如本文所使用的,术语“电路”可以指代、是其一部分或包括被配置为提供所描述功能的硬件组件,例如,电子电路、逻辑电路、处理器(共享的、专用的或组)和/或存储器(共享的、专用的或组)、专用集成电路(ASIC)、现场可编程设备(FPD)(例如,现场可编程门阵列(FPGA)、可编程逻辑器件(PLD)、复杂PLD(CPLD)、大容量PLD(HCPLD)、结构化ASIC或可编程片上系统(SoC))、数字信号处理器(DSP)等。在一些实施例中,电路可以执行一个或多个软件或固件程序以提供所描述的功能中的至少一些。

如本文所使用的,术语“处理器电路”可以指代、是其一部分或包括能够顺序且自动地执行一系列算术或逻辑运算的电路;以及能够记录、存储和/或传输数字数据的电路。术语“处理器电路”可以指代一个或多个应用处理器、一个或多个基带处理器、物理中央处理单元(CPU)、单核心处理器、双核心处理器、三核心处理器、四核心处理器和/或能够执行或以其他方式操作计算机可执行指令(例如,程序代码、软件模块和/或功能过程)的任何其他设备。如本文所使用的,术语“接口电路”可以指代、是其一部分或包括提供在两个或更多个组件或设备之间的信息交换的电路。术语“接口电路”可以指代一个或多个硬件接口(例如,总线、输入/输出(I/O)接口、外围组件接口、网络接口卡等)。如本文所使用的,术语“实例化”、“例示”等可以指代实例的创建,并且“实例”可以指代对象的具体发生,该对象可以例如在程序代码的执行期间发生。

如本文所使用的,术语“计算机设备”可以描述能够顺序且自动地执行一系列算术或逻辑运算、被装备以在机器可读介质上记录/存储数据并且在通信网络中从一个或多个其他设备发送和接收数据的任何物理硬件设备。计算机设备可以被认为与以下各项同义且可以在下文中偶尔被称为以下各项:计算机、计算平台、计算设备等。术语“计算机系统”可以包括任何类型的互连电子设备、计算机设备或其组件。另外地,术语“计算机系统”和/或“系统”可以指代计算机的彼此通信耦合的各种组件。此外,术语“计算机系统”和/或“系统”可以指代彼此通信地耦合并被配置为共享计算和/或联网资源的多个计算机设备和/或多个计算系统。如本文所使用的,术语“用户设备”或“UE”可以指代具有无线电通信能力的设备(例如,计算机设备),并且可以描述通信网络中的网络资源的远程用户。术语“用户设备”或“UE”可以被认为与以下各项同义且可以在下文中偶尔被称为以下各项:客户端、移动件、移动设备、移动终端、用户终端、移动单元、移动站、移动用户、订户、用户、远程站、访问代理、用户代理、接收机、无线电设备、可重新配置的无线电设备、可重新配置的移动设备等。

“计算机设备”、“计算机系统”、“UE”等的示例可以包括蜂窝电话或智能电话、功能电话、平板个人计算机、可穿戴计算设备、自主传感器、膝上型计算机、台式个人计算机、视频游戏机、数字媒体播放器、手持消息传递设备、个人数据助理、电子书阅读器、增强现实设备、服务器计算机设备(例如,独立式、机架安装式、刀片式等)、云计算服务/系统、网络元件、车载信息娱乐(IVI)、车载娱乐(ICE)设备、仪表组(IC)、平视显示器(HUD)设备、车载诊断(OBD)设备、仪表板移动设备(DME)、移动数据终端(MDT)、电子引擎管理系统(EEMS)、电子/引擎控制单元(ECU)、电子/引擎控制模块(ECM)、嵌入式系统、微控制器、控制模块、引擎管理系统(EMS)、网络或“智能”装置、机器类型通信(MTC)设备、机器对机器(M2M)、物联网(IoT)设备和/或任何其他类似电子设备。此外,术语“车辆嵌入式计算机设备”可以指代物理地安装在车辆上、内置在车辆中或以其他方式嵌入车辆中的任何计算机设备和/或计算机系统。

图1示出了根据各种实施例的示例装置100,该装置100包括通过计算机总线105耦合到另一设备103的设备101,例如,主机。为了清楚起见,以下描述装置100、设备101、设备103和计算机总线105的特征作为示例。应当理解,装置100、设备101、设备103和计算机总线105中可以包括更多或更少的组件。此外,应当理解,装置100内的设备和组件中的一个或多个可以包括来自以下描述的附加特征和/或变化的特征,并且可以包括本领域普通技术人员将考虑和/或将其称为主机、设备和计算机总线的任何设备。在一些实施例中,计算机总线105可以是PCI、PCIe或CXL互连。

在实施例中,设备101可以包括处理器111和存储器115。操作系统113可以在处理器111上进行操作,并且可以包括系统驱动器114。设备103可以通过计算机总线105耦合到处理器101。设备103可以包括耦合到计算机总线105的接口131、缓冲器141和存储装置143。在实施例中,处理器111和接口131与本公开的FEC编解码器教导结合。接口131可以包括一个或多个寄存器,例如,能力报头寄存器、认证报头寄存器、认证能力寄存器、认证状态寄存器、认证控制寄存器、写入数据邮箱寄存器、读取数据邮箱寄存器或一些其他寄存器。

在实施例中,装置100可以是任何计算系统或平台,例如,膝上型计算机、超膝上型计算机、平板计算机、触摸板、便携式计算机、手持计算机、可穿戴设备、掌上计算机、个人数字助理(PDA)、电子阅读器、蜂窝电话、组合蜂窝电话/PDA、移动智能设备(例如,智能电话、智能平板计算机等)、移动互联网设备(MID)、移动消息传递设备、移动数据通信设备、移动媒体播放设备、相机、移动游戏机等。在实施例中,装置100也可以是非移动设备,其可以包括但不限于例如个人计算机(PC)、电视、智能电视、数据通信设备、媒体播放设备、游戏机、网关、物联网(IOT)设备等。装置100可以包括控制器(或处理器),以及执行软件和/或控制硬件以执行本地程序或消耗由外部服务提供商通过网络提供的服务的其他组件。例如,装置100可以包括在本地运行和/或利用或访问基于web的服务(例如,在线商店或服务、社交网络服务等)的一个或多个软件客户端或应用。装置100还可以或替代地包括在浏览器中运行的网络界面,电子装置可以从该界面访问这种基于web的服务。装置100还可以包括存储设备,该存储设备用于存储与装置100所使用的程序和服务相关联的逻辑和数据。

在实施例中,处理器111可以是中央处理单元(CPU)。在一些实施例中,处理器111可以是可以执行程序的可编程设备,例如,系统驱动器114。在实施例中,处理器111可以是微控制器、16位处理器、32位处理器、64位处理器、单核心处理器、多核心处理器、数字信号处理器、嵌入式处理器或任何其他处理器。除了本公开的教导之外,处理器111可以是本领域中已知的这些元件中的任何一个。

在实施例中,操作系统113可以是管理用于装置100的硬件或软件资源的任何系统软件,并且可以向诸如系统驱动器114之类的应用提供服务。操作系统113可以是Android OS、iOS、Linux、实时操作系统(RTOS)、汽车信息娱乐操作系统等。例如,操作系统113可以是实时操作系统,例如VxWorks、PikeOS、eCos、QNX、MontaVista Linux、RTLinux、Windows CE或其他操作系统。

在实施例中,计算机总线105可以是外部计算机总线、内部计算机总线、串行计算机总线或并行计算机总线。例如,计算机总线105可以是PCI总线、PCI扩展总线(PCI-X)、PCI快速总线、通用串行总线(USB)、并行高级技术附件(PATA)总线、串行ATA(SATA)总线、集成电路间(I2C)总线、IEEE 1394接口(FireWire)总线、小型计算机系统接口(SCSI)总线、可伸缩一致性接口(SCI)总线或其他计算机总线。

在实施例中,设备103可以是任何计算机硬件。例如,设备103可以是网络接口卡、声卡、视频控制器、以太网控制器、网络摄像头、鼠标、蓝牙控制器、PCI至ISA桥、GUI加速器、ATM控制器、多媒体卡、SCSI控制器、多媒体设备、MPEG-II视频解码器或任何输入/输出设备。在实施例中,设备103可以是PCI设备,其可以直接插入计算机的主板上的PCI插槽中。在一些其他实施例中,设备103可以通过不同的计算机总线耦合到处理器111。除了本公开的教导之外,设备103(包括其接口131)可以是本领域中已知的这些元件中的任何一个。

图2示出了根据各种实施例的示例平面FEC编码器实现方式。FEC编码器实现方式可以应用于通过如图1中示出的计算机总线105发送的消息。

本文的实施例可以呈现应用于PCI-e总线的示例。对于PCI-e总线,通过在250字节的消息Bi上生成校验和奇偶字节以生成6个保护字节(3个校验字节,3个奇偶字节)来定义FEC编码器。每对校验和奇偶字节都是FEC实现方式的一部分。FEC编码器使用3个代码的3路交织,这3个代码分别具有84字节、83字节和83字节的消息符号,例如,如PCIe规范文档中指定的。在后面的2条消息上后缀字节0(MSB),以得到3组84字节的消息,并且每组消息通过84到86字节的编码器馈送。校验(C)和奇偶(P)计算由以下公式给出:

其中,在GF(28)上定义了乘法(*)和求和( ),并且α(其被称为“alpha”)是本原多项式x8 x4 x3 x2 1(表示为0x1D)的单位根的多项式表示。因此,基于等式2.1和等式2.2的C和P的计算等效于对多项式x8 x4 x3 x2 1的取模运算。在硬件中,加法等效于字节的按位XOR,并且字节Bi与αx的乘法等效于(Bi0αx XOR Bi1αx 1XOR Bi2αx 2…XOR Bi7αx 7),其中αx是字节。因此,图2中给出了84->86字节编码器的基线平面实现方式,作为图3(b)中的编码器的一种可能实现方式,其中校验字节为字节84,并且奇偶字节为字节85。图2中的代码部分201示出了校验字节C的计算。

为了支持链路细分,每个端口都可以实例化平面版本,或者不同的端口可以进行时分复用并使用上述模块的一个或多个例示。

在实施例中,校验(C)和奇偶(P)计算可以应用于通过其他类型的d计算机总线通信的具有不同字节大小的消息。另外地且可替代地,可以将用于PCI-e总线的校验(C)和奇偶(P)计算应用于不同于84字节消息的字节大小。通常,可以通过以下公式来提供校验(C)和奇偶(P)计算,其中L可以是消息的字节大小(消息中的字节数)。

图3(a)-3(b)示出了根据各种实施例的示例FEC编码器和解码器。图3(a)和图3(b)中示出的FEC编码器可以是节省面积的FEC编码器的流水线化的实现方式。图3(a)-3(b)中示出的用于校验(C)字节计算的计算是基于等式2.1或等式2.3的。在计算奇偶(P)时,计算是基于等式2.2或等式2.4的。

图3(a)示出了通信系统300,该通信系统300包括通过计算机总线345耦合到设备342的设备341,该设备341可以是通过计算机总线105耦合到设备103的设备101的示例。设备341包括具有一组多个FEC编码器(例如,FEC编码器301、FEC编码器303等)的编码器343。编码器343的输出(包括FEC编码器301的输出311和FEC编码器303的输出313)被馈送到交织器305中,随后是循环冗余校验(CRC)组件307。CRC组件307的CRC操作的结果被传递到发射机309。在计算机总线345的另一端,设备342包括接收机302、一个或多个解码器(例如,解码器304和解码器306)。解码器304和解码器306的输出被馈送到CRC组件308中。在CRC组件308之后执行未示出的其他相关操作。通信系统300示出了用于编码器和解码器的操作的一个实施例。其他配置也是可能的,例如,交织器可以放置在未示出的不同位置。

在实施例中,多个FEC编码器中的每个FEC编码器(例如,FEC编码器301或FEC编码器303)用于接收输入消息作为对通信设备341的输入串的一部分。例如,FEC编码器301用于接收输入消息314,并且FEC编码器303用于接收输入消息316,输入消息314和输入消息316两者均为对设备341的输入串312的一部分。在一些实施例中,用于馈送到多个FEC编码器的集合的多个输入消息中的任何两个消息具有相等的长度。例如,输入消息314和输入消息316具有相同的长度。在一些实施例中,设备341被设置在PCIe总线中,输入消息314或输入消息316是用于PCIe总线的微片的一部分,并且输入串312是微片。

在实施例中,输入消息314包括多个输入字节Data[x-1:0]……[7……0]。FEC编码器301用于生成包括多个输入字节Data[x-1:0]……[7……0]加上校验字节和奇偶字节的输出311。类似地,输入消息316包括多个输入字节Data[Y x-1:0]……[7……0]。FEC编码器303用于生成包括多个输入字节Data[Y x-1:0]……[7……0]加上校验字节和奇偶字节的输出313。

在实施例中,图3(b)示出了到编码器350的大小为250字节的微片352的更多细节,其中微片352被分为3个输入消息以馈送到3个FEC编码器(FEC编码器351、FEC编码器353和FEC编码器355)中。FEC编码器351、FEC编码器353和FEC编码器355与编码器中的任一个(例如,编码器351)相同地构成。换言之,编码器351、FEC编码器353和FEC编码器355具有相同的结构,执行相同的功能。唯一的区别在于编码器351、FEC编码器353和FEC编码器355对不同的输入进行操作以生成不同的输出。如果切换编码器351、FEC编码器353和FEC编码器355的位置,则整个电路350将正确地起作用。因此,编码器351、编码器353或编码器355接收相同长度(例如,84字节)的输入消息。当将250字节的微片划分为3个部分时,第一部分为84字节,第二部分为83字节,并且第三部分为83字节,可以将0字节(包括八个0的字节)附在最高有效位或最低有效位以使微片的第二部分或第三部分成为84字节。因此,编码器351、编码器353和编码器355用于对相同长度的84字节的输入消息进行操作,并生成针对每个84字节的输入消息的奇偶字节和校验字节。对于250字节的微片352,编码器350的输出为256字节。在一些其他实施例中,FEC编码器351、FEC编码器353和FEC编码器355可以对不同长度的输入消息进行操作以生成针对输入消息的校验字节。

在实施例中,FEC编码器(例如,FEC编码器301)可以包括用于计算校验字节的一个或多个端口编码器(例如,端口编码器321、端口编码器322),而计算奇偶字节的细节未示出。端口编码器的输出(例如,端口编码器321的输出和端口编码器322的输出)可以通过使用XOR 323对字节执行按位XOR运算来组合,以生成针对输入消息314的校验字节。在一些实施例中,FEC编码器301可以仅包括一个端口编码器。可以通过FEC编码器301的端口配置来确定要被包括在FEC编码器301中的端口编码器的数量。FEC编码器301用于将输入消息314划分为多个输入子串(输入消息314的输入字节的集合),以在多个时钟周期内将其馈送到FEC编码器301的一个或多个端口编码器中,从而生成针对到FEC编码器301的输入消息314的校验字节。用于生成针对到FEC编码器301的输入消息314的校验字节的多个时钟周期的数量可以取决于输入消息的大小、输入串312的大小以及端口编码器312或端口编码器322的宽度。例如,FEC编码器301用于针对PCI-e总线中的×16链路在2个周期中、针对PCI-e总线中的×8链路在4个周期中或者针对PCI-e总线中的×2链路在8个周期中生成针对到FEC编码器301的输入消息314的校验字节。

在实施例中,设备341还包括交织器305,该交织器305耦合到多个FEC编码器(例如,FEC编码器301和FEC编码器303)的集合,以接收FEC编码器301的输出311和FEC编码器301的输出313。FEC编码器301的输出311包括由FEC编码器301针对输入消息314生成的校验字节。FEC编码器303的输出313包括由FEC编码器303针对输入消息316生成的校验字节。交织器305用于生成输出串,除了未示出的基于等式(2.2)或等式(2.4)生成的一些奇偶字节外,该输出串包括输入串312加上由多个FEC编码器(例如,FEC编码器301和FEC编码器303)的集合生成的多个校验字节。

在实施例中,一个或多个端口编码器(例如,端口编码器323或端口编码器324)也可以在解码器中使用以检测错误的位置。可以在与当前公开中的等式(8.1)相关的计算中找到这种应用的示例。解码器304包括伽罗瓦域加法器325和端口编码器323,以执行按位XOR来识别消息的错误位置。类似地,解码器306包括伽罗瓦域加法器326和端口编码器324,以执行按位XOR来识别消息的错误位置。由于端口编码器可以在FEC编码器或FEC解码器中使用,因此端口编码器通常可以被称为在FEC编解码器中使用。

在下文中,描述了用于端口编码器(例如,端口编码器321、用于FEC编码器301的端口编码器322、或在解码器中使用的端口编码器323和端口编码器324)的操作的更多细节。FEC编码器301用于基于下面示出的等式(3.1)来生成针对输入消息314的校验字节,该等式(3.1)被应用于等式(2.1)或等式(2.3)。端口编码器(例如,端口编码器321或端口编码器322)的更多细节在图4中示出。

在设计在不同的支持的端口模式配置(例如:×16、×8×8、×8×4×4、×4×4×8、×4×4×4×4)之间共享数据总线的链路细分支持控制器时,GF算术的数学属性可以用于高效地使编码器流水线化。可以动态地配置计算机总线接口以支持各种端口模式配置。另外地且可替代地,可以以某些特定端口模式配置在ASIC中实现接口。

GF算术运算本质上是对多项式取模运算。特别地,要使用的属性是:

(x y) mod g(x)=[∝x[∝y mod g(x)]]mod g(x) (等式3.1)

其中g(x)是GF(2m)上的本原多项式,例如,x8 x4 x3 x2 1,m=8作为示例。

等式3.1的上述属性证明如下。

令∝(y)=a(x)*g(x) r(x),=>∝(y)mod g(x)=r(x)

令∝x=b(x)*g(x) s(x),

(x y) mod g(x)=[∝xy]mod g(x)=[a(x)*g(x) r(x)][b(x)*g(x) s(x)]mod g(x)=r(x)*s(x)。

类似地,[∝x[∝y mod g(x)]]mod g(x)=[[b(x)*g(x) s(x)]*r(x)]mod g(x)=s(x)*r(x)=r(x)*s(x)(交换性)。

等式3.1中示出的上述属性非常强大。这意味着可以通过在消息的输入字节的集合之前提取alpha的幂来将等式(2.1)或等式(2.3)的计算分解为多个时钟周期中的多个步骤。实施例可以累积字节上的alpha幂并坚持仅操纵8位结果,并且利用在随后的时钟周期中出现的较新字节来对其进行累积。作为示例,对于以1GHz在128B数据路径处运行的×16,取决于在3组84至86字节的编码器的集合中哪个FEC被设置,实施例可以在第一周期中接收42或43字节的数据,并在下一周期中接收其余的42或41字节的数据。对于×8,1个集合的数据要经过4个时钟周期,并且对于×4,1个集合的数据要经过8个时钟周期。

因此,实施例编码器可以支持×4、×8、×16的所有组合。也可以扩展相同的技术以对×2或×1进行伸缩。当使用共享128B数据路径的4个×4端口进行构建时,图4给出了在FEC编码器中使用的端口编码器的整体框图。

图4示出了根据各种实施例的由FEC编解码器450的端口编码器400执行的高级逻辑图和操作。端口编码器400可以是在FEC编码器301中使用的端口编码器321的示例,或者是在FEC解码器304中使用的端口编码器323的示例。端口编码器400可以在与PCI相关的总线或其他计算机总线的各种端口配置中使用。

在实施例中,FEC编解码器450可以包括多个端口编码器。端口编码器400可以是FEC编解码器450的第一端口编码器,并且FEC编解码器450还包括一个或多个附加的端口编码器,其中一个或多个附加的端口编码器中的每个端口编码器与端口编码器400相同地构成。例如,端口编码器400可以是FEC编码器301中的端口编码器321的示例,而另一端口编码器322与端口编码器321相同地构成并且被包括在FEC编码器301中。

在实施例中,包括端口编码器400的FEC编解码器450(例如,FEC编码器或FEC解码器)可以被设置在PCIe总线中并且在各种端口配置中使用。例如,FEC编解码器450包括总共1个端口编码器,其包括用于PCI-e总线中的×16链路的端口编码器400;或者FEC编解码器450包括总共2个端口编码器,其包括用于PCI-e总线中的×8链路的端口编码器400;或者FEC编解码器450包括总共4个端口编码器,其包括用于PCI-e总线中的×4链路的端口编码器400;或者FEC编解码器450包括总共8个端口编码器,其包括用于PCI-e总线中的×2链路的端口编码器400;或者FEC编解码器450包括总共16个端口编码器,其包括用于PCI-e总线中的×1链路的端口编码器400。FEC编解码器450可以被动态地配置为支持各种端口模式配置,或者具有一些特定的端口模式配置。

端口编码器400的计算基于等式3.1到等式(2.1)或等式(2.3)的用于校验字节计算的应用。因此,使用各种alpha的幂(∝x、∝y),其可以被简单地称为alpha幂。alpha是伽罗瓦域上的本原多项式的单位根,其中本原多项式为alpha^8 alpha^4 alpha^3 alpha^2 1(∝8432 1),并且伽罗瓦域是GF(28)。图5示出了根据各种实施例的针对3个FEC编码器的,针对FEC×8配置的alpha幂和数据字节关联。图6示出了根据各种实施例的针对3个FEC编码器的,针对×8配置的alpha幂。图7示出了根据各种实施例的针对3个FEC编码器的,针对×4配置的alpha幂。

如图4中示出的,FEC编解码器450可以是FEC编码器301的示例,该FEC编解码器450用于在多个时钟周期(从第一时钟周期开始、第二时钟周期、……紧接在当前时钟周期之前的时钟周期、当前时钟周期、下一时钟周期等,直到当FEC编解码器450内部的端口编码器接收到整个输入消息时的最终时钟周期为止)期间接收输入消息314来计算针对输入消息314的校验字节。输入消息314被划分为针对不同时钟周期的输入字节的多个集合,例如,输入消息314的输入字节的当前集合、针对下一时钟周期的输入消息314的输入字节的集合。基于等式(3.1),可以通过计算输入字节的多个较小集合的校验字节,并根据等式(3.1)进一步将这些校验字节组合在一起,来实现针对输入消息314的校验字节的计算。在每个时钟周期,针对输入消息314的输入字节的集合的校验字节由被存储在存储设备401中的阶段结果表示。因此,阶段结果是基于针对从第一时钟周期到紧接在当前时钟周期之前的时钟周期的所有时钟周期的消息的输入字节的先前集合而累积的。在最终时钟周期,基于最终阶段结果来计算基于等式(2.1)或等式(2.3)的校验字节。在获得相同的校验字节结果的同时,将长输入消息314分为针对不同时钟周期的输入字节的多个较小集合可以改进FEC编解码器450的面积。如图4中示出的,输入字节的集合具有11个字节,这是示出用于如图3(b)中示出的FEC编码器351中使用的端口编码器的操作的示例。与到FEC编码器351的84字节输入消息相比,基于具有11个字节的输入字节的集合的FEC编码450节省了面积。图4仅示出了一种可能的实现方式。对于其他示例,输入字节的集合可以具有不同于11个字节的大小。

由于端口在不同的端口模式配置中共享数据路径,因此本文的实施例在图4中示出了逻辑图如何寻找一个端口。符号“*”和“ ”是上面描述的GF乘法和加法运算。每个端口针对每个FEC集合获取11个字节的数据。数据字节一传入,就将这些数据字节乘以alpha的从1到11的幂(常数与端口模式或周期计数无关),从而为累加器获得合并的8位结果。在随后的周期中,通过进行多个alpha幂乘法来获得阶段结果。最后,在数据的最后周期中,获得合并的结果,并进一步获得最终的alpha幂2调整,以获得用于端口的最终校验结果。如果实施例是×8或×16配置,则需要对相关端口的校验字节结果进行XOR,以获得针对输入消息的最终校验结果。可以根据等式(3.1)类似地实现具有与微片的消息不同的大小的消息以及具有与11个字节不同的大小的输入消息。

在实施例中,端口编码器400包括伽罗瓦域乘法器403、存储单元401、求和单元405、伽罗瓦域乘法器407、伽罗瓦域乘法器423、求和单元421、选择器424、选择器425、选择器427、多个伽罗瓦域乘法器的集合411、一个或多个伽罗瓦域加法器413、存储单元412,该存储单元412用于存储输入字节的当前集合(B0,B1,……B10)和alpha的多个幂的集合(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11),其表示(∝1,∝2,∝3,∝4,∝5,∝6,∝7,∝8,∝9,∝10,∝11)。

在实施例中,端口编码器400用于对针对当前时钟周期的消息的输入字节当前集合(B0,B1,……B10)执行一组操作以生成第一阶段结果,并且将阶段结果保存到存储单元401中。因此,第一阶段结果是基于针对从第一时钟周期到紧接在当前时钟周期之前的时钟周期的所有时钟周期的消息的输入字节的先前集合而累积的。可以将被存储在存储设备401中的第一阶段结果提供给伽罗瓦域乘法器403。该第一阶段结果被标记为沿着从存储单元401到伽罗瓦域乘法器403的线的第一阶段结果437。

在实施例中,在当前时钟周期,存储单元412用于存储输入字节的当前集合(B0,B1,……B10)和alpha的多个幂的集合(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)。在不同的时钟周期,更新输入字节的集合(B0,B1,……B10)。在另一方面,alpha的多个幂的集合(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)可以在多个时钟周期之间不改变并且共享。

在实施例中,多个伽罗瓦域乘法器的集合411对输入字节的当前集合(B0,B1,……B10)和alpha的多个幂的集合(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)执行多个伽罗瓦域乘积的集合。例如,对于图4中示出的实施例,可以使用11个伽罗瓦域乘法器来生成形式为(B0*a11,B1*a10,……,B10*a1)的11个伽罗瓦域乘积。11个伽罗瓦域乘法器并行执行伽罗瓦域乘法,以生成11个伽罗瓦域乘积。在实施例中,如所示的,多个伽罗瓦域乘积的集合包括11个伽罗瓦域乘积,针对当前时钟周期的多个输入字节的集合包括不超过11个输入字节,并且alpha的多个幂的集合包括alpha的从1到11的幂。对于其他示例,可以使用其他大小的输入字节的集合、其他大小的alpha的多个幂的集合。

在实施例中,一个或多个伽罗瓦域加法器413耦合到多个伽罗瓦域乘法器411的集合,以生成当前时钟周期的合并的字节433,从而对由多个伽罗瓦域乘法器411生成的多个伽罗瓦域乘积进行相加。当前时钟周期的合并的字节433是多个伽罗瓦域乘积的集合的伽罗瓦域总和。例如,一个或多个伽罗瓦域加法器413生成总和(B0*a11 B1*a10 …… B10*a1)作为合并的字节433。

在实施例中,在下一时钟周期,针对下一时钟周期的输入字节的集合可以从(B0,B1,……B10)更新为(C0,C1,……C10),多个伽罗瓦域乘法器的集合411对(C0,C1,……C10)和alpha的多个幂的集合(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)执行多个伽罗瓦域乘积的集合,以生成形式为(C0*a11,C1*a10,……,C10*a1)的11个伽罗瓦域乘积。一个或多个伽罗瓦域加法器413用于生成总和(C0*a11 C1*a10 …… C10*a1)作为下一时钟周期的合并的字节433。输入字节的两个集合(B0,B1,……B10)和(C0,C1,……C10)都是到FEC编解码器450的输入消息的一部分。

在实施例中,伽罗瓦域乘法器407用于对合并的字节433和alpha的幂(其可以是alpha的第三幂)执行伽罗瓦域乘法,以生成临时乘积436。耦合到伽罗瓦域乘法器407的选择器424用于选择合并的字节433或临时乘积436作为到求和单元405中的内部输入432。在实施例中,如图5-7中示出的,在阶段前(pre-stage),alpha的第三幂被标记为alpha幂值。例如,图6的在端口1和端口0处的阶段前的alpha幂值都具有标签1,从而表示∝1

在实施例中,伽罗瓦域乘法器403耦合到存储单元401,该伽罗瓦域乘法器403用于接收第一阶段结果437和针对当前时钟周期的alpha的第一幂429(其在以下一些描述中可以被称为alpha幂1),并且对第一阶段结果437和alpha的第一幂429执行伽罗瓦域乘法,以生成当前时钟周期的第一伽罗瓦域乘积434。对于不同的时钟周期和不同的端口配置,alpha的第一幂429可以是不同的。选择器427用于基于当前时钟周期计数和端口配置来选择针对当前时钟周期的alpha的第一幂429。例如,图5-7示出了针对不同端口和时钟周期的不同的alpha的第一幂429。例如,以下各项都是针对不同端口和时钟周期的alpha的第一幂429的示例:在图5中被标记为“阶段的周期1alpha”的行,在图6中被标记为“阶段的周期1alpha”、“阶段的周期2alpha”、“阶段的周期3alpha”的行,以及在图7中被标记为“阶段的周期1alpha”的行,……被标记为“阶段的周期7alpha”的行。

在实施例中,求和单元405耦合到伽罗瓦域乘法器403和存储单元401,该求和单元405用于对基于当前时钟周期的合并的字节433的内部输入432和第一伽罗瓦域乘积434执行伽罗瓦域加法,以生成第二阶段结果435并且将其存储在存储单元401中,以供随后用于生成校验字节。

在实施例中,在紧接在当前时钟周期的下一时钟周期,端口编码器400用于对针对下一时钟周期的消息的输入字节的集合执行一组操作。详细地,伽罗瓦域乘法器403还用于进行以下操作:从存储单元401接收第二阶段结果;接收针对下一时钟周期的alpha的第二幂429;以及对第二阶段结果和alpha的第二幂执行伽罗瓦域乘法以生成下一时钟周期的伽罗瓦域乘积。求和单元405被布置为基于下一时钟周期的合并的字节433和下一时钟周期的伽罗瓦域乘积来执行伽罗瓦域加法,以生成第三阶段结果并且将其存储在存储单元401中,以供随后用于生成校验字节。在实施例中,针对下一时钟周期的alpha的第二幂具有与针对当前时钟周期的alpha的第一幂429相同的值。例如,如图7中示出的,阶段的周期1alpha在端口0处具有值11,并且阶段的周期2alpha在端口0处具有值11,两者的值均为11。

在实施例中,选择器425用于基于时钟周期来选择要被发送给求和单元405或求和单元421的合并的字节433。在当前时钟周期不是最终时钟周期时,将合并的字节433发送给求和单元405。在最终时钟周期,将合并的字节433发送给求和单元421。求和单元421用于基于最终时钟周期的合并的字节433和第一伽罗瓦域乘积434来执行伽罗瓦域加法,以生成最终总和439以供随后用于生成校验字节。

在实施例中,伽罗瓦域乘法器423用于进行以下操作:接收最终总和439;接收alpha的第二幂(alpha幂2)422;以及对最终总和与alpha的第二幂执行伽罗瓦域乘法以生成针对消息的校验字节431。作为示例,图5-7示出了针对不同端口的不同的alpha的第二幂(alpha幂2)422。例如,以下各项都alpha的第二幂(alpha幂2)422的示例:在图5中被标记为“最终alpha”的行,在图6中被标记为“最终alpha”的行,以及在图7中被标记为“最终alpha”的行都是alpha的第二幂(alpha幂2)422的示例。

在一些实施例中,alpha幂1和alpha幂2仅是×16和×8模式的端口模式配置的函数,而不是时钟周期的函数——这大大简化了逻辑。即使对于×4,alpha幂1也在2个值之间变化,并且这是通过围绕3组FEC传递令牌来实现的。在存在令牌的周期中,可以选择值为10,否则为11(图7)。图5示出了在×16配置中共享数据总线的4个端口的数据字节分布和alpha幂值(“阶段的alpha”行)和alpha幂2值(最终alpha)。数据行中的数字表示对应的数据字节。alpha行中的数字表示对应的alpha幂。图6示出了×8配置的类似结构。对于×8,在特定周期中使用阶段前乘数1,这是通过使用图3中示出的复用器的alpha接脚相乘来实现的。图7示出了针对×4配置的alpha幂和字节关联。

图8(a)-8(b)示出了根据各种实施例的各种解码算法。

图8(a)示出了(具有纠错的)86字节至84字节解码器的基线实现方式。解码和纠错方法在图8(a)的代码中呈现。首先,使用编码器以根据接收到的消息计算校验和奇偶字节,例如,行801中的encode_data[85:0]。将计算出的校验和奇偶字节与接收到的校验和奇偶字节进行比较(XOR),以分别给出SyndCheck和SyndParity结果,例如,行803用于给出SyndCheck结果,并且行805用于给出SyndParity结果。针对奇偶字节的XOR的结果给出误差幅度(如果非零)。执行反向查找以识别哪些alpha幂映射到XOR的结果,并且这些可以用于识别错误的位置。

图8(b)示出了用于改进的定时设计的(具有纠错的)86字节至84字节解码器的实现方式。

基线实现方式中的主要复杂度来自反向查询,该反向查询被执行以获得alpha幂,并随后进行数学运算获得错误位置。然而,实施例可以通过使用编码器的中间结果来直接获得该结果,例如,如代码部分811中示出的。很容易表明,在具有单个错误的情况下,奇偶和校验校验子分别由以下等式给出:

SyndParity=ek,,SyndCheck=α(84-k)ek (等式8.1)

其中“k”是误差的位置,并且ek是误差的幅度。

因此,对于接收到的数据字节中的每一个,如果XOR操作与SyndParity并行执行(以消除错误项),然后将结果与对应的alpha幂相乘,随后与编码器的中间结果进行XOR,则将与SyndCheck匹配的唯一项将是错误中的字节位置。这是因为作为XOR的结果,可以移除信息位并仅保留错误项。修改后的代码的相关部分在图8(b)中呈现。

该方法避免了针对反向alpha幂的查找表(从字节到alpha幂)以及随后的用于获得错误位置的计算。就并行XOR而言,该方法是更加面积密集的,但是与基线实现方式相比,节省了大约8-10级的逻辑,并且使得能够在1GHz的1个周期内结束FEC校正 CRC。在这种场景中,不考虑多个错误,因为无论如何,CRC都可以用于检测多个错误。如果在FEC校正之后出现CRC错误,则可能重试或重发该微片。

图9示出了根据各种实施例的适用于实践本公开的各个方面的示例设备。设备900可以用于实现装置100的功能。如所示的,设备900可以包括一个或多个处理器902,每个处理器902具有一个或多个处理器核心,或者可选地,包括硬件加速器903(其可以是ASIC或FPGA)。在替代实施例中,硬件加速器903可以是处理器902的一部分,或者一起集成在SOC上。另外地,设备900可以包括:存储器904,其可以是多个已知的持久性存储介质中的任何一个;以及包括模块909的数据存储电路908。另外地,设备900可以包括I/O接口918,其耦合到一个或多个传感器914以及显示屏913。I/O接口918可以包括发射机923和接收机917。此外,设备900可以包括通信电路905,该通信电路905包括收发机(Tx)911和网络接口控制器(NIC)912。这些元件(处理器902、硬件加速器903、存储器904、存储装置908、设备931、通信电路905和/或I/O接口918)可以经由系统总线906(其可表示一条或多条总线)彼此耦合。在多条总线的情况下,则这些元件可以通过一个或多个总线桥(未示出)进行桥接。此外,设备931可以耦合到系统总线906,并且设备935可以耦合到计算机总线939。设备931可以包括接口933,并且设备935可以包括接口937。在实施例中,计算机总线906或计算机总线939可以是如图1中示出的计算机总线105的示例。即,处理器902、硬件加速器903、存储器904、存储装置908、设备931、通信电路905、I/O接口918和/或设备931/935的接口(发射机/接收机)电路可以与本公开的FEC编码器教导结合,如先前所描述的。

在实施例中,(多个)处理器902(也被称为“处理器电路”902)可以是被配置为通过执行指令来实现基本的算术、逻辑和输入/输出操作的一个或多个处理元件。处理器电路902可以被实现为独立的系统/设备/封装或被实现为现有系统/设备/封装的一部分。处理器电路902可以是一个或多个微处理器、一个或多个单核心处理器、一个或多个多核心处理器、一个或多个多线程处理器、一个或多个GPU、一个或多个超低电压处理器、一个或多个嵌入式处理器、一个或多个DSP、一个或多个FPD(硬件加速器)(例如,FPGA)、结构化ASIC、可编程SoC(PSoC)等和/或其他处理器或处理/控制电路。处理器电路902可以是SoC的一部分,其中本文所讨论的处理器电路902和其他组件被形成为单个IC或单个封装。作为示例,处理器电路902可以包括一个或多个英特尔的或Core处理器;Advanced Micro Devices(AMD)的加速处理单元(APU)、或处理器;苹果公司的A系列、S系列、W系列等处理器;高通的处理器;三星的处理器;等等。

在实施例中,处理器电路902可以包括传感器中心,其可以通过处理从一个或多个传感器914获得的数据而用作协处理器。传感器中心可以包括被配置为通过执行算术、逻辑和输入/输出操作来集合从一个或多个传感器914中的每个传感器获得的数据的电路。在实施例中,传感器中心可以能够进行以下操作:对所获得的传感器数据加盖时间戳;响应于针对这样的数据的查询而向传感器电路902提供传感器数据;缓冲传感器数据;将包括一个或多个传感器914中的每个传感器的独立流的传感器数据连续地流送到处理器电路902;基于预定义的阈值或条件/触发来报告传感器数据;和/或其他类似的数据处理功能。

在实施例中,存储器904(也被称为“存储器电路904”等)可以是被配置为存储用于操作计算机设备900的数据或逻辑的电路。存储器电路904可以包括多个存储器设备,这些存储器设备可以用于提供系统存储器给定量。作为示例,存储器电路904可以是任何适当类型、数量的易失性存储器设备(例如,随机存取存储器(RAM)、动态RAM(DRAM)、静态RAM(SAM)等)和/或非易失性存储器设备(例如,只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、闪速存储器、反熔丝等)和/或其组合,其可以用任何已知的合适的实现方式进行配置。在各种实现方式中,单个存储器设备可以由任何数量的不同类型的封装(例如,单管芯封装(SDP)、双管芯封装(DDP)或四管芯封装、双列直插式存储器模块(DIMM)(例如,microDIMM或MiniDIMM)和/或任何其他类似的存储器设备)形成。为了提供信息(例如,数据、应用、操作系统等)的持久性存储,存储器电路904可以包括:一个或多个大容量存储设备,例如,固态磁盘驱动器(SSDD);闪速存储器卡,例如,SD卡、microSD卡、xD图片卡等,以及USB闪存驱动器;(例如,在低功率实现方式中的)与处理器电路902相关联的管芯上存储器或寄存器;微型硬盘驱动器(HDD);来自和的三维交叉点(3D XPOINT)存储器,等等。

在使用FPD的情况下,处理器电路902和存储器电路904(和/或数据存储电路908)可以包括逻辑块或逻辑结构、存储器单元、输入/输出(I/O)块,以及可以被编程以执行本文讨论的示例实施例的各种功能的其他互连的资源。存储器单元可以用于将数据存储在查找表(LUT)中,该LUT由处理器电路902使用以实现各种逻辑功能。存储器单元可以包括各种级别的存储器/存储装置的任何组合,包括但不限于EPROM、EEPROM、闪速存储器、SRAM、抗熔丝等。

在实施例中,具有共享或相应的控制器的数据存储电路908(也被称为“存储电路908”等)可以提供信息(例如,模块909、操作系统等)的持久性存储。数据存储电路908可以被实现为固态驱动器(SSD);固态磁盘驱动器(SSDD);串行AT附件(SATA)存储设备(例如,SATA SSD);闪存驱动器;闪速存储器卡,例如,SD卡、microSD卡、xD图片卡等,以及USB闪存驱动器;三维交叉点(3D Xpoint)存储器设备;与处理器电路902相关联的管芯上存储器或寄存器;硬盘驱动器(HDD);微型HDD;电阻改变存储器;相变存储器;全息存储器;或化学存储器;以及其他存储器。如所示的,数据存储电路908被包括在计算机设备900中;然而,在其他实施例中,数据存储电路908可以被实现为与计算机设备900的其他元件分离的一个或多个设备。

在一些实施例中,数据存储电路908可以包括操作系统(OS)(未示出),该OS可以是通用操作系统或针对计算机设备900专门编写和定制的操作系统。OS可以包括一个或多个驱动器、库和/或应用编程接口(API),这些元件为模块909和/或控制系统配置提供程序代码和/或软件组件,以控制和/或获得/处理来自一个或多个传感器914的数据。

模块909可以是用于执行计算机设备900的各种功能和/或执行本文讨论的示例实施例的功能的软件模块/组件。在其中处理器电路902和存储器电路904包括硬件加速器(例如,FPGA单元、硬件加速器903)以及处理器核心的实施例中,硬件加速器(例如,FPGA单元)可以(例如,利用适当的位流、逻辑块/结构等)被预先配置有用于执行本文实施例的一些功能的逻辑(代替采用要由(多个)处理器核心执行的编程指令)。例如,模块909可以包括用于关于显示屏913、发射机923和接收机917讨论的对应实体的逻辑。

计算机设备900的组件可以通过总线906彼此通信。总线906可以包括任何数量的技术,例如,本地互连网络(LIN);工业标准架构(ISA);扩展ISA(EISA);PCI;PCI扩展(PCIx);PCIe;集成电路间(I2C)总线;并行小型计算机系统接口(SPI)总线;通用应用编程接口(CAPI);点对点接口;功率总线;专有总线,例如,超级路径接口(UPI)、加速器链路(IAL)或在基于SoC的接口中使用的一些其他专有总线;或任何数量的其他技术。在一些实施例中,总线906可以是控制器局域网(CAN)总线系统、时间触发协议(TTP)系统或FlexRay系统,其可以允许各种设备(例如,一个或多个传感器914等)使用消息或帧相互通信。

通信电路905可以包括用于与无线网络或有线网络进行通信的电路。例如,通信电路905可以包括收发机(Tx)911和网络接口控制器(NIC)912。通信电路905可以包括专用于特定无线通信协议的一个或多个处理器(例如,基带处理器、调制解调器等)。

可以包括NIC 912以提供到网络和/或其他设备的有线通信链路。有线通信可以提供以太网连接、USB上的以太网和/或其他连接,或者可以基于其他类型的网络,例如,DeviceNet、ControlNet、Data Highway 、PROFIBUS或PROFINET,以及其他网络。可以包括附加的NIC 912,以允许连接到第二网络(未示出)或其他设备,例如,第一NIC 912提供通过以太网到网络的通信,并且第二NIC 912提供通过另一类型的网络(例如,包括个人计算机(PC)设备的个域网(PAN))到其他设备的通信。在一些实施例中,设备900的各个组件(例如,一个或多个传感器914等)可以经由如上面所讨论的NIC 912而不是经由如下文所讨论的I/O电路918连接到(多个)处理器902。

Tx 911可以包括一个或多个无线电以与网络和/或其他设备无线通信。Tx 911可以包括硬件设备,这些硬件设备使用通过固态或非固态介质的调制电磁辐射来实现与有线网络和/或其他设备的通信。这样的硬件设备可以包括交换机、滤波器、放大器、天线元件等,以通过生成或以其他方式产生无线电波而将数据发送到一个或多个其他设备并将接收到的信号转换为可以提供给计算设备900的一个或多个其他组件的有用信息(例如,数字数据)来促进空中通信(OTA)。在一些实施例中,设备900的各种组件(例如,一个或多个传感器914等)可以经由如上面所讨论的Tx 911而不是经由如下文所讨论的I/O电路918连接到设备900。在一个示例中,一个或多个传感器914可以经由短距离通信协议与设备900耦合。

Tx 911可以包括与任何数量的3GPP(第三代合作伙伴计划)规范,特别是长期演进(LTE)、长期演进-高级(LTE-A)、长期演进高级Pro(LTE-APro)和第五代(5G)新无线电(NR)兼容的一个或多个无线电。可以注意到的是,可以选择与任何数量的其他固定、移动或卫星通信技术和标准兼容的无线电。这些可以包括例如任何蜂窝广域无线电通信技术,其可以包括例如5G通信系统、全球移动通信系统(GSM)无线电通信技术、通用分组无线电服务(GPRS)无线电通信技术或GSM演进增强型数据速率(EDGE)无线电通信技术。可以使用的其他第三代合作伙伴计划(3GPP)无线电通信技术包括UMTS(通用移动电信系统)、FOMA(多媒体访问自由)、3GPP LTE(长期演进)、3GPP LTE高级(长期演进高级)、3GPP LTE高级Pro(长期演进高级Pro)、CDMA2000(码分多址2000)、CDPD(蜂窝数字分组数据)、Mobitex、3G(第三代)、CSD(电路交换数据)、HSCSD(高速电路交换数据)、UMTS(3G)(通用移动电信系统(第三代))、W-CDMA(UMTS)(宽带码分多址(通用移动电信系统))、HSPA(高速分组接入)、HSDPA(高速下行链路分组接入)、HSUPA(高速上行链路分组接入)、HSPA (高速分组接入Plus)、UMTS-TDD(通用移动电信系统-时分双工)、TD-CDMA(时分-码分多址)、TD-SCDMA(时分-同步码分多址)、3GPP Rel.8(Pre-4G)(第三代合作伙伴计划版本8(第四代前))、3GPPRel.9(第三代合作伙伴计划版本9)、3GPP Rel.10(第三代合作伙伴计划版本10)、3GPP Rel.11(第三代合作伙伴计划版本11)、3GPP Rel.12(第3三代合作伙伴计划版本12)、3GPP Rel.13(第三代合作伙伴计划版本13)、3GPP Rel.14(第三代合作伙伴计划版本14)、3GPP LTE Extra、LTE许可辅助接入(LAA)、UTRA(UMTS地面无线电接入)、E-UTRA(演进型UMTS地面无线电接入)、LTE高级(4G)(长期演进高级)(第4代))、cdmaOne(2G)、CDMA2000(3G)(码分多址2000(第三代))、EV-DO(优化的演进数据或仅演进数据)、AMPS(1G)(高级移动电话系统(第一代))、TACS/ETACS(总访问通信系统/扩展的总访问通信系统)、D-AMPS(2G)(数字AMPS(第二代))、PTT(一键通(Push-to-talk))、MTS(移动电话系统)、IMTS(改进的移动电话系统)、AMTS(高级移动电话系统)、OLT(挪威语为Offentlig Landmobil Telefoni,公共陆地移动电话)、MTD(Mobiltelefonisystem D的瑞典语缩写,或移动电话系统D)、Autotel/PALM(公共自动陆地移动)、ARP(芬兰语为Autoradiopuhelin,车载无线电话)、NMT(北欧语,移动电话)、Hicap(NTT(日本电报和电话)的大容量版本)、CDPD(蜂窝数字分组数据)、Mobitex、DataTAC、iDEN(集成数字增强网络)、PDC(个人数字蜂窝)、CSD(电路交换数据)、PHS(个人手持电话系统)、WiDEN(宽带集成数字增强网络)、iBurst、未许可移动访问(UMA,也被称为3GPP通用访问网络或GAN标准))、无线千兆联盟(WiGig)标准(其一般为mmWave标准(工作在10-90GHz及更高频率的无线系统,例如,WiGig,IEEE 802.11ad,IEEE 802.11ay等))。除了上面列出的标准,任何数量的卫星上行链路技术都可以用于上行链路收发机,包括例如符合ITU(国际电信联盟)或ETSI(欧洲电信标准协会)发布的标准的无线电,以及其他无线电。因此,本文提供的示例被理解为适用于现有的和尚未制定的各种其他通信技术。前述协议的实现方式、组件和细节可以是本领域中已知的,并且为了简洁起见在本文省略。

输入/输出(I/O)接口918可以包括电路,例如,用于连接计算机设备900与外部组件/设备(例如,一个或多个传感器914等)的外部扩展总线(例如,通用串行总线(USB)、FireWire、Thunderbolt、PCI/PCIe/PCIx等)。I/O接口电路918可以包括任何合适的接口控制器和连接器,以互连处理器电路902、存储器电路904、数据存储电路908、通信电路905和计算机设备900的其他组件中的一个或多个。接口控制器可以包括但不限于存储器控制器、存储控制器(例如,独立磁盘冗余阵列(RAID)控制器)、基板管理控制器(BMC)、输入/输出控制器、主机控制器等。连接器可以包括例如总线(例如,总线906)、端口、插槽、跳线、互连模块、插座、模块化连接器等。I/O电路918可以经由有线连接(例如,使用USB、FireWire、Thunderbolt、RCA、视频图形阵列(VGA)、数字视觉接口(DVI)和/或微型DVI、高清晰度多媒体接口(HDMI)、S-Video和/或其他连接)耦合设备900与一个或多个传感器914等。

一个或多个传感器914可以是被配置为进行以下操作的任何设备:检测事件或环境改变;将检测到的事件转换为电信号和/或数字数据;以及将信号/数据传输/发送到计算机设备900。一个或多个传感器914中的一些传感器可以是用于提供计算机生成的感觉输入的传感器。一个或多个传感器914中的一些传感器可以是用于运动和/或物体检测的传感器。这样的一个或多个传感器914的示例可以尤其包括电荷耦合器件(CCD)、互补金属氧化物半导体(CMOS)、有源像素传感器(APS)、无镜头图像捕获设备/相机、温度记录(红外)相机、光成像检测与测距(LIDAR)系统和/或其他传感器。在一些实现方式中,一个或多个传感器914可以包括无镜头图像捕获机构,该无镜头图像捕获机构包括孔径元件阵列,其中穿过孔径元件阵列的光限定图像的像素。在实施例中,一个或多个传感器914可以与光生成设备耦合或与其相关联,例如,一个或多个红外投影仪将红外光的栅格投影到场景上,其中红外相机可以记录反射的红外光以计算深度信息。

一个或多个传感器914中的一些传感器可以用于位置和/或定向检测、外界/环境条件检测等。这样的一个或多个传感器914的示例可以尤其包括具有压电、压阻和/或电容组件的微机电系统(MEMS),其可以用于确定与计算机设备900相关的环境条件或位置信息。在实施例中,MEMS可以包括3轴加速度计、3轴陀螺仪和/或磁力计。在一些实施例中,一个或多个传感器914还可以包括一个或多个重力计、高度计、气压计、接近传感器(例如,(多个)红外辐射检测器等)、深度传感器、外界光传感器、热传感器(温度计)、超声波收发机和/或其他传感器。

这些元件中的每一个(例如,一个或多个处理器902、硬件加速器903、存储器904、包括模块909的数据存储电路908、输入/输出接口918、一个或多个传感器914、包括Tx 911、NIC 912的通信电路905、系统总线906、计算机总线939、设备931、设备935)可以执行其在本领域中已知的常规功能。另外地,可以采用这些组件以存储和托管编程指令的执行,该编程指令实现用于与结合图1-8描述的计算机总线的前向纠错(FEC)码的编码器和解码器相关联的操作,和/或提供当前公开中描述的实施例的能力的其他功能。各种元件可以通过由(多个)处理器902支持的汇编指令或可以被编译为这样的指令的高级语言(例如,C)来实现。与未以软件实现的设备900相关联的操作可以例如经由硬件加速器903以硬件实现。

这些元件902-939的数量、能力和/或容量可以变化,这取决于设备900被配置为支持的其他设备的数量。否则,元件902-939的构造是已知的,因此将不再进一步描述。

如本领域技术人员将认识到的,本公开可以体现为方法或计算机程序产品。因此,本公开除了如先前描述的以硬件体现之外,还可以采取完全软件实施例(包括固件、常驻软件、微代码等)的形式,或者采取组合软件和硬件方面(所有这些通常都被称为“电路”、“模块”或“系统”)的实施例的形式。

此外,本公开可以采取体现在任何有形或非暂时性表达介质中的计算机程序产品的形式,该计算机程序产品具有体现在介质中的计算机可用程序代码。图10示出了示例计算机可读非暂时性存储介质,其可以适用于存储指令,该指令响应于由装置对该指令的执行而使得装置实践本公开的选定的方面。如所示的,非暂时性计算机可读存储介质1002可以包括多个编程指令1004。编程指令1004可以被配置为响应于对编程指令的执行而使得设备(例如,设备1000(其可以是设备100或900))能够执行例如与用于计算机总线的前向纠错(FEC)码的编码器和解码器相关联的各种操作,如图1-8中示出的。

在替代实施例中,可以将编程指令1004替代地设置在多个计算机可读非暂时性存储介质1002上。在替代实施例中,编程指令1004可以被设置在诸如信号之类的计算机可读暂时性存储介质1002上。可以利用一种或多种计算机可用或计算机可读介质的任何组合。计算机可用或计算机可读介质可以是例如但不限于电、磁、光、电磁、红外或半导体系统、装置、设备或传播介质。计算机可读介质的更具体示例(非详尽列表)将包括以下各项:具有一根或多根导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪速存储器)、光纤、便携式压缩盘只读存储器(CD-ROM)、光学存储设备、传输介质(例如,支持互联网或内联网的那些传输介质)或磁存储设备。注意,计算机可用或计算机可读介质可以甚至是纸或在其上打印有程序的另一合适的介质,因为可以经由例如纸或其他介质的光学扫描来电子捕获程序,然后必要时对其进行编译、解释或以其他适当方式进行处理,并且然后将其存储在计算机存储器中。在本文档的上下文中,计算机可用或计算机可读介质可以是可以包含、存储、传送、传播或传输程序以由指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合使用的任何介质。计算机可用介质可以包括在基带中或作为载波的一部分的传播的数据信号以及利用其体现的计算机可用程序代码。可以使用任何适当的介质(包括但不限于无线、有线、光纤电缆、RF等)来发送计算机可用程序代码。

可以以一种或多种编程语言(包括诸如Java、Smalltalk、C 等之类的面向对象的编程语言以及诸如“C”编程语言或类似的编程语言之类的常规过程编程语言)的任何组合来编写用于执行本公开的操作的计算机程序代码。程序代码可以完全在用户的计算机上执行、部分在用户的计算机上执行、作为独立软件包执行、部分在用户的计算机上并且部分在远程计算机上执行或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户的计算机,或者可以(例如,通过使用互联网服务提供商的互联网)与外部计算机建立连接。

参考根据本公开的实施例的方法、装置(系统)和计算机程序产品的流程图图示和/或框图描述了本公开。将理解的是,流程图图示和/或框图的每个框以及流程图图示和/或框图中的框的组合可以由计算机程序指令来实现。可以将这些计算机程序指令提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现在流程图和/或框图的一个或多个框中指定的功能/动作的模块。

这些计算机程序指令也可以存储在计算机可读介质中,该计算机可读介质可以指导计算机或其他可编程数据处理装置以特定方式运行,使得存储在计算机可读介质中的指令产生制品,该制品包括实现在流程图和/或框图的一个或多个框中指定的功能/动作的指令模块。

计算机程序指令还可以被加载到计算机或其他可编程数据处理装置上,以使得在计算机或其他可编程装置上执行一系列操作步骤,以产生计算机实现的进程,使得在计算机或其他可编程装置上执行的指令提供用于实现流程图和/或框图的一个或多个框中指定的功能/动作的进程。

附图中的流程图和框图示出了根据本公开的各种实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。就这一点而言,流程图或框图中的每个框可以表示代码的模块、分段或部分,其包括用于实现(多个)指定的逻辑功能的一个或多个可执行指令。还应注意,在一些替代实现方式中,框中指出的功能可以不按图中指出的次序发生。例如,连续示出的两个框可以实际上基本上同时执行,或者可以有时以相反的顺序执行这些框,这取决于所涉及的功能。还应注意,框图和/或流程图图示的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作的基于专用硬件的系统或专用硬件和计算机指令的组合来实现。如本文所使用的,“计算机实现的方法”可以指代由一个或多个处理器、具有一个或多个处理器的计算机系统、诸如智能电话(其可以包括一个或多个处理器)之类的移动设备、平板计算机、膝上型计算机、机顶盒、游戏机等执行的任何方法。

实施例可以被实现为计算机进程、计算系统或诸如计算机可读介质的计算机程序产品之类的制品。计算机程序产品可以是计算机系统可读的并且对用于执行计算机进程的计算机程序指令进行编码的计算机存储介质。

以下权利要求书中的所有模块或步骤以及功能元件的对应的结构、材料、动作和等同物旨在包括用于与其他特别地要求保护的要求保护的元素组合地执行功能的任何结构、材料或动作。已经出于说明和描述的目的呈现了本公开的描述,但是其并不旨在是详尽的或将本公开限制为所公开的形式。在不脱离本公开的范围和精神的情况下,许多修改和变化对于本领域技术人员将是显而易见的。选择和描述实施例以便最好地解释本公开的原理和实际应用,并且使本领域的其他普通技术人员能够理解具有适于预期的特定用途的各种修改的本公开的实施例。

因此,已经描述了本公开的各种示例实施例,包括但不限于:

示例

示例1可以包括一种用于生成针对消息的校验字节的前向纠错(FEC)编解码器,包括:端口编码器,其用于对针对当前时钟周期的消息的输入字节的当前集合执行一组操作,其中,端口编码器包括:存储单元,其用于存储第一阶段结果,该第一阶段结果是基于针对从第一时钟周期到紧接在当前时钟周期之前的时钟周期的所有时钟周期的消息的输入字节的先前集合而累积的;伽罗瓦域乘法器,其耦合到存储单元,该伽罗瓦域乘法器用于接收第一阶段结果和针对当前时钟周期的alpha的第一幂,并且对第一阶段结果和alpha的第一幂执行伽罗瓦域乘法以生成当前时钟周期的第一伽罗瓦域乘积;以及求和单元,其耦合到伽罗瓦域乘法器和存储单元,该求和单元用于对基于当前时钟周期的合并的字节的内部输入和第一伽罗瓦域乘积执行伽罗瓦域加法,以生成第二阶段结果并且将其存储在存储单元中,以供随后用于生成校验字节;其中,当前时钟周期的合并的字节是基于输入字节的当前集合和alpha的多个幂的第二集合生成的多个伽罗瓦域乘积的第二集合的伽罗瓦域总和,该多个伽罗瓦域乘积的第二集合中的一个伽罗瓦域乘积是输入字节的当前集合中的一个输入字节与从alpha的多个幂的第二集合中选择的alpha的一个幂的伽罗瓦域乘积,以及其中,alpha是伽罗瓦域上的本原多项式的单位根。

示例2可以包括示例1和/或本文的一些其他示例的FEC编解码器,其中,伽罗瓦域乘法器是第一伽罗瓦域乘法器,并且端口编码器还包括:多个伽罗瓦域乘法器的第二集合,其用于基于输入字节的当前集合和alpha的多个幂的第二集合来生成多个伽罗瓦域乘积的第二集合;以及一个或多个伽罗瓦域加法器,其耦合到多个伽罗瓦域乘法器的第二集合,一个或多个伽罗瓦域加法器用于基于多个伽罗瓦域乘积的第二集合来生成当前时钟周期的合并的字节。

示例3可以包括示例1和/或本文的一些其他示例的FEC编解码器,其中,伽罗瓦域乘法器是第一伽罗瓦域乘法器,并且端口编码器还包括:第二伽罗瓦域乘法器,其用于对合并的字节和alpha的第二幂执行伽罗瓦域乘法以生成临时乘积;以及选择器,其耦合到第二伽罗瓦域乘法器,选择器用于选择合并的字节或临时乘积作为对求和单元的内部输入。

示例4可以包括示例1和/或本文的一些其他示例的FEC编解码器,其中,存储单元是端口编码器的第一存储单元,并且端口编码器还包括第二存储单元,第二存储单元用于存储输入字节的当前集合和alpha的多个幂的第二集合。

示例5可以包括示例1和/或本文的一些其他示例的FEC编解码器,其中,在紧接在当前时钟周期的下一时钟周期,端口编码器用于对针对下一时钟周期的消息的输入字节的集合执行一组操作,其中:伽罗瓦域乘法器还用于进行以下操作:从存储单元接收第二阶段结果;接收针对下一时钟周期的alpha的第二幂;以及对第二阶段结果和alpha的第二幂执行伽罗瓦域乘法以生成下一时钟周期的第三伽罗瓦域乘积;并且求和单元被布置为基于下一时钟周期的合并的字节和下一时钟周期的第三伽罗瓦域乘积来执行伽罗瓦域加法,以生成第三阶段结果并且将其存储在存储单元中,以供随后用于生成校验字节,其中,下一时钟周期的合并的字节是基于针对下一时钟周期的消息的输入字节的集合和alpha的多个幂的第二集合生成的多个伽罗瓦域乘积的第三集合的伽罗瓦域总和,多个伽罗瓦域乘积的第三集合中的一个伽罗瓦域乘积是针对下一时钟周期的消息的输入字节的集合中的一个输入字节与从alpha的多个幂的第二集合中选择的alpha的一个幂的伽罗瓦域乘积。

示例6可以包括示例5和/或本文的一些其他示例的FEC编解码器,其中,针对下一时钟周期的alpha的第二幂具有与针对当前时钟周期的alpha的第一幂相同的值。

示例7可以包括示例1和/或本文的一些其他示例的FEC编解码器,其中,求和单元是第一求和单元,并且端口编码器还包括耦合到伽罗瓦域乘法器的第二求和单元,其中,第二求和单元用于基于当前时钟周期的合并的字节和第一伽罗瓦域乘积来执行伽罗瓦域加法以生成最终总和,以供随后用于生成校验字节,其中,当前时钟周期的合并的字节是基于输入字节的当前集合和alpha的多个幂的第二集合生成的多个伽罗瓦域乘积的第二集合的伽罗瓦域总和。

示例8可以包括示例7和/或本文的一些其他示例的FEC编解码器,其中,伽罗瓦域乘法器是第一伽罗瓦域乘法器,并且端口编码器还包括耦合到第二求和单元的第二伽罗瓦域乘法器;其中,第二伽罗瓦域乘法器用于进行以下操作:接收由第二求和单元生成的最终总和;接收alpha的第二幂;以及对最终总和与alpha的第二幂执行伽罗瓦域乘法以生成针对消息的校验字节。

示例9可以包括示例7和/或本文的一些其他示例的FEC编解码器,其中,端口编码器还包括:第一选择器,其用于基于当前时钟周期来选择要被发送给第一求和单元或第二求和单元的当前时钟周期的合并的字节;第二选择器,其用于基于当前时钟周期来选择针对当前时钟周期的alpha的第一幂。

示例10可以包括示例1和/或本文的一些其他示例的FEC编解码器,其中,本原多项式是alpha^8 alpha^4 alpha^3 alpha^2 1,并且伽罗瓦域是GF(28)。

示例11可以包括示例1和/或本文的一些其他示例的FEC编解码器,其中,多个伽罗瓦域乘积的第二集合包括11个伽罗瓦域乘积,针对当前时钟周期的多个输入字节的集合包括不超过11个输入字节,并且alpha的多个幂的第二集合包括alpha的从1到11的幂。

示例12可以包括示例1和/或本文的一些其他示例的FEC编解码器,其中,端口编码器是第一端口编码器,并且FEC编解码器还包括一个或多个附加的端口编码器,其中,一个或多个附加的端口编码器中的每个端口编码器与第一端口编码器相同地构成。

示例13可以包括示例12和/或本文的一些其他示例的FEC编解码器,其中,FEC编解码器被设置在PCI-e总线中,并且FEC编解码器包括总共1个端口编码器,其包括用于PCI-e总线中的×16链路的第一端口编码器;或者其中,FEC编解码器包括总共2个端口编码器,其包括用于PCI-e总线中的×8链路的第一端口编码器和一个或多个编码器;或者其中,FEC编解码器包括总共4个端口编码器,其包括用于PCI-e总线中的×4链路的第一端口编码器和一个或多个编码器;或者其中,FEC编解码器包括总共8个端口编码器,其包括用于PCI-e总线中的×2链路的第一端口编码器和一个或多个编码器;或者其中,FEC编解码器包括总共16个端口编码器,其包括用于PCI-e总线中的×1链路的第一端口编码器和一个或多个编码器;以及多个输入字节是微片的一部分。

示例14可以包括示例1和/或本文的一些其他示例的FEC编解码器,其中,FEC编解码器包括解码器,并且端口编码器被包括在解码器中,并且其中,解码器还包括伽罗瓦域加法器,伽罗瓦域加法器用于对第一阶段结果或第二阶段结果执行按位XOR,以识别消息的错误位置。

示例15可以包括一种通信设备,包括:多个前向纠错(FEC)编码器的集合,每个FEC编码器接收输入消息,输入消息是到通信设备的输入串的一部分;以及其中,FEC编码器还被布置为将到FEC编码器的输入消息划分为多个输入子串,以在多个时钟周期中将其馈送到FEC编码器的一个或多个端口编码器中,从而生成针对到FEC编码器的输入消息的校验字节,其中,当前时钟周期的输入子串包括针对当前时钟周期的消息的输入字节的当前集合,并且其中,一个或多个端口编码器中的端口编码器包括:多个伽罗瓦域乘法器的集合,其用于基于消息的输入字节的当前集合和alpha的多个幂的集合来生成多个伽罗瓦域乘积的集合,多个伽罗瓦域乘积的集合中的一个伽罗瓦域乘积是输入字节的当前集合中的一个输入字节与从alpha的多个幂的集合中选择的alpha的一个幂的伽罗瓦域乘积,并且其中,alpha是伽罗瓦域上的本原多项式的单位根;一个或多个伽罗瓦域加法器,其耦合到多个伽罗瓦域乘法器的集合,一个或多个伽罗瓦域加法器用于生成多个伽罗瓦域乘积的集合的伽罗瓦域总和作为当前时钟周期的合并的字节;以及存储单元,其用于存储当前时钟周期的阶段结果,阶段结果是基于针对从第一时钟周期到紧接在当前时钟周期之前的时钟周期的所有时钟周期的消息的输入字节的先前集合而累积的,其中,基于当前时钟周期的合并的字节和被存储在端口编码器的存储单元中的阶段结果来生成针对到FEC编码器的输入消息的校验字节。

示例16可以包括示例15和/或本文的一些其他示例的通信设备,其中,阶段结果是第一阶段结果,并且端口编码器还包括:伽罗瓦域乘法器,其耦合到存储单元,伽罗瓦域乘法器用于接收第一阶段结果和针对当前时钟周期的alpha的幂,并且对第一阶段结果和alpha的幂执行伽罗瓦域乘法以生成当前时钟周期的第二伽罗瓦域乘积;以及求和单元,其耦合到伽罗瓦域乘法器和存储单元,求和单元用于对基于当前时钟周期的合并的字节的内部输入和第二伽罗瓦域乘积执行伽罗瓦域加法,以生成第二阶段结果并且将其存储在存储单元中,以供随后用于生成校验字节。

示例17可以包括示例15和/或本文的一些其他示例的通信设备,其中,用于馈送到多个FEC编码器的集合的多个输入消息中的任何两个消息具有相等的长度。

示例18可以包括示例15和/或本文的一些其他示例的通信设备,其中,通信被设备布置在PCI-e总线中,到FEC编码器的输入消息是微片的一部分,并且生成针对到FEC编码器的输入消息的校验字节的多个时钟周期的数量取决于微片的大小和端口编码器的宽度。

示例19可以包括示例18和/或本文的一些其他示例的通信设备,其中,FEC编码器用于针对PCI-e总线中的×16链路在2个周期中、针对PCI-e总线中的×8链路在4个周期中、或针对PCI-e总线中的×2链路在8个周期中,生成针对到FEC编码器的输入消息的校验字节。

示例20可以包括示例18和/或本文的一些其他示例的通信设备,还包括:交织器,其耦合到多个FEC编码器的集合,以接收针对到FEC编码器的输入消息的校验字节,从而生成输出串,输出串包括输入串加上由多个FEC编码器的集合生成的多个校验字节。

示例21可以包括一种用于前向纠错(FEC)编解码器生成针对消息的校验字节的方法,包括:在当前时钟周期通过FEC编解码器的端口编码器接收到端口编码器的消息的输入字节的当前集合;生成当前时钟周期的合并的字节,其中,合并的字节是基于输入字节的当前集合和alpha的多个幂的第一集合生成的多个伽罗瓦域乘积的第一集合的伽罗瓦域总和,多个伽罗瓦域乘积的第一集合中的一个伽罗瓦域乘积是输入字节的当前集合中的一个输入字节与从alpha的多个幂的第一集合中选择的alpha的一个幂的伽罗瓦域乘积;在当前时钟周期从端口编码器的存储单元提供第一阶段结果,第一阶段结果是基于针对从第一时钟周期到紧接在当前时钟周期之前的时钟周期的所有时钟周期的消息的输入字节的先前集合而累积的;通过端口编码器的伽罗瓦域乘法器,对第一阶段结果和alpha的第二幂执行伽罗瓦域乘法以生成当前时钟周期的第二伽罗瓦域乘积;以及通过端口编码器的求和单元,对基于当前时钟周期的合并的字节的内部输入和第二伽罗瓦域乘积执行伽罗瓦域加法,以生成第二阶段结果并且将其存储在存储单元中,以供随后用于生成校验字节;其中,alpha是伽罗瓦域上的本原多项式的单位根。

示例22可以包括示例21和/或本文的一些其他示例的方法,还包括:对合并的字节和alpha的第二幂执行伽罗瓦域乘法以生成临时乘积;以及选择合并的字节或临时乘积作为求和单元的内部输入,以执行伽罗瓦域加法来生成第二阶段结果。

示例23可以包括示例21和/或本文的一些其他示例的方法,还包括:基于当前时钟周期的合并的字节和第一伽罗瓦域乘积来执行伽罗瓦域加法以生成最终总和,以供随后用于生成校验字节,其中,当前时钟周期的合并的字节是基于输入字节的当前集合和alpha的多个幂的第一集合生成的多个伽罗瓦域乘积的第一集合的伽罗瓦域总和。

示例24可以包括示例23和/或本文的一些其他示例的方法,还包括:接收由第二求和单元生成的最终总和;接收alpha的第二幂;以及对最终总和与alpha的第二幂执行伽罗瓦域乘法以生成针对消息的校验字节。

示例25可以包括示例21和/或本文的一些其他示例的方法,其中,本原多项式是alpha^8 alpha^4 alpha^3 alpha^2 1,并且伽罗瓦域是GF(28)。

示例26可以包括一种装置,包括:用于管理与用于计算机总线的前向纠错(FEC)码的编码器和解码器相关联的各种操作的模块。

示例27可以包括示例1和/或本文的一些其他示例的装置,其中,计算机总线包括PCI总线。

示例28可以包括一种装置,包括:用于执行在本文的示例中的任一示例中描述的或与其相关的方法,或本文描述的任何其他方法或过程的一个或多个元素的模块。

示例29可以包括一种或多种非暂时性计算机可读介质,包括指令,在由电子设备的一个或多个处理器执行该指令时使得电子设备执行在本文的示例中的任一示例中描述的或与其相关的方法,或本文描述的任何其他方法或过程的一个或多个元素。

示例30可以包括一种装置,包括逻辑、模块或电路,以执行在本文的示例中的任一示例中描述的或与其相关的方法,或本文描述的任何其他方法或过程的一个或多个元素

示例31可以包括如本文的示例中的任一示例中描述的或与其相关的方法、技术或过程,或其部分或片段。

示例32可以包括一种装置,包括:一个或多个处理器和一个或多个计算机可读介质,该计算机可读介质包括指令,该指令在由一个或多个处理器执行时,使得一个或多个处理器执行如本文的示例中的任一示例中描述的或与其相关的方法、技术或过程,或其部分或片段。

示例33可以包括如本文的示例中的任一示例中描述的或与其相关的信号,或其部分或片段。

对一个或多个实现方式的前述描述提供了说明和描述,但并不旨在是详尽的或将实施例的范围限制为所公开的精确形式。根据以上教导,修改和变化是可能的,或者可以从各种实施例的实践中获得修改和变化。

再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜