应用于对各类码进行编码和解码的原地变换

申请号 CN200680029326.0 申请日 2006-06-12 公开(公告)号 CN101243664A 公开(公告)日 2008-08-13
申请人 数字方敦股份有限公司; 发明人 M·G·卢比; M·A·肖克洛拉希;
摘要 在使用具有 存储器 限制的计算设备编码数据码元的 编码器 中,一种执行变换的方法包括:将源 块 加载到该计算设备的存储器中;执行小于该源块的全部的中间变换,然后在存储器中用中间结果替换该源块的一部分并随后以存储在存储器中的输出码元构成经编码码元的集合的方式完成该变换。一种 解码器 以允许基本使用同一存储器来存储接收到的数据和已解码的源块的顺序执行解码步骤,从而就像执行原地(in-place)变换一样。使用原地变换,随着接收到的数据被变换为经解码的源数据,为接收到的数据所预留的大部分存储器可被重写而不需要类似大小存储器来用于经解码的源数据。
权利要求

1. 在将安排为多个源码元的数据编码为多个经编码的码元的编码器中,一种 执行从所述源码元到所述经编码的码元的变换的方法,其中所述源码元中的一定数 目即k个将被变换为n个经编码的码元,所述方法包括:
访问存储在第一存储器中的所述k个源码元;
执行第一变换步骤以计算对所述k个源码元进行操作的矩阵运算,从而产生 中间输出码元集,所述中间集中的至少一些码元构成所述n个经编码的码元中的一 些;
将所述中间输出码元集存储在所述第一存储器中,以替换所述k个源码元中 的至少一些,所述中间集中输出码元的数目小于所述数目n;以及
重复所述执行和存储步骤至少一次直至所述第一存储器包含至少所述n个经 编码的码元以及不到总数k个的源码元。
2. 如权利要求1所述的方法,其特征在于,在变换过程中所述第一存储器中 的最大码元数目不大于n+1和k+1中的较大值。
3. 如权利要求1所述的方法,其特征在于,在变换过程中所述第一存储器中 的最大码元数目与n+1和k+1中的较大值的接近程度远高于其与k+n的接近程度。
4. 如权利要求1所述的方法,其特征在于,n不等于k。
5. 如权利要求1所述的方法,其特征在于,n等于k。
6. 如权利要求1所述的方法,其特征在于,所述变换表示Reed-Solomon编 码。
7. 如权利要求1所述的方法,其特征在于,所述变换表示GRA编码。
8. 如权利要求1所述的方法,其特征在于,所述变换表示连反应编码。
9. 如权利要求1所述的方法,其特征在于,所述变换表示LDPC编码。
10. 如权利要求1所述的方法,其特征在于,在所述变换中使用的码元运算 的数目大致与所述矩阵的非零元素的数目成比例。
11. 如权利要求1所述的方法,其特征在于,在所述变换中使用的码元运算 的数目大致与所述矩阵的逆的非零元素的数目成比例。
12. 如权利要求1所述的方法,其特征在于,所述矩阵包括编码矩阵的允许 实现原地编码的分解。
13. 如权利要求1所述的方法,其特征在于,所述矩阵表示一种允许高效的 原地编码的码。
14. 在将安排为多个经编码的源码元的数据解码为多个经解码的码元的解码 器中,一种执行从所述经编码的码元到所述经解码的码元的变换的方法,其中所述 经编码的码元中的一定数目即r个将被变换为d个经解码的码元,所述方法包括:
访问存储在第一存储器中的所述r个经编码的码元;
执行第一变换步骤以计算对所述r个经编码的码元操作的矩阵运算从而产生 中间输出码元集,所述运算是编码矩阵的逆,所述中间集中的至少一些码元构成所 述d个经解码的码元中的一些;
将所述中间输出码元集存储在所述第一存储器中,以替换所述r个经编码的码 元中的至少一些,所述中间集中输出码元的数目小于所述数目d;以及
重复所述执行和存储步骤至少一次直至所述第一存储器包含至少所述d个经 解码的码元以及不到总数r个的经编码的码元。
15. 如权利要求14所述的方法,其特征在于,在变换过程中所述第一存储器 中的最大码元数目不大于r+1和d+1中的较大值。
16. 如权利要求14所述的方法,其特征在于,在变换过程中所述第一存储器 中的最大码元数目与r+1和d+1中的较大值的接近程度远高于与r+d的接近程度。
17. 如权利要求14所述的方法,其特征在于,r不等于d。
18. 如权利要求14所述的方法,其特征在于,r等于d。
19. 如权利要求14所述的方法,其特征在于,所述变换表示Reed-Solomon 解码。
20. 如权利要求14所述的方法,其特征在于,所述变换表示GRA解码。
21. 如权利要求14所述的方法,其特征在于,所述变换表示连锁反应解码。
22. 如权利要求14所述的方法,其特征在于,所述变换表示LDPC解码。
23. 如权利要求14所述的方法,其特征在于,在所述变换中使用的码元运算 的数目大致与所述矩阵的非零元素的数目成比例。
24. 如权利要求14所述的方法,其特征在于,在所述变换中使用的码元运算 的数目大致与所述矩阵的逆的非零元素的数目成比例。
25. 如权利要求14所述的方法,其特征在于,所述矩阵包括解码矩阵的允许 原地解码的分解。
26. 如权利要求14所述的方法,其特征在于,所述矩阵表示一种允许高效的 原地解码的码。
27. 一种通信系统,其中安排成多个即k个源码元的数据在发射机处被变换 为多个即n个经编码的码元,在通信信道上被发送并且所发送的经编码的码元的至 少一些在接收机处作为多个即r个接收到的码元被接收并且这r个接收到的码元被 变换为多个即d个经解码的码元,所述d个经解码的码元在d不小于k时表示所述 k个源码元,所述通信系统包括:
发送缓冲器,具有一大小,其中所述k个源码元所需的存储器的大小与所述n 个经编码的码元所需的存储器的大小合在一起总计大于所述发送缓冲器的大小;
发送生成逻辑,用于通过计算对所述k个源码元进行操作的编码矩阵运算生 成中间输出码元集,所述中间集中的至少一些码元构成所述n个经编码的码元中的 一些;
发送存储逻辑,用于将所述中间输出码元集存储在所述发送缓冲器中,以替 换所述k个源码元中的至少一些,所述中间集中输出码元的数目小于所述数目n;
流逻辑,用于使所述发送生成逻辑生成另一中间输出码元集并使所述发送存 储逻辑存储该中间输出码元集,以替换所述k个源码元中的另外一些码元,直至所 述发送缓冲器包含至少所述n个经编码的码元以及不到总数k个的源码元;
发送电路,用于在所述通信信道上发送所述n个经编码的码元;
接收电路,用于接收所述r个接收到的码元,其中所述r个接收到的码元是所 述通信信道传送所述n个经编码的码元的结果;
接收缓冲器,具有一大小,使得所述r个接收到的码元所需的存储器大小与所 述d个经解码的码元所需的存储器大小合在一起总计大于所述接收缓冲器的大小;
接收生成逻辑,用于通过计算对所述r个接收到的码元进行操作的解码矩阵运 算生成中间接收输出码元集,所述中间接收输出码元集中的至少一些构成所述d 个经解码的码元中的一些;
接收存储逻辑,用于将所述中间接收输出码元集存储在所述接收缓冲器中, 以替换所述r个接收到的码元中的至少一些,所述中间接收输出码元集中接收输出 码元的数目小于所述数目d;以及
流逻辑,用于使所述接收生成逻辑生成另一中间接收输出码元集并使所述接 收存储逻辑存储该中间接收输出码元集,以替换所述r个接收到的码元中的另外一 些码元直至所述接收缓冲器包含至少所述d个经解码的码元以及不到总数r个的接 收到的码元。
28. 如权利要求27所述的通信系统,其特征在于,所述逻辑包括要由可编程 处理器执行的程序代码指令。
29. 如权利要求27所述的通信系统,其特征在于,所述逻辑包括硬件电路。
30. 如权利要求27所述的通信系统,其特征在于,所述逻辑部分包括程序代 码指令且部分包括硬件电路。
31. 如权利要求27所述的通信系统,其特征在于,所述解码矩阵是所述编码 矩阵当中由所述接收到的码元中的至少一些定义的部分的逆,从而使得所述解码矩 阵乘以所述编码矩阵的所述部分恰好为单位矩阵。
32. 如权利要求27所述的通信系统,其特征在于,所述接收机是移动电话接 收机。
33. 如权利要求27所述的通信系统,其特征在于,所述接收机是适于车用的 接收机。
34. 如权利要求27所述的通信系统,其特征在于,所述发射机是移动电话发 射机。
35. 如权利要求27所述的通信系统,其特征在于,所述发射机是适于车用的 发射机。
36. 如权利要求27所述的通信系统,其特征在于,所述发射机是数字媒体发 射机,而所述接收机是数字媒体接收机。

说明书全文

发明领域

申请一般涉及数据编解码,尤其涉及在无需使用大量辅助存储器的情况下 计算数据的线性变换。

发明背景

许多应用通过变换在以下被称为“源”的给定数据块来实现它们的结果。 如在此所使用的,措辞“源块”是指存储在一个或多个源上的任何数据。因此,来 自文件服务器或计算机存储设备的文档、图像和文件都是源块的示例。源块可以具 有未知大小(诸如从流送源的输出所取出的源块)或它们可以具有已知大小(诸如 存储在硬盘上的一兆字节的图像)。总之,源块是一个或多个源码元的序列,其中 每个源码元是该源块中具有位置和值的一段数据。
这里,源块的变换是指为了实现某一结果而对该源块执行的动作。例如,在 源块由诸如相机的外围设备来捕捉的情形中,一种可能的变换是将该源块压缩到显 著更小的大小从而便于其在更小的存储设备上存储或便于更快地传输到一个或多 个可能的预期接收者。作为另一示例,源块可被指定在诸如计算机网络的信道或其 中具有预期的损坏或丢失的信道上传输。在这种情形中,可在传输前对源块进行变 换以增强其关于传输差错的稳健性。
在这些要求源块变换的许多应用中,特别有利的一点是执行变换以增强源块 对抗传输中出现的差错的稳健性。传输是通过信道将源块从一个或多个发送器发送 到一个或多个接收者以传递源块的过程。如果一个发送器通过一完美信道连接至任 意数目的接收者,则由于所有数据都将被正确接收,所以接收到的数据可以是原始 源块的精确副本。然而,在信道不完美的情形中,对于大多数实际信道都是这种情 形,或者数据从一个以上的发送器发射,对于一些系统即是这种情形,所接收到的 可能不是精确副本。
信道不完整性可以表示数据删除、数据不完全性、或数据损坏。数据传输的 动作不仅表示地理上相隔位置之间的数据传输,而且传输还可包括数据在物理上从 未移动的情形。例如,存储在可能有缺陷的存储介质上的源块可构成一种形式的传 输,因为当该源块被在此访问时可能会有数据损坏。
一种用以保护源块对抗可能的传输差错的常见过程是编码。采用编码,源块 被变换或从该源块计算出新的数据集(有时被称为“冗余”或“修复”数据)。经 变换的源块通常包含从原始源块计算出的冗余信息,使用该内部冗余的目的是为了 得到关于在传输过程中出现的差错的信息并纠正这些差错。关于设计和使用码的理 论和实践已有大量文献。
码的选择取决于具体应用以及将在其上进行传输的通信信道。通常,所选的 码具有一定的线性特性。例如,在源块是由作为位组的一个或多个源码元构成的情 形中,线性条件可保证两个源块的码元级(symbol-wise)和(映射)的编码等于 这两个源块的编码的码元级和(映射)。这种线性条件可极为有利地用来描述和计 算编解码过程。实际中使用的码的很大的子类都满足这种线性条件。
导致对源块的编码的变换的逆过程是解码过程。在该过程中,经编码的源块 的一(可能损坏的)版本以这种方式处理以得到对源块在传输前的原始状态的良好 (或者有时为可能的最佳)估计。
线性编码方案的许多益处之一是编码和解码过程可用矩阵来解释的事实。矩 阵是以二维数组形式包含若干项的数学对象。如本领域的技术人员已知的,矩阵可 被方便地用来表示对象之间的映射,例如组成源块的码元集之间的映射。
编解码过程常常得益于用以存储中间结果的辅助存储器的使用。例如,一些 解码过程可能要求在已解码的源块之外保持接收到的数据的副本。编解码过程所需 的辅助存储器的量对于具有有限资源的设备而言可能过大。例如,在设备是类似于 移动电话个人数字助理(PDA)等移动接收设备的情形中,设备上的存储器可能 较小,和/或该存储器可能已被预留给要在该设备上运行的其它应用。在这种情形 中,编解码过程应经济而有效地使用存储器,但这常常难以实现。
发明概要
在根据本发明的诸方面的解码器的一个实施例中,解码器被编程为以允许基 本使用同一存储器来存储接收到的数据和已解码的源块的顺序执行解码步骤,从而 就像执行原地(in-place)变换一样。使用原地变换,随着接收到的数据被变换为 经解码的源数据,为接收到的数据所预留的大部分存储器可被重写而无需一大部分 存储器用于接收到的数据以及近似大小的大部分存储器用于经解码的源数据。
通常,原地变换的使用导致特定过程运行时间的减少,因为该过程将花费较 少时间访问存储器,从而提供了除仅在于减小的存储器要求之外的更多益处。这避 免了如果存储数据的总大小过大则处理单元可能被迫使访问辅助的较慢存储设备 的问题。
本发明的实施例使用在无需使用大量的辅助存储器的情况下执行原地线性变 换的方法和过程。这些方法和过程可与源块的FEC编码和解码变换一起使用。
结合附图的以下具体描述将提供对本发明的实质和优点的更好的理解。

附图说明

这里的文本和等式示出了本发明的诸方面。
图1是采用根据本发明的实施例的FEC编码的通信系统的高层示图。
图2示出了与图1中的系统相类似但具有多个发送器和接收机的通信系统。
图3示出了可被用来实现发送器和/或接收机的硬件的一个示例。
图4示出了常规FEC解码过程。
图5示出了根据本发明的原地FEC解码过程的一个实施例。
图6是根据本发明的一实施例的变换过程的流程图
图7是系统Reed-Solomon码的原地解码方法的流程图。
图8是进一步示出了系统Reed-Solomon码的原地解码方法的流程图。
图9是一种向量计算方法的流程图。
图10是一种向量计算方法的流程图。
图11示出了可用于解码的矩阵。
图12示出了一矩阵及其变换。
图13示出了可用于处理的数据结构。
图14示出了一矩阵及其变换。
图15示出了一矩阵及其变换。
图16示出了一矩阵及其变换。
图17是一种方法的流程图。
图18是一种方法的流程图。
图19是一种方法的流程图。
图20是一种方法的流程图。
图21是一种方法的流程图。
图22是一种方法的流程图。
图23是一种方法的流程图。
图24是一种方法的流程图。
发明具体描述
基本使用同一存储器来存储接收到的数据和经解码的源块的过程通常被称为 原地变换。原地变换的使用通常导致特定过程的运行时间减小,因为该过程将花费 较少时间访问存储器。这是特别重要的,因为如果存储数据的总大小太大,则处理 单元将被迫访问次级、较缓慢的存储设备。本发明的实施例使用在无需使用大量辅 助存储器的情况下执行原地线性变换的方法和过程。这些方法和过程尤其适用于源 块的FEC(前向纠错)编码和解码转换。
虽然本发明适用于许多设备,但这里并没有明确描述所有情形。并非作为限 制的示例包括移动电话、计算机、手持计算设备、媒体播放器、通信设备、和/或 用以实现这些设备的硬件和/或软件
概览
图1中示出了在发送器110上采用FEC编码而在接收器140上采用FEC解码 的通信系统的高层示图。应该理解的是,发送器110和接收器140可包括较广范围 的设备。在许多实施例中,发送器和接收器被包含在单个收发器设备内并且两个或 多个这种设备可在其之间进行通信。
在图1中,发送器110包括FEC编码器120,该FEC编码器被用于向通过通 信信道130被发送到包括FEC解码器150的接收器140的数据添加保护。发送器 110可按包,例如网际协议(IP)包或其它形式的包,来发送由FEC编码器120 生成的数据,这些数据在每个包中包括允许接收器140确定该包中的数据是如何生 成和/或其表示发送数据的哪一部分的标识信息。
信道130可以是网络信道、无线信道、PSTN信道、或其它信道。通常,信道 130具有一些约束,在这些约束下由于某些条件而丢失数据。通常,对于包网络, 如果接收到的包的一部分不可读,则整个包被丢弃。因此,具有一些从发送器110 发送的包被认定为未在接收器140处接收到的情形,所以需要从这种丢失中恢复的 机制。
接收器140向FEC解码器150提供尽可能多的所需的接收到的包,而FEC解 码器150恢复所有或部分数据。FEC(前向纠错)提供了预先设于前向信道上以允 许在发生差错时进行纠错的机制。差错并不是一定存在,在这种情形下FEC工作 仅是一种备份,而在某些情形中,可能会发生多于使用FEC所能恢复的差错,在 这些情形下通信失败或者在请求重新传输等时发生辅助通信。
传输无需是点对点的。如图2中所示,系统可具有多个发送器和多个接收器。 图2示出了包括发送器210、接收器230、240以及发送器/接收器220的一种系统, 其中各自包括FEC编码器(211)、FEC解码器(232、242)、或这两者(222、 221)。在图2所示示例中,所有发送器、发送器/接收器以及接收器都可在信道250 上通信,该信道250可包括集成IP网络、不相交(disjoint)网络的组合、或网络 的其它类似组合。
图3更具体地示出了可被用来实现发送器和/或接收器的硬件的示例。如这里 所示的,FEC编码器/解码器305包括:CPU 310,用于执行操作;高速缓存320, 为CPU 310提供具有非常快速存取的临时存储;RAM 330,为CPU 310提供具有 相对快速存取的大量存储;以及盘340,为CPU 310提供具有合理存取速度的大量 永久性存储。
本实施例的许多其它变形是可能的。例如,高速缓存320可被划分为由操作 系统(OS)控制的一部分以及在FEC编码/解码过程的控制下用以从其它存储器设 备预载数据以备供CPU处理即直接存储器存取(DMA)操作的一部分。作为其它 示例,可能有一个以上等级的高速缓存,可能有诸如FLASH(闪存)等其它类型 的存储设备、以及可以省略诸如盘存储等某些存储类型。
更一般地,具有存储器的计算设备经常具有不同类的存储器。某些类的存储 器被认为比其它存储器“更近”,即更近存储器可能物理上更靠近处理器或具有更 快的响应速率,这允许相对于较远、需要更长导线、或较慢的存储器而言处理器可 更快地读取和/或写入该更近存储器。更具一般性地,由于等待时间、响应速率、 用以读取/写入存储器的位置所需能量的量、用以维持存储器中的信息的能量的量、 每位的成本以及其它考虑因素,一类存储器可能优于其它类。诸类存储器通常可按 优选程度来排序,其中将最快、最具功率效率的存储器作为优选。标准工程和设计 约束可指示多类存储器的使用。例如,可能不只是仅想要RAM高速缓存存储器, 因为如果这样就可能没有永久存储,而且也可能不只是仅想要盘存储器,因为如果 这样处理器存取就较慢。
如以上刚解释的,设备可具有按优选程度排序的不同类的存储器。当最优选 的存储器并非大至足以包含一特定计算操作的结果时,可能需要存储器管理,诸如 换出至次优选的一类存储器。这些操作在等待时间、计算成本、功率使用方面增加 成本,特别是在某些设备以及对于某些操作尤其如此,因此这里针对高效原地变换 所述的方法和装置为设备的这些操作提供了极大益处。
在图3的示图中,FEC编码器/解码器305可能控制各种存储器单元并且可能 存在处于正在使用FEC编码器/解码器305的应用的控制下的其它部分。因此,例 如当执行FEC编码时,该应用可控制其自己的要编码的源块副本,而FEC编码器 在一单独存储器位置中可具有其自己的由该应用传给它的源块副本。
在该示例中,不管该应用所使用的其它存储器如何,最小化FEC编码器所用 的存储器可能较为重要,并且在该示例中可能有这种情形,即FEC编码器在其为 该源块计算修复码元期间可重写部分或所有源块,因为该应用有其自己单独的源块 副本和/或因为该应用已经向信道发送了源块的部分而无需保持源块的这些部分的 副本。作为另一示例,通常在FEC解码期间,一旦编码码元已被用来恢复该源块 的原始源码元则保持该编码码元的副本就不重要了。
图4示出了常规FEC解码过程410(可能作为程序代码来实现),该过程可 使用CPU 405来根据存储在存储器420中的接收到的编码码元440生成源码元430 的源块,其中存储器420可包括图3中所示的类型或其它类型。如图所示,FEC 解码过程410用于码元存储所需的存储器的量通常为源块的总大小加编码码元的 总大小。类似评论也适用于常规FEC编码过程。
图5示出了根据本发明的原地FEC解码过程的一个实施例。在开始510时的 原地FEC解码过程的快照示出了用以处理存储在存储器520中的接收到的编码码 元530的CPU 505,其中存储器520可包括图3中所示的类型或其它类型。在结束 515时的原地FEC解码过程的快照示出了用以生成存储在最初由接收到的编码码 元530所占用的同一存储器520中的源块540的经恢复的源码元的CPU 505。另外, 在FEC解码过程的中间步骤中,用于码元的存储器略大于用以存储接收到的编码 码元530所需的存储器的量和用以存储经恢复的源码元540所需的存储器的量中的 最大值。因此,由于用以恢复源块所需的编码码元的总大小约为源块的大小,所以 原地FEC解码过程510和515在解码过程中使用约为常规FEC解码过程410用于 码元存储的存储器的一半。类似评论也适用于原地FEC编码过程。
在后续章节中,我们介绍实现图5中所绘优点的方法和过程。具体而言,我 们介绍对可被表示为线性码的FEC码的原地FEC编码和解码过程。
线性运算符
为了进一步示出示例实施例,我们将利用环的数学概念。在以下描述中,应 该理解各种数学过程和步骤可由计算/通信设备通过硬件操作、程序指令执行等来 实施。
如本领域的技术人员所公知的,环是其上定义了满足分配律的加法和乘法这 两种运算的集合。此外,仅考虑加法的该集合构成了阿贝尔群(abelian group), 即加法的结果与被加数的排序无关,对于加法有一中性元素0,而对于每个元素都 存在另一元素以使得这些元素的和为0。其它要求是乘法具有中性元素1,以使得 任何元素与1的乘积不会改变该元素的值。对于普通环而言,我们不要求任何非零 元素都具有乘法逆元素,也不要求乘法是可交换的。然而当这两个条件都满足时, 则我们将该称为“域”。此概念是代数领域中的一个标准概念。
如在此所用的,“码元”表示通常小于源块的一段数据。码元的大小通常可 用位来衡量,其中码元具有M个位的大小并且该码元是选自2M个码元的字母表。 例如在通过包网络进行可靠信息传输的应用中,码元的大小可以等于包大小,或者 可以更小以使得每个包包含一个或多个码元。
映射(码元级和)是可在硬件和/或软件等中实现的将相同大小的码元对映射 到该大小的另一码元的逻辑构造。我们用来标示该映射,并用来标示 对码元对(S,T)的这种映射的镜像。这种映射的一个示例是逐位异或(XOR)
这里使用的另一构造是一特殊类型的集合对码元的“动作”。假定A是具备 了可交换加法运算“+”的集合,该加法运算具有一中性元素并且对于每一元素 都包含其加性逆元素。这样一个集合通常也被称为阿贝尔群。该群对码元集合的“动 作”是将由群元素r和码元S组成的对映射为另一码元的映射。当这种映射在群中 遵守加法时,即对于群A中的每对元素a和b,都有 ( a + b ) * S = a * S b * S , 我们 用r*S来标示这种镜像。如果A是环且该动作也遵守在A的乘法,其中在乘法运 算符在A中为“·”,即(a·b)*S=a*(b*S),则我们将该动作称为“运算”。
对码元的环或域操作的示例是很多的。以下提到了少量示例。该示例列表仅 用于说明的目的,而不应被认为穷尽性列表,也不应被理解为限制本发明的范围。
其中加法为异或(XOR)且乘法为逻辑运算AND(与)的由0和1组成的域 GF(2),通过定义1*S=S和0*S=0来对码元集合进行操作,其中S标示任意码元 而0标示全部由0组成的码元。
域GF(4)由0、1、2、3四个元素组成,其中加法是整数的正常XOR而乘法通 过表1来定义。
表1.GF(4)的乘积

它按以下方式对相等大小的码元进行操作:对于码元S,我们分别用S[1]和 S[2]来标示其前一半和后一半,从而S=(S[1],S[2])。然后,我们定义
0*S=0
1*S=S
2 * S = ( S [ 2 ] , S [ 1 ] S [ 2 ] )
3 * S = ( S [ 1 ] S [ 2 ] , S [ 1 ] )
可快速验证这确实是一有效运算。可在具有2位的码元上定义该同一域的另 一运算。在用整数0、1、2和3标识这些码元的情况下,可以看出该域的乘法表描 述了与以上在2位码元情形中所定义的运算相吻合的运算。
更一般地,如果K是度(degree)为d的GF(2)的扩展域,则可在其大小可被 d除尽的码元上定义该域的一种运算。这种运算在作为1995年加利福尼亚州伯克 利的国际计算机科学协会的技术报告编号TR-95-048出版的Bloemer等人的“An XOR-Based Erasure Resilient Coding Scheme(基于XOR的删除弹性编码方案)中 进行了描述。这种方案使用了对作为具有二进制项的d×d矩阵的域K的所谓“正 规表示(regular representation)”。
“线性变换”的概念可参照对码元的环运算的概念来定义。对于给定的整数m 和n,由该运算导出的线性变换使用具有指定环中的项的矩阵空间将n个码元的向 量映射为m个码元的向量。环R上的矩阵是项的2维集,其中每项都属于R。如 果矩阵具有m行和n列,则其通常被称为m×n矩阵。对(m,n)被称为该矩阵的“格 式”。同一格式的多个矩阵可使用底层域或环中的加法和减法来被作加或作减。如 所公知的,格式为(m,n)的矩阵可与格式为(n,k)的矩阵相乘,从而产生格式为(m,k) 的矩阵。
如果B标示这样的一个矩阵,且B[j,k]标示B在位置(j,k)上的项,并且如果该 矩阵对向量(S[1],S[2],...,S[n])进行变换并且如果(X[1],X[2],...X[m])标示变换后的向 量,则以下关系有效:
对于从1到m的所有j, X [ j ] = B [ j , 1 ] * S [ 1 ] B [ j , 2 ] * S [ 2 ] . . . B [ j , n ] * S [ n ] .
如果S标示包括S[1],S[2],...,S[n]的列向量,并且X标示码元X[1],X[2],...X[m] 的列向量,则该变换可被表示为
X = B S
以上公式描述了在编码器或解码器中称为“简单变换过程”的从B和S计算X 的过程,它可由以下步骤执行:
1.将j设为1以及X[j]设为0。
2.对于值从1到n的k,作 X [ j ] = X [ j ] B [ j , k ] * S [ k ] .
3.将j递增1。如果j大于m,则停止,否则转到步骤2。
这种线性变换在各种应用中是常见的。例如,在使用线性码来对一段数据或 源块进行编码时,S可以是要编码的源块的源码元,X可以是S的经编码的版本, 而B可以是该码的生成矩阵。在例如所用码是系统性的其它应用中,X可以是S 的编码的冗余码元,而B可以是描述冗余码元对源码元的相关性的矩阵。在其它 应用中,S可以是在传输后从接收到的一组码元得到的码元向量,而X可以对应于 完全或部分未知的一组码元,以及B可以描述X与S之间的关系。例如当在面临 删除或差错时解码Reed_Solomon码即是这种情形。后者在授予Shokrollahi等人的 题为“Efficient List Decoding of Reed-Solomon Codes for Message Recovery in the Presence of High Noise Level(用于在存在高噪声电平情形下进行消息恢复的 Reed-Solomon码的高效列表解码)”的美国专利No.6,631,172中进行了更具体的 描述。
在许多情形中,需要在不使用超过存储S所用的存储器太多的存储器的情况 下从S计算出向量X。例如,在每个码元为512字节且m=n=1024的情形中,S和 X各自为512千字节大小。如果该变换要在具有600千字节的存储器的设备上实现, 在不使用辅助存储器的情况下将没有足够的存储器来同时保存S和X。
在这些场合中,需要一种其中S的变换被原地实现的过程。如果X小于S,则 这意味着S的前m项被X所代替,或者更一般地,S的一组指定的m个位置被X 的诸位置所代替。在X大于S的情形中,则该原地变换可被解释为S在变换后包 含X的前n项,或者更一般地,S在变换后包含X的一组指定的n项,而其余m-n 项被存储在别处。如果X和S长度相同,则该原地变换可用X来代替S。在应用中, 该过程不会使用太多的辅助存储器来实现其任务。因此,例如在其中计算出X并 将其存储在别处而在随后将其复制到S的存储器位置的解决方案将是具有不足的 解决方案。
原地线性变换
现在对原地线性变换的过程进行描述。令B为具有格式(m,n)的矩阵且令S为 n个码元的列向量。给定B和S,将向下方向上B乘以S的原地线性矩阵变换B↓S 定义如下:
对于所有i=1,2,...m
用B的第i行与当前S的内积来代替S[i]。
参照图6对计算该原地运算的过程进行了解释。在步骤610,整数变量i被初 始化为0。在步骤620,i的值被增至next(i),其中next(i)是使得B的行next(i)具有 至少一个非零项的大于i的最小整数,并且如果行i后的所有行都具有全零项则将 next(i)设为m+1。在步骤630,检查是否i>m,并且如果i>m则在步骤640停止处 理,但如果r≤m则处理行进到步骤650,其中一临时码元值T被设为0并且整数 变量j被设为0。在步骤660,值j被增至next(i,j),其中next(i,j)是使得在B的行i 中B[i,next(i,j)]为非零项的大于j的最小整数,并且如果行i中B[i,j]之后的所有项 全部为零就将next(i,j)设为n+1。在步骤670检查是否j>n,并且如果j>n则处理行 进到步骤680,其中码元S[i]被设为T并随后处理返回到步骤620。如果在步骤670 中j≤n则处理行进到步骤690,其中临时码元值T被重置为并且随 后处理返回到步骤660。
从以上描述和图6可清楚看出,计算B↓S总共需要存储的码元数目是n+1个 码元。
令B为具有格式(m,n)的矩阵且令S为n个码元的列向量。给定B和S,将向 上方向B乘以S的原地线性矩阵变换B↑S定义如下:
对于所有i=m,m-1,...1
用B的第i行与当前S的内积来代替S[i]。
参照图7对计算该原地运算的过程进行了解释。在步骤710,整数变量i被初 始化为m+1。在步骤720,值i被减至prev(i),其中prev(i)是使得B的行prev(i)具 有至少一个非零项的小于i的最大整数,并且如果行i前的所有行都具有全零项则 将prev(i)设为0。在步骤730,检查是否i<1,并且如果i<1则在步骤740停止处理, 但如果i≥1则处理行进到步骤750,其中一临时码元值T被设为0并且整数变量j 被设为0。在步骤760,值j被增至next(i,j),其中next(i,j)是使得在B的行i中B[i, next(i,j)]为非零项的大于j的最小整数,并且如果行i中B[i,j]之后的所有项全部为 零就将next(i,j)设为n+1。在步骤770,检查是否j>n,并且如果j>n则处理行进到 步780,其中码元S[i]被设为T并随后处理返回到步骤720。如果在步骤770中j≤n, 则处理行进到步骤790,其中临时码元值T被重置为并且随后处理 返回到步骤760。
从以上描述和图7可清楚看出,计算B↑S总共需要存储的码元数目是n+1个 码元。
令B为具有格式(n,n)的矩阵并且对于所有i=1,...,n,B[i,i]≠0。矩阵是从B 如下推导出的矩阵:

注意,可容易地从B计算出并且如果B是稀疏矩阵并且可被高效地存取, 则也是稀疏矩阵并且也可被高效地存取。还注意,如果B的各项是来自GF(2), 则 B ~ = B .
以上定义的↑,↓和~运算具有以下特性:令B为具有格式(n,n)的矩阵且对于 所有i=1,...,n,B[i,i]≠0,并且令S为n个码元的列向量。令S0标示S在应用任何 变换之前的值,即S=S0。则:
B ~ ( B S ) = S 0
B ( B ~ S ) = S 0
B ( B ~ S ) = S 0
B ~ ( B S ) = S 0
因此,例如和B↑原地运算从以上意义上而言是互逆。如本领域的技术人 员将认识到的,根据对称,我们也可定义例如S↓B和形式的原地运算符,其 中S是具有与以上所定义的相类似性质的m个码元的行向量。
数类矩阵的原地变换
现在对具有特殊性质的线性变换的原地计算过程进行描述。这些线性变换随 后被用于为更具一般性的线性变换的计算构造原地过程的构件块。在下面,S标示 m个码元的列向量,B标示例如可被视为GF(2)的扩展域(但该技术同样良好适用 于一般的K)的域K上格式为(m,n)的矩阵,并且在该过程的结束时,用于码元向 量S的存储存储变换的结果。
也有许多可用来最小化B所需的存储以及最小化计算这些运算所需的总计算 量,但一般而言这是比用于正被变换的数据所需的存储量小的存储量。例如,当B 为稀疏矩阵时,B的稀疏表示可能同样允许最小化计算所有运算所需的总计算量。 例如当B为稀疏矩阵时,则有许多比顺序搜索更有效的方法来找到B的特定行或 列中的下一非零项。在阅读本公开之后,这些类型的最优化以及可与这里所述的技 术结合应用的其它最优化对于本领域的技术人员应是显而易见的。
2.1置换矩阵
在该情形中,B是格式为(n,n)的置换矩阵,即它在每一行和每一列中恰好具有 一个非零项并且这些非零项为1。由于该矩阵是稀疏的,即具有非常少的非零项, 所以在许多应用中希望不是将其表示为矩阵而是表示为列表(或比矩阵使用更少存 储量的其它对象)。例如,B可以被表示为列表(B[1],...B[n]),其中(j,B[j])是B的 非零项的位置。
现在参照图18描述用B对S进行变换的过程。保存其中所有分量最初被初始 化为0的二进制向量v[1],...,v[n]。该过程将使用一标示为T的附加码元。最初,T 的值为全零。
在步骤805,变量c被设为0。该变量对已经访问了对应于B的数组的多少个 位置进行计数。在步骤810,该变量的值被递增1,并且在步骤815检查是否同时 满足条件c<n+1和v[c]=1两者。若满足,则这意味着数组的该位置c已经被访问, 并且还有其它位置要检查。过程返回到步骤810。若不满足,则c=n+1或者v[c]=0。 在前一情形中,所有位置都已被访问,从而过程在步骤825结束。该测试是在步骤 820执行的。如果在步骤820中c仍小于n+1,则必定v[c]=0,即位置c还未被访 问。在该情形中,辅助变量d在步骤830中被设为B[c]。该值等于在变换后S[c] 将所处的位置。在步骤835,作出查看d是否等于c的测试。若相等,则不再需要 进一步的操作并且处理跳到步骤860。在步骤860,v[c]的值被设为1,并且计数c 递增1。如果在步骤835中d不等于c,则在步骤840中交换T和S[c]的值。接着 在步骤845,交换T和S[d]的值,将v[d]设成等于1,并且将d设成等于B[d]。在 步骤850检查d的值是否等于c,并且如果为假则再次重复包括步骤845和850的 循环。如果d等于c,则处理跳出该循环并在步骤855交换T和S[c]的值。在步骤 860,将v[c]的值设为1,并且整个过程现在返回到c被递增1的步骤810。实际上, 所述过程以循环的形式分解了矩阵B所给出的转置,并且逐个地寻找和处理这些 循环。
在许多情形中,并非在存储器中移动S的码元来计算用B对S进行原地变换, 而是足以跟踪从S的码元的逻辑排序到S中的码元在存储器中的实际位置的映射而 不用移动存储器中S的码元。例如,可以如下维护一映射:令p[1],...,p[n]为从S 的逻辑码元到它们在存储器中实际位置的映射,即对于所有i=1,...,n,p[i]为S中第 i个逻辑码元在存储器中的位置。当使用该映射时,在通过置换矩阵B对S进行的 变换中,上述过程可被应用至p[1],...,p[n]以重新计算S的逻辑到存储器的映射来 代替如上所述地将其应用至S[1],...,S[n]。因此,用以描述图8中过程的变量T被 用于临时存储p[c]的值而非码元S[c],并且图8中被应用至码元向量S[1],...,S[n] 的所有逻辑都被代之以应用到向量p[1],...,p[n]。这种表示会是有利的,因为一般 而言在CPU存储器带宽以及其它资源方面,通常在存储器中移动少得多的 p[1],...,p[n]项比移动通常大得多的S[1],...,S[n]码元项成本要低。
单项矩阵
在该情形中,B是每一行和每一列中恰好一个非零项的格式为(n,n)的矩阵。转 置矩阵是单项矩阵的一个特殊情形。现在参照图9描述计算单项矩阵的原地变换的 过程。这种矩阵可被简单地描述为列表(B[1],..B[n];α[1],...,α[n]),其中对于j的所有 相关值,B[j]是B的行j中非零元素的位置,而α[j]是该非零位置的值。
计算关于B的原地变换的过程将用于计算关于B的置换部分的线性变换的过 程用作子过程。在图9的步骤905,该过程使用图8中所述的过程来计算 其中C是通过用1代替B的非零项来从矩阵B得到的转置矩阵。在步骤910,整 数变量i被初始化为0,并且随后在步骤920、940和950中执行一循环,其中对于 1与n之间的每个值i,S[i]被用α[i]对该位置的该运算即α[i]*S[i]来代替。当该循 环结束时,处理在步骤930停止。如本领域的技术人员所明晰的,参照图9所述的 过程计算出,因为B可被写为对项为α[1],...,α[n]对角矩阵与矩阵C的乘 积。此外,该过程中用于码元的存储为n+1。
上三角矩阵
令U是格式为(n,n)的上三角(对于所有j<i,U[i,j]=0)矩阵。则
U S = U S
即,原地运算U↓S得到与U乘以S的结果相同的n个码元的向量。此外,如果U 还是可逆的(对于所有i,U[i,i]≠0)则,
U ~ S = U - 1 S
即,原地运算导致与U的逆乘以S的结果相同的n个码元的向量。因此,矩 阵乘法和矩阵逆的乘法两者可用上三角矩阵的原地运算来实现。注意,在U是稀 疏矩阵的情形中,U↓S和两者都是稀疏计算,即乘以U和乘以U的逆都可 用稀疏原地计算来实现,即使U-1不一定是稀疏矩阵。
下三角矩阵
令L是格式为(n,n)的下三角(对于所有j>i,L[i,j]=0)矩阵。则
L S = L S
即,原地运算L↑S得到与L乘以S的结果相同的n个码元的向量。此外,如果L 还是可逆的(对于所有i,L[i,i]≠0)则,
L ~ S = L - 1 S
即,原地运算导致与L的逆乘以S的结果相同的n个码元的向量。因此,矩 阵乘法和矩阵逆的乘法两者可用下三角矩阵的原地运算来实现。注意,在L是稀 疏矩阵的情形中,L↑S和两者都是稀疏计算,即乘以L和乘以L的逆都可用 稀疏原地计算来实现,即使L-1不一定是稀疏矩阵。
乘积
在该情形中,B是数个上述类型的矩阵的乘积,即B是为M1·M2·...·Mt的乘积, 其中每个Mj是转置矩阵、或单项矩阵、或上三角矩阵、或下三角矩阵中的任一矩 阵。原地计算这种矩阵变换的过程是用Mt对S进行变换,然后用Mt-1对其结果进 行变换,依此类推。
普通方形矩阵
对于格式为(n,n)的矩阵B,能够进行计算以将B分解成三个矩阵P、L、以及 U的乘积,其中P是转置矩阵,L是在主对角上为1的下三角矩阵,以及U是上 三角矩阵。这种分解可通过本领域的技术人员已知的各种过程来计算。这些过程中 的一种是公知的Gaussian消元过程。然后,B对S的原地变换,即使用原地变换计 算简单地为:
P ( L ( U S ) )
现在参照图10更具体地来描述用于计算在任意方形矩阵B情形下的这种原地 变换的过程。在步骤1010,计算出B的PLU分解。如上所提到的,这种分解可通 过各种手段来计算。对于普通矩阵,一种可能方法是使用Gaussian消元法。对于 例如稀疏矩阵、Cauchy矩阵等特殊矩阵,可采用更高效的方法,这是本领域的技 术人员所公知的。在步骤1020,如参照图6所述的,计算出码元向量S的原地变 换U↓S。接着,在步骤1030,经变换的码元集S被再次变换,这次如参照图7所 述地计算原地变换L↑S。接着,在步骤1040再次对该经变换的新码元集作变换, 如参照图8所述地计算置换矩阵P对S的原地变换。
注意,如果B可逆,则以下过程将计算为原地变换:
U ~ ( L ~ ( P - 1 S ) )
其中P-1是为P的逆的转置矩阵。
注意,使用上述原地变换过程计算所需的计算量与的基本相同。 此外,如果U和L两者是稀疏表示的并且例如在n个非零项上仅具有线性,则 和两者都可使用上述原地变换在线性时间内被计算出。在上述原地变换的 计算期间用于存储计算中任意时刻的码元的存储器或存储的量是n+1。
应该注意,这里所述的过程是非常一般性的,但可能不是在所有感兴趣的情 形中都是最高效的。以下描述了其它情形,在这些情形中可以比在一般情形中更高 效地来实现该原地变换。
非方形矩阵
如果格式为(m,n)的矩阵B不是方形矩阵,则可利用与上述类似的方法以这种 最小化存储器量的方式计算变换。例如,当该矩阵的行比列多时(即,m大于n), 则仅仅原地计算出结果向量的前n个元素才是重要的。这按如下实现。
令B’为标识由B的前n行构成的方形矩阵,并且令B”标识由B的后m-n行 构成的矩阵。令S为最初保存要被变换的码元值的n个码元的列向量,并令S’标 识附加的m-n个码元的列向量。然后,可如下原地计算:
·使用诸如在标题为“线性运算符”的章节中描述的“简单变换过程”等直接 (straightforward)矩阵乘法将S’计算为
·计算使得B′=P·L·U的P、L、U,其中P是转置矩阵,L是下三角矩阵而U 是上三角矩阵。
·计算原地变换
注意,如果矩阵B’是下三角的,则以上过程的最后两步被简化为计算B′↑S, 而如果矩阵B’是上三角的,则以上过程的最后两步被简化为计算B′↓S。
类似地,如果n大于m,则可利用类似方法以如下替换向量S的前m项的方 式来计算该变换。令B’标识由B的前m列构成的方形矩阵,并且令B”标识由B 的后n-m列构成的矩阵。令S为最初保存要被变换的码元值的n个码元的列向量, 并令S’标识S的前m个码元而令S”标识S的后n-m个码元。然后,可按如 下原地计算:
·计算使得B′=P·L·U的P、L、U,其中P是转置矩阵,L是下三角矩阵而U 是上三角矩阵。
·计算原地变换
·使用诸如在标题为“线性运算符”的章节中描述的“简单变换过程”等直接 矩阵乘法的微小变形来将S’更新为的结果。
注意,如果矩阵B’是下三角的,则以上过程的前两步被简化为计算B′↑S′, 而如果矩阵B’是上三角的,则以上过程的前两步被简化为计算B′↓S′。
用于大多数稀疏矩阵的高效原地线性变换
令M为图11中所示类型的格式为(n,n)的方形矩阵。在图11中,m≤n,L是 格式为(m,m)的下三角可逆矩阵,A是格式为(m,n-m)的矩阵,B是格式为(n-m,m) 的矩阵以及C是格式为(n-m,n-m)的可逆矩阵。
令S为n个码元的列向量。以下我们描述计算和的高效原地变 换。这些原地变换为FEC编码和FEC解码方法以及稍后描述的即高效且原地的过 程中的一些铺垫了基础。对于其中考虑类型M的矩阵的这些FEC码中的一些,M 为稀疏矩阵,例如M中非零项的个数以n为量级,并且n-m相比于n较小,例如 n-m是以n的平方根为量级。对于该示例,执行以下所述的计算和的 原地变换所需的计算量以n个码元运算为量级,而在计算期间码元总共所用的空间 或存储器最多为n+1。
令M’为如图12所示地从M推导出的格式为(n,n)的方形矩阵。在图12中,L 和B是与图11中所示的L和B相同的矩阵,由后n-m列与前m行构成的矩阵的 所有项都为零,以及由后n-m列与后n-m行构成的矩阵是单位矩阵。注意,M’是 可逆的下三角矩阵。图12还示出了M’的逆矩阵M’-1的形式。
令D为图13A中所示的格式为(n,n-m)的矩阵。在图13A中,A和C是与图 11中所示的A和C相同的矩阵。矩阵D还可被视为n个码元的列向量,其中每个 码元是来自底层域K的n-m个域元素的级联。因此,当如上所述地将D视为n个 码元的列向量时可定义格式为(n,n)的矩阵对D的运算,其中该矩阵对被视为n个 码元的列向量的D的运算与在被视为矩阵时该矩阵与D的矩阵乘法相同。
如上所述地将D视为n个码元的列向量,可以看出原地变换得到具有 如图13B所示的值的D,其中当E被视为格式为(m,n-m)的矩阵时,E=L-1·A,以 及当F被视为格式为(n-m,n-m)的矩阵时,F=C-B·L-1·A。由于C和L都是可逆 的,可以容易地验证F也是可逆的。令P、Λ和Y是格式为(n-m,n-m)的矩阵,其中 F=P·Λ·Y,P为转置矩阵,Λ为下三角矩阵以及Y是上三角矩阵。这种因式分解 可例如使用公知的Gaussian消元或类似技术来得到。
令L’为如图14所示的格式为(n,n)的方形矩阵。在图14中,L是与图11中所 示矩阵L相同的矩阵,由后n-m行与前m列构成的矩阵的所有项都为零,由后n-m 列与前m行构成的矩阵的所有项都为零,以及由后n-m列与后n-m行构成的矩阵 是单位矩阵。注意,L’是可逆的下三角矩阵。图14还示出了L’的逆矩阵L’-1的形 式。
令P’、Λ’和Y’分别是如图15A、15B和15C中所示的格式为(n-m,n-m)的方形 矩阵,P、Λ和Y是使得F=P·Λ·Y的矩阵并且F如上所述,以及在P’、Λ’和Y’的 每一个中,由后n-m列与前m行构成的矩阵的所有项都为零,由后n-m行与前m 列构成的矩阵的所有项都为零,以及由前m行与前m列构成的矩阵是单位矩阵。 注意,P’、Λ’和Y’是可逆矩阵。
令N’为如图16所示的格式为(n,n)的方形矩阵。在图16中,L和A是与图11 中所示的L和A相同的矩阵,由后n-m行与前m列构成的矩阵的所有项都为零, 以及由后n-m列与后n-m行构成的矩阵是单位矩阵。注意,N’为可逆矩阵,并且 虽然它不是字面意义上的下三角,但可以看出N′↑S原地计算出的结果。图 16还示出了N’的逆矩阵N’-1的形式。还可验证原地计算出的结果。
基于以上介绍的概念,参照图17对计算在输入的M和S上的原地变换 的过程进行了描述。在步骤1710,计算出原地变换N′↑S。在步骤1720,计算出 原地变换其中D如上所述,以及如上所述,矩阵F=C-B·L-1·A是该变 换结果的后n-m行。在步骤1730,矩阵F被如上所述地因式分解为P、Λ和Y。在 步骤1740,计算出原地变换Y′↓S。在步骤1750,计算出原地变换Λ′↑S。在步骤 1760,计算出原地变换在步骤1770,计算出原地变换在步骤1780, 计算出原地变换M′↑S。在步骤1790,由于原地变换结束所以过程停止。
可以验证在图17中所述的过程结束时,向量S存储M乘以原始向量S的结果。 注意,该过程中用于存储任意时刻的码元的存储至多为n+1,并且所有步骤上总计 的码元运算的数目与M中非零项的数目和(n-m)2的和呈线性。
图17中所述过程有许多可产生更高效率和优点的变形。例如,在原地运算期 间,运算当中对单位子矩阵操作的那些部分可被跳过,因为这些运算不改变结果, 即在计算N′↑S时可以跳过与N’的后n-m行的运算,因为这些运算不影响该原地 变换的结果。作为另一变形的示例,可以在不影响其结果的情况下,将部分步骤重 新排序。一种这样的变形是在步骤1730与步骤1740之间执行步骤1770。另一这 样的变形是在步骤1740与步骤1750之间执行步骤1770,在这种情形下能够将步 骤1740和1770组合为如图20中所示的一次原地变换,并将步骤1750和760组合 为图21中所示的一次原地变换。作为变形的另一示例,步骤1730、1740、1750 和1760可用将F乘以包括S的后n-m个码元的列向量并用结果替换S的后n-m个 码元的步骤来代替。乘以F可以例如使用本公开中所述的原地变换或者诸如标准 矩阵乘法等标准技术来执行。
基于以上介绍的概念,参照图18对计算在输入的M和S上的原地变换 的过程的另一变形进行了描述。参照图18所述的原地变换使用总共存储的 n+(n-m)+1个码元,即比参照图17所述的过程多n-m个码元,这具有码元运算的 总数目与在的直接非原地计算中所使用的相同的益处。因此,当M为稀疏 时,以略多的码元存储为代价,以下参照图18所述的过程可采用比参照图17所述 的过程更少的计算量。在到稍后描述的FEC码的应用中,n-m相比于n通常较小, 因此参照图18所述的过程所需的额外的码元存储量与参照图17所述的过程所实现 的最小码元存储量相比通常较小。
令W为附加的n-m个码元的列向量。令Q标识包括M的前m行的格式为(m,n) 的矩阵,并且令Q’标识M的后n-m行的格式为(n-m,n)的矩阵。在图18的步骤1810 中,使用直接矩阵乘法计算 W = Q S . 在步骤1820,计算原地变换Q↑S。注意 由于Q的前m列构成了下三角矩阵L,所以步骤1820中计算出的原地变换得到等 于的S的前m项。在步骤1830,W被复制到S的后n-m个码元。在步骤1840, 由于该原地变换结束所以过程停止。
基于以上介绍的概念,参照图19对计算在输入的M和S上的原地变换 的过程进行了描述。在步骤1910,计算出原地变换在步骤1920,计算出 原地变换L′↑S。在步骤1930,计算出原地变换其中D为如上所述,以及 如上所述矩阵F=C-B·L-1·A是该变换结果的后n-m行。在步骤1940,矩阵F被 如上所述地因式分解为P、Λ和Y。在步骤1950,计算出原地变换在步骤 1960,计算出原地变换在步骤1970,计算出原地变换在步骤1980, 计算出原地变换在步骤1990,由于该原地变换结束所以过程停止。
可以验证在图19中所述的过程结束时,向量S存储M-1乘以原始向量S的结 果。注意,该过程中用于存储任意时刻的码元的存储至多为n+1,并且所有步骤上 总计的码元运算的数目与M中非零项的数目和(n-m)2的和呈线性。
以上参照图19所述的过程基本是参照图17所述的过程的逆。与参照图17所 述的过程的情形一样,图19中所述过程有许多可得到更高效率和优点的变形。例 如,步骤1940、1950、1960和1970可以用确定F-1并随后将F-1乘以包括S的后 n-m个码元的列向量且用其结果替换S的后n-m个码元的步骤来代替。F-1的确定 以及和它的乘法可以例如使用本公开所述的原地变换或诸如标准Gaussian消元和 矩阵乘法等标准技术来执行。在为该步骤使用标准矩阵乘法的情形中,可能需要更 多的码元存储,例如额外的n-m个存储码元,从而使得在该原地变换期间最大的 码元存储为2·n-m+1个码元,然而在整个原地变换过程中用于码元的总存储量显 著小于标准技术将使用的2·n,特别是当m接近n时。
应用
Reed-Solomon码
已知的一类用于在删除或损坏的情形中保护传输的线性码为Reed-Solomon 码。有许多等效方式来描述这些码,诸如循环码、基于Vandermonde矩阵的码、 基于Cauchy矩阵的码等。在所有这些情形中,可用矩阵与码元向量的乘法来描述 编码过程。在源码元数目为k,输出码元数目为n,v标示要编码的k个源码元的 列向量,以及w标示包含v的编码的n个码元的列向量的情形中,编码过程被描 述为:
M v = w
其中,M是格式为(n,k)的矩阵,它有时也被称为该码的生成矩阵。令M’标识包括 M的前k行的格式为(k,k)的矩阵,并且令M”标识包括M的后r=n-k行的格式为(r,k) 的矩阵。令w’标识w中的前k个码元,而令w”标识w中的后r个码元。
在该码为系统性即在M与v的矩阵乘法之后结果的前k个码元w’与v的各项 相一致的情形中,M’为单位矩阵。在系统码中,经编码的向量w’的各项被称为源 位置。在这种情形中,M”被用于计算r个冗余码元w”。矩阵M可以各种方式来 表示。例如,在需要非系统版本的情形中,M可以是Vandermonde矩阵。在系统 的情形中,M”可以形成Cauchy矩阵。这些表示仅是出于示例性目的才提到的, 而绝不构成穷尽性列表。
当Reed-Solomon码为非系统时,参照图20所述的过程描述了在该过程中使 用至多n+1个码元的存储来生成编码的原地变换。最初w’存储要编码的k个源码 元。在该过程结束时,w存储编码结果,即w’存储前k个编码码元,而w”存储生 成的剩余r个编码码元。在图20的步骤2010中,使用直接矩阵乘法,例如使用先 前所述的“简单变换过程”将w”计算为在步骤2020,M’被因式分解为 P、L和U,其中这些矩阵的每一个都是(k,k)格式并且P为转置矩阵,L为下三角 矩阵,以及U是上三角矩阵,因此M′=P·L·U。这种分解可用例如Gaussian消元 法等各种方式来计算,或者当矩阵M’为Cauchy矩阵时,则该PLU分解可用公式 来计算,由此降低了计算的计算复杂度。在步骤2030,计算出原地变换U↓w′。 在步骤2040,计算出原地变换L↑w′。在步骤2050,计算出原地变换在步 骤2060,由于原地变换结束所以过程停止。应该注意,在任意给定系统中发送编 码码元的顺序无需是它们被存储的顺序,因此实际上可能不需要执行最后一个步骤 2060。
当Reed-Solomon码为系统的时,现在对在过程中使用至多m+1个码元的码元 存储以从k个源码元生成r个冗余码元的原地变换进行描述,其中m是k和r的最 大值。在这种情形中,最初存储在w’中的源码元全部或部分地被所生成的冗余码 元所覆盖,因此被覆盖的源码元通常将被保存在由使用该FEC编码器的应用控制 的另一存储空间中或者它们已经被发送而不再需要存储。当冗余码元的数目r大于 或等于源码元的数目k时,可使用图20中所述过程的一个轻微变形来使用计算 的原地变换生成冗余码元,其中该原地变换至多使用r+1个存储码元。当 r<k时,可利用这里参照图21所述的过程使用至多使用k+1个存储码元的原地变 换来生成冗余码元。令v标识w’中的前r个码元,并且令v’标识w’中的后k-r个码 元。最初w’存储要编码的k个源码元。在该过程结束时,w’的前r项即v存储该编 码的r个冗余码元。令B为与M”的前r列相同的格式为(r,r)的矩阵,并且令B’为 与M”的后k-r列相同的格式为(r,k-r)的矩阵。在图21的步骤2110中,B被因式分 解为P、L和U,其中这些矩阵的每一个都是(k,k)格式并且P为转置矩阵,L为下 三角矩阵,以及U是上三角矩阵,因此B=P·L·U。这种分解可用例如Gaussian 消元法等各种方式来计算,或者当矩阵B为Cauchy矩阵时,则该PLU分解可用 公式来计算,由此降低了计算的计算复杂度。在步骤2120,计算出原地变换U↓v。 在步骤2130,计算出原地变换L↑v。在步骤2140,计算出原地变换在步 骤2150,使用诸如以上在标题为“线性运算符”章节中描述的“简单变换过程” 等直接矩阵乘法的微小变形来将v更新为在步骤2160,由于原地变换 结束所以过程停止。
在其中发送的码元在接收前可能被删除的通信信道中,在用 M v = w 定义该 编码的情形中,解码问题是根据对充分多的经编码的码元的了解,即根据对w的 充分多的项的了解,来确定原始源码元向量v。在Reed-Solomon码的情形中,术 语“充分多的码元”可译为至少k个码元或多于k个码元,这取决于应用和该解码 可用的计算和存储资源。
在以下,描述了上述一般原地变换方法对系统Reed-Solomon码的原地解码的 问题的一示例性应用。在阅读本公开之后,本领域的技术人员可容易地将所公开的 方法推广到诸如非系统版等Reed-Solomon解码的其它情形。
现在参照图22和23对原地解码系统Reed-Solomon码的方法进行描述。在图 22所绘的该示例性过程中,步骤2205参照矩阵M”的列标识由p[1],...,p[e]标示的 已删除的源码元位置,并在步骤2210参照矩阵M”的行标识接收到的冗余码元的 位置r[1],...,r[e]。对于图22中所绘示例性过程,我们假定接收到的码元被存储在 k个码元的列向量v中,其中位置p[1],...,p[e]中的码元是接收到的冗余码元,其中 v的其它k-e个位置中的码元是在其正确位置中的接收到的源码元,而解码器的任 务是将v在位置p[1],...,p[e]上的码元变换为丢失的e个源码元。在步骤2220到2250 定义了关于变量i的外循环,从而针对1到被删除的源位置的数目e之间i值有效 地运行这些步骤。在进入该循环前,i值在步骤2215被初始化为1。步骤2225到 2240的循环检查1与k之间不等于p[1],...,p[e]中任何一个的j值,并且对于每个这 样的j通过将v[p[i]]的值增加M”[r[i],j]*v[j]来更新v[p[i]]。
在图23的过程中,我们用z来标示由v[p[1],...,p[e]]构成的向量,并用T标示 由矩阵M”的行r[1],...,r[e]和列p[1],...,p[e]构成的矩阵的逆。如本领域的技术人员 所知的,Reed-Solomon码的一般原理显示该矩阵总是可逆。在步骤2305中计算出 该逆及其PLU分解。这种PLU分解可用例如Gaussian消元法等各种方式来计算, 或者当矩阵M”为Cauchy矩阵时,则该PLU分解可用公式来计算,由此降低了计 算的计算复杂度。注意,T的PLU分解可直接通过该过程来计算而无需显式地计 算出矩阵T。在步骤2310,使用图6所述的过程计算出原地变换U↓z。在步骤2320, 使用图7中的过程计算出L↑z。在步骤2330,使用图8中的过程计算出原地变换 在步骤2340,由于Reed-Solomon码的原地解码结束所以过程停止。
参照图23所述的总体原地变换在该过程中使用了至多k+1个码元存储。
这里针对Reed-Solomon码所述的过程仅用于演示性目的,而无意限制本发明 的范围。更具体地,非常类似的方法可被应用到相似类的码的原地解码,诸如代数 -几何码(简写为AG码)、BCH码、或其生成矩阵明确已知的任何其它类的码。
广义重复累积(GRA)码
一般而言,这些是系统码,其中k是源码元的数目,r是冗余码元的数目,因 此n=k+r是编码中码元的总数。在这种情形中,r个冗余码元的列向量z按如下从 k个源码元的列向量v来构造:选择格式为(r,k)的矩阵A,并且选择为稀疏上或下 三角矩阵的格式为(r,r)的另一矩阵U。对于该示例,U被任意地选择为一上三角矩 阵。然后,
z = U - 1 · A v
常常在文献中见到的不规则重复累积(IRA)码的情形是这种构造的一种特殊 情形,其中A被假定为从在每一行和每一列具有数字1的指定分布的一组矩阵中 随机采样的二进制矩阵,而U是在主对角线上为1以及在紧邻该主对角线的上一 对角线上为1而在其它项中全部为0的上三角矩阵,因此U是稀疏的。注意对于 该示例,U-1是在主对角线以及主对角线以上的所有项都为1的稠密上三角矩阵。 因此,对于该示例假定A是被选成在每一行有三个1以及在每一列有三个1的方 形矩阵。在该示例中,计算出的冗余码元对源码元具有不规则的依存性,例如,z 中最后一个冗余码元是v中三个源码元的XOR(异或),z中第二到最后一个冗余 码元是v中6个源码元的XOR,等。
现在参照图24描述对GRA码的原地编码过程。对于该示例,假定r至多为k, 即冗余码元的数目至多是源码元的数目。对于r大于k的情形,使用将行数大于列 数的矩阵乘以码元列向量的原地变换过程来代替将列数大于行数的矩阵乘以码元 列向量的原地变换过程,可对过程进行修改。令A’标识由A的前r列构成的方形 矩阵,而令A”标识由A的后k-r列构成的矩阵。令v为最初保存源码元的k个码 元的列向量,而令v’标识v的前r个码元并且令v”标识v的后k-r个码元。在图24 的步骤2410,矩阵A’被因式分解为P、L和Y,其中P为转置矩阵,L为下三角矩 阵,以及Y是上三角矩阵,并且A′=P·L·Y。可使用各种方法来执行这种因式分解, 包括使用标准Gaussian消元。在标准2420,计算出原地变换Y↓v′,在步骤2430, 计算出原地变换L↑v′,以及在步骤2440,计算出原地变换在步骤2450, 使用诸如以上在标题为“线性运算符”章节中描述的“简单变换过程”等直接矩阵 乘法的微小变形来计算出原地变换 v = A v v .
在步骤2460,计算出原地变换在步骤2470,计算停止,并且得到的r 个冗余码元被存储在v的前r个码元中,即v’中。
参照图24所述的过程有许多变形。例如,步骤2410、2420、2430以及2440 可以用诸如在题为“Systems and Processes for Decoding Chain Reaction Codes Through Inactivation(通过钝化对连反应码的解码的系统和过程)”(下文被称 为“钝化解码器(Inactivation Decoder)”)的美国专利No.6,856,263号中公开的 更为复杂的方法来代替,以便以与图11中所显示的相类似的形式存写矩阵A并随 后使用参照图17所述的过程的变形来使用原地变换计算例如,如果A是随 机选出的在每一行有三个1且在每一列有三个1的方形矩阵,即r=k,则能够将A 改为图11中所示的形式,其中子矩阵L的格式近似为(0.86k,0.86k)而子矩阵C的格 式近似为(0.14k,0.14k)。在该情形中,可使用参照图17所述的原地变换过程,由此 最小化该过程中用于存储的码元数目。作为另一变形,可使用参照图18所述的原 地变换过程来计算由此使用3·k个码元运算,即和以直接方式计算将 使用的码元运算相同数目的码元运算,但仅使用了1.14·k个码元存储。
连锁反应码在题为“Information Additive Code Generator and Decoder for Communications Systems(用于通信系统的信息加性码生成器和解码器)”的美国 专利No.6,307,487和题为“Multi-Stage Code Generator and Decoder for Communications Systems(用于通信系统的多级码生成器和解码器)”的美国专利 申请S/N.10/032,156号中进行了描述。已经为这种码设计了诸多解码器,例如“钝 化解码器”中公开的解码器。在该解码器中,解码过程简化为求解以下形式的线性 方程系:
T x = z
其中,T是秩为n的格式为(s,n)的矩阵,其中s至少为n,其中n是中间码元的数 目,其中k是源码元的数目,r是冗余码元的数目,因此n=k+r。注意,对于连锁 反应码的一些实施例,冗余码元的数目r为0,而对于其它实施例,冗余码元的数 目r大于0。T的行对应于动态输出码元并对应于冗余(预编码)码元,x是具有 待求解的初始未知值的n个码元的的向量,其中包括源码元和冗余(预编码)码元, 而z是具有已知值的s个码元的向量,包括接收到的码元和预编码的校验码元。在 一些应用中,校验码元具有0值,而在其它应用中,该值可能是不同于0的值。不 论如何设置校验码元,通过编码器与解码器之间的预先通信或通过其它步骤,它们 对于解码器而言都是已知的。
“钝化解码器”使用通过将矩阵T变换为T=Q·M·P的形式来求解未知码元x 的过程,其中Q是格式为(s,s)的转置矩阵,P是格式为(n,n)的转置矩阵,以及M是 格式为(s,n)、秩为n的矩阵,它类似于图11中所示形式,区别在于B和C两者都 包括s-m行而非n-m行。其中,矩阵L是格式为(m,m)的下三角二进制矩阵,以及 A、B和C是适当大小的矩阵;在优选应用中,A和L可以是稀疏矩阵,即它们可 能没有许多非零位置。使用这种因式分解,从接收到的码元向量z恢复未知向量x 的问题可被转变为以下问题:(a)优选地原地计算以使得结果都存储在z中, (b)优选地原地解方程系 M y = z 求未知向量y,以使得结果y存储在z的前n项中, 以及(c)优选地原地将x计算为 x = P - 1 y 以使得结果x存储在z的前n项中。这些 步骤彼此同步执行。任务(a)和(c)在先前章节中进行了描述,例如参照图8所述的 过程即是使用原地变换执行任务(a)和(c)的一种方法。
现在参照图11、图12、图13A、图13B、图14、图15、图16和图19提供 了在给定z情况下解方程 M y = z 求未知向量y的过程的一个实施例,其中S标识 在过程开始时存储在z中的s个码元的向量,以及在过程结束时S的前n个码元等 于向量y。参照图19所述的过程与当前过程之间的一个区别在于M具有s行而非 图11中所示的n行。因此,当前实施例中的第一步是确定M当中一起构成秩为n 的矩阵的n行并随后将M重新定义为得到的格式为(n,n)的满秩矩阵。参见图11、 图12、图13A、图13B、图14、图15和图16,当前实施例中的其余步骤是执行 先前参照图19所述的过程。
刚才所述的实施例有许多变形。例如,不是在第一步中确定使用格式为(s,n) 的原始矩阵M的哪n行,可使用例如在“钝化解码器”中所述的方法随着过程的 行进逐步地确定子矩阵L、A、B和C。因此,图19的步骤1910和1930中所述过 程的变形可使用“钝化解码器”中所述的方法来执行从而逐步地构成这些矩阵并执 行图19的步骤1910和1930中所述步骤的等效形式。在这些步骤的结束时,M中 秩为n的n行已被确定并在M的这些行已被逻辑地操作为图11中所示的形式。随 后可以按恰当顺序应用图19中所示的剩余步骤以完成该原地变换过程。
如本领域的技术人员将认识到的,刚才所述的两个实施例有许多变形。例如, 参照图19所述的过程的变形也可应用于这两个实施例。
连锁反应码的原地系统编码
在Shokrollahi等人提交的题为“Systematic Encoding and Decoding of Chain Reaction Codes(连锁反应码的系统编码和解码)”的美国申请S/N.10/677,624号 (下文“Shokrollahi I”)中,描述了一种用于连锁反应码,尤其是多级连锁反应 码的系统编码的方法。在该方法中,首先使用线性变换将源码元变换为一组中间码 元。该变换的形式为:
T x = z
其中,T是行对应于源码元和冗余(预编码)码元的格式为(n,n)的满秩矩阵,x是 具有待求解的初始未知值的中间码元的向量,而z是具有已知值的n个码元的向量, 其对应于源码元和预编码的校验码元。
当T为方形矩阵时,该方程系是章节“连锁反应码的原地解码”中所述更一 般的情形中的一种特殊情形。因此,章节“连锁反应码的原地解码”中所述原地变 换的实施例可用于使用原地变换从已知码元计算中间码元。
连锁反应码的原地系统解码
Shokrollahi I中所述方法执行一系列步骤以从部分源码元和由系统编码器生 成的部分输出码元的任意组合得到所有源码元。在该方法的优选实施例中,采集并 解码包括部分源码元和其它输出码元的所有接收到的码元以得到一组中间码元。接 着,对这些中间码元进行变换以得到丢失的源码元。根据接收到的码元对中间码元 进行原地计算与以上在标题为“连锁反应码的原地解码”中所述的相同。在本章节 中,将描述根据中间码元对源码元的原地计算。如根据Shokrollahi I显而易见并类 似于上述情形的是,该问题可简化为计算以下问题:
T S
其中,T是满秩的格式为(n,n)的矩阵,而S是n个中间码元的列向量。矩阵T可被 表示成:
T=P·M·Q
其中P和Q是格式为(n,n)的转置矩阵,而M是图11中所示形式的格式为(n,n)的矩 阵。
计算的原地变换的实施例是参照图17,同时参照图11、图12、图13A、 图13B、图14、图15、图16及图17所述的过程。该实施例在过程中至多使用n+1 个码元存储。参照图17所述的过程的变形也适用于该实施例。
计算的原地变换的第二实施例是参照图18所述的过程。该实施例该过 程中至多使用n+(n-m)+1个存储。在连锁反应码的优选实施例中,n-m相对于值n 而言较小,因此在该过程中使用的码元存储的相对大小略大于n。参照图18所述 的过程的变形也适用于该实施例。
上述使用原地变换过程从接收到的输出码元计算中间码元的实施例以及上述 使用原地变换过程从经恢复的输入码元计算源码元的实施例可被组合以提供使用 原地变换从接收到的输出码元计算源码元的总体实施例,其中这两个过程的组合所 用的码元存储至多为任一个过程单独所用的码元存储。
以上描述仅出于说明目的,而无意限制本发明的范围。在读了本公开之后, 许多等效版本和方法都是可能的。例如,在以上方法中,步骤2中对矩阵D的LU 分解的计算可离线地实现。
如已经所述的,示教了一种新颖的用以构造线性变换运算的具有存储器效率 的方法。在这里所示的示例中,线性变换过程是对多个输入元素应用线性变换以导 出多个输出元素的过程。在这里所述的过程中,存储器被分配用于存储可用于该线 性变换过程的输入元素并且该存储器中的至少一部分可被再次用于存储所导出的 输出元素。使用这种方法,不用要求大至足以保存上述多个输入元素的存储器和大 至足以保存上述多个输出元素的存储器,足以保存上述多个中的最大数目的元素的 存储器(按需加上一些较小的开销)就可工作,从而节省了有价值的存储器空间。
这里所述的技术可被用于各种线性变换,诸如用于FEC编码或解码、删除编 码或解码、纠错等的变换。FEC编码可涉及诸如Reed-Solomon码、连锁反应码、 多级连锁反应码或任何其它线性码等各种码。用于执行该变换的逻辑可读取输入元 素以生成输出元素并将用于已使用结束的输入元素的存储器再次用于存储生成的 输出元素(或随后可能又被使用结束的中间元素)。
虽然参照示例性实施例对本发明进行了描述,但本领域的技术人员将认识到 各种修改是可能的。例如,这里所述的过程可使用硬件组件、软件组件、和/或它 们的任意组合来实现。因此,虽然关于示例性实施例对本发明进行了描述,但应该 认识到的是,本发明旨在涵盖落在所附权利要求的范围内的所有变形和等效方案。
相关申请的交叉引用
本申请要求于2005年6月10日提交的、其内容出于所有用途通过全文援引 包括于此的美国专利申请S/N 60/689,632的优先权并是其非临时申请。
权利要求书(按照条约第19条的修改)
1.在将安排为多个源码元的数据编码为多个经编码的码元的编码器中,一种 执行从所述源码元到所述经编码的码元的变换的方法,其中所述源码元中的一定数 目即k个将被变换为n个经编码的码元,所述方法包括:
访问存储在第一存储器中的所述k个源码元;
执行第一变换步骤以计算对所述k个源码元进行操作的矩阵运算,从而产生 中间输出码元集,所述中间集中的至少一些码元构成所述n个经编码的码元中的一 些;
将所述中间输出码元集存储在所述第一存储器中,以替换所述k个源码元中 的至少一些,所述中间集中输出码元的数目小于所述数目n;以及
重复所述执行和存储步骤至少一次直至所述第一存储器包含至少所述n个经 编码的码元以及不到总数k个的源码元,
从所述k个源码元生成的所述n个经编码的码元用于差错纠正。
2.如权利要求1所述的方法,其特征在于,在变换过程中所述第一存储器中 的最大码元数目不大于n+1和k+1中的较大值。
3.如权利要求1所述的方法,其特征在于,在变换过程中所述第一存储器中 的最大码元数目与n+1和k+1中的较大值的接近程度远高于其与k+n的接近程度。
4.如权利要求1所述的方法,其特征在于,n不等于k。
5.如权利要求1所述的方法,其特征在于,n等于k。
6.如权利要求1所述的方法,其特征在于,所述变换表示Reed-Solomon编 码。
7.如权利要求1所述的方法,其特征在于,所述变换表示GRA编码。
8.如权利要求1所述的方法,其特征在于,所述变换表示连锁反应编码。
9.如权利要求1所述的方法,其特征在于,所述变换表示LDPC编码。
10.如权利要求1所述的方法,其特征在于,在所述变换中使用的码元运算 的数目大致与所述矩阵的非零元素的数目成比例。
11.如权利要求1所述的方法,其特征在于,在所述变换中使用的码元运算 的数目大致与所述矩阵的逆的非零元素的数目成比例。
12.如权利要求1所述的方法,其特征在于,所述矩阵包括编码矩阵的允许 实现原地编码的分解。
13.如权利要求1所述的方法,其特征在于,所述矩阵表示一种允许高效的 原地编码的码。
14.在将安排为多个经编码的源码元的数据解码为多个经解码的码元的解码 器中,一种执行从所述经编码的码元到所述经解码的码元的变换的方法,其中所述 经编码的码元中的一定数目即r个将被变换为d个经解码的码元,所述方法包括:
访问存储在第一存储器中的所述r个经编码的码元,从k个源码元生成的所述 r个经编码的码元用于差错纠正;
执行第一变换步骤以计算对所述r个经编码的码元操作的矩阵运算从而产生 中间输出码元集,所述运算是编码矩阵的逆,所述中间集中的至少一些码元构成所 述d个经解码的码元中的一些;
将所述中间输出码元集存储在所述第一存储器中,以替换所述r个经编码的码 元中的至少一些,所述中间集中输出码元的数目小于所述数目d;以及
重复所述执行和存储步骤至少一次直至所述第一存储器包含至少所述d个经 解码的码元以及不到总数r个的经编码的码元。
15.如权利要求14所述的方法,其特征在于,在变换过程中所述第一存储器 中的最大码元数目不大于r+1和d+1中的较大值。
16.如权利要求14所述的方法,其特征在于,在变换过程中所述第一存储器 中的最大码元数目与r+1和d+1中的较大值的接近程度远高于与r+d的接近程度。
17.如权利要求14所述的方法,其特征在于,r不等于d。
18.如权利要求14所述的方法,其特征在于,r等于d。
19.如权利要求14所述的方法,其特征在于,所述变换表示Reed-Solomon 解码。
20.如权利要求14所述的方法,其特征在于,所述变换表示GRA解码。
21.如权利要求14所述的方法,其特征在于,所述变换表示连锁反应解码。
22.如权利要求14所述的方法,其特征在于,所述变换表示LDPC解码。
23.如权利要求14所述的方法,其特征在于,在所述变换中使用的码元运算 的数目大致与所述矩阵的非零元素的数目成比例。
24.如权利要求14所述的方法,其特征在于,在所述变换中使用的码元运算 的数目大致与所述矩阵的逆的非零元素的数目成比例。
25.如权利要求14所述的方法,其特征在于,所述矩阵包括解码矩阵的允许 原地解码的分解。
26.如权利要求14所述的方法,其特征在于,所述矩阵表示一种允许高效的 原地解码的码。
27.一种通信系统,其中安排成多个即k个源码元的数据在发射机处被变换 为多个即n个经编码的码元,在通信信道上被发送并且所发送的经编码的码元的至 少一些在接收机处作为多个即r个接收到的码元被接收并且这r个接收到的码元被 变换为多个即d个经解码的码元,所述d个经解码的码元在d不小于k时表示所述 k个源码元,所述通信系统包括:
发送缓冲器,具有一大小,其中所述k个源码元所需的存储器的大小与所述n 个经编码的码元所需的存储器的大小合在一起总计大于所述发送缓冲器的大小;
发送生成逻辑,用于通过计算对所述k个源码元进行操作的编码矩阵运算生 成中间输出码元集,所述中间集中的至少一些码元构成所述n个经编码的码元中的 一些;
发送存储逻辑,用于将所述中间输出码元集存储在所述发送缓冲器中,以替 换所述k个源码元中的至少一些,所述中间集中输出码元的数目小于所述数目n;
流逻辑,用于使所述发送生成逻辑生成另一中间输出码元集并使所述发送存 储逻辑存储该中间输出码元集,以替换所述k个源码元中的另外一些码元,直至所 述发送缓冲器包含至少所述n个经编码的码元以及不到总数k个的源码元,从所述 k个源码元生成的所述n个经编码的码元用于差错纠正;
发送电路,用于在所述通信信道上发送所述n个经编码的码元;
接收电路,用于接收所述r个接收到的码元,其中所述r个接收到的码元是所 述通信信道传送所述n个经编码的码元的结果;
接收缓冲器,具有一大小,使得所述r个接收到的码元所需的存储器大小与所 述d个经解码的码元所需的存储器大小合在一起总计大于所述接收缓冲器的大小;
接收生成逻辑,用于通过计算对所述r个接收到的码元进行操作的解码矩阵运 算生成中间接收输出码元集,所述中间接收输出码元集中的至少一些构成所述d 个经解码的码元中的一些;
接收存储逻辑,用于将所述中间接收输出码元集存储在所述接收缓冲器中, 以替换所述r个接收到的码元中的至少一些,所述中间接收输出码元集中接收输出 码元的数目小于所述数目d;以及
流逻辑,用于使所述接收生成逻辑生成另一中间接收输出码元集并使所述接 收存储逻辑存储该中间接收输出码元集,以替换所述r个接收到的码元中的另外一 些码元直至所述接收缓冲器包含至少所述d个经解码的码元以及不到总数r个的接 收到的码元。
28.如权利要求27所述的通信系统,其特征在于,所述逻辑包括要由可编程 处理器执行的程序代码指令。
29.如权利要求27所述的通信系统,其特征在于,所述逻辑包括硬件电路。
30.如权利要求27所述的通信系统,其特征在于,所述逻辑部分包括程序代 码指令且部分包括硬件电路。
31.如权利要求27所述的通信系统,其特征在于,所述解码矩阵是所述编码 矩阵当中由所述接收到的码元中的至少一些定义的部分的逆,从而使得所述解码矩 阵乘以所述编码矩阵的所述部分恰好为单位矩阵。
32.如权利要求27所述的通信系统,其特征在于,所述接收机是移动电话接 收机。
33.如权利要求27所述的通信系统,其特征在于,所述接收机是适于车用的 接收机。
34.如权利要求27所述的通信系统,其特征在于,所述发射机是移动电话发 射机。
35.如权利要求27所述的通信系统,其特征在于,所述发射机是适于车用的 发射机。
36.如权利要求27所述的通信系统,其特征在于,所述发射机是数字媒体发 射机,而所述接收机是数字媒体接收机。
37.如权利要求1所述的方法,其特征在于,差错纠正是删除纠正。
38.如权利要求14所述的方法,其特征在于,差错纠正是删除纠正。
39.如权利要求27所述的通信系统,其特征在于,差错纠正是删除纠正。
QQ群二维码
意见反馈