掌桥专利:专业的专利平台
掌桥专利
首页

用于解码LDPC码的改进的比特翻转方法及其系统

文献发布时间:2023-06-19 11:49:09


用于解码LDPC码的改进的比特翻转方法及其系统

技术领域

本公开总体上涉及低密度奇偶校验(LDPC)码,并且更具体地,涉及用于LDPC码的改进的比特翻转解码方法以及通过使用改进的比特翻转方法对接收的LDPC码字进行解码的系统。

背景技术

LDPC码由于其卓越的纠错能力而被广泛使用。传统上,使用比特翻转解码器和/或最小和解码器来解码接收的LDPC码字。对于SSD应用,通常由于其速度快、吞吐量高和功耗低,因此首先由比特翻转解码器对接收的LDPC码字进行解码。如果接收的LDPC码字不能被翻转比特解码器解码,则可以使用具有更好的纠错能力的最小和解码器。但是,最小和解码器比比特翻转解码器慢(且吞吐量较低)。最小和解码器的频繁使用会大大降低总体解码吞吐量。

因此,期望提供一种具有更高的纠错能力的改进的比特翻转方法,从而可以减少最小和解码器的使用,并且可以提高整体解码吞吐量。

发明内容

根据本公开的一方面,可以提供一种用于对接收的LDPC码字进行解码的系统。该系统可以包括至少一个存储可执行指令的存储设备,以及与该至少一个存储设备通信的至少一个处理器。当执行可执行指令时,至少一个处理器可以使系统执行以下操作:通过信道接收LDPC码字,所述接收的LDPC码字包括多个比特;获取奇偶校验矩阵,所述奇偶校验矩阵定义了多个比特节点和多个校验节点之间的关系,每个比特节点对应于多个比特之一;和通过在包括一次或多次迭代的迭代过程中通过估计相对于所述多个比特节点和所述多个校验节点处的LDPC码字的值来对所述接收的LDPC码字进行解码。所述一次或多次迭代中的至少一次迭代包括:基于所述多个比特节点的当前值和所述奇偶校验矩阵确定校验子权重;确定所述校验子权重是否等于零;响应于确定所述校验子权重不等于零,确定所述多个比特节点的一个或多个翻转可靠性,每个翻转可靠性表示在所述多个比特节点之一上的翻转操作的可靠性;在所述多个比特节点中,基于所述多个比特节点的一个或多个翻转可靠性,确定需要翻转的至少一个目标比特节点;和翻转所述至少一个目标比特节点以更新所述多个比特节点的当前值。

在一些实施例中,在所述多个比特节点中,确定需要翻转的至少一个目标比特节点可以包括:确定所述多个比特节点的一个或多个翻转概率,每个翻转概率对应于所述多个比特节点之一;对于所述多个比特节点中的每一个,根据其对应的翻转概率进行测试,以确定是否需要翻转该比特节点,其中,在该测试中,该比特节点具有等于被翻转的翻转概率的第一概率;和根据测试结果,确定需要翻转的所述至少一个目标比特节点。

在一些实施例中,确定所述多个比特节点的一个或多个翻转概率可以包括:获取翻转规则,所述翻转规则包括同一比特节点的所述翻转可靠性与所述翻转概率之间的关系;和对于所述多个比特节点中的每一个,基于所述翻转规则和所述比特节点的相应翻转可靠性,确定所述比特节点的翻转概率。

在一些实施例中,确定所述多个比特节点的一个或多个翻转可靠性可以包括:确定所述校验子权重是否大于校验子权重阈值;和响应于确定所述校验子权重大于所述校验子权重阈值,将预设的翻转可靠性指定为所述多个比特节点的一个或多个翻转可靠性。

一些实施例中,所述信道可以提供包括所述多个比特节点中的每一个的初始概率的软信息,并且确定所述多个比特节点的一个或多个翻转可靠性可以包括:确定所述校验子权重是否大于校验子权重阈值;和响应于确定所述校验子权重大于所述校验子权重阈值,对于所述多个比特节点中的每一个,基于其初始概率确定所述比特节点的所述翻转可靠性。

在一些实施例中,确定所述多个比特节点的一个或多个翻转可靠性可以包括:对于所述多个比特节点中的每一个,确定翻转能量;获取至少一个翻转能量阈值;将所述翻转能量与所述至少一个翻转能量阈值比较;和根据所述比较的结果确定所述比特节点的所述翻转可靠性。

在一些实施例中,对于所述多个比特节点中的每一个,所述翻转能量与连接到所述比特节点的校验节点的值的函数有关。

在一些实施例中,对应于特定比特节点的翻转能量阈值在不同的迭代中可以具有不同的值。

在一些实施例中,与特定比特节点对应的至少一个翻转能量阈值可以是根据以下至少之一确定的:所述特定比特节点的索引,当前硬判决和信道输入硬判决之间的信道失配信息,连接到所述特定比特节点的校验节点的数量,迭代次数,先前迭代中所述被翻转的目标比特节点的数量,当前迭代中的所述校验子权重,或先前迭代中的校验子权重。

在一些实施例中,不同的比特节点可以对应于所述至少一个翻转能量阈值的不同值。

在一些实施例中,该系统可以在固态驱动器(SSD)控制器中使用,用于解码低密度奇偶校验(LDPC)码字。

根据本公开的一方面,可以提供一种用于对接收的LDPC码字进行解码的方法。该方法可以包括一个或多个操作,包括:通过信道接收LDPC码字,所述接收的LDPC码字包括多个比特;获取奇偶校验矩阵,所述奇偶校验矩阵定义了多个比特节点和多个校验节点之间的关系,每个比特节点对应于多个比特之一;和通过在包括一次或多次迭代的迭代过程中通过估计相对于所述多个比特节点和所述多个校验节点处的LDPC码字的值来对所述接收的LDPC码字进行解码。所述一次或多次迭代中的至少一次迭代包括:基于所述多个比特节点的当前值和所述奇偶校验矩阵确定校验子权重;确定所述校验子权重是否等于零;响应于确定所述校验子权重不等于零,确定所述多个比特节点的一个或多个翻转可靠性,每个翻转可靠性表示在所述多个比特节点之一上的翻转操作的可靠性;在所述多个比特节点中,基于所述多个比特节点的一个或多个翻转可靠性,确定需要翻转的至少一个目标比特节点;和翻转所述至少一个目标比特节点以更新所述多个比特节点的当前值。

根据本公开的一方面,可以提供一种具有可执行指令的非暂时性计算机可读介质,用于对所接收的LDPC码字进行解码的。当由至少一个处理器执行时,所述可执行指令可以指导至少一个处理器执行一种方法,该方法包括一个或多个操作,该方法包括:通过信道接收LDPC码字,所述接收的LDPC码字包括多个比特;获取奇偶校验矩阵,所述奇偶校验矩阵定义了多个比特节点和多个校验节点之间的关系,每个比特节点对应于多个比特之一;和通过在包括一次或多次迭代的迭代过程中通过估计相对于所述多个比特节点和所述多个校验节点处的LDPC码字的值来对所述接收的LDPC码字进行解码。所述一次或多次迭代中的至少一次迭代包括:基于所述多个比特节点的当前值和所述奇偶校验矩阵确定校验子权重;确定所述校验子权重是否等于零;响应于确定所述校验子权重不等于零,确定所述多个比特节点的一个或多个翻转可靠性,每个翻转可靠性表示在所述多个比特节点之一上的翻转操作的可靠性,每个翻转可靠性对应翻转概率;在所述多个比特节点中,基于所述多个比特节点的一个或多个翻转可靠性,确定需要翻转的至少一个目标比特节点;和翻转所述至少一个目标比特节点以更新所述多个比特节点的当前值。

本发明的其他特征将部分地在下面的描述中阐述,并且在阅读以下说明以下附图书后,本领域技术人员可以清楚地了解本发明,或者可以通过实施或操作本发明来了解。本公开的特征可以通过实践或使用在下面讨论的详细示例中阐述的方法、手段和组合的各个方面来实现和获得。

附图的简要说明

根据示例性实施例进一步描述本公开。参照附图详细描述这些示例性实施例。这些实施例是非限制性的示例性实施例,其中贯穿附图的所有视图,相似的附图标记表示相似的结构,并且其中:

图1是示出根据本公开的一些实施例的示例性数据传输系统的示意图;

图2是示出根据本公开的一些实施例的接收的码字和奇偶校验矩阵的示意图。

图3是示出根据本公开的一些实施例的示例性解码器的框图;

图4是示出根据本公开的一些实施例的用于对码字进行解码的示例性过程的流程图;

图5是示出根据本公开的一些实施例的用于对码字进行解码的示例性过程的流程图;

图6是示出根据本公开的一些实施例的用于对码字进行解码的示例性过程的示意图;

图7是示出根据本公开的一些实施例的用于对码字进行解码的示例性过程的示意图;

图8是示出根据本公开的一些实施例的用于对码字进行解码的示例性过程的示意图;

图9是示出根据本公开的一些实施例的用于对码字进行解码的示例性过程的示意图;

图10是示出根据本公开的一些实施例的初始可靠性和翻转可靠性之间的示例性关系的示意图;

图11是示出根据本公开的一些实施例的解码过程的迭代与校验子权重之间的示例性关系的示意图;和

图12是示出根据本公开的一些实施例的初始校验子权重与解码失败的机会之间的示例性关系的示意图。

具体实施方式

在下面的详细描述中,通过示例的方式阐述了许多具体细节,以便提供对相关公开的透彻理解。然而,对于本领域技术人员应该显而易见的是,可以在没有这种细节的情况下实践本公开。在其他实例中,已经在相对较高的级别上(没有细节)描述了公知的方法、过程、系统、组件和/或电路,以避免不必要地使本公开的各方面变得晦涩难懂。对所公开的实施例的各种修改对于本领域技术人员而言将是显而易见的,并且在不脱离本公开的精神和范围的情况下,本文中定义的一般原理可以应用于其他实施例和应用。因此,本公开不限于所示出的实施例,而是要被赋予与权利要求一致的最宽范围。

本文所使用的术语仅出于描述特定示例实施例的目的,而不旨在进行限制。如本文所使用的,单数形式的“一”、“一个”和“该”也可以意图包括复数形式,除非上下文另外明确指出。应当进一步理解的是,当在本说明书中使用时,术语“包括”、“包含”和/或“具有”指定存在所述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或附加一个或多个其他特征、整体、步骤、操作、元件、组件和/或这些的组。

应当理解的是,本文中使用的术语“系统”、“模块”和/或“块”是一种以升序区分不同级别的不同组件、元件、零件、部件或组装件的一种方法。但是,如果其他表述达到相同的目的,则这些术语可能会被替换。

通常,本文所用的词“模块”或“块”是指体现在硬件或固件中的逻辑,或指代软件指令的集合。本文描述的模块或块可以被实现为软件和/或硬件,并且可以被存储在任何类型的非暂时性计算机可读介质或另其他储设备中。在一些实施例中,软件模块/单元/块可以被编译并链接到可执行程序中。应当意识到,软件模块可以是可从其他模块/单元/块或从其自身调用的,和/或可响应于检测到的事件或中断而被调用。被配置为在计算机设备(例如,如图1所示的解码器130)上执行的软件模块/单元/块可以被提供在计算机可读介质中,诸如光盘、数字视频盘、闪存驱动器、磁盘或任何其他有形介质,或者作为数字下载(并且可以最初以压缩或可安装的格式存储,其需要在执行之前进行安装、解压缩或解密)。这样的软件代码可以部分地或全部地存储在正在执行的计算机设备的存储设备上,以由计算机设备执行。软件指令可以嵌入在固件中,例如电可编程只读存储器(EPROM)。还应当意识到,硬件模块/单元/块可以被包括在连接的逻辑组件(例如门和触发器)中和/或可以包括在可编程单元(例如可编程门阵列或处理器)中。本文描述的模块/单元/块或计算机设备功能可以被实现为软件模块/单元/块,但是可以以硬件或固件来表示。通常,本文所描述的模块/单元/块是指可以与其他模块/单元/块组合或划分为多个模块/单元/块的逻辑模块/单元/块。该描述可以适用于系统,引擎或其一部分。

应当理解的是,当一个模块或块被称为“连接到”或“耦合到”另一个模块或块时,它可以直接连接到或耦合到另一个模块或块,或与另一个模块或块通信,或者可以存在中间单元、引擎、模块或块,除非上下文明确指示另外的情况。如本文所使用的,术语“和/或”包括相关联的所列项目的一个或多个的任何和所有组合。

在参考以下描述并参考以下附图时,本公开的这些和其他特征与特性以及操作方法和结构的相关元件的功能以及这些部分的组合和制造经济性将变得更加清楚。所有这些构成本公开的一部分。然而,应明确地理解,附图仅出于说明和描述的目的,并且无意于限制本公开的范围。应当理解,附图未按比例绘制。

应当注意,结合用于SSD控制器中的LDPC码的比特翻转方法来提供本公开中描述的解码方法。但是,这不是限制性的。本领域普通技术人员可以在本公开的教导下进行修改或变型,并且可以在其他解码器或控制器中使用该解码方法,或者对其他类型的代码进行解码。这样的修改或变型在本公开的保护范围内。

本文提供了用于低密度奇偶校验(LDPC)码的改进的比特翻转方法以及使用该改进的比特翻转方法对接收的LDPC码字进行解码的系统。可以使用称为奇偶校验矩阵的二维矩阵对接收的LDPC码字进行解码。奇偶校验矩阵可以定义多个比特节点和校验节点。解码过程可包括由多个比特节点和校验节点估计相对于所接收的LDPC码字(或为简洁起见为“码字”)的比特的值(也称为“硬判决”)。在一些实施例中,可以基于与其连接的校验节点的值的函数来获得比特节点的翻转能量。可以通过将翻转能量与至少一个翻转能量阈值进行比较来确定比特节点的翻转可靠性,其代表该比特节点上的翻转操作的可靠性。然后,可以基于翻转可靠性和翻转规则来确定比特节点的翻转概率。可以根据该翻转概率进行翻转测试,其结果,可以确定并翻转至少一个需要翻转的目标比特节点。在翻转之后,可以相应地更新这些比特节点的硬判决,并且可以校验与更新的硬判决相关联的校验子权重。可以迭代地执行更新硬判决的过程,直到与特定的更新的硬判决向量相关联的校验子权重为零或达到预设的迭代次数为止。为了简洁起见,在本公开中,“比特”,“比特节点”,“可变节点”可以互换使用,以指代码字中的二进制数字或与由奇偶校验矩阵定义的二进制数字相对应的可变节点。

传统的比特翻转方法通常仅基于翻转能量来决定是否翻转比特节点。例如,如果翻转能量大于阈值,则翻转比特节点的硬判决;否则,比特节点的硬判决不会被翻转。因此,传统的比特翻转方法的随机性低,并且在收敛之前更新硬判决的迭代次数很大。换句话说,收敛速度低。相反,本公开中公开的改进的比特翻转方法基于比特节点的翻转概率引入了翻转测试的使用。在所有比特节点的广义上,翻转概率与翻转能量成正相关,这与常规的比特翻转方法一致。在每个单独的比特节点的特定视图中,翻转概率为比特节点提供了一定程度的随机性,例如,具有10%翻转概率的比特节点可能仍然有被翻转的机会。这样的设计在保持整体精度的同时提供了随机性,从而导致更高的纠错能力和更快的收敛速度。较高的纠错能力和较快的收敛速度降低了后续解码(例如,使用最小和解码器)中的计算负荷,并提高了LDPC解码器的整体速度。

图1是示出根据本公开的一些实施例的示例性数据传输系统的示意图。如图1所示,数据传输系统100可以包括编码器110、信道120和解码器130(也称为解码系统)。编码器110可以被安装在发送器上,并且解码器130可以被安装在接收器上。编码器110可以使用编码方法对输入数据进行编码以生成码字。编码方法可以包括对称加密方法和/或非对称加密方法。对称加密方法可以包括但不限于LDPC编码。编码的码字可以通过信道120被发送到解码器130。信道120可以包括但不限于使用卫星天线的卫星通信信道,使用基站和/或本地天线的无线通信信道,有线通信信道,使用电光(E/O)接口的光纤通信信道,等等。编码的码字可以由解码器130解码,使得可以恢复输入数据。在一些实施例中,编码器110和解码器130可以对应于相似类型的代码。例如,编码器110和解码器130都可以对应于LDPC码。在一些实施例中,编码器110、信道120和/或解码器130可以是固态驱动器(SSD)控制器的一部分,但是这不应是限制性的。

图2是示出根据本公开的一些实施例的接收的码字和奇偶校验矩阵的示意图。如图2所示,接收的码字240可以包括多个比特,例如七个比特。在一些实施例中,多个比特可各自包括二进制值,例如“0”或“1”。替代地,多个比特可以包括十进制值、八进制值、十六进制值等。在一些实施例中,多个比特的值可以被称为硬信息(或“硬判决”)。软信息250可以与硬信息240一起被接收。接收的软信息250可以由信道(例如,信道120)提供。在一些实施例中,所接收的软信息250可以与硬信息的可靠性有关。例如,接收的软信息250可以包括针对多个比特中的每个比特的百分比的初始可靠性。较高的百分比可能表明该比特更可靠,反之亦然。例如,100%的初始可靠性可以指示该比特是完全可靠的,而0%的初始可靠性可以指示该比特是完全不可靠的。所接收的软信息250可以由二进制数、十进制数、八进制数或十六进制数等表示。在一些实施例中,奇偶校验矩阵210可以被预先存储在解码器中,或者可以在接收码字240和接收的软信息250的同时、之前或之后被接收。可以通过与码字240相同或不同的信道来接收奇偶校验矩阵210。奇偶校验矩阵210可以包括多个行和多个列。奇偶校验矩阵210的每一列可以对应于比特节点220,并且奇偶校验矩阵210的每一行可以对应于校验节点230。列数可以等于所接收的码字240中的比特数(例如,7)。在一些实施例中,奇偶校验矩阵210可以是规则的LDPC校验矩阵,例如,每行中的值的总和是固定值,而每列中的值的总和也是固定值。替代地,奇偶校验矩阵210可以是不规则的LDPC校验矩阵,例如,每行中的值的总和不是固定值,而每列中的值的总和也不是固定值。在一些实施例中,可以在二部图260(也称为Tanner图)中示出由奇偶校验矩阵210定义的比特节点220和校验节点230之间的关系。如二部图260所示,三个正方形可以代表与奇偶校验矩阵210的三行相对应的三个校验节点230。七个圆圈可以分别代表与奇偶校验矩阵210的七个列相对应的七个比特节点220。校验节点230和比特节点220之间的连接可以对应于奇偶校验矩阵210的对应位置中的“1”。例如,奇偶校验矩阵210的第三行和第五列中的“1”可以在二部图260中示出为第五个比特节点220和第三个校验节点230之间的连接。

在一些实施例中,可以计算校验子权重以评估接收的码字240是否与通过对输入数据进行编码而在编码器110中生成的目标码字相同。如果校验子权重为零,则认为接收的码字240与目标码字相同;否则,认为接收的码字240与目标码字不同。在接收的码字240与目标码字不同的情况下。可以通过迭代地更新比特节点220的值(即,硬判决)来执行迭代解码过程,直到校验子权重变为零或达到最大迭代次数为止。

通常,可以参考Tanner图来说明对接收的码字进行解码的过程。例如,码字可以包括与七个比特节点220相对应的七个比特。最初,可以相对于码字240的对应比特为每个比特节点220分配初始值(例如,接收的码字中的值)。每个比特节点220可以将相应的初始值发送到与其连接的校验节点230。然后,可以根据与其连接的校验节点的值来评估每个比特节点220。根据评估结果,可以翻转一个或多个比特节点220以更新其值。在下一次迭代中,可以基于这些更新的值进一步评估每个比特节点220。解码器可以连续执行迭代,直到校验子权重指示最新更新的比特节点与目标码字一致或满足预设的迭代次数为止。关于迭代解码过程的更多描述可以在本公开的其他地方找到,例如,图4及其描述。

图3是示出根据本公开的一些实施例的示例性解码器的框图。解码器130可以包括获取模块310、校验子权重计算模块320、处理模块330、确定模块340、翻转测试模块350和存储模块360。

获取模块310可以被配置为从解码器130内部或外部的其他模块或单元获取数据或信息。例如,获取模块310可以通过信道接收噪声码字。另外,获取模块310可以获取可以在解码过程中使用的一个或多个参数,例如,用于特定比特节点的翻转能量阈值,用于对接收的码字进行解码的奇偶校验矩阵。可选地,获取模块310可以在解码过程中更新一个或多个参数。

校验子权重计算模块320可以被配置为根据奇偶校验矩阵来校验例如从信道接收的噪声码字的校验子权重,码字的更新值(硬判决)等。

处理模块330可以被配置为在解码过程中确定一个或多个参数。例如,处理模块330可以确定一组比特节点的翻转能量。此外,处理模块330可以基于翻转能量来确定比特节点组的翻转可靠性。另外,处理模块330可以基于翻转可靠性来确定比特节点组的翻转概率。在一些实施例中,处理模块330可以翻转一个或多个比特节点以更新相应的值或硬判决。在一些实施例中,处理模块330可以将由校验子权重计算模块320确定的校验子权重与特定值(例如,零)进行比较,以判断接收的码字是否已经被正确解码。

确定模块340可以被配置为确定在解码过程期间是否满足预设条件。例如,确定模块340可以根据预设条件确定是否应当终止解码处理。示例性预设条件可以包括校验子权重等于零,迭代次数达到阈值,校验子权重在连续迭代的预设数量中不减少等。

翻转测试模块350可以被配置为对比特节点执行翻转测试,以确定需要翻转的至少一个目标比特节点。在翻转测试中,可以根据每个比特节点对应的翻转概率确定是否翻转。例如,在翻转测试中具有70%翻转概率的比特节点可能有70%的概率被翻转,而有30%(即1-70%)的概率不被翻转。

存储模块360可以被配置为存储可以由至少一个处理器执行以执行本公开的其他地方所描述的一个或多个操作的指令。

解码器130中的模块可以经由有线连接或无线连接彼此连接或彼此通信。有线连接可以包括金属电缆、光缆、混合电缆等或它们的任意组合。无线连接可以包括局域网(LAN)、广域网(WAN)、蓝牙、ZigBee、近场通信(NFC)等或其任何组合。可以将两个或更多个模块组合为单个模块,并且可以将任何一个模块划分为两个或更多个单元。

应当注意的是,以上描述仅出于说明的目的而提供,并且无意于限制本公开的范围。对于本领域普通技术人员,可以在本公开的教导下进行多种变型和修改。然而,那些变化和修改不脱离本公开的范围。

图4是示出根据本公开的一些实施例的用于对接收的码字进行解码的示例性过程的流程图。在一些实施例中,过程400的至少一部分可以由解码器130执行。例如,过程400可以以指令(例如,应用程序)的形式存储在存储设备(例如,外部存储设备,存储模块360)中,并且由解码器130(例如,图3所示的处理模块330)来调用和/或执行)。下面呈现的所示过程的操作旨在进行说明。在一些实施例中,方法400可以利用一个或多个未描述的附加步骤和/或没有所讨论的一个或多个步骤来完成。另外,如图4所示和以下描述的过程400的操作的顺序不旨在是限制性的。可以在图7中找到示出过程400的示例性图。

在405中,解码器130(例如,获取模块310)可以通过信道接收噪声码字。例如,通过信道120发送编码的LDPC码字,该信道120可能将噪声引入到编码的LDPC码字中。然后,解码器130可以接收有噪声的LDPC码字。信道可以将接收的噪声码字的硬信息和/或软信息提供给解码器130。硬信息可以指代码字的比特值,而软信息可以指代比特值的初始可靠性。在一些实施例中,软信息可以由信道120提供。可以在本公开的其他地方找到接收的码字的示例,例如,码字240,码字710,码字810,码字910等。

在410中,解码器130(例如,校验子权重计算模块320)可以根据奇偶校验矩阵来校验所接收的码字的校验子权重。奇偶校验矩阵可以定义多个比特节点和多个校验节点之间的关系。奇偶校验矩阵的示例可以在本公开的其他地方找到,例如,奇偶校验矩阵210。在一些实施例中,可以基于奇偶校验矩阵和所接收的码字的乘积来确定校验子权重。例如,可以将校验子向量计算为:

S=H*r; (1)

其中,S表示校验子向量,H表示奇偶校验矩阵,r表示接收的码字。在一些实施例中,解码器130可以进一步基于校验子向量来确定码字的校验子权重。例如,码字的校验子权重可以表示为校验子向量中非零值的总和,或者校验子向量中非零值的计数。

在415中,解码器130(例如,确定模块340)可以确定是否满足预设条件。预设条件可以包括应当终止解码过程的条件。例如,预设条件可以包括校验子权重等于零,迭代次数达到阈值,校验子权重在连续迭代的预设数量不中减少等。响应于确定满足预设条件,过程400可以进行到操作465;否则,过程400可以进行到操作420。

在420中,解码器130(例如,处理模块330)可以确定一组比特节点的翻转能量。在一些实施例中,组中的每个比特节点都有与之对应的翻转能量。可以基于连接到该比特节点的校验节点的值的函数来确定每个比特节点的翻转能量。在一般表达式中,在第i次迭代时比特节点v

E(v

由于校验节点的值对于LDPC码是二进制的(例如,CN(i)为0或1),因此翻转能量的值E(v

在一些实施例中,一组比特节点可以包括由奇偶校验矩阵定义的所有比特节点中的一个或多个比特节点。例如,比特节点的组可以仅包括单个比特节点,这意味着解码器130可以一次仅处理一个比特节点。作为另一示例,一组比特节点可以包括两个或更多个比特节点,这意味着解码器130可以一次(例如,以并行处理方式)处理多个比特节点。在一些实施例中,可以根据比特节点的索引将奇偶校验矩阵定义的所有比特节点分为一个或多个组。例如,可以将具有连续索引的预设数量的比特节点分为同一组。仅作为示例,预设数量可以是三个,例如,将第1个、第2个和第3个比特节点分为第1个组,第4个、第5个和第6个比特节点被分类为第二组,依此类推。预设数量可以是任何合适的整数,例如1、2、3、5、10、20、30等。在一些实施例中,预设数量可以是1与所有比特节点的计数之间的整数。

在一些实施例中,可以根据与比特节点相对应的比特的初始可靠性(也称为软信息)对比特节点进行分类。例如,其对应比特具有高(例如,大于80%)初始可靠性的比特节点可以被分类为第一组。其对应比特具有低(例如,小于40%)的初始可靠性的比特节点可以被分类为第二组。其对应比特具有中等(例如,在40%和80%之间)初始可靠性的比特节点可以被分类为第三组。在一些实施例中,可以在每个迭代中执行比特节点的分类,例如,在每个迭代中将所有比特节点重新分类。可选地,比特节点的分类可以在解码过程的不同迭代中变化。如本文所使用的,在解码过程的一次迭代中,解码器可以根据从操作420到操作415的过程来处理所有比特节点。替代地,可以在整个解码过程期间仅执行一次比特节点的分类,例如,仅在第一次迭代的开始就将比特节点分类为组。

在425中,解码器130(例如,获取模块310,处理模块330)可以获取或更新至少一个翻转能量阈值。在第一次迭代中,获取模块310可以获取至少一个翻转能量阈值。在随后的迭代中,处理模块330可以更新至少一个翻转能量阈值。

在一些实施例中,比特节点组中的每个比特节点可以对应于多个翻转能量阈值。出于说明目的,在一个通用表达式中,特定比特节点可以有L个不同的翻转能量阈值,分别表示为T_F

在一些实施例中,可以基于比特节点的索引,当前硬判决和信道输入硬判决之间的信道失配信息,连接到比特节点的校验节点的数量,迭代次数,先前迭代的翻转操作数,当前迭代中的校验子权重,先前时间点的校验子权重等来更新至少一个翻转能量阈值(例如,每个比特节点的翻转能量阈值)。在一些实施例中,对应于不同比特节点的翻转能量阈值可以相同或不同。例如,如果两个比特节点分别连接到不同数量的校验节点,则两个比特节点的翻转能量阈值可以不同。具体地,可以为连接到更多校验节点的比特节点分配较大的翻转能量阈值。在一些实施例中,对应于相同比特节点的翻转能量阈值可以相同或不同。例如,对于相同的比特节点,可以在随后的迭代中分配比在先前的迭代中更小的翻转能量阈值。在一些实施例中,如果发生信道失配(例如,该比特节点的当前硬判决不同于其信道输入硬判决),则可以为比特节点分配第一翻转能量阈值,并且如果没有发生信道不匹配,可以为该比特节点分配第二翻转能量阈值(与第一翻转能量阈值不同)。

在430中,解码器130(例如,处理模块330)可以基于翻转能量和至少一个翻转能量阈值来确定比特节点组的翻转可靠性。在一些实施例中,解码器130可以通过将比特节点的翻转能量与对应于该比特节点的翻转能量阈值进行比较来确定组中每个比特节点的翻转可靠性。例如,在第i次迭代中,如果比特节点v

在435中,解码器130(例如,处理模块330)可以基于翻转可靠性来确定比特节点组的翻转概率。在一些实施例中,解码器130可以基于比特节点的翻转可靠性和翻转规则(例如,翻转可靠性与翻转概率之间的关系)来确定每个比特节点的翻转概率。例如,翻转规则可以包括等级“0”,“1”,…,“L-2”,“L-1”的翻转可靠性分别与“p

在440中,解码器130(例如,翻转测试模块350)可以根据翻转概率执行测试以确定至少一个需要翻转的目标比特节点。在翻转测试中,可以根据组中的每个比特节点对应的翻转概率来确定其是否被翻转。例如,在翻转测试中具有70%翻转概率的比特节点可能有70%的概率被翻转,而有30%(即1-70%)的概率不被翻转。出于说明目的,对于具有70%翻转概率的比特节点,可以生成0到1之间的随机值。如果生成的随机值在0到0.7的范围内(对应于70%的翻转概率),则可能需要翻转比特节点。如果生成的随机值在0.7到1的范围内(对应于30%的非翻转概率),则可能不会翻转比特节点。在翻转测试之后,可以将需要翻转的比特节点确定为目标比特节点。

在445中,解码器130(例如,处理模块330)可以翻转至少一个目标比特节点以更新至少一个目标比特节点的值。如本文所使用的,“翻转”比特节点可以指的是将比特节点的值从“0”改变为“1”或从“1”改变为“0”。翻转比特节点的更多描述可以在本公开的其他地方找到,例如,图6至图8及其描述。

在450中,解码器130(例如,校验子权重计算模块320)可以基于至少一个目标比特节点的更新值和奇偶校验矩阵来计算新的校验子权重。例如,可以基于奇偶校验矩阵和多个比特节点的更新值(包括至少一个目标比特节点的更新值和其他未更新的比特节点的值)的乘积来确定校验子权重。操作450可以与操作410类似,在此不再赘述。

在455中,解码器130(例如,处理模块330)可以确定新的校验子权重是否等于零。如果新的校验子权重等于零,则解码器130可以确定多个比特节点的更新值与例如由编码器110编码的目标码字一致,这意味着接收的码字被成功解码。如果新的校验子权重不等于零,则过程400可以进行到460。

在460中,解码器130(例如,处理模块330)可以确定当前处理的比特节点是否属于比特节点的最后组。响应于确定当前处理的比特节点属于比特节点的最后组,即,所有比特节点已经在当前迭代中被处理,过程400可以返回到操作415,其中,解码器可以进一步确定是否需要执行新的迭代。响应于确定当前迭代中一个或多个其他组的比特节点尚未处理,过程400可以进行到操作420,其中解码器可以进一步获取另一组比特节点以确定它们的翻转能量。

在465中,解码器130(例如,处理模块330)可以将所有比特节点的最新更新值指定为解码结果。在一些实施例中,如果操作415中的预设条件是校验子权重等于零,则可以将操作465中的解码结果视为解码成功。如果操作415中的预设条件是迭代次数达到阈值,则可以将465中的解码结果视为解码成功(在校验子权重也等于零的情况下),或者视为解码失败(在校验子权重尚未等于零的情况下)。

对于本领域普通技术人员,可以在本公开的教导下进行多种变型和修改。然而,那些变型和修改不脱离本公开的范围。例如,可以在操作420之前执行操作425。在这种情况下,在每次迭代中,解码器130可以使用相同的翻转能量阈值集合来确定不同组的比特节点的翻转操作。

图5是示出根据本公开的一些实施例的用于对码字进行解码的示例性过程的流程图。在一些实施例中,过程500的至少一部分可以由解码器130执行。例如,过程500可以以指令(例如,应用程序)的形式存储在存储设备(例如,外部存储设备,存储模块360)中,并且由解码器130(例如,图3所示的处理模块330)来调用和/或执行)。下面呈现的所示过程的操作旨在进行说明。在一些实施例中,方法500可以利用一个或多个未描述的附加步骤和/或没有被讨论的一个或多个步骤来完成。另外,图5中示出的和下面描述的过程500的操作的顺序不旨在是限制性的。分别在图7和图8中可以找到示出操作560和操作570的示例性图。

在510中,解码器130(例如,获取模块310)可以通过信道来接收码字。操作510可以与操作405类似,在此不再赘述。

在520中,解码器130(例如,校验子权重计算模块320)可以根据奇偶校验矩阵来校验所接收的码字的校验子权重。操作520可以与操作410类似,在此不再赘述。

在530中,解码器130(例如,确定模块340)可以确定校验子权重是否大于校验子权重阈值。在一些实施例中,可以根据奇偶校验矩阵的大小来设置校验子权重阈值。例如,较大尺寸的奇偶校验矩阵可以对应于较大的校验子权重阈值。如果校验子权重超过校验子权重阈值,则可以将比特节点的值(也称为硬信息)视为“极其不可靠”。在一些实施例中,校验子权重阈值可以是任何合适的值,包括但不限于50、100、200、400、500、600、1000等。响应于确定校验子权重大于校验子权重阈值,过程500可以进行到操作550;否则,过程500可以进行到操作540。

在540中,解码器130可以以常规方式对接收的码字进行解码。例如,解码接收的码字的常规方式可以包括操作415至465的一部分或全部。

在550,解码器130可以从信道120接收软信息。软信息可以被称为硬信息的初始可靠性(例如,比特节点的值)。响应于当信道提供软信息时的情况,过程500可以进行到操作570;否则,过程500可以进行到操作560。

在560中,解码器130(例如,处理模块330)可以将预设的翻转可靠性指定为比特节点的翻转可靠性。在一些实施例中,可以将每个比特节点(例如,在一组比特节点中)指定为相同的翻转可靠性。可替代地,每个比特节点可以被指定为彼此相同或不同的单独的翻转可靠性。在一些实施例中,由于硬信息极其不可靠(例如,530中校验子权重大于校验子权重阈值),所以每个比特节点的预设翻转可靠性可以是最大值或相对较高的值,指示每个比特节点在后续操作中翻转的可能性较高。仅作为示例,解码器130可以将等级“L-1”指定为每个比特节点的翻转可靠性。

在570中,解码器130(例如,处理模块330)可以基于软信息来确定比特节点的翻转可靠性。在一些实施例中,可以获得初始可靠性和翻转可靠性之间的关系。该关系可以由线性函数、非线性函数、连续函数或离散函数等表示。可以基于软信息以及初始可靠性和翻转可靠性之间的关系来确定比特节点的翻转可靠性。出于说明的目的,图10提供了初始可靠性和翻转可靠性之间的示例性关系。如图10所示,如果初始可靠性在0%和40%之间,则翻转可靠性可以被确定为等级“3”。如果初始可靠性在40%至65%之间,则翻转可靠性可以确定为等级“2”。如果初始可靠性在65%至90%之间,则翻转可靠性可以确定为等级“1”。如果初始可靠性在90%和100%之间,则翻转可靠性可以被确定为等级“0”。

在一些实施例中,在操作560或570中确定一个或多个比特节点的翻转可靠性之后,过程500可以进行到操作435。

对于本领域普通技术人员,可以在本公开的教导下进行多种变型和修改。然而,那些变型和修改不脱离本公开的范围。在一些实施例中,可以省略操作530,无论校验子权重是否大于校验子权重阈值,并且可以仅基于硬信息或硬信息和软信息两者来解码接收的码字。

图6是示出根据本公开的一些实施例的用于对接收的码字进行解码的示例性过程的示意图。如图6所示,初始接收的码字610可以是“1011010”,即,初始接收的码字610包括具有值(即,初始硬判决)分别为为“1”,“0”,“1”,“1”,“0”,“1”和“0”的七个比特。在一些实施例中,初始接收的码字610可以是接收的码字240。在一些实施例中,可以基于奇偶校验矩阵(例如,定义七个比特节点和三个校验节点的奇偶校验矩阵210)来确定每个比特节点的翻转能量620。如图2中的奇偶校验矩阵210所示,第一个比特节点可以仅连接到第一个校验节点(不连接到第二个校验节点和第三个校验节点),并且第一个比特节点的翻转能量可以等于第一个校验节点的值。第三个比特节点可以连接到第一个校验节点和第二个校验节点,并且第三个比特节点的翻转能量可以是第一个校验节点和第二个校验节点的值的和。仅出于说明目的,假设三个校验节点分别具有值“1”,“1”,“0”,则第一个比特节点的翻转能量为“1”,第三个比特节点的翻转能量为“2”。类似地,可以将第二个,第四个,第五个,第六个和第七个比特节点的翻转能量分别计算为“1”,“0”,“1”,“2”,“2”。

在一些实施例中,可以基于翻转能量620和至少一个翻转能量阈值来确定七个比特节点的翻转可靠性630。例如,至少一个翻转能量阈值可以包括第一翻转能量阈值0、第二翻转能量阈值1和第三翻转能量阈值2。仅作为示例,如果比特节点的翻转能量大于第三翻转能量阈值(即2),则可以将该比特节点的翻转可靠性确定为“2”。如果比特节点(例如,第一个比特节点)的翻转能量大于或等于第二翻转能量阈值(即1)但小于第三翻转能量阈值(即2),则可以将该比特节点的翻转可靠性为确定为“1”。如果比特节点(例如,第四个比特节点)的翻转能量大于或等于第一翻转能量阈值(即0)但小于第二翻转能量阈值(即1),则可以将该比特节点的翻转可靠性为确定为“0”。因此,七个比特节点的翻转可靠性630可以是“1”,“1”,“2”,“0”,“1”,“2”和“2”。应当注意,翻转可靠性的“0”,“1”或“2”仅用于表示翻转可靠性的特定等级。仅作为示例,等级“0”可以指示对应的比特节点非常可靠,而等级“2”可以指示对应的比特节点非常不可靠。

在一些实施例中,可以基于翻转可靠性630和翻转规则(例如,翻转可靠性与翻转概率之间的关系)来确定七个比特节点的翻转概率640。例如,翻转规则可以包括等级“0”的翻转可靠性与10%的翻转概率之间的映射,等级“1”的翻转可靠性与50%的翻转概率之间的映射以及等级“2”翻转的可靠性和翻转概率70%之间的映射。在这种情况下,可以将比特节点的翻转概率640分别确定为50%,50%,70%,10%,50%,70%和50%。

然后,可以根据比特节点的翻转概率对它们进行翻转测试。在翻转测试中,根据每个比特节点对应的翻转概率确定是否翻转。例如,具有70%的翻转概率的比特节点可能具有70%的翻转机会和30%(即1-70%)的不翻转机会。仅作为示例,在七个比特节点上执行翻转测试,结果显示为翻转测试结果650。可以根据翻转测试结果650来更新比特节点的值(即,硬判决)。例如,第一个比特节点、第三个比特节点、第五个比特节点、第六个比特节点和第七个比特节点可以被确定为需要翻转(例如,从“1”变为“0”,或“0”变为“1”)的目标节点。结果,基于初始码字610

“1011010”生成更新的码字660“0001101”。

图7是示出根据本公开的一些实施例的用于对接收的码字进行解码的示例性过程的示意图。图7所示的过程可以对应于图5中的操作560。如图7所示,初始码字710可以是“1011010”(例如,与初始码字610和接收的码字240相同)。在一些实施例中,初始码字710的初始校验子权重可以大于校验子权重阈值,并且信道可以不包括软信息(例如,比特节点的初始可靠性)。在这种情况下,可以将指示比特节点非常不可靠的预设等级“3”指定为七个比特节点中的每一个的翻转可靠性720。

在一些实施例中,可以基于比特节点的翻转可靠性720和翻转规则(例如,翻转可靠性与翻转概率之间的关系)来确定比特节点的翻转概率730。例如,翻转规则可以包括等级“3”的翻转可靠性与90%的翻转概率之间的映射。因此,可以将比特节点的翻转概率730全部确定为90%。与图6中描述的过程相似,可以根据比特节点的翻转概率730(即90%)在比特节点上执行翻转测试。具体地,确定每个比特是否被单独翻转。在翻转测试中,每个比特节点都有90%的机会被翻转,而10%(即1-90%)的机会不被翻转。仅作为示例,在七个比特节点上执行翻转测试,结果显示为翻转测试结果740。可以根据翻转测试结果740来更新比特节点的值。例如,第一个比特节点、第二个比特节点、第三个比特节点、第五个比特节点、第六个比特节点和第七个比特节点可以被确定为需要翻转(例如,从“1”变为“0”,或“0”变为“1”)的目标节点。第四个比特节点可以不变。结果,基于初始码字710

“1011010”生成更新的码字750“0101101”。

图8是示出根据本公开的一些实施例的用于对码字进行解码的示例性过程的示意图。图8所示的过程可以对应于图5中的操作570。如图8所示,初始码字810可以是“1011010”(例如,与初始码字610,初始码字710和接收的码字240相同)在一些实施例中,初始码字810的初始校验子权重可以大于校验子权重阈值,并且信道可以提供软信息820(例如,比特节点的初始可靠性)。由于初始校验子权重大于校验子权重阈值,因此初始码字810非常不可靠。当软信息可获得时,可以基于该软信息来确定七个比特节点的翻转可靠性830。例如,可以获得初始可靠性和翻转可靠性之间的关系。该关系可以由线性函数、非线性函数、连续函数或离散函数等表示。根据软信息820和图10中示例的关系,可以将七个比特节点的翻转可靠性830确定为“0033021”。

可以基于翻转可靠性830和翻转规则(例如,翻转可靠性与翻转概率之间的关系)来确定比特节点的翻转概率840。例如,翻转规则可以包括等级“3”,等级“2”,等级“1”和等级“0”的翻转可靠性与对应的翻转概率90%,70%,50%和10%之间的映射。与图6和图7中描述的过程类似,可以根据比特节点的翻转概率840对翻转进行测试。仅作为示例,在七个比特节点上执行翻转测试,结果显示为翻转测试结果850。可以根据翻转测试结果850来更新比特节点的值。结果,可以基于初始码字810“1011010”来生成更新的码字860“1000011”。

图9是示出根据本公开的一些实施例的用于对码字进行解码的示例性过程的示意图。图9所示的过程可以对应于图5中的操作570。如图9所示,初始码字910可以是“1011010”(例如,与初始码字610、初始码字710、初始码字810和接收的码字240相同)。在一些实施例中,初始码字910的初始校验子权重可以大于校验子权重阈值,并且信道可以提供软信息920。由于初始校验子权重大于校验子权重阈值,因此初始码字910非常不可靠。当软信息可获得时,可以基于该软信息来确定七个比特节点的翻转可靠性930。

与图8所示的软信息820不同,软信息920由二进制值“0”和“1”表示。值“1”可以表示对应的比特节点是可靠的(例如,具有高的初始可靠性),而值“0”可以表示对应的比特节点是不可靠的(例如,具有低的初始可靠性)。例如,值“1”可以对应于等级“0”的翻转可靠性,而值“0”可以对应于等级“3”的翻转可靠性。结果,七个比特节点的翻转可靠性930可以被确定为“0033330”。

可以基于翻转可靠性930和翻转规则(例如,翻转可靠性与翻转概率之间的关系)来确定比特节点的翻转概率940。例如,翻转规则可以包括等级“3”,等级“0”的翻转可靠性和对应的翻转概率90%,10%之间的映射。与图6,图7和图8中描述的过程相似,可以根据比特节点的翻转概率940对翻转进行测试。仅作为示例,在七个比特节点上执行翻转测试,结果显示为翻转测试结果950。可以根据翻转测试结果950来更新比特节点的值。结果,可以基于初始码字910“1011010”来生成更新的码字960“1000100”。

应当注意的是,图6-9描述的翻转能量、翻转可靠性和/或翻转概率的确定是基于将七个比特节点视为在同一组中(例如,如操作420中所述)。然而,在本公开的解码处理中也可以使用其他方式的比特节点分类,例如,每个组仅包括一个比特节点。应当注意的是,以上描述仅是出于说明的目的而提供的,而无意于限制本公开的范围。对于本领域普通技术人员,可以在本公开的教导下进行多种变型和修改。然而,那些变型和修改不脱离本公开的范围。例如,可以根据具体情况调整翻转可靠性和翻转概率之间的关系。仅作为示例,在SSD应用的特定情况下,取决于该比特节点的翻转可靠性,任何比特节点的翻转概率可以是“0%”或“100%”。例如,在结合例如图6至图9描述的翻转规则中,等级“3”和等级“2”的翻转可靠性都可以对应于100%的翻转概率,等级“1”和等级“0”的翻转可靠性都可以对应于0%的翻转概率。在这种情况下,如结合图6至图9所描述的那样,可以省略翻转测试,可以将翻转概率为100%的比特节点直接确定为需要翻转的目标比特节点。

图11是示出根据本公开的一些实施例的解码过程的迭代与校验子权重之间的示例性关系的示意图。如图10所示,曲线1010可以对应于常规的比特翻转方法,曲线1020可以对应于本公开中公开的改进的比特翻转方法。传统的比特翻转方法仅基于翻转能量来决定是否翻转比特节点。如果翻转能量大于阈值,则该比特被翻转;否则,该比特不会被翻转。因此,常规比特翻转方法的随机性低,并且在校验子权重达到零之前更新码字的迭代次数可能很大。换句话说,收敛速度可能较低。相反,本公开中公开的改进的比特翻转方法引入了与比特节点的翻转概率有关的翻转测试的使用。在所有比特节点的广义上,翻转概率与翻转能量成正相关,这与常规的比特翻转方法一致。在每个单独的比特节点的特定视图中,翻转概率为10%的比特节点仍可能有翻转的机会。这样的设计在保持整体精度的同时提供了小的随机性。因此,当使用本方法时,收敛所需的迭代次数少得多。

图12是示出根据本公开的一些实施例的初始校验子权重与解码失败的机会之间的示例性关系的示意图。如图11所示,曲线1110可以对应于常规的比特翻转方法,曲线1120可以对应于本公开中公开的改进的比特翻转方法。如上所述,常规的比特翻转方法具有低随机性。如果初始校验子权重很大,则解码失败的机会可能会很高。相反,本公开中公开的改进的比特翻转方法提供了一种在初始校验子权重非常大时确定比特节点的翻转可靠性的方法(例如,指定预设的翻转可靠性或使用软信息来确定翻转,如图5中560和570所示)。而且,本方法提供了一定程度的随机性。因此,当初始校验子权重增加时,解码失败的机会不会大大增加。本方法的较高的纠错能力和较快的收敛速度可导致在随后的解码过程(例如,使用最小和解码器)中较少的计算负荷以及LDPC解码器的较快的整体速度。

具有描述的基本概念,本领域技术人员在阅读了该详细公开之后可以很明显地认识到,上述详细公开仅旨在通过示例的方式进行描述,而并非是限制性的。尽管这里没有明确说明,但是可能发生各种改变、改进和修改,并且它们是本领域技术人员想要的。这些改变、改进和修改旨在由本公开提出,并且在本公开的示例性实施方式的精神和范围内。

而且,某些术语已经被用来描述本公开的实施例。例如,术语“一个实施例”和/或“一些实施例”表示结合该实施例描述的特定特征、结构或特性包括在本公开的至少一个实施例中。因此,应当强调并且应当理解,在本说明书的各个部分中对“一个实施例”或“可选实施例”的两次或更多次引用不一定都指同一实施例。此外,可以在本公开的一个或多个实施例中适当地组合特定特征、结构或特性。

此外,本领域的技术人员将意识到,本公开内容的各个方面可以以许多可授予专利的类别或环境中的任何一种进行说明和描述,包括任何新的和有用的方法、设备、制造或物质组成,或其任何新的有用的改进。因此,本公开的各方面中通常统称为“单元”、模块”或“系统”可以完全以硬件,完全以软件(包括固件、常驻软件、微代码等)或通过组合软件和硬件来实现。此外,本公开的各方面可以通过具有计算机可读程序代码的一个或多个计算机可读介质的计算机程序产品的形式体现。

计算机可读信号介质可以包括例如在基带中或作为载波的一部分的传播的数据信号,该传播的数据信号具有包含在其中的计算机可读程序代码。这样的传播信号可以采取多种形式中的任何一种,包括电磁,光学等,或其任何合适的组合。计算机可读信号介质可以是任何计算机可读介质,其不是计算机可读存储介质并且可以是传送、传播或传输计算机可读程序以供指令执行系统、装置或设备使用或与其连接使用的任何计算机可读介质。体现在计算机可读信号介质上的计算程序代码可以使用任何适当的介质来传输,包括但不限于无线、有线、光缆、射频(RF)等或前述的任何合适的组合。

可以以一种或多种编程语言的任何组合来编写用于执行本公开各方面的操作的计算机程序代码,所述编程语言包括面向对象的编程语言(例如,Java,Scala,Smalltalk,Eiffel,JADE,Emerald,C++,C#,VB,NET,Python等)、常规过程编程语言(例如,“C”编程语言,Visual Basic,Fortran 2003,Perl,COBOL 2002,PHP,ABAP)、动态编程语言(例如,Python,Ruby和Groovy)或其他编程语言。程序代码可以完全在用户计算机上,部分在用户计算机上,作为独立软件包,部分在用户计算机上和部分在远程计算机上,或完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户的计算机,或者可以与外部计算机建立连接(例如,通过使用Internet服务提供商的Internet)或在云计算环境中或作为服务(例如软件即服务(SaaS))提供。

此外,所述的方法元素或序列的顺序,或者因此使用数字、字母或其他名称,并不旨在将所要求保护的过程和方法限制为任何顺序,除非可以在权利要求中指定。尽管以上公开内容通过各种示例讨论了当前被认为是本公开内容的各种有用实施例,但是应当理解,这种细节仅是出于该目的,并且所附权利要求不限于所公开的实施例,但是,相反,其旨在覆盖在所公开的实施例的精神和范围内的修改和等同设置。例如,尽管上述各种组件的实现可以体现在硬件设备中,但是它也可以实现为纯软件解决方案,例如,在现有服务器或移动设备上的安装。

类似地,应当理解,在本公开的实施例的前述描述中,有时将各种特征组合在单个实施例、附图或其描述中,以简化本公开,以帮助理解各种实施例的一个或多个。然而,本公开的方法不应被解释为反映了这样一种意图,即所要求保护的主题需要比每个权利要求中明确叙述的特征更多的特征。相反,要求保护的主题可以少于单个前述公开的实施例的所有特征。

相关技术
  • 用于解码LDPC码的改进的比特翻转方法及其系统
  • 具有对于LDPC码可靠性输入的比特翻转解码
技术分类

06120113063630