在具有单个或多个发射器的通信系统的多级纠错码生成器和解码器的制作方法

文档序号:7608432阅读:191来源:国知局
专利名称:在具有单个或多个发射器的通信系统的多级纠错码生成器和解码器的制作方法
相关申请的交叉引用本申请要求2003年10月6日提交的名为“Error-Correcting Raptor Codes”(纠错Raptor码)的共同待决的美国临时专利申请第60/509,355的优先权,该申请处于所有目的通过引用结合于此,如同在本文中完全陈述一样。
本公开内容涉及以下共同转让的申请/专利转让给Michael G.Luby的名为“Information Additive Code Generator and Decoder for Communication Systems”(用于通信系统的信息加性码生成器和解码器)的美国专利第6,307,487号(后文称为“Luby I”);转让给M.Amin Shokrollahi等人的名为“Multi-Stage Code Generatorand Decoder for Communication Systems”(用于通信系统的多级代码生成器和解码器)的美国专利第____号[美国专利申请第10/032,156号,2001年12月21日提交](后文称为“Schokrollahi I”);以及转让给M.Amin Schokrollahi等人的名为“Systematic Encoding and Decoding of Chain Reaction Codes”(连锁反应码的系统编码和解码)的美国专利第____号[美国专利申请第10/677,624号,2003年10月1日提交](后文称为“SED-CRC”)。这些申请/专利各自的公开内容处于所有目的通过引用结合于此,如同在本文中完全陈述一样。
背景技术
通过通信信道在发送者和接收者之间的数据传输是众多文献的主题。较佳地,但不是排它地,接收者希望接收由发送者以某一级别的确定性通过信道发射的数据的完全副本。当信道没有理想的保真度时(这覆盖了所有的物理可实现系统的大部分),一个问题是如何处理传输中的数据丢失或错乱。丢失的数据(消除)通常比破坏的数据(差错)更易于处理,因为接收者无法总是能够告知何时错误地接收到了破坏的数据。开发了许多纠错代码来检测和/或纠正消除和/或差错。通常,使用的特定代码是基于关于用于传输数据的信道的失真度以及所传输的数据的特性的某些信息来选择的。例如,当已知信道具有长时间的失真时,猝发差错码可能适用于该应用。当仅预期到短的、不频繁的差错时,简单的奇偶码可能是最佳的。
多个发送者和多个接收者之间通过通信信道的数据传输也是众多文献的主题。通常,来自多个发送者的数据发射要求多个发送者之间的协调,以允许发送者最小化重复的工作。在典型的向一个接收者发送数据的多个发送者系统中,如果发送者未协调它们将发射什么数据以及何时发射,而是仅仅发射文件的片段,则接收者很可能接收到许多无用的重复片段。类似地,当不同的接收者在不同的时间点加入来自一个发送者的传输时,问题是如何确保接收者从发送者接收到的所有数据都是有用的。例如,假定发送者希望发射文件,且连续地发射关于同一文件的数据。如果发送者仅仅发送原始文件的片段并重复,且某些片段丢失,则接收者在接收到文件中的每一片段的一个副本之前可能接收到许多无用的重复片段。类似地,如果多次错误地接收到一个片段,则传达给接收者的信息量远少于接收到的错乱数据的累积信息。这通常导致传输系统的不合需要的低效率。
通常,要通过通信信道发射的数据被划分成大小相等的输入码元。输入码元的“大小”可以按比特来测量,而无论输入码元是否实际上被划分成比特流,其中当输入码元是从2M个码元的字符表或对整数M除2M个码元之外的其它字符表中选择时,输入码元的大小为M。
编码系统可从输入码元中产生输出码元。输出码元是来自输入码元字符表的元素。输出码元字符表可以具有与输入码元字符表相同或不同的字符。一旦创建了输出码元,它们被发射到接收者。
传输的任务可包括输出码元的后处理,以产生对特定类型的传输合适的码元。例如,当传输包括将数据从无线提供者发送到无线接收者时,可将若干输出码元集中在一起以形成帧,且每一帧可被转换成波信号,其中振幅或相位与该帧有关。将帧转换成波的操作通常称为调制,且调制还取决于波信号的信息是储存在其相位还是振幅中而被进一步称为调相或调幅。当今,这一类型的调制传输在许多应用中使用,诸如无线传输、卫星传输、电缆调制解调器、数字用户线(DSL)等等。
如果传输允许预期接收者即使在面对传输过程中的差错和/或删除时也能够恢复原始数据的正确副本,则该传输被称为是可靠的。删除的信息的恢复是许多文献的主题,且在这一情况下设计出了非常有效的编码方法。
被提议来解决传输问题的一种解决方案是使用前向纠错(FEC)码,诸如Reed-Solomon码、Tornado码或更一般的LDPC(低密度奇偶校验)码、或Turbo码来提高可靠性。采用LDPC编码,从内容而非仅仅构成内容的输入码元来生成发送的输出码元。诸如Reed-Solomon、LDPC或Turbo码等等传统的纠错码对固定长度的内容生成固定数量的输出码元。例如,对于K个输入码元,可能生成N个输出码元。这N个输出码元可包括K个原始输入码元和N-K个冗余码元。如果存储允许,则发送者可对每一数据片段仅计算输出码元集一次,并使用传送带协议来发射输出码元。
某些FEC码的一个问题是它们需要过多的计算能力或存储器来操作。另一问题是输出码元的数量常常必须在编码过程之前确定。如果码元的误码率被估计过高,则这会导致低效率,而如果对误码率估计不足,则会导致故障。结果,传统的FEC方案通常需要估计它们所工作的通信信道的可靠性的机制。例如,在无线传输系统中,发送者和接收者可能需要探测通信信道,以获得对噪声的估计以及因此获得对信道可靠性的估计。在这一情况下,必须很经常重复这一探测,因为由于通信信道质量的快速且瞬时的变化,实际的噪声是一个移动目标。
对于传统的FEC码,可生成的可能输出码元的数量与内容被划分成的输入码元的数量在同一数量级。通常,但不排它地,大多数或所有这些输出码元是在发送步骤之前的预处理步骤中生成的。这些输出码元具有这样的属性所有输入码元可从输出码元的任一子集中重新生成,该子集总计上具有与原始内容相同的信息量。
如上所述,众多纠错码的一个问题是它们需要过度的计算能力或存储器来操作。近来为通信应用所开发的一种在对计算能力和存储器的使用上略微高效的编码方案是LDPC编码方案。LDPC码类似于Reed-Solomon码,在于输入数据是由K个输入码元表示的,且用于确定N个输出码元,其中N在编码过程开始之前是固定的。用LPDC码来编码一般要比用Reed-Solomon码编码快得多,因为创建N个LDPC输出码元的算术运算的平均数与N成正比(在几十个汇编码乘以N的数量级上),且解码整个数据所需的算术运算的总数也与N成正比。
LDPC码具有优于Reed-Solomon码的速度优点。然而,LDPC和Reed-Solomon码都具有若干缺点。首先,输出码元数N必须在编码过程之前确定。如果码元的误码率被过度估计,则这会导致低效率,且如果误码率被估计不足,则这会导致故障。这是因为LDPC解码器需要接收某一数量的输出码元来解码和恢复原始数据,且如果删除码元的数目大于该码所规定的数目,则不能恢复原始数据。这一限制一般对于许多通信问题都是可接受的,只要正确地选择码率,但是这要求以信道的码元接收的误码率来进行事先的猜测。
LDPC码的另一缺点是它们要求编码器和解码器以某一方式对图结构达成一致。LDPC码要求在构造该图的解码器处的预处理级,这是实质上降低解码速度的过程。此外,图对于数据大小是专用的,因此需要对每一便用的数据大小生成一个新图。此外,LDPC码需要的图有时候构造起来是复杂的,且对不同大小的数据要求不同的自定义参数设置,来获得最佳性能。这些图的大小可以很大,且可能要求大量的存储器以在发送者和接收者两者中储存。
另外,LDPC码相对于固定的图和输入数据生成完全相同的输出码元值。这些输出码元可以包括K个原始输入码元和N-K个冗余码元。此外,大于K的较小的倍数,诸如K的3或4倍的N的值是不实用的。由此,从一个以上发送者获得使用同一图从相同的输入数据生成的输出码元的接收者很可能接收到大量的重复输出码元,这并没有增加任何信息。这是因为1)N个输出码元事先已固定,2)每次当发送码元时从每一发送器发射了相同的N个输出码元,3)接收器接收到相同的N个码元,以及4)N实际上不能超过K的较小倍数。实际上,如果从多个发送器接收到了未协调的输出码元,则一些输出码元已被接收的概率在1/sqrt(N)的数量级上,其中sqrt(N)表示N的平方根。当K在N的数量级上,且需要K个输出码元时,当接收到更多输出码元时,下一接收到的输出码元越来越不可能增加信息,如果可能的输出码元数远大于要被接收来解调数据所需的输出码元数,则情况不是如此。
即使来自不同发送器的输出码元可能以不同的方式被破坏,但它们传达给系统的信息的总量不是其各自信息量的总和。例如,假定码元是一个比特长,且接收器从两个不同的源(诸如两个卫星)接收到相同的LDPC码比特,且这两个比特具有被破坏的概率p。还假定这两个比特之一被接收为0,而另一个被接收为1。则这两个比特一起未给出关于原始LDCP比特的任何信息,因为比特为0或1的状态每一个都具有50%的概率。然而,每一个别的比特给出了关于原始比特的信息,但是这一信息不是加性的。
因此,需要的是这样一种简单的纠错码,它在发送者或接收者处不需要过多的计算能力或存储器,且可用于在具有一个或多个发送者和/或一个或多个接收者的系统中有效地分发数据,而无需在发送者和接收者之间协调。
发明简述在依照本发明的通信系统的一个实施例中,编码器使用输入数据文件来产生多个冗余码元,其中输入文件是有序的多个输入码元,其每一个选自一输入字符表,且冗余码元来自冗余码元的字符表。对于给定的键,从包括输入码元和冗余码元的一组合码元集中生成输出码元,其中键是从键字符表中选样的,且榆出码元是从输出字符表中选择的。具有键I的输出码元是通过以下步骤生成的对要生成的输出码元确定权重W(I),其中权重W是在多个键上的至少两个值之间交化的正整数;选择依照I的函数选择与输出码元相关联的输入码元的W(I);并且从所选择的W(I)输入码元的预定值函数F(I)生成输出码元的值B(I)。在某些情况下,键在编码器的状态中是隐式的。输出码元一般彼此独立,且在需要时可生成实际上无限个数的输出码元(服从I的解)。输出码元是信息加性的,使得即使已接收到许多码元,接收的输出码元也可能提供用于解调的附加信息。输出码元使得所接收的输出码元的集合能够提供概率信息来支持纠错。
在依照本发明的实施例的解码器中,即使解码器仅接收到所发射的输出码元的任意一部分,以及即使大量所接收到的输出码元是有差错的,解码器也可正确地解调输入码元。输入数据可从其累积信息等于或略微大于构成该文件的输入码元的个数的任何输出码元集中解调输入数据。
在一个特定的解码实施例中,在接收输出码元之前或实际上与其同时,解码器从所接收的输出码元计算校验码元,其中每一校验码元与一个或多个输入码元和冗余码元相关联,且其中,校验码元的权重是来自与其相关联的多个输入码元以及冗余码元的码元数,且解码器将码元的权重和相关联码元的位置储存在表中。对于每一接收的输出码元,在生成校验码元和储存之后,解码器执行各种步骤,包括1)计算或估计所接收的输入码元中的信息量,并更新信息内容的活动累计,2)对输出码元标识键I和接收的输出码元值B(I),3)从与输出码元相关联的多个输入码元和冗余码元中确定输出码元的权重W(I)以及与W(I)相关联的码元的位置,以及4)储存权重W(I)和位置。对于恢复过程,重复执行各步骤,直到恢复了所有输入码元、直到预定的轮数完成、或直到满足其它终止条件,这些步骤包括对每一输入码元生成所确定的输入码元的所有或部分可能值的概率分布,其中概率分布表示具有特定可能值的输入码元的概率。在每一轮基于所计算的前一轮的概率更新概率分布。该过程可被重复,直到对所有的输入码元,众多可能值之一比其它值更有可能,或者该过程可被重复预定的轮数,或满足其它准则。更新可考虑已解码的码元、附加输入码元和校验码元。
依照本发明的又一实施例,提供了一种包含在载波中的计算机数据信号。该计算机数据信号可用于纠错,并包括多个输出码元,其中多个输出码元表示从包括有序的输入码元集和冗余码元的组合的码元集中生成的码元,其中冗余码元是从输入码元生成的,其中可能的输出码元数远大于组合的码元集中的码元数,其中从组合的码元集中的一个以上码元并从组合的码元集中少于所有的码元中生成至少一个输出码元,并使得数据信号的接收者可从任何预定数量的输出码元中生成达期望的准确性程度的有序输入码元集。
通过本发明实现了众多好处。例如,在一个具体实施例中,减少了编码用于通过信道传输的数据的计算开销。在另一具体实施例中,减少了解码这些数据的计算开销。取决于实施例,可实现这些好处中的一个或多个。这些和其它好处贯穿本说明书更详细提供,且在下文中更具体描述。
对此处所公开的本发明的特征和优点的进一步理解可通过参考说明书的剩余部分和附图来实现。
附图简述

图1是依照本发明的一个实施例的通信系统的框图。
图2是更详细示出图1的编码器的框图。
图3是示出静态编码方法的一个实施例的简化流程图。
图4是图2的静态编码器的一个实施例的框图。
图5是图2的动态编码器的一个实施例的简化框图。
图6是用于从相关联的输入码元集生成输出码元的方法和装置的图示。
图7是静态编码器的一个具体实施例的简化框图。
图8示出了图7所示的静态编码器的一个实施例的操作。
图9是静态编码过程的简化流程图。
图10是可由诸如图1的解码器等解码器执行的解码过程的简化流程图。
图11是替换解码器的框图。
图12是示出用于解码的一种方法的简化流程图。
图13是示出用于解码的替换方法的简化流程图。
图14是示出用于解码的又一替换方法的简化流程图。
图15是示出可由图5的动态编码器使用的用于生成关联列表的过程的流程图。
图16是更详细示出图15的权重选择器的框图。
图17是可由诸如图16所示的权重选择器等权重选择器等用于对给定输出码元确定权重的过程的流程图。
发明的详细描述在此处所描述的具体实施例中,描述了被表示为“纠错多级编码”(“EC-MS”)的编码方案,之前先解释本说明书中使用的各种术语的意义和范围。Luby I和Shokrollahi I提供了可在依照本发明的某些实施例中使用的系统和方法的教导。然而,可以理解,这些系统和方法对本发明而言不是所需的,且也可使用众多其它变化、修改和替换。EC-MS和多级编码的某些变化可以在作为Digital Fountain Raptor码系统销售的产品中使用。
采用EC-MS编码,由发送者在需要时从输入文件生成输出码元。每一输出码元可不关注如何生成其它输出码元来生成。在任何时间点,发送者可停止生成输出码元,且对发送者何时停止或重新开始生成输出码元无需有任何约束。一旦被生成,这些码元然后可被单独或作为更大的组(“帧”)的一部分发射到其目的地,其中每一帧包含一个或多个输出码元。
如此处所使用的,术语“文件”指的是储存在一个或多个源处且要作为一个单元被传送到一个或多个目的地的任何数据。由此,来自文件服务器或计算机存储设备的文档、图像以及文件都是可被传送的“文件”的所有示例。文件可以是已知大小的(诸如储存在硬盘上的1兆字节图像),或者可以是未知大小的(诸如从流源的输出所得的文件)。不管怎样,文件是输入码元的序列,其中每一输入码元具有文件中的位置和值。
传输是将数据通过信道从一个或多个发送者发射到一个或多个接收者来传送文件的过程。如果一个发送者通过理想信道连接到任何数量的接收者,则所接收的数据可以是输入文件的精确副本,因为所有数据都将被正确接收。此处,假定信道不是理想的,这是对大多数真实信道的情况,或者假定数据从一个以上发送者发出,这是对某些系统的情况。在众多信道非理想性中,所感兴趣的非理想性是数据差错和数据不完整性。
数据差错在信道修改所发射的数据时发生。修改可由若干因素引起,诸如在卫星传输情况下的大气放电、在无线传输情况下的信号功率损失、光盘或其它数字存储介质表面的划痕等。
数据不完整性发生在接收者直到已经传递了某些数据之后才开始接收数据,接收者在传输结束之前停止接收,或者接收者间歇地停止和再次开始接收数据的时候。作为数据不完整性的一个示例,移动卫星发送者可能正在发射表示输入文件的数据,并在接收者处于范围内之前开始传输。一旦接收者处于范围内,可接收数据,直到卫星移至范围之外,此时接收者可重定向其圆盘式卫星天线(在该时间内,它不在接收数据),以开始接收关于由移至范围之内的另一卫星发射的同一输入文件的数据。
在某些通信系统中,接收者接收由多个发送者或由使用多个连接的一个发送者生成的数据。例如,为加速下载,接收者可能同时连接到一个以上发送者来发射关于同一文件的数据。作为另一示例,在广播传输中,可发射多个广播数据流,以允许接收者连接到这些流中的一个或多个来将总计的传输速率与将它们连接到发送者的信道的带宽进行匹配。在所有这些情况下,问题是确保所有发射的数据对接收者都是独立地有用的,即,即使传输速率对于不同的流是极其不同的,且当存在任意的模式和差错强度时,流中的多个源数据也独立地将其信息添加到系统。
一般而言,传输是将数据通过连接发送者和接收者的信道从发送者移至接收者的动作。信道可以是实时信道,其中信道在信道获得数据时将数据从发送者移至接收者,或者信道可以是存储信道,它存储从发送者到接收者的传送中的部分或所有数据。后者的一个示例是磁盘存储或其它存储设备。在该示例中,生成数据的程序或设备可以被认为是发送者,它将数据发送到存储设备。接收者是从存储设备中读取数据的程序或设备。发送者用于将数据放到存储设备的机制、存储设备本身、以及接收者用户从存储设备中获得数据的机制共同形成了信道。如果存在这些机制或存储设备会丢失数据的机会,则该机会将被视为信道中的数据删除。
当发送者和接收者被数据出错信道分开时,较佳的是不要仅仅发射输入文件的一个精确副本,而是发射从输入文件生成的、帮助进行差错恢复的数据。编码器是处理该任务的电路、设备、模块或代码段。查看编码器的操作的一种方式是编码器从输入码元生成输出码元,其中输入码元值的序列表示输入文件。每一输入码元因此具有在输入文件中的位置以及值。解码器是从由接收者接收到的输出码元中重构输入码元的电路、设备、模块或代码段,即使某些或大量输入码元是错误地接收的。
诸如Luby I或Shokrollahi I(示出了多级连锁反应码)中描述的连锁反应码是用于在各种各样设置中恢复删除的有效编码方法。连锁反应解码是某种形式的前向纠错,它在存在删除时解决了上述问题。对于连锁反应码,可被生成的可能输出码元的池在大于输入码元数的数量级上(在大多数情况下,实际上是无限的),且可非常快速地生成来自概率池的随机输出码元。对于连锁反应码,输出码元可在进运中在“按需”的基础上与发送步骤同时生成。
连锁反应码具有内容的所有输入码元可以从随机生成的输出码元集的几乎所有子集中重新生成的属性,该随机生成的输出码元的关于原始内容的累计信息量等于或略微多于关于原始内容的信息,对于仅略微多的等效信息,完全重新生成的概率将变得非常高。由于可生成比输入码元多得多的输出码元,在按输入码元的顺序对输出码元编号的随机采样不可能重叠,且因此是“信息加性的”。
各种连锁反应编码系统的其它描述在2000年9月22日提交的名为“OnDemand Encoding With a Window”(采用窗口的按需编码)的美国专利申请第09/668,452号,以及2000年10月18日提交的名为“Generating High Weight Outputsymbols Using a Basis”(使用基来生成高权重输出码元)的美国专利申请第09/691,735号中有描述,这些申请的每一个处于所有目的通过引用结合于此。
连锁反应编码系统的某些实施例包括编码器和解码器。数据可以用块或流的形式呈现给编码器,且编码器可在运行中从块或流中生成输出码元。在某些实施例中,例如Shokrollahi I中所描述的实施例中,数据可以使用静态编码器被离线地预编码成静态输入码元,且可从多个原始数据码元和静态输入码元生成输出码元。
在连锁反应编码系统的某些实施例中,编码和解码过程依赖于权重表。权重表描述了源码元集的概率分布。即,对于1和全输入码元数之间的任何数W,权重表指示了唯一的概率P(W)。P(W)对于大量W值可能为0,在这一情况下,期望权重表仅包括P(W)为非0的那些权重W。
在连锁反应编码系统的某些实施例中,输出码元如下生成对于每一输出码元,随机地生成键。基于该键,从权重表中计算权重W。然后,选择W源码元的随机或伪随机子集。则输出码元将为这些源码元的XOR(异或)。这些源码元在后文中被称为输出码元的近邻或关联。这一基本方案的各种修改和扩展都是可能的,且已在上述专利和专利申请中讨论。
一旦生成了输出码元,它可连同其键,或者关于如何重新生成该键的指示,或者有助于接收者生成用于生成输出码元的同一键集的某些公共随机性源一起被发送到预期的接收者。
在某些应用中,可能较佳的是首先发射输入码元作为输出码元,然后通过发送从输入码元生成的输出码元来继续传输。这一编码系统被称为系统编码系统,且在Shokrollahi I中公开。
EC-MS编码不限于任何特定类型的输入码元,但是输入码元的类型通常是由应用规定的。通常,输入码元的值是从对某一正整数M的2M个码元的字符表中选择的。在这些情况下,输入码元可以由来自输入文件的M比特数据的序列来表示。M的值通常是基于对应用的使用以及信道来确定的。例如,对于基于比特的传输信道,大小为1比特的码元可能是适当的。作为另一示例,某些通信系统使用调制在对信道的一次使用中发射若干比特。在这些情况下,将码元大小置为等于在每次使用信道时发射的比特数可能是适当的。例如,当使用四相相移键控(QPSK)作为调制方案时,有利的是选择大小等于两个比特的码元。在使用EC-MS编码的通用通信系统中,诸如输入码元大小等应用专用参数(即,M,由输入码元编码的比特数)可以是由应用设置的变量。
每一输出码元具有与其相关联的概率分布,对于输出码元字符表中的任一元素,该概率分布确定了码元在发射之前具有该值的概率。这些概率或其估计可以通过计算接收的码元与有效码元集的距离来提取。例如,当若干比特被调制成一帧时,解调步骤可提供对于调制步骤如何准确的估计。在某些实现中,对准确度的估计是二进制值(例如,“准确”或“不准确”)。在其它实现中,估计可以采用三个、四个或更多值中的一个。
在下文所考虑的一个较佳实施例中,每一输出码元具有称为其“键”的标识符。较佳地,每一输出码元的键可以由接收者容易地确定,以允许接收者将一个输出码元与其它输出码元区分开来。较佳地,一个输出码元的键与所有其它输出码元的键不同。同样,较佳的是在传输中包括尽可能少的数据,以使接收者能够确定所接收的输出码元的键。在某些实施例中,输出码元的键可通过发送者和接收者之间的时钟同步,以及通过帮助重构各个输出码元的键的唯一共享号来确定。
在某些系统中,较佳的是从一个以上数据片段中形成键。例如,考虑包括从一个或多个发送者接收从同一输入文件生成的一个以上数据流的接收者的系统,其中所发射的数据是分组流,每一分组包含一个输出码元。在这一情况下,较佳的是键包括与序列号配对的唯一流标识符。
在可能时,按照输出码元的位置来键控是较佳的。位置键控可能对从诸如CD-ROM(光盘只读存储器)等存储设备中读取输出码元而言能运作良好,其中输出码元的键是其在CD-ROM上的位置(例如,音轨加上扇区加上扇区内的位置等)。位置键控也可能对其中发送者和接收者具有同步的时钟的传输系统运作良好。采用这一形式的键控,接收者可重新创建输出码元的键,而对显式发射的键无需任何空间。当然,位置键控要求这一位置信息是可用且可靠的。
在某些系统中较佳的另一形式的键控是随机键控。在这些系统中,生成随机(或伪随机)数,并将其用作每一输出码元的键。在较佳实施例中,发送者和接收者对允许重构同一随机键序列的公共数据片段达成一致。随机键控的一个特性是键中具有相同值的部分可能较小,即使对于由不同物理位置处的不同发送者生成的键也是如此(假定可能键的范围足够大)。由于其实现的简易性,这一形式的键控在某些系统中可具有优于其它形式的优点。应当理解,除非另外指明,否则此处所使用的“随机”值或“随机”数指的是真正随机生成的数字,且包括伪随机地生成的值或数字。
如上所述,EC-MS编码在与其有期望的数据差错或接收者没有精确地在传输开始和结束时开始和结束接收的情况下是有用的。后一情况在此被称为“数据不完整性”。当使用EC-MS编码时,这些情况不会不利地影响通信过程,因为所接收的EC-MS编码数据高度独立,使得它是信息加性的。如果大多数随机输出码元集合足够独立以在很大程度上是信息加性的,这是对于此处所描述的EC-MS编码的情况,则其累计信息内容足够大的任何合适数量的输出码元可用于恢复输入文件。采用连锁反应编码,接收者不被约束为选取任何特定的输出码元集,因此它可从一个发送者接收某些输入码元,切换到另一发送者,有差错地接收某些码元,或甚至丢失某些码元,错过给定传输的开始或结束,但仍恢复输入文件。这一加入和离开传输,而无需接收者—发送者协调的能力极大程度地简化了通信过程。
系统综述图1是使用EC-MS编码的通信系统100的框图。在通信系统100中,输入文件101或输入流105被提供给输入码元生成器110。输入码元生成器110从输入文件或流中生成一个或多个输入码元(IS(0),IS(1),IS(2),…),其中每一输入码元具有值和位置(在图1中表示为加括号的整数)。如上所述,输入码元的可能值,即其字符表通常是2M个码元的字符表,使得每一输入码元对输入文件的M个比特编码。M的值一般是按照对通信系统100的使用来确定的,但是通用系统可能包括输入码元生成器110的码元输入大小,使得M可随使用不同而不同。输入码元生成器110的输出被提供给编码器115。
静态键生成器130产生静态键S0,S1,…的流。所生成的静态键的个数一般是受限制的,且取决于编码器115的具体实施例。静态键的生成随后将更详细描述。动态键生成器120对要由编码器115生成的每一输出码元生成一个动态键。生成每一动态键,使得同一输入文件的大部分动态键是唯一的。例如,Luby I描述了可使用的键生成器的实施例。动态键生成器120和静态键生成器130的输出被提供给编码器15。静态键生成器130的操作可取决于由随机数生成器135生成的随机数。
从由动态键生成器120提供的每一键I,编码器115从由输入码元生成器提供的输入码元中生成一个值为B(I)的输出码元。编码器115的操作将在下文中更详细描述。每一输出码元的值是基于其键,在一个或多个输入码元以及从输入码元计算的可能的一个或多个冗余码元的某一函数上生成的。产生具体的输出码元的输入码元和冗余码元的集合此处被称为输出码元的“关联码元”,或简称为其“关联”。对函数(“值函数”)和关联的选择是依照后文更详细描述的过程来完成的。通常,但非总是,M对于输入码元和输出码元是相同的,即,它们都对相同个数的比特编码。
在某些实施例中,输入码元数K由编码器115用于选择关联。如果K事先未知,诸如当输入是流文件的情况,则K仅仅是一个估计。值K也可能由编码器115用于对输入码元和由编码器115生成的任何中间码元分配存储。
编码器115向发射模块140提供输出码元。也可向发射模块140提供来自动态键生成器120的每一这样的输出码元的键。发射模块140通过信道145向接收模块150发射输出码元,并取决于所使用的键控方法,发射模块140也可能发射关于所发射的输出码元的键的某些数据。信道145被假定为差错信道,但是这对于通信系统100的正确操作并非是要求。模块140、145和150可以是任何合适的硬件组件、软件组件、物理介质或其任何组合,只要发射模块140适用于向信道145发射输出码元和任何所需的关于其键的数据,并且接收模块150适用于从信道145接收码元以及关于其键的可能的某些数据。接收模块150也可包含给出对所接收的输出码元的值在传输时为v的概率的估计的估计器,由此提供了每一接收的输出码元的可能的v的概率估计。如果用于确定关联,则值K可通过信道145发送,或者它可通过编码器115和解码器155的约定事先设置。
由于信道145被假定为差错信道,且由于差错也可以是删除,因此通信系统100不假定退出接收模块150的输出码元和进入发射模块140的输出码元之间的一对一对应性。实际上,当信道145包括分组网络时,通信系统100甚至可能无法假定任何两个或多个分组在通过信道145传送时被保存的相对顺序。因此,输出码元的键是使用上述键控方案的一个或多个来确定的,且无需按照输出码元退出接收模块150的顺序来确定。
接收模块150向解码器155提供输出码元值B(Ia),B(Ib),B(Ic),…,以及对其概率P(Ia),P(Ib),P(Ic),…的估计,并且任一数据接收模块150所接收的关于这些输出码元的键的内容被提供给动态键生成器160。概率一般是可能输出码元集的概率分布。例如,当输出码元表示比特时,输出比特的概率可能等于输出比特在传输之前为0的概率(它为1比特的概率则是1减去它为0比特的概率)。
动态键重新生成器160为接收的输出码元重新生成动态键,并将这些动态键提供给解码器155。静态键生成器163重新生成静态键S0,S1,...,并将它们提供给解码器155。静态键生成器从随机数生成器164接收数字,或能够访问在编码和解码过程中都使用的随机数生成器135。如果随机数是在同一物理设备上生成的,该访问可以是对这一设备的访问的形式,或者该访问可以是对用于生成随机数的同一算法的形式,以在随机数生成器164中实现与随机数生成器135相同的行为。解码器155使用由动态键重新生成器160和静态键生成器163提供的键,以及对应的输出码元,来恢复输入码元(同样是IS(0),IS(1),IS(2),…)。解码器155将恢复的输入码元提供给输入文件重新组装器165,后者生成输入文件101或输入流105的副本170。
编码器图2是图1所示的编码器115的一个具体实施例的框图。编码器115包括静态编码器210、动态编码器220、以及冗余度计算器230。静态编码器210接收以下输入a)由输入码元生成器110提供的并储存在输入码元缓冲器205中的原始输入码元IS(0),IS(1),…,IS(K-1);b)原始输入码元数K;c)由静态键生成器130提供的静态键S0,S1,...;以及d)冗余码元数R。在接收到这些输入之后,静态编码器205计算R个冗余码元RE(0),RE(1),…,RE(R-1),这将在下文中描述。通常,冗余码元具有与输入码元相同的大小。在一个具体实施例中,由静态编码器210生成的冗余码元被储存在输入码元缓冲器205中。输入码元缓冲器205可以仅仅是逻辑的,即文件可以物理地储存在一个地方,且输入码元在码元缓冲器205中的位置可以仅仅是这些码元在原始文件中的位置的重命名。
动态编码器220接收输入码元和冗余码元,并生成输出码元,如在下文中更详细地描述的。在其中冗余码元被储存在输入码元缓冲器205中的一个实施例中,动态编码器220从输入码元缓冲器205接收输入码元和冗余码元。
冗余计算器230从输入码元数K中计算冗余码元数R。这一计算在下文中更详细描述。
在其中生成输出码元的速度是关键资源的情况下,输出文件可以使用静态编码器210来编码,并在输出码元的传输开始之前被储存在中间设备上。该设备可以是,例如在与动态编码器220不同的物理位置处附加的存储设备,或者它可被包括在与动态编码器220相同的物理设备中,等等。在其中文件在用动态编码器220编码之前用静态编码器210良好地编码的情况下,实现动态编码器220的计算设备无需将资源专用于静态编码。由此,可将更多资源专用于动态编码,以例如提高为输入文件生成输出码元的速度,为其它文件生成输出码元,执行其它任务等等。静态编码能否或是否应当在动态编码之前执行取决于具体的实现。
静态编码器的综述将参考图3和4来描述静态编码器210的通用操作。图3是示出静态编码的方法的一个实施例的简化流程图。在步骤305,跟踪已生成了多少冗余码元的变量j被设为0。然后,在步骤310,根据输入码元IS(0),…,IS(K-1)的函数F0计算第一冗余码元RE(0)。然后,在步骤315,递增变量j。接着,在步骤320,测试是否生成了所有冗余码元(即,j是否大于R-1?)。如果是,则该流程结束。否则,该流程前进到步骤325。在步骤325,根据输入码元IS(0),…,IS(K-1)以及先前生成的冗余码元RE(0),…,RE(j-1)的函数Fj计算RE(j)。重复步骤315、320和325,直到计算了R个冗余码元。
再次参考图1和2,在某些实施例中,静态编码器210从静态键生成器130接收一个或多个静态键S0,S1,…。在这些实施例中,静态编码器210使用静态键来确定部分或全部函数F0,F1,…,Fj-1,例如,静态键S0可用于确定函数F0,静态键S1可用于确定函数F1,等等。或者,静态键S0,S1,…的一个或多个可用于确定函数F0,静态键S0,S1,…的一个或多个可用于确定函数F1,等等。在其它实施例中,不需要任何静态键,且由此,不需要静态键生成器130。
现在参考图2和3,在某些实施例中,由静态编码器210生成的冗余码元可被储存在输入码元缓冲器205中。图4是静态编码器210的一个实施例的操作的简化图示。具体地,静态编码器210根据从输入码元缓冲器205接收到的输入码元IS(0),…,IS(K-1),RE(0),…,RE(j-1)的函数Fj生成冗余码元RE(j),并将其储存回输入码元缓冲器205中。函数F0,F1,...,FR-1的确切形式取决于具体应用。通常,但非总是,函数F0,F1,...,FR-1包括部分或全部其对应自变量的异或。如上所述,这些函数可以实际上采用或不采用图1的静态键生成器130生成的静态键。例如,在以下所描述的一个具体实施例中,前几个函数实现汉明码,且不使用任何静态键S0,…,S1,而其余的函数实现低密度奇偶校验码,并明确地使用静态键。
动态编码器的综述再次参考图2,动态编码器200接收输入码元IS(0),…,IS(K-1)以及冗余码元RE(0),…,RE(R-1),以及它要生成的每一输出码元的键I。包括原始输入码元和冗余码元的集合在后文中被称为“动态输入码元”集合。图5是动态编码器的一个实施例的简化框图。该编码器类似于Luby I中描述的编码器的实施例。Luby I描述了关于这一编码器的操作的进一步细节。
动态编码器500包括权重选择器510、关联器515、值函数选择器520以及计算器525。如图5所示,K+R个动态输入码元储存在动态码元缓冲器505中。在一个实施例中,动态码元缓冲器505是图2的输入码元缓冲器205。在其它实施例中,动态码元缓冲器505与输入码元缓冲器205分离。动态键I(由图1所示的动态键生成器120提供)是对权重选择器510、关联器515和值函数选择器520的输入。动态输入码元数K+R也被提供给这三个组件510、515和520。计算器525被耦合以从权重选择器510、关联器515和值函数选择器520接收输出,并从动态码元缓冲器505接收码元。计算器525生成输出码元值。应当理解,可使用与图5所示的元件等效的其它安排,且这仅仅是依照本发明的编码器的一个示例。例如,Luby I和Shokrollahi I描述了可在依照本发明的其它实施例中使用的其它编码器。
在操作中,K+R个动态输入码元从静态编码器210接收,并被储存在动态输入码元缓冲器505中。如上所述,每一动态输入码元具有位置(例如,输入码元的位置可以是其在输入文件中的原始位置)和值。动态输入码元无需按照其各自的顺序被储存在动态输入码元缓冲器505中,只要所储存的动态输入码元的位置可被确定。
使用键I和动态输入码元数K+R,权重选择器510确定要成为具有键I的输出码元的“关联”的动态输入码元数W(I)。使用键I、权重W(I)以及动态输入码元数K+R,关联器515确定与输出码元相关联的动态输入码元的位置的列表AL(I)。应当理解,如果关联器515可在不事先知道W(I)的情况下生成AL(I),则无需单独或显式地计算W(I)。一旦生成了AL(I),可容易地确定W(I),因为它是AL(I)中的关联数。
关联器515是接收键I、数字N和数字t作为输入,并产生0到N-1之间的整数的列表X(0),…,X(t-1)的映射器。较佳地,这些整数是不同的,且在其范围内均匀分布。例如,在图5中的动态编码器500的情况下,N等于K+R,t等于W(I),而AL(I)是列表X(0),…,X(t-1)。
由关联器515给出的映射可采用各种形式。它能够访问真正随机或伪随机比特的源,以使得其输出是随机的。然而,应当选择它以使编码器和解码器两者对相同的键I、相同的N和相同的t产生相同的输出。为满足这一要求,可由编码器和解码器以键I为种子生成伪随机序列。替代伪随机序列,真正随机的序列可用于计算输出,但是为使其有用,用于生成输出的随机序列需要被传递到解码器。
再次参考图5,一旦I、W(I)和AL(I)已知,输出码元的值B(I)是由计算器525基于值函数VF(I)计算的。合适的值函数的一个特性是它允许从输出码元值B(I)并从由AL(I)指示的其它W(I)-1个关联的值确定由AL(I)指示的关联的值。这一步骤中使用的一个较佳的值函数是XOR值函数,因为它满足该特性,可被容易地计算和容易地反转。然而,可改为使用其它合适的值函数。例如,Luby I描述了可被使用的其它合适的值函数。
如果使用,则值函数选择器520从键I并从K+R中确定值函数VF(I)。在一个变化中,值函数VF(I)对所有的I是相同的值函数VF。在该变化中,不需要值函数选择器520,且可用值函数VF来配置计算器525。例如,值函数可能对所有的I都是XOR(异或),即,输出码元值是所有其关联的值的XOR(异或)。
对于每一键I,权重选择器510从I和K+R中确定权重W(I)。在一个变化中,权重选择器510通过使用键I选择W(I)来首先生成随机查找数,然后使用该数字在储存在权重选择器510中的或可由其访问的分布表中查找W(I)的值。对于如何形成和访问这一分布表的更详细描述在下文中提供。一旦权重选择器510确定了W(I),则该值被提供给关联器515,并被提供给计算器525。
使用列表AL(I)、权重W(I)和由值函数选择器520提供的值函数VF(I)或预先选择的值函数VF,计算器525访问动态输入码元缓冲器505中由AL(I)引用的W(I)个动态输入码元,以对当前输出码元计算值B(I)。用于计算AL(I)的过程的一个示例在下文中描述,但是可改为使用另一合适的过程。较佳地,该过程给予每一输入码元被选作为给定输出码元的关联的大致均等的机会,且以如果解码器尚不具有对其可用的AL(I)则它可复制AL(I)的方式来完成选择。
动态编码器500然后输出B(I)。实际上,动态编码器500执行图6中所示的动作,即,根据选中输入码元的某一值函数生成输出码元值B(I)。在所示的示例中,值函数是XOR,输出码元的权重W(I)为3,且相关联的动态输入码元(关联)位于0、2和K+R-2处,并具有各自的值IS(0)、IS(2)和RE(R-2)。由此,对于该I的值,输出码元计算如下B(I)=IS(0)IS(2)RE(R-2)其中,使用了值函数XOR,应当理解,冗余码元具有与原始码元IS(0),…,IS(K-1)相同的比特数,且这些进而具有与输出码元相同的比特数。
所生成的输出码元然后如上所述地发射和接收。此处,假定某些输出码元可能丢失,或被打乱次序,或由一个或多个编码器生成。然而,假定所接收的输出码元是以其键的指示以及其值B(I)准确的某种保证来接收的。如图1所示,这些所接收的输出码元,连同由动态键重新生成器160从其指示中重构的其对应的键、值K和R、以及由静态键生成器163重新生成的静态键S0,S1,…是对解码器155的输入。解码器155也可能接收和使用指示值B(I)如同被发射的概率那样的概率的指示。
静态编码器静态编码器的主要功能是以在面对差错时可能恢复原始数据的方式向原始数据添加冗余信息。这一冗余信息可协助解码器恢复动态编码器无法恢复的输入码元。在典型的应用中,静态编码器应当在面对删除时保证恢复到期望的准确性程度所需的冗余码元数的方面是有效的,和/或在编码过程和/或解码过程的计算开销方面是有效的。例如,对于给定的目标误码率p,在它应用中它是由动态编码器的性能来规定的,目的是使得冗余码元数R尽可能小,而同时保证如果最多在数据中的p部分发生差错,能够快速地恢复原始数据。
满足这些要求的一类代码是LDPC代码,这对本领域技术人员是公知的。尽管这些代码可在许多情况下恢复原始数据,但存在其中它们恢复了除少量原始输入码元之外的所有东西的不常见的情况。由此,在某些实施例中,在LDPC编码之前,首先使用如果存在少量差错可恢复原始数据的代码来编码输入数据。这一第一编码生成了第一多个冗余码元。在该第一编码之后,多个原始码元和第一多个冗余码元使用LDPC编码器来编码。用于第一层编码的一个示例是BCH码,它对本领域的技术人员是公知的。可以理解,也可使用其它类型的编码,诸如使用两层或两层以上的编码方案。
图7是依照本发明的静态编码器的一个具体实施例的简化框图。静态编码器600包括参数计算器605、BCH编码器610以及低密度奇偶校验(LDPC)编码器620。参数计算器605接收输入码元数K以及要生成的冗余码元数R,并生成参数D和E。D是要由BCH编码器610生成的冗余码元数的指示,E是要由LDPC编码器620生成的冗余码元数的指示。参数D被提供给BCH编码器620,而参数被提供给LDPC编码器620。
BCH编码器610被耦合以从输入码元缓冲器中接收输入码元IS(0),…,IS(K-1)、输入码元数K以及参数D。作为响应,BCH编码器610依照BCH码生成D+1个冗余码元HA(0),HA(1),…,HA(D)。在一个实施例中,输入码元缓冲器625是图2的输入码元缓冲器205。BCH编码过程将D+1个冗余码元添加到原始的K个输入码元,其中D可取决于应用。编码器610可以用纠错和纠删除码领域中的技术人员已知的任何数量的方式来实现。
LDPC编码器620被耦合以接收输入码元IS(0),…,IS(K-1)、输入码元和BCH编码的冗余码元的个数K+D+1、参数E以及静态键S0,S1,…。作为响应,LDPC编码器620依照LDPC码生成E个冗余码元。由LDPC编码器计算的冗余码元数E等于R-D-1,其中R是冗余码元数。如本领域技术人员已知的,存在使用LDPC码编码信息的各种方式。LDPC码可以由包括一组消息节点、一组校验和将消息节点连接到校验节点的边的图结构来表示。该组有效LDPC码字是消息节点的设置的集合,使得对每一校验节点,相邻消息节点的XOR为0。在某些应用中,较佳的是消息节点都具有相同的阶数,即,都被连接到相同数量的校验节点,因为这简化了编码器的实现,并使得解码器的差错概率的计算更简单。LDPC编码器620可用纠错和消除纠正码领域的技术人员已知的任何数量的方式来实现。
图8示出了采用图7所示的静态编码器的本发明的一个实施例的操作。具体地,BCH编码器610从输入码元缓冲器625(或图2中的205)接收输入码元,并生成D+1个BCH编码的冗余码元,它们被储存在输入码元缓冲器625中。然后,LDPC编码器620从输入码元缓冲器625接收输入码元和D+1个BCH编码的冗余码元,并生成E个LDPC编码的冗余码元,它们被储存在输入码元缓冲器625中。
如上所述,在某些实施例中,LDPC编码器620接收由图1的静态键生成器130生成的静态键S0,S1,…。在一个实施例中,静态键生成器130是在接收到种子之后生成随机查找数序列(静态键S0,S1,...)的随机数生成器。种子可采取各种形式。例如,它可以是真正随机数生成器的值。作为另一示例,种子可以是以确定性的方式从CPU时钟获得的串。不论种子是什么,它都应当被传递到解码器,使得可由解码器生成相同的静态键序列。因此,在许多应用中,有利的是具有不是太大的种子。在许多应用中,种子可以是32位整数或64位整数。
再次参考图1,在某些特定应用中,要通过信道145发射的文件或流相当小。例如,输入文件可以是短音频消息或包括几万字节的网页内容,或是几千或更少比特的集合。上述静态编码器的特定实施例在这些情形下可能不是最优的。例如,某些上述实施例可能导致对存储器和处理器速度的低效使用,且因此会降低数据重构的速度。同样,某些上述实施例可能要求更大的接收开销以在由系统用户设置的可靠性参数内重构数据。另外,某些上述实施例可能导致重构比所需要的更不可靠的数据。
据发现,当输入码元数增加时,解码器的故障概率也增加。也发现,这很大程度是由于如果原始内容的大小相对较小,则编码过程未创建关于原始内容的足够信息。因此,描述了编码器的另一实施例,它生成传达关于原始码元的更多信息的冗余码元。
图9是依照本发明的一个实施例用于编码的过程的简化流程图。
如此处所示出的,在步骤805,变量i被初始化为0。变量i跟踪已经生成的冗余码元数。在步骤810,计算数字t,作为大于或等于K/2的最小奇整数。在步骤815,基于K、t和静态键Si生成值P1,P2,…,Pt。值P1,P2,…,Pt指示将用于生成冗余码元的输入码元的位置。在一个特定实施例中,诸如图5的关联器515等关联器用于生成P1,P2,…,Pt。具体地,值t可作为W(I)输入提供,值K可作为K+R输入提供,静态键Si可作为键I输入提供。应当注意,许多不同的t值将产生类似的编码效果,且因此该特定选择仅是一个示例。
在步骤820,RE(i)的值被计算为值IS(P1),IS(P2),…,IS(Pt)的XOR。在步骤825,将变量i递增1,以准备下一冗余码元的计算,且在步骤830,确定是否计算了所有的冗余码元。如果否,则该流程返回到步骤815。
解码器图10是示出依照本发明的解码过程的简化框图,它可以由诸如图1的解码器155等解码器来实现。
该过程在各级中解码动态输入码元。在步骤905,解码器设置所接收的输出码元的关联的列表。这意味着对于每一输出码元,解码器计算一组相关联的动态输入码元,并将该信息储存在某一表中。为此,解码器能够访问对应于所接收的输出码元的键,以及输入码元数K和冗余静态码元数R。在步骤910,解码器将校验码元列表连同其关联一起添加到输出码元的关联的表。在本发明的较佳实施例中,校验码元表示动态输入码元之间的依赖性。例如,如果一个校验码元的关联是索引为10、19和32的动态输入码元,则这意味着对应的动态输入码元的XOR等于固定值。在本发明的较佳实施例中,该值为0,但是这不是必需的。
在步骤915,该过程初始化校验码元的值以及输出码元的值。在该步骤中,初始化意味着将可能输出码元值和校验码元值的集合的概率分布分别与每一个别的输出和校验码元相关联。该概率分布可以用一个较小的精度给出,以提高以下步骤的计算效率。所分配的概率也可以对大多数输出或校验码元字符表的值为0。例如,在本发明的较佳实施例中,当校验码元的值为0时,对应的概率分布对0分配值1,且将0值分配给校验码元字符表的任何其它元素。
步骤920和930迭代地更新动态输入码元的概率。对于该任务有若干已知的算法,诸如信任传播算法(belief-propagation algorithm)及某种变体,例如最小求和(min-sum)算法,或量化信任传播算法。一般而言,在这些算法中,输出或校验码元与动态输入码元之间的每一连接携带两个概率分布,它们在每一轮中被更新。这些概率分布被看做在该算法期间来回传递的消息。在算法的第一轮中,校验和输出码元将其自己的概率分布传递到其相关联的动态输入码元。这指定了输入和校验码元与动态输入码元之间的连接上的一组消息。在下一轮中,每一动态输入码元基于它沿所有其它连接接收到的消息,对每一这样的连接计算第二消息。之后,每一校验或输出码元基于它从所有其它连接等接收到的消息,在每一连接上更新第一组值。在每一轮的结束,动态输出码元基于进入的概率分布计算对其值的最佳猜测,并确定它们是否对其值有合理的确定(步骤930)。如果所有的动态输入码元都获得了关于其值的预定级别的确定性,则该过程终止。
这一消息传递过程的若干修改是可能的。例如,如果在该过程的一次或多次迭代期间,并非所有的动态输入码元都获得了关于其值的足够的确定性,则这些值可以由解码器设置,相关联的输出和校验码元的概率分布相应地改变,且可从解码过程中移除那些动态输入码元。在某些情况下,这一过程可导致对计算资源的实质上的节省。另一可能的修改是单独考虑动态输出码元和校验码元,并在解码的不同级中使用它们。在某些实施例中,这一时分可能是有用的,且允许使用静态码元来恢复剩余的差错,这些差错在处理了所有动态输出码元之后仍保留。例如,解码器可通过仅考虑动态输出码元,且不更新校验和输入码元之间的连接的值来启动。这些连接上的值可以在重复了该过程规定的迭代次数之后才更新,或在解码器达到了稳定状态之后或依照某一其它准则来更新。
现在提出上述解码器的一个特定实施例。在该实施例中,输出码元字符表是由0和1构成的二进制字符表。由此,该字符表上的概率分布可以由单个非负实数p来描述,p被假定为获得1的概率。在相关联的动态输入码元和输出及校验码元之间传递的消息可以是任意的实数,按照按照表示数的两个特定的消息Inf和-Inf来增加,使得-Inf小于任何其它数,而Inf大于任何其它数。在这一情况下,每一输出码元是与描述该输出码元在传输之前为1的概率的相关联的数字一起接收的。步骤915对每一输出码元初始化这些值,并且另外将校验码元的值初始化为0(意味着校验码元的值以1的概率为0)。
这一情况下的更新规则如下在第一轮中,每一输出或校验码元将其初始值发送给其相关联的动态输入码元。从这点开始,每一动态输入码元向其相关联的输出或校验码元S发送以下值对于除S以外的所有相关联的码元,动态输入码元接收概率p,计算ln(p/(1-p)),将这些数字相加以获得数字t,并向S发送1(exp(t)+1),其中ln(x)是x的自然对数,而exp(x)是x的指数函数。在下一轮中,每一输出或校验码元向其相关联的动态输入码元I发送以下值计算从除I之外的所有相关联的动态输入码元传入的所有数字,并对每一这样的数字计算1-2*a,将这些数字相乘,并将结果乘以1-2*z以获得数字b,其中z是码元的初始值,并向I发送(1-b)/2。
上述过程使用了公知的信任传播算法,因此无需在此更详细描述。可改为使用其它变化。
图11中例示了解码器155的一个不同的实施例。它包括动态解码器1005和静态解码器1010。动态解码器1005从图1中的接收模块150接收输出码元B(Ia),B(Ib),…,并从动态键生成器160接收动态键Ia,Ib,Ic,…。在接收到这些数据之后,动态解码器1005试图重构输入码元IS(0),…,IS(K-1)以及冗余码元RE(0),…,RE(R-1)。重构可以通过采用例如信任传播算法或任一其变体,用与对通用解码器所描述的相同的方式进行。本发明的某些实施例的一个优点是动态解码器1005无需完成所有输入码元的解码。相反,静态解码器1010可用于解码动态解码器1005不能恢复的输入码元。这在解码器以上述方式使用时分策略时特别有用。
对应于动态解码器1005所获得的输入码元和冗余码元的概率分布被储存在重构缓冲器1015中。在完成了动态解码之后,静态解码器1010试图恢复动态解码器1005未恢复的任何输入码元(如果有)。具体地,静态解码器1010从重构缓冲器1015接收输入码元和冗余码元。另外,静态解码器1010从静态键生成器163(图1)接收静态键S0,S1,S2,…(如果使用)。再次参考图1,在一个具体实施例中,可通过通过通信信道145向驱动静态键生成器163的随机数生成器164传递由随机数生成器135使用的公共种子来重新生成静态键。
所恢复的输入码元被提供给输入文件重新组装器165。静态解码器可遵循与此处所描述的其它解码器相同的原理。然而,在本发明的某些实施例中,较佳的是对静态解码器使用更快速的解码算法,诸如本领域的技术人员已知的位翻转(bit-flipping)解码器。在某些情况下,例如当静态编码包括诸如BCH码的等传统码时,静态解码过程可包括两个不同的解码器,一个用于LDPC码(如果使用了该码),另一个用于BCH码。用于LDPC码的解码器可以是信任传播解码器或任何其变体,或者它可以是任何其它有效的解码算法,诸如位翻转算法。用于BCH码的解码器可以是采用本领域的技术人员已知的Berlekamp Massey算法的标准解码器,或者它也可以是信任传播解码器。
图12是示出依照本发明用于解码的方法的一个实施例的简化流程图。在步骤1105,由解码器接收Q个输出码元。Q的值可以取决于输入码元数和使用的具体动态编码器。该值可以由接收模块,诸如接收模块150来转发,其运作将在下文中详细描述。Q的值也可取决于解码器可恢复输入码元可达到的期望的准确性程度。例如,如果期望解码器可以用高概率恢复所有的输入码元,则Q应当被选为大于输入码元数。具体地,在某些应用中,当输入码元数较大时,Q可以比原始输入码元数大3%不到。在其它应用中,当输入码元数较小时,Q可以比输入码元数大10%。如果不能解码所有的输入码元对解码器而言是可接受的,则Q可以小于输入码元数。很清楚,总体解码系统的一个目的通常是尽可能地减少数Q,而同时维持对于解码过程成功的良好概率保证。
在步骤1110,诸如动态解码器1005等动态解码器从Q个接收到的输出码元中重新生成输入码元和冗余码元。可以理解,步骤1105和1110实质上可以同时执行。例如,动态解码器可在解码器接收Q个输出码元之前开始重新生成输入码元和冗余码元。
在动态解码器处理了Q个输出码元之后,它确定是否恢复输入码元达到了期望的准确性程度。期望的准确性程度可以是,例如所有输入码元,或小于所有输入码元某一数字、百分比等,或者如果使用了信任传播或任何其它软决策方法,则是对特定动态输入码元的某一可接受的概率。如果是,则该流程结束。如果否,则该工流程前进到步骤1120。在步骤1120,诸如静态解码器1010等静态解码器试图恢复动态解码器无法恢复的任何输入码元。在静态编码器处理了由动态编码器恢复的输入码元和冗余码元之后,该流程结束。
图13是示出依照本发明的各方面用于解码的方法的另一实施例的简化流程图。该实施例类似于相对于图12所描述的实施例,并包括公共的步骤1105、1110、1115和1125。但是,在步骤1125之后,该流程图前进到步骤1130,其中确定输入码元是否被恢复达到期望的准确性程度。如果是,则该流程结束。如果否,则该流程前进到步骤1135。在步骤1135,接收一个或多个附加输出码元。然后,该流程返回到步骤1110,使得动态解码器和/或静态解码器可试图恢复剩余的未恢复的输入码元。
图14是示出依照本发明用于解码的方法的又一实施例的简化流程图。该实施例涉及上述时分过程。在步骤1155,解码器接收输出码元,且在步骤1160,动态解码器从所接收的输出码元中重新生成输入码元和冗余码元。然后,在步骤1165,确定是否应当结束动态解码。该确定可以基于所处理的输出码元数、所恢复的输入码元数、恢复附加输入码元的当前速率、处理输出码元所花费的时间等的一个或多个。可以理解,步骤1155、1160和1165实质上可以同时执行。例如,动态解码器可在解码器继续接收输出码元时开始重新生成输入码元和冗余码元。另外,对是否停止动态解码过程的评估可以在接收输出码元的同时和/或在动态解码器处理输出码元的同时周期性地执行。
在步骤1165,如果确定不要停止动态解码,则该流程返回到步骤1155。但是,如果在步骤1165确定要结束动态解码,则该流程前进到步骤1170。在步骤1170,确定是否恢复了输入码元达到期望的准确性程度。如果是,则该流程结束。如果否,则该流程前进到步骤1175。在步骤1175,静态解码器试图恢复动态解码器未能恢复的任何输入码元。在静态编码器处理了由动态编码器恢复的输入码元和冗余码元之后,该流程结束。
接收模块参考图1,接收模块150的主要任务是从信道接收输出码元,对码元计算概率分布,并将该信息连同输出码元的键一起转发到解码器。在某些实施例中,接收模块还计算对接收到的输出码元所包含的关于未知输入码元的信息量的估计,并且它可使用该估计以在输出码元的累计信息足以恢复输入码元时停止对其它输出码元的接收。这一估计可以是非常粗略的(例如,仅仅是值是“正确”还是“不正确”的指示),或是非常精细的(例如,码元的值是来自输入字符表的给定值的概率)。估计本身可能是有差错的,尤其是当估计非常粗略的时候。
实际上,概率分布可以基于表示输出码元的通信信号的力度和强度来估计。例如,这一数据可从解调技术中获得。作为一个示例,假定每一输出码元由两个比特构成,它们使用四相相移键控(QPSK)方法来解调,并且进入载波的相位被估算为z。然后,可在传输之前对输出码元的值的概率分布,其中四个值中的任一个的概率与对应的QPSK星座图与接收到的相位z的距离或距离的某一函数成正比。该概率分布也可以结合考虑到信号的强度或其它物理特征的项。
尽管最简单的可能是令每一输出码元包括在载波上调制的一个码元,诸如对QPSK调制方案中的两个比特编码每一输出码元,然而本发明不必限于这些情况。例如,一个输出码元可以对两个或多个调制码元编码,诸如每一输出码元包括四个QPSK调制码元。在该示例中,每一输出码元对8个比特编码,并且可具有多达63个值的概率分布(假定可由所接收的输出码元编码的64可能的比特序列,少1是因为它可被计算为其它63个值的总和减1)。
一旦获得了概率分布,输出码元中的信息量的估计可被计算为概率分布的二进制熵。换言之,如果分布在传输之前向输入码元的m个可能的配置分配概率p1,p2,…,pm,则码元中对应的信息量等于1+p1*log(p1)+P2*log(p2)+…+pm*log(pm),其中log(x)是x的二进制对数。如上所述,接收模块可添加每一进入输出码元中的信息量,以获得对输出码元所传递的关于输入码元的总信息量的估计。
关联器实现再次参考图5,示出了关联器515的一个实施例,且该关联器类似于Luby I中所描述的那些关联器。由此,当N是K+R时,N输入处的值应当是质数。在操作中,当该实施例用于计算AL(I)时,调整输入大小K+R,使得它为质数。在较佳实施例中,选择冗余码元数足够大,使得K+R为质数。在某些应用中,N输入为质数的条件是相当有限制的。
图15示出了用于实现对其N无需是质数的关联器的方法。首先,在步骤1805,变量k被初始化为0。然后,在步骤1810,生成随机整数Y。在一个具体实施例中,输出码元的键I用作随机数生成器的种子。然后,在步骤1815,将整数Y对N取模,以产生0和N-1之间的数字。在步骤1820,对照先前生成的其它数字Y测试候选数字Y(X(0),X(1),…)。如果数字Y先前已被生成,则该流程返回到步骤1810。否则,在步骤1825,它被包括在列表X(0),X(1),…中。然后,在步骤1830,确定是否生成了W(I)个数字。如果否,则该流程返回到步骤1810。图15所示的流程的结果是W(I)个数字的列表X(0),X(1),…,X(W(I)-1),其中列表中的每一数字X是0和N-1之间的唯一整数。然后,在步骤1835,列表AL(I)被设为数字X(0),X(1),…,X(W(I)-1)。
权重选择器实现编码器/解码器的性能和效率取决于由图2所示的动态编码器220生成的输出码元的权重的分布,且某些分布比其它的要好。具体地,对描述所收集的输出码元数与输入码元数K相比的超出的参数A的选择主要是受权重分布的选择的影响。权重选择的操作方面在下文中讨论,之后是对某些重要权重分布的描述。图16的框图和图17的流程图用于示出这些概念。
图5所示的权重选择器510的任务如下在接收到键I以及长度K+R之后,权重选择器输出范围0到K+R-1之间的整数W(I),称为权重。与理想地随机均匀生成整数的关联器515不同,期望权重选择器515的输出不是均匀的,而是有利于某些权重偏斜,如以下所描述的。
如图16所示,权重选择器510包括两个WT_INIT 1905和WT_CALC 1910,以及两张表WT_RBITS 1915和WT_DISTRIB 1920。进程WT_INT 1905只需在传入第一个键以初始化表WT_DISTRIB 1920时被调用一次。对WT_DISTRIB 1920的设计是系统的一个重要方面,且在稍候更详细地考虑。在每次调用来基于键I产生权重W(I)时调用进程WT_CALC 1910。如图17的流程图中所示,WT_CALC 1910使用键I和储存在表WT_RBITS 1915中的随机比特来生成随机数T(2005)。然后,T的值用于选择表WT_DISTRIB 1920中的行号N。
如图16所示,WT_DISTRIB 1920的RANGE(范围)列中的条目是在值MAX_VAL处结束的递增的正整数序列,而WT列是在值MAX_WT处结束的递增的正整数序列。T的可能值的集合是0和MAX_VAL-1之间的整数。期望的特性是T有同等的可能性是可能值范围中的任何值。N的值是通过搜索RANGE列,直到找到满足RANGE(N-1)≤T≤RANGE(N)的N(2010)。一旦找到了N,将W(I)的值设为WT(N),即表WT_DISTRIB的WT列的第N个条目,并且这是返回的权重(2015,2020)。在图16中,对于所示的示例表,如果T等于38,500,则找到N为4,且因此将W(I)设为WT(4)=8。
选择权重分布用于解码过程的主要的较佳优化参数使得输入文件可如下完全重构a)使用尽可能少的输出码元,b)使用尽可能少的操作,以及c)以尽可能多的可靠性。通常,所有这些优化选择可通过对输出码元选择正确的权重分布(即,所有I上的分布W(I)),以及输出码元上的关联的分布(即,所有I上的AL(I)的成员资格)来满足。应当强调,尽管可不考虑权重分布和关联选择上的分布来应用解码过程,但较佳实施例将使用特别为几乎最优的性能特别选择的权重分布和关联选择上的分布。事实上,许多分布都表现良好,因为选择的分布中的小变化仅仅导致性能中的小变化。
一个较佳实施例中用于确定分布的一种方法使用了本领域的技术人员熟悉的密度评估的技术。用于设计权重分布的另一种方法使用了高斯逼近,且设计问题可被转换成使用线性规划方法可解的问题。这一方法可由生成权重分布的组件用于本发明。
现在将描述一个这样的权重分布。权重分布作为表1所示的形式的表给出,其中P1是具有权重W1的输出码元的概率,P2是具有权重W2的输出码元的概率,等等,目其中P1,P2,…的和为1。
表1权重概率W1 P1W2 P2W3 P3… …采用这一分布,图16的表WT_DISTRIB 1920将具有表2所示的形式。
表2行号权重范围0 W1 MAX_VAL*P11 W2 MAX_VAL*P22 W3 MAX_VAL*P3… … …
测试的一个样本分布具有表3所示的形式。
表3权重概率1 0.010002 0.424943 0.251954 0.035765 0.1232110 0.0902739 0.0477240 0.01894表3的分布(由于舍入不等于1.00000)在实践中表现相当良好。例如,从长度为1000的输入大小上的10000次运行中,解码器仅在4次运行中无法解码输入码元。在这一情况下使用的静态码是具有消息阶数等于4,且校验阶数是二项分布的LDPC码。静态码的速率是0.97。所收集的输出码元数除以最优输出码元数等于1.2;这转换成20%的接收开销。
一个较佳实施例中用于确定分布的另一方法是使用Luby I或Shokrollahi I中所描述的相同或相似的阶数分布。尽管这些分布是为其中仅预期到删除的传输信道来优化的,而不是对差错或错乱的数据而优化的,但它们仍在模拟中展示了良好的性能。例如,表4中给出的分布允许在其中输入字符表包括两个比特且破坏是由均值为0及标准差为σ的高斯随机变量引起的信道上,对超过65535的K值,对范围在0-2的σ,且以少于10%的开销,用至少为1-10(-6)的概率完全纠正了K个输入比特。
表4权重概率1 0.0082 0.4943 0.1664 0.0735 0.0838 0.056
9 0.03719 0.05665 0.02566 0.003EC-MS码的系统编码SED-CRC的教导可用于为EC-MS码设计系统编码器。此处,首先使用系统键序列来解码输入码元,以生成中间输入码元序列。接着,向该中间输入码元序列应用多级码,以生成输出码元,其中某一些构成原始输入码元。在下一步中,使用此处所描述的方法来解调接收到的输出码元,以恢复中间输入码元序列。之后,再次使用系统键来编码该序列以获得输入码元序列。
在某些实施例中,使用了类似诸如Shokrollahi I中所描述的多级编码器,但在比特而非分组上工作的编码器。在某些其它实施例中,诸如Luby I中所示的单级码可能与接收器中的概率分布累积相组合。
现在已相对于具体实施例描述了本发明,且应当理解,本发明旨在覆盖落入所附权利要求书的范围内的所有修改和等效技术方案。
权利要求
1.一种通过通信信道接收从源发射的数据的方法,其中,所述数据是作为多个输出码元发射的,且是从组合的输入码元和冗余码元集合中的至少一个码元生成的,其中,至少一个输出码元是从所述组合的集合中的一个以上码元以及所述组合的集合中少于全部码元中生成的,其中,所述组合的集合中的给定码元集的可能有效输出码元数对于任何预期大小的输入文件,实际上相对于所述输入文件中的输入码元数是无限的,其中,所述输入码元来自一有序输入码元集,且其中,所述冗余码元是从所述输入码元生成的,所述方法包括从所述通信信道接收输出码元,其中,所述通信信道可能具有引入的差错和/或删除;在接收到所述输出码元的至少一个子集之后,至少确定对输出码元概率分布的估计,其中,输出码元概率分布表示给定接收到的输出码元时,发射特定的输出码元的概率;从所述输出码元概率分布的估计中确定输入码元概率分布,其中,输入码元概率分布表示已被编码的特定的输入码元形成所接收的输出码元的概率;从所接收的输出码元重新生成所述组合的集合中的码元的至少一个子集,所述组合的集合中的码元的子集包括多个重新生成的输入码元和多个重新生成的冗余码元;以及在接收到所述输出码元的至少一个子集之后,从所述输出码元重新生成所述组合的集合中的码元的至少一个子集,所述组合的集合中的码元的子集包括多个重新生成的输入码元和多个重新生成的冗余码元,其中,所述重新生成步骤使用所述输入码元概率分布。
2.如权利要求1所述的方法,其特征在于,还包括对于所接收的输出码元,确定与所接收的输出码元相关联的信息质量;累积与多个接收的输出码元相关联的总信息量;以及当所述累积的总信息质量相对于所述有序输入码元集的信息内容量满足预定义准则时,触发一个或多个重新生成步骤。
3.如权利要求2所述的方法,其特征在于,所述预定义准则包括所累积的总信息等于所述有序输入码元集的信息内容量加上小的附加信息量的准则。
4.如权利要求3所述的方法,其特征在于,所述小附加信息量是所述有序输入码元集的信息内容量的一个百分比。
5.如权利要求4所述的方法,其特征在于,所述百分比小于10%。
6.如权利要求4所述的方法,其特征在于,所述百分比小于5%。
7.如权利要求1所述的方法,其特征在于,输出码元概率分布的每一个是两个概率的每一个上的概率分布,可被表示为单个概率。
8.如权利要求1所述的方法,其特征在于,输出码元概率分布包括在一个解码阶段中具有粗略量化,而在另一解码阶段具有精细量化的概率值。
9.如权利要求1所述的方法,其特征在于,输出码元概率分布包括其每一个采用两个值中的一个的概率值,所述两个值中的一个表示高概率,而另一个表示低概率。
10.如权利要求1所述的方法,其特征在于,输出码元概率分布包括具有粗略量化的概率值。
11.如权利要求1所述的方法,其特征在于,输出码元概率分布表示输出码元的每一比特的概率,指示该比特在传输时是1或0的概率。
12.如权利要求1所述的方法,其特征在于,输出码元概率分布表示在输出码元所有比特上的概率,指示输出码元传输时每一可能的值的概率。
13.如权利要求1所述的方法,其特征在于,输出码元概率分布表示在用于传递输出码元的数据码元值上的概率。
14.如权利要求1所述的方法,其特征在于,所述概率分布作为当估计的概率为0时不包括可能发射的比特或码元的条目的数据结构而存储。
15.如权利要求1所述的方法,其特征在于,每一输出码元与从键字符表中选择的键I相关联,且键字符表中的可能键的个数对于任何预期大小的输入文件,相对于所述输入文件中的输入码元数实际上是无限的。
16.如权利要求1所述的方法,其特征在于,所述冗余码元包括第一多个冗余码元和第二多个冗余码元,其中,所述重新生成至少某些未重新生成的输入码元的步骤包括从所述第一多个冗余码元的重新生成的冗余码元和所述多个重新生成的输入码元中重新生成所述未重新生成的输入码元和所述第二多个冗余码元中未重新生成的冗余码元中的至少一个;以及如果所述从所述第一多个冗余码元中重新生成的冗余码元以及所述多个重新生成的输入码元中重新生成的步骤未重新生成输入码元达到期望的准确性程度,则从所述第二多个冗余码元的冗余码元以及所述多个解码的输入码元中重新生成至少一个未重新生成的输入码元。
17.如权利要求16所述的方法,其特征在于,所述未重新生成的输入码元和所述第二多个冗余码元的未重新生成的冗余码元中的某一些是使用LDPC解码器重新生成的;且其中,所述某些输入码元是使用汉明解码器从所述第二多个冗余码元的冗余码元中重新生成的。
18.如权利要求16所述的方法,其特征在于,所述期望的准确性是完全恢复所述输入码元。
19.如权利要求16所述的方法,其特征在于,所述期望的准确性是以高概率完全恢复所述输入码元。
20.如权利要求1所述的方法,其特征在于,重新生成至少某些未重新生成的输入码元包括重新生成所有输入码元。
21.如权利要求1所述的方法,其特征在于,重新生成至少某些未重新生成的输入码元包括重新生成少于所有输入码元。
22.如权利要求1所述的方法,其特征在于,纠错是通过对给定输入码元跟踪对一个以上概率的概率估计,然后选择最高概率估计来完成的。
23.如权利要求1所述的方法,其特征在于,概率分布包括基于信道噪声的概率估计,使得更肯定的概率是从通信信道中的低信噪比得出的。
24.如权利要求1所述的方法,其特征在于,概率分布包括基于接收到的信号和该接收到的信号的可能值之间的距离的函数的概率估计。
25.如权利要求1所述的方法,其特征在于,接收到的输入码元中的信息量的估计可被计算为所述接收到的输出码元在可能发射的输出码元上的概率分布的二进制熵。
全文摘要
一种通信系统包括产生多个冗余码元的编码器。对于给定的键,从包括输入码元和冗余码元的组合的码元集中生成输出码元。输出码元一般彼此独立,且若需要可生成实际上无限数目的输出码元(服从所使用的键的解)。输出码元是信息加性的,使得接收到的输出码元即使在已经接收到许多码元时也提供了用于解码的附加信息。输出码元使得接收到的输出码元的集合能够提供概率信息以支持纠错。解码器从所接收到的输出中计算校验码元,其中每一校验码元与一个或多个输入码元和冗余码元相关联。对于每一接收到的输出码元,解码器更新估计的信息内容的累计,且在一轮或多轮中对每一输入码元生成输入码元的所有或部分可能值的概率分布。该过程可被重复,直到对所有输出码元,众多可能值之一比其它可能值概率更大,或者可重复该过程预定的轮数,或者满足其它的准则。更新可考虑已经解码的码元、附加的输出码元和校验码元。
文档编号H04L1/00GK1954501SQ200480029083
公开日2007年4月25日 申请日期2004年10月6日 优先权日2003年10月6日
发明者M·A·肖克罗拉希 申请人:数字方敦股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1