CN102439853A - 信度传播处理器 - Google Patents
信度传播处理器 Download PDFInfo
- Publication number
- CN102439853A CN102439853A CN201080018698XA CN201080018698A CN102439853A CN 102439853 A CN102439853 A CN 102439853A CN 201080018698X A CN201080018698X A CN 201080018698XA CN 201080018698 A CN201080018698 A CN 201080018698A CN 102439853 A CN102439853 A CN 102439853A
- Authority
- CN
- China
- Prior art keywords
- memory
- processor
- module
- value
- group
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1111—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06G—ANALOGUE COMPUTERS
- G06G7/00—Devices in which the computing operation is performed by varying electric or magnetic quantities
- G06G7/12—Arrangements for performing computing operations, e.g. operational amplifiers
- G06G7/122—Arrangements for performing computing operations, e.g. operational amplifiers for optimisation, e.g. least square fitting, linear programming, critical path analysis, gradient method
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06G—ANALOGUE COMPUTERS
- G06G7/00—Devices in which the computing operation is performed by varying electric or magnetic quantities
- G06G7/12—Arrangements for performing computing operations, e.g. operational amplifiers
- G06G7/19—Arrangements for performing computing operations, e.g. operational amplifiers for forming integrals of products, e.g. Fourier integrals, Laplace integrals, correlation integrals; for analysis or synthesis of functions using orthogonal functions
- G06G7/1942—Arrangements for performing computing operations, e.g. operational amplifiers for forming integrals of products, e.g. Fourier integrals, Laplace integrals, correlation integrals; for analysis or synthesis of functions using orthogonal functions for forming other integrals of product, e.g. orthogonal functions, Laplace, Laguerre, Walsh, Hadamard, Hilbert
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1131—Scheduling of bit node or check node processing
- H03M13/1137—Partly parallel processing, i.e. sub-blocks or sub-groups of nodes being processed in parallel
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1148—Structural properties of the code parity-check or generator matrix
- H03M13/118—Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure
- H03M13/1185—Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure wherein the parity-check matrix comprises a part with a double-diagonal
- H03M13/1188—Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure wherein the parity-check matrix comprises a part with a double-diagonal wherein in the part with the double-diagonal at least one column has an odd column weight equal or greater than three
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6597—Implementations using analogue techniques for coding or decoding, e.g. analogue Viterbi decoder
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Error Detection And Correction (AREA)
Abstract
一种处理器,该处理器包括:第一存储器模块,用于存储各代表各自输入的第一组存储值;以及第二存储器模块,用于以模拟形式存储第二组存储值。模拟模块被耦接至所述第一和第二存储器模块。该模拟模块被配置为,在至少一个迭代的每个操作循环中,基于所述第一和第二组存储值来更新该第二组存储值中的至少一些存储值。输出模块用于从该第二组存储值的至少一些存储值产生一组输出。
Description
相关申请的交叉引用
本申请要求2009年3月2日提出的、名称为“Belief PropagationProcessor”的美国临时申请第61/156,792号以及2010年1月11日提出的美国临时申请第61/293,999号的权益,以引用方式将这些专利申请并入本文中。
本申请与2009年3月2日提出的、名称为“Circuits for Soft LogicalFunctions”的美国临时专利申请序号第61/156,794号以及2009年3月2日提出的、名称为“Signal Mapping”的美国临时专利申请序号第61/156,721号以及2009年3月2日提出的、名称为“Circuits for softLogical Functions”的美国临时专利申请序号第61/156,735号有关。本申请还与2009年8月6日提出的、名称为“Storage Device with SoftProcessing”的美国申请序号第12/537,060号有关。以引用方式将上述申请的内容并入本文中。
技术领域
本文件涉及模拟信度传播处理器。
背景技术
“信度传播”(belief propagation,BP)是解决统计推论问题的有效率的方法。此方法利用随机元件的网络及其约束的底层结构以及贝叶斯(Bayesian)概率法则来找出满足约束以及网络结构要求的最优的有效输出组。
信度传播包括用于使用具有图(graph)的形式的系统模型来执行统计推论的一类技术。术语“图”在这里指的是图的数学定义,其表示一组抽象对象的连接性。对象常常被称为“节点”且对象之间的连接常常被称为“边(edge)”。在这样的模型中所使用的一种常见类型的图被称为“因子图(factor graph)”。在因子图(被称为“Forney因子图”的特定样式的因子图)中,节点表示值之间的统计关系,这些统计关系被表示为边。诸如贝叶斯网络之类的其它类型的图以及马尔可夫随机场也常被用于统计推论。
信度传播方法的例子通过在图中的节点之间传递消息来工作,其中每一消息表示经该节点至其它节点的连接而由该节点知晓的信息的概要。这样的方法以各种不同名称为人们所知,包括信度传播、概率传播、消息传递以及概要-积算法等等。这些方法的特定形式包括和-积、最大值-积以及最小值-和。
编码、信号处理以及人工智能的大量方法可被视作概要-积方法(或信度/概率传播方法)的实例,其通过图形模型中的消息传递而工作。这样的方法的特定实例包括卡尔曼(Kalman)滤波与平滑、隐藏马尔可夫模型的前向后向算法、贝叶斯网络中的概率传播、诸如维特比(Viterbi)算法之类的纠错码的解码算法、BCJR算法以及涡轮码、低密度奇偶校验码和类似的码的迭代解码。
信度传播可工作于的图包括两种类型:有环路的图(循环图)和无环路的图(非循环图)。无环路的图也被称为“树”。信度传播过程在这两种类型的图之间在基本上是不同。对于树,信度传播方法能够以具有明确定义数目的步骤的明确定义顺序进行以计算结果。并且假定理想计算,此结果总是被认为是正确的。另一方面,对于有环路的图,信度传播方法一般是迭代的,这意味着同一组计算必须接连地被重复,直至达到结果为止。在此情况中,计算典型地收敛于有用结果,但并非总是收敛于有用结果。在一些情况中,计算可能不收敛于单个结果,或者如果收敛于单个结果,在一些情况中的结果却是不准确的。对于循环图,信度传播的性能可取决于计算被执行的次序,其被称为消息传递“调度(schedule)”。
在上述的一个特定应用中,信度传播已被采用作为实施针对各种前向纠错码的解码器的有效率的方法。在此情况中,BP使用码与约束的结构以从包含噪声的输入码字推断正确的有效码字,例如,输入码字的每一元素(例如,比特)被表示为一个分布而非离散值。在用于前向纠错的信度传播的一些实施中,数字信号处理器被用来执行算法所需要的各种算术计算,其中所有的统计数据以数字格式被处理。
观察到“软”概率数据本质上是连续的即以有限间隔由实值表示的事实,则能够使用模拟电路来实施信度传播算法。由于仅一个信号,而非表示同一数据的数字信号的不同数位(例如,二进制数位、比特)的多个信号,与统计数据的单元相关联,因此硬件和功率消耗上的节省可能非常显著。
已提出若干中利用模拟电路来执行对各种码(包括卷积码、低密度奇偶校验码(LDPC)或线性块码)的有效率的解码的架构。这些架构包括使用所谓的全平(full flat)架构的模拟实现,其中每个输入数据符号与专用的计算元件相关联。
发明内容
在一个方面,大体上,一种模拟处理器具有第一存储器模块和第二存储器模块。该第一存储器模块用于将第一组存储值存储于各自的存储元件中,第一组存储值各表示各自的向处理器的输入。该第二存储器模块用于将第二组存储值以模拟形式存储于各自的存储元件中。该第二组存储值包括在该处理器的操作期间确定的中间值。该模拟处理器也包括耦接至所述第一和第二存储器模块的模拟计算模块。该处理器可被配置为使得:在一组操作循环中的每一操作循环中,该模拟模块基于所述第一和第二组存储值中的至少一些存储值来确定该第二组存储值中的至少一些存储值的值。输出模块用于从第二组存储值中的至少一些存储值产生一组输出。
各方面可包括以下特征中的一个或更多个。
所述第一存储模块被配置为以模拟形式存储所述第一组存储值。
所述模拟计算模块经由模拟信号路径被链接至所述第一和第二存储器模块。例如,这些模拟信号路径各被配置为在导体上承载值,所述值被表示为与该值成比例的电压和电流中的至少一个。
所述模拟模块可被配置为在多个操作循环中的每一个中确定所述第二组存储值的不同子集的值。
所述处理器包括输入选择电路,该输入选择电路可被配置为将模拟计算模块耦接至第一和第二存储器模块的所选择的存储器元件的输出。
所述处理器对于每个模拟计算模块进一步包括多个信号总线,每个总线向模拟计算模块提供输入值并且可切换地耦接至所述第二存储器模块的多个所述存储元件。
这些存储元件被耦接以可切换地提供存储于该存储元件中的存储值的电流表示,使得提供给模拟计算模块的输入值被表示为大体上与所述存储元件提供的这些电流表示的总和成比例的电流。
所述处理器进一步包括输出部分电路,该输出部分电路可被配置为接受第一和第二存储器模块的所选择的存储器元件的输出,并且确定模拟处理器的输出。
所述处理器包括多个模拟计算模块,这些模拟计算模块在各操作循环中同时可操作以确定该第二组存储值的不同子集的值。
所述第二存储器模块包括多个部分,每个部分与模拟计算模块中的相应的不同模拟计算模块相关联,用于存储由相关联的计算模块所确定的值。
所述第二存储器模块被配置为使得在单个操作循环中,每个存储元件可向所述模拟计算模块中的一个或更多个提供存储值,并且可接受预定值以存储于存储元件中以便在后续操作循环中进行提供。
每个存储元件与两个存储位置相关联,使得在任何一个循环中,一个存储位置被用于接受确定的值而一个存储位置被用于提供值。
所述第二存储器模块包括多个存储器部分。多组部分形成存储库,其中对于模拟计算模块中的每一个,到该模块的一组输入中的每一个与这些存储器部分的不同存储库相关联。
所述处理器可被配置为使得在每个循环中,每个存储器部分包括向一个或更多个模拟计算模块提供值的存储器元件或者用来自一个或更多个模拟计算模块的值被更新的存储器元件。
所述处理器被配置为实施信度传播计算。
所述处理器被配置为实施因子图计算。
所述模拟计算模块被配置为接受和提供大体上为对概率、似然和似然比中的至少一个的对数表示的模拟信号。
所述处理器被配置为实施低密度奇偶校验(LDPC)码的解码器。
所述处理器进一步包括:控制器,被配置为控制该处理器的操作以执行计算的一组迭代,每个迭代包含一组计算循环。
所述一组计算循环在每个迭代中基本上是相同的,每个循环与所述第一和第二存储模块的配置相关联,以将输入和输出提供给一个或更多个模拟计算模块。
所述处理器被配置和/或可被配置为实施解码器奇偶校验码,并且每个循环与一个或更多个奇偶校验约束相关联,并且其中,每个迭代的循环一同与该码的所有这些奇偶校验约束相关联。
所述模拟计算模块实施模拟处理元件的网络。
所述模拟处理元件包括表示软逻辑操作的元件。例如,所述软逻辑操作包括软异或(XOR)操作。
元件的网络是非循环的。
元件的网络包括元件的至少一个循环,所述模拟计算模块被配置为实施松弛计算。
所述模拟计算模块包括用于在处理元件的网络中配置一个或更多个增益特性的输入。
在另一个方面,大体上,解码器包括第一存储器和第二存储器,所述第一存储器用于存储具有以比特为单位的长度的码数据,所述第二存储器用于存储模拟形式的中间数据。所述解码器包括模拟解码器核,所述模拟解码器核耦接至第一存储器以及耦接至第二存储器。该解码器核具有小于该码数据长度的输入长度和小于在该码数据中表示的约束数量的输出长度。所述解码器进一步包括控制器,该控制器用于在一组循环中的每一个中将解码器码的输入耦接至来自第一和第二存储器的所选择的值,并且耦接该解码器核的输出以供存储在第二存储器中。所述解码器的输出部分被耦接至第二存储器,以便基于存储在第二存储器中的值来提供解码数据。
在另一个方面,大体上,一种方法被用于形成模拟处理器的数据表示。该方法包括形成:第一存储器模块的数据表示,该第一存储器模块用于在各自的存储元件中存储第一组存储值,第一组存储值各表示各自的向处理器的输入;第二存储器模块的数据表示,该第二存储器模块用于在各自的存储元件中以模拟形式存储第二组存储值,该第二组存储值包括在处理器的操作期间所确定的中间值;耦接至第一和第二存储器模块的模拟计算模块的数据表示,该处理器可被配置为使得:在一组操作循环中的每一个中,该模拟模块基于第一和第二组存储值中的至少一些存储值来确定该第二组存储值中的至少一些存储值的值;以及输出模块的数据表示,该输出模块用于从该第二组存储值中的至少一些存储值产生一组输出。
在一些例子中,形成所述数据表示包括形成所述处理器的Verilog表示。
所述方法可进一步包括根据所形成的数据表示来制造该模拟处理器的集成电路实现。
在一些例子中,该方法进一步包括接受对奇偶校验码的指定,以及形成数据表示以代表该码的解码器的实现。
在另一个方面,大体上,存储在计算机可读介质上的软件包括用于功能的指令和/或赋予功能的数据,所述用于功能的指令和/或赋予功能的数据在被应用于设备的计算机组件中时用于形成任何一个上述的模拟处理器的集成电路实现。
在另一个方面,大体上,一种解码方法包括:在解码操作的一系列循环中的每个循环中,将码数据的一部分和中间值数据的一部分应用于模拟解码器核,以及将该解码器核的输出存储在该中间数据的模拟存储装置中。包括来自所述模拟存储装置的中间值数据的数据被组合以形成表示该码数据的纠错的解码数据。
在一些例子中,该一系列循环中的每个循环与比所述码的全部多个奇偶校验约束少的相应子集相关联。所述中间值数据可包括各与所述码的所述奇偶校验约束中的不同的奇偶校验约束相关联的值。
在另一个方面,大体上,一种处理器包括第一存储器模块和第二存储器模块,所述第一存储器模块用于存储第一组存储值,所述第一组存储值各表示各自的输入,所述第二存储器模块用于以模拟形式存储第二组存储值。模拟模块被耦接至所述第一和第二存储器模块。该模拟模块被配置为:在至少一个迭代的每个操作循环中,基于所述第一和第二组存储值来更新该第二组存储值中的至少一些存储值。输出模块用于从该第二组存储值中的至少一些存储值产生一组输出。
所述模拟模块可被配置为在迭代的至少两个操作循环中的每一个操作循环中更新该第二组存储值的不同子集。
所述模拟模块可包括一组分布组件,所述一组分布组件各被配置为使用该第一组存储值和该第二组存储值的不同子集来更新该第二组存储值的不同子集。
在另一个方面,大体上,一种解码器包括第一存储器和第二存储器,所述第一存储器用于存储具有以比特为单位的长度的码数据,所述第二存储器用于以模拟形式存储中间数据。模拟解码器核被耦接至该第一存储器以及被耦接到该第二存储器,所述解码器核具有小于该码数据的长度的输入长度以及小于码数据中所表示的约束数量的输出长度。所述解码器中的控制器用于:在多个循环中的每一个中,将该解码器核的输入耦接至来自所述第一和第二存储器的所选择的值,以及耦接该解码器核的输出以供存储在第二存储器中。输出部分被耦接至第二存储器以便基于第二存储器中所存储的值来提供解码数据。
在另一个方面,大体上,一种解码方法包括:在解码操作的若干个循环中的每个循环中,将码数据的一部分和中间值数据的一部分应用于模拟解码器核,以及将该解码器核的输出存储在该中间数据的模拟存储装置中。然后,包括来自所述模拟存储装置的中间值数据的数据被组合以形成表示该码数据的纠错的解码数据。
一个或更多个方面的优点可包括如下:
例如在迭代解码或纠错码的应用中,使用中间值的模拟计算和/或模拟存储与数字实施相比提供较低的功率和/或较小的电路面积实现。
与类似的解码算法的完全并行松弛实施相比,迭代地使用一个或更多个模拟计算核提供较低的功率和/或较小的电路面积。在一些例子中,相对于完全并行松弛实施,部分松弛实施(其中,计算的一些部分在一系列循环中的每个循环中以松弛形式被实施)也可提供类似的优点。
各方法适用于块码的解码,而不要求实现的尺寸和/或功率需求基本上随码的长度而增大。
从以下的描述以及从权利要求,本发明的其它特征和优点是清晰的。
附图说明
图1是长度为8的LDPC码的示例因子图;
图2A是说明将具有双向链接的变量节点变换成一组具有定向链接的变量节点的变换的图,图2B是说明约束节点的类似变换的图;
图3是图1所示的图的一部分;
图4是与图3所示的双向图的部分相对应的定向图的一部分;
图5是说明与图4所示的图的部分相对应的模块实现的图;
图6是说明输出计算的图;
图7A是示出模块的输入与输出之间的关系的图,图7B说明相应的码矩阵;
图8是使用共享模块的针对长度为8的LDPC码的解码器的实现的图;
图9是规定图8所示的共享模块的输入和输出的表;
图10是具有两个共享模块的解码器的框图;
图11是(1056,352)LDPC码的奇偶校验矩阵的表格表示;
图12是与图11所示的码一起使用的共享模块的图;
图13是具有八个共享模块(图示了其中的二个)的(1056,352)LDPC码的解码器的框图;
图14是变量节点的电路实现;
图15A是约束节点的电路实现;
图15B是约束节点的作为替换方案的实现;
图16是说明变量节点的分布式总线实现的图;
图17是作为替换方案的共享模块的图;
图18是使用变量节点的分布式总线实现的解码器的框图;
图19是针对(1056,352)LDPC码的解码器的作为替换方案的架构的框图;
图20是示出图17所示的架构中的多个更新模块的框图;以及
图21A~B是解码器的实现的框图。
具体实施方式
参照图1,在信度传播处理器的基于模拟的实现的一个例子中,低密度奇偶校验(LDPC)码的解码器基于因子图(factor graph)100,在该因子图100中,一个变量节点110与各不同输入比特(bj)相关联,且一个校验(约束)节点120与各约束相关联。在图1中,示出具有八个输入比特并且在输入比特上有四个校验(约束)的例子。码能够以矩阵形式被表示,其中,每列与不同输入比特相关联,且每行与不同校验或约束相关联。如果第j个输入被用于第i个约束,则(i,j)项为1,否则为0。在LDPC例子中,约束是:针对约束的输入的异或为0。可根据以下的校验矩阵来表示长度为8的LPDC码的此例子(注意,在此说明性例子中这些行是依赖性模数2的(dependent modulo 2),通常未必是这样):
在图1中,每条边都是双向的。参照图2A~B,可通过用n个分开的节点代替各n边节点而形成等效的定向(单向)图,所述n个节点中的每一个具有n-1个输入和一个输出,并且在节点之间形成单向边来实现原始图的连接性。参照图2A,例如,每个3边变量节点110可用三个2输入/1输出变量节点210、212来代替。参照图2B,每个4边校验节点120可用四个3输入/1输出校验节点220来代替。
与图1所示的因子图相对应的解码器的模拟实现的一种方法是对等效的单向图的每个节点实现电路元件。参照图3,图示了图1中所示的图的一部分,其示出校验节点0(120)、链接至该校验节点的双向边和变量节点1、3、4和7(110),以及链接至这些变量节点的其它校验节点1、2和3(120)。参照图4,示出相应的定向图的一部分,其中校验节点0(120)被扩展为四个3输入/1输出校验节点220,例如标为“0/1”以指示这是校验节点0的扩展的部分且其输出链接耦接至变量节点1。类似地,变量节点1(110)以其扩展为三个2输入/1输出节点210、212的形式被示出,例如标为“1/0”以指示这是变量节点1的扩展的部分且其输出链接耦接至校验节点0,或标为“1/out”以指示该输出链接提供因子图的输出。
在图4中部分图示的例子中,完全的实现对于每个校验节点具有四个电路元件(即,总共16个扩展单向校验节点220),每个变量节点有三个电路元件(即,总共24个扩展单向变量节点210、212)。如下面将进一步描述的那样,在变量节点的三个电路元件中,两个电路元件(即,对于所有变量节点的共16个扩展变量节点210)被用于在解码操作的迭代阶段中的消息传递,而一个电路元件(即,对于所有变量节点的共8个扩展变量节点212)被用于在解码操作的输出阶段中产生解码器输出(即,“信度”)。
在操作中,输入信号yi被用来确定输入消息的相应的模拟表示,其可在信号映射电路中被确定。在一些例子中,输入消息形成与比特bi对应的概率的表示,但读者应该认识到,下面关于涉及比特概率的表示的计算的讨论是对于在计算期间被存储或传递的输入和内部消息的特定形式的说明。这些消息被提供给变量节点210的输入,例如,作为模拟输入寄存器260的输出。如下面进一步讨论的,在一些实施例中,比特概率的表示被提供作为来自对于(先验)对数似然比(LLR)进行编码的输入寄存器260的模拟信号,所述对数似然比典型地具有如下形式
在相等的先验比特概率的情况下,P(bi=0)=(bi=1)等于
在一些例子中,这些比特概率以单端或差动形式(例如,对于每个单向信号使用一对传导路径)被编码为电压或电流。
在图4中被部分图示的方法是与图1所示的图对应的解码器的一些实现方法中的一种方法,该方法涉及引入模拟存储器元件230以打断定向图中的一些或所有循环。在图4中所示的方法中,存储器元件在校验节点的输出处被引入。其它形态具有代替校验节点的输出处的存储器元件或者除了校验节点的输出处的存储器元件以外还在变量节点的输出处引入的这种存储器元件。注意,在再其它的实施例中,一些或全部循环保持没有存储器元件,并且,随着信号传播通过这些循环,操作至少部分地基于“松弛”形式的计算。在一些实施例中,使用基于松弛与存储器的组合的计算。
如图4中部分图示的例子中所说明的,此实施例中的存储器元件230以模拟形式存储值,并且在校验节点220的每个输出处被引入;即,16个存储器元件被引入。为了标号的简单,对于来自被链接至变量节点j的校验节点i的输出,这些位置被编索引为(i,j)且被标为“Ci,j”。注意,每个位置对应于码的校验矩阵中的非零项之一。(i,j)存储器位置对应于码的校验矩阵的第i行、第j列非零项。
在利用模拟存储器元件的一些方法中,存储器被引入图的电路实现中,使得通过打断定向图中的所有循环而在定向图中不保留循环。于是,该电路实现在一系列根据时钟的循环中操作,使得在每一循环,从一些或所有模拟存储器元件读取的模拟值通过模拟电路元件被传播至一些或所有存储器元件的输入,在所述存储器元件的输入处,这些模拟值在时钟循环的末尾被存储。如下面详细讨论的,这种根据时钟的(“离散时间”)实现可被用于解码,其结果与可从松弛(“连续时间”)实现得到的结果类似。
参照图5,图4所示的例子的另一个部分图示包括与原始校验节点0(120)相关联的四个扩展校验节点220的输出。电路块390形成模拟计算模块,其包括具有到所述四个扩展校验节点220的输出的扩展变量节点1/0、3/0、4/0和7/0(210)的实现。注意,校验节点0对应于码的矩阵表示的第0行,这在图7B中再现。注意,如图7A所示,电路块390的输出对应于矩阵表示的存储器位置第0行。忽略第0行中的项,电路块390的输入对应于在第0行中具有非零项的矩阵表示的各列中的非零项。在此图示中,输入对应于第1、2和3行中的第1、3、4和7列中的非零项。除了来自输入比特概率的输入B1、B3、B4、和B7外,这还导致四个存储器单元输入C1,1、C3,3、C3,4和C2,7。
对于长度为8的LDPC的解码器的完全按照时钟的电路实现的例子在每个单向校验节点220的输出处具有存储器元件230,以及电路块390的四个副本,每个副本对应于码矩阵的一行。在解码操作的第一阶段中,每个单向变量节点210(即,共16个电路元件)从输入比特概率260之一以及存储器元件230的输出取得该单向变量节点210的输入。(注意,通常对于其它尺寸码,变量节点与多于两个的校验节点相关联,因此变量节点将从多个存储器元件取作输入值)。存储器单元230作为整体形成存储器,该存储器被配置为使得实际上所有值在每个时钟循环的末尾被一起更新。这种存储器的一种实现使用“双缓冲”方法,在所述“双缓冲”方法中,两个存储器库被使用,并且在每个时钟周期中,一个存储器库被读取而另一个存储器库被写入,在每个时钟周期之间,存储器库切换角色。
在一些例子中,解码器可在连续时钟循环中执行存储器更新,每个时钟循环对应于对存储器250的所有存储器单元的完全更新。在解码操作的第一阶段中要被执行的时钟循环的数量可以是预先确定的,例如,基于设计偏好或取决于某些收敛条件的满足而被预先确定,例如,码约束(即,完全纠错)或基于迭代之间的输出值的改变率的条件的满足。
参照图6,在一些例子中,一旦存储器更新的迭代被完成,解码器就前进至解码操作的输出阶段以产生表示比特估计的解码器输出。这里,解码器输出被表示为每个输出是基于整个输入信号的对相应输入比特(bj)的估计。在一些例子中,如图6所示,在解码之后,变量节点212输出包括比特概率的表示的消息,例如作为LLR,其可被考虑近似为
其中y\j表示不包括yi的观测。变量节点212的输出在组合元件312中与来自输入寄存器260的输入比特概率表示进行组合,以形成基于所有输入以及解码比特之间的约束的、比特概率的表示。回想输入寄存器260的输出可被考虑表示为:
因此,从组合元件312输出的组合概率被计算为和的近似:
其中,y表示所有的输入值。可取舍地,组合比特概率经过硬判决,该硬判决在二值输出和对数表示的情况下基于对组合对数似然比大于零还是小于零的阈值判断来确定取0还是1的值。例如,输出元件使用存储器元件C0,1和C1,1以及输入B1来产生比特估计在一些实现中,该组的八个输出元件可被配置为以并行方式操作,以在单个时钟循环中产生全组比特估计注意,如图6所示,元件212和312被绘制为分离的。然而,每个元件有效地计算其输入的和,这两个求和可被组合到单个电路元件315中。
参照图8,在按照时钟的电路实现的另一例子中,定向图的所述节点中的每一个不被要求对应于不同的电路元件。即,某些电路元件形成模拟计算模块(“核”),这些模拟计算模块在每次迭代内以不同输入和输出连接而被多次再使用(即,共享)。多个模块390在前一例子中的一个时钟循环中所执行的功能在一系列时钟循环中被执行,使得在该一系列时钟循环中的每一个中,仅有一些存储器元件230被更新,且所有存储器元件在该一系列时钟循环的末尾被更新。类似地,在解码操作的输出阶段,一个或更多个共享电路元件(例如元件315)可在输出部分395中被再使用,以在一系列时钟循环中的每一个中产生一个或更多个比特估计。在下面讨论中,更新图3中的所有存储器元件的整个系列时钟循环被称为“迭代”。
继续参照图8,共享模块390被耦接至输入选择电路370和输出电路380,它们一起提供到存储器250中的存储器元件230的接口。例如,输入电路370将变量节点210的每个输入耦接至适当存储器单元230的输出并且耦接至适当的输入寄存器260,这些输入寄存器260共同形成输入存储器模块265,并且,输出电路380将校验节点220的输出传递至适当存储器单元230的输入,所述存储器单元230共同形成中间存储器模块250。在此例子中,共享模块390包括计算与图1所示的因子图中的双向校验节点120之一对应的所有输出所需要的所有变量节点210和校验节点220。在迭代的每个连续时钟循环期间,输入电路370和输出电路380被有效地重新配置为改变变量节点210和校验节点220对存储器250和输入比特的连接。
作为使用图8所示的共享模块390的多个循环迭代的例子,图9所示的表说明了迭代的四个时钟循环期间的配置。注意,针对循环0指示的配置对应于图5所示的配置。
在一些例子中,多个共享模块390被实现在单个集成电路中。例如,图8所示的例子可被修改为具有两个共享模块,由此在每个时钟循环中为存储器单元230提供八个新的值,更新所有存储器单元的迭代共占用两个循环(即,每迭代四个约束除以每循环两个约束产生每迭代两个循环)。类似地,在一些例子中,共享模块可更新较少的单元,例如,在每个时钟循环中仅更新单个单元(即,使用单个校验节点220和三个变量节点210)。
在上面图8所示的例子中,直到整个迭代完成之后,向存储器250的更新值才被传递到存储器的输出。在一些例子中,在一个时钟循环中被确定的更新值可在同一迭代内的后续时钟循环期间在存储器的输出处被呈现。在这样的例子中,校验节点的输出被计算的次序(“调度”)可能是重要的。调度的例子包括对与各该校验节点120相关联的输出(见图1中的因子图)的顺序的更新,以及其中不同节点在每个时钟循环处被更新的随机更新。
参照图10,在一些例子中,多个模块390被使用(但不是使得迭代可在单个循环中被完成的足够数目),输入选择电路370、输出选择电路380和存储器250被分布在一组本地处理元件490之中,并且,各本地处理元件490具有一个共享模块390。各本地处理元件具有本地输出电路480和本地输入选择电路470。存储器被分布为使得本地处理元件的存储器450中的存储器单元230是在迭代的各个时钟循环中被共享模块390更新的那些单元。如所说明的那样,存储器单元的每一行在一个时钟循环中被更新。控制输入根据被执行的迭代中的循环来控制输入和输出电路的配置。注意,一般地,一个本地处理元件490处的共享模块390需要其自身的本地处理元件和/或另一(或更一般地,一个或更多个其它的)本地处理元件的本地存储器470中的存储器单元230的输出。本地输入选择电路470选择由所述本地处理元件中的每一个所需要的存储器单元,并且将这些值传递到全域选择单元440上,该全域选择单元440接着确定要传递至那些本地处理元件中的每一个上的存储器值的适当子集。在输出阶段,存储器单元经由选择电路470被耦接至输出部分495以确定输出。图10所示的配置也可被理解为:图8所示的输入选择逻辑370的功能被分布在块470和442之中并且输出逻辑380被分布在块480之中。
在一些例子中,全域选择单元440可包括一组选择单元442,各选择单元耦接至各自的本地处理元件的输入,以将存储器值的相应子集提供给共享模块390。例如,一个选择单元442可接收由两个本地输入选择电路470提供的表示存储器值的8个信号,以产生表示要被提供给图10左侧所示的本地处理元件的存储器值的四个输出信号。
再次参照图8,在一些例子中,存储器250作为整体被配置为使得基本上所有值都在迭代中被恰好更新一次。在这种使用“双缓冲”方法的存储器的一种实现中,两个存储器库被使用。在迭代k,写入电路总是写入存储器库#1,而读取电路总是从存储器库#2读取。在迭代k的末尾,存储器库#1已实现完全更新。在下一迭代k+1中,写入电路切换为写入存储器库#2中,而读取电路从在上次迭代中刚被更新的存储器库#1进行读取。在此情况中,存储器250将需要本地校验节点的输出量的两倍的容量来保持分别供读取和写入操作的两个不同副本。
在一些例子中,使用增量的“调度”方法来配置系统,从而在每个循环的末尾而非在由多个循环构成的整个迭代的末尾,值的子集被更新并且可供使用。在一些这样的例子中,例如使用如图8所示的单个块390,在循环中被读取的存储器单元与在循环中被写入的位置之间没有冲突。没有冲突的原因可参照图7A~B来理解。例如,应用对应于第0行的约束,对应于该行中非零项的存储器单元被写入,而其它行中(特别是在第0行中有非零项的列中的)存储器单元被读取。
再次参照图10,当两个或更多个更新模块490被使用时,在一个模块中正在被更新的存储器单元要在同一循环中在另一模块中被读取是有可能的。在一个模块正在应用与第0行相关联的约束并且另一个模块正在应用与第1行相关联的约束的情况下,例如,可再次参照图7A~B来理解这一点。第0行约束的应用写入C0,1并且读取C1,1,而第1行约束的应用写入C1,1并且读取C0,1。
在另一种实现中,用于增量方法的存储器250并不需要整个存储器的容量的两倍。这里,在前半个时钟循环k中,读取电路从存储器取出一些值,所述值中的一些可能在前面的时钟循环k-1中已被更新。异或门的输出在后半个时钟循环k期间被写回至同一存储器中。在一些例子中,通过使用边沿敏感(取代电平敏感)存储器,同一时钟循环中的读取和写入操作将不互相干扰。
以上在长度为8的码的语境下所描述的方法适用于(1056,352)LDPC码的更大的例子,诸如在基于IEEE 802.16的通信中使用的那样。码的校验矩阵能以表格形式来表示,所述表格形式把0,1矩阵打破成44×44块的8行×24列,每一块要么全部是零,要么是在每行中和每列中具有一个非零项的移位对角矩阵。所述码的此表格表示在图11中示出。表格表示中的左上(0,0)块(示出“0”的数)是对角矩阵。示为“8”的(0,2)块是使得如果j=i+8(模44求余)则mi,j=1否则为0的非对角块M=[mi,j]。完全的因子图并未被示出,但能以与图1所示的例子相同的方式从矩阵表示来得到。
参照图12,对于图11所示的码,模块590被配置为包括变量节点510和约束节点520。注意,图12中所示的码是单向节点,其中,链接要么是输入链接要么是输出链接。对于上面讨论的长度为8的码而言,模块590类似于模块390。注意,图11所示的码矩阵中的每一行在除了第6行块以外的所有列块中具有十个非零项,所述第6行块在每块中具有十一个非零项。为了实现第6行块以外的约束,模块590具有十个(单向)变量节点510和十个(单向)约束节点520,而对于第6行块中的行,具有十一个(单向)变量节点510和十一个(单向)约束节点520。每个变量节点接受与码矩阵的特定列中的非零项对应的存储器单元的输入。因此,与范围0至15中的列对应的变量节点具有四个输入(三个输入针对与码矩阵中的项对应的存储器单元且一个输入针对比特概率)以及一个输出。第16至23列的变量节点具有两个或三个输入,这取决于列和块行。在一些例子中,模块590具有最大数目的必需的变量节点和输入,并且在不同循环期间是可配置的,以通过例如忽略某些输入来容纳所需要的特定数目的变量节点和输入。
图13图示可操作以执行解码操作的迭代阶段以供图11所示的(1056,352)LDPC码使用的解码器的一种类型的实现。在这样的实现中,解码器包括模拟输入存储器660,其存储与图11所示的LDPC码的1056个比特(即,44个块中的24个块)对应的输入比特概率的表示(例如,作为将对数似然比进行编码的电压)。这些输入比特然后被存储器选择电路672分配以在一组本地处理元件690中被处理。各本地处理元件690具有共享模块590,该共享模块590包括计算与完全因子图的校验节点中的一个校验节点对应的所有输出所需要的变量节点和校验节点。各处理元件690的结构类似于图10所示的实施长度为8的码的解码器的各处理元件490。
各本地处理元件690也包括本地输出电路680,该本地输出电路680将本地校验节点的输出导引至存储器650的适当单元630。在此例子中,存储器在作为一组本地存储器650的该组本地处理元件690之中被分配,其中的每一个包括在迭代的各个时钟循环中被其本地处理元件690(而非其它本地处理元件)的共享模块590更新的存储器单元630。如前所述,一般地,一个本地处理元件690处的每个共享模块590需要其自身的本地处理元件和/或一个或更多个其它本地处理元件的本地存储器650中的存储器单元的输出。这些输出由一组本地读取电路670获得,该组本地读取电路670从本地存储器650取出值并且将这些值发送给全域选择单元640,该全域选择单元640接着确定要在各个时钟循环处被发送至单个本地处理元件690的输出值的适当组合。全域选择单元640包括与所述本地处理元件中的每一个相关联的单独的输入选择单元642,并且将在每一迭代上输入该单元所需的、存储在存储器650中的值提供作为输出。
图13所示的类型的实现可具有不同数量的处理元件,并且在解码迭代的不同循环中使用应用352个约束中的每一个的不同调度。参照回图11,在(1056,352)LDPC的矩阵表示中,在共8个行块当中,行块中的7个行块(即,第0-5和第7行块)中的行包含10个非零项,而一个块(第6行块)中的行各包含11个非零项。因此,在项的192(即,24*8)个块中,仅81个块为非零的,并且各非零块具有恰好44个非零项,总共3564(44的81倍)个项。
图13所示的示例性布置使用一组8个本地处理元件690,每个本地处理元件690可被配置为执行与校验矩阵的行的相应块中的一个校验节点(即一行)相关联的计算。换言之,每个本地处理元件690在44个循环中被重复使用,以对由相应块中的码矩阵的44行表示的44个约束计算输出。例如,8个元件在第一循环上分别应用约束0、44、88、...、308,分别应用约束1、45、89、...、309,并且在迭代的最后的循环上最后分别应用约束43、87、131、...、351。
注意,由于码矩阵中的各行块的差异,每个本地处理元件690中的共享模块590可能具有差异。考虑用于执行与第一(行块0)块中的行相关联的计算的共享模块590。单向图中的相应的校验节点具有链接至变量节点的10条边。首先的8个变量节点中的每一个具有五条边,四条边用于校验节点并且一条边用于比特输入;第9个变量节点具有四条边,三条边用于校验节点并且一条边用于比特输入,以及,第10个变量节点具有三条边,两条边用于校验节点并且一条边用于比特输入。共享模块590因此具有用于10个(有向)校验节点的电路,每个电路具有9个输入和一个输出。校验节点的10个输出更新本地存储器中的10个位置。本地处理器具有用于10个(有向)变量节点510的电路,每个电路具有四个、三个或两个输入以及一个输出。各节点510提供向10个(有向)校验节点520中的9个校验节点的输入。在用于每个变量的输入中,一个输入针对输入比特概率,而其余的输入针对来自本地存储器的值。
其它本地处理元件中的共享模块590与和第0行块相关联的模块具有相同的结构,不同之处包括用于第6行块的共享模块590具有11个校验节点以及11个变量节点,而用于第1至5块的共享模块590各具有带有两个输入的两个变量节点和带有四个输入的其它变量节点。
在操作中,在每个时钟循环,用于第0行块的共享模块590的变量节点从输入存储器660读取10组输入(每一组用于一个变量节点),并且更新本地存储器650的10个位置。来自存储器650的值被传递经过多个本地处理元件690的块670并且经过与目的地处理元件相关联的控制单元642。超过迭代的44个时钟循环,共享模块590为本地存储器中的所有440(10的44倍)个位置提供更新值。
如上所概述的那样,在一些实施例中,除了作为11x11模块而被实现的针对第6行块的共享模块590以外,共享模块590中的每一个可作为10个变量节点与10个校验节点的组合(也称为10x10共享模块)而被实现。
可在上述方法内使用一些不同的电路布置和信号编码。对于某些软解码应用,可使用软等同(Equals)门来形成各变量节点电路,并且,可通过软异或门来形成各校验节点电路。在图13的例子中,各变量节点采用4输入(或3输入或2输入)软等同门的形式,并且每个校验节点采用9输入(或10输入)软异或门的形式。因此,对于每个共享模块590,除了从输入存储器660读取输入比特中的10个(或11个)(各针对一个软等同门)之外,还需要来自本地存储器650的10(或11)组值(各组针对一个软等同门)。注意,在此例子中,这些值来自其它本地处理元件中的存储器单元,而非来自同一处理元件中的存储器650。
提供作为至共享模块590的输入所需要的存储器值的适当组合的一种方法包括:在全域控制单元640中形成一组8个单个选择单元642,选择单元642中的每一个选择或组合相应的共享模块590的输入值所需要的本地处理元件690的输出。在一些例子中,读取电路670中的每一个选择性地耦接至该组8个选择单元,例如,使用一组8条总线,每条总线包含10(或11)条导线,用于在一个时钟循环中将总共10(或11)个输出值发送至单个选择单元。然后,选择单元642选择一组10x3(或11x3)的输出值,以供输入至共享模块690。
在一些实施例中,通过将解码器布置到本地处理元件中,所有的异或信号对于它们被形成时所在的本地处理元件都变成本地的。到等同门的输入变成来自多个本地处理元件的全域路由的信号。在一些例子中,本地处理元件690能以一种方式被配置,该方式使得每个共享模块690仅需要来自预定组的三个其它本地处理元件的输出值。结果,每个本地处理元件至全域控制单元640之间的耦接可被减少,例如,读取电路670现在正被耦接至仅3个(而非8个)选择单元。在一些例子中,本地处理元件690可进一步被布置为使得所有偶数编号(即,0、2、4和6)的本地处理元件彼此通信但不与奇数编号(即,1、3、5和7)的本地处理元件通信(除了校验矩阵的最后八个块列以外)。
注意,在一些有关软解码的应用中,考虑到块的原始比特所满足的约束,上面所述的解码器被用于将基于每个比特的单独测量的输入“软”比特转换成各基于软比特的整个块的软比特。然后,这些输出软比特可通过硬判决而被进一步处理或转换成取值0或1的输出“硬”比特。输入软比特可在概率域中被提供,例如,作为比特是1或0的值的概率。作为替换方案,输入软比特可在对数域中被提供,例如,作为比特的对数似然比,例如,如下式定义
在任一情况中,可使用执行适于特定应用的模拟计算功能的一组模拟电路组件来实现共享模块590。在2009年3月2日提出的、名称为“Circuits for Soft Logical Functions”的美国专利申请序号第61/156,794号中详细说明了这些模拟电路组件(诸如,软等同和软异或)中的一些的实现。
参照图14,在一些实现中,软等同利用差动电压输入,每个差动电压输入表示对数似然比,以产生与输入的和成比例的电压。每个差动电压输入被传递经过电压-电流转换器712,并且,所得的电流在总线714上被相加。该总线上的电流被传递经过电流-电压转换器716。然后,输出电压分支至需要此等同节点的输出的软异或电路。示例性电路实现在图中被示出。多种替换性的电路可被使用,包括在美国专利申请序号第61/156,794号中所描述的替换性的软等同电路。
参照图15A,在一些实现中,软异或电路利用图14所示的电路所产生的对数域差动电压。在图15A所示的软异或电路的示例性实现(其对于对数域处理的理想软异或函数进行近似)中,一个差动电压输入被传递至电路812。对软异或电路的第二以及进一步的输入被传递至电路814,电路814中的每一个执行模拟计算,该模拟计算近似根据所述输入的由前面的元件提供的电流的乘法。所得的电流近似各输入的理想软异或函数,并且被传递经过电流-电压转换器816,以提供软异或的差动电压输出。注意,与图14所示的软等同电路不同,总的软异或电路的输出在任何特定循环都并不扇出(fan out),因为软异或电路的输出将输入仅提供给单个存储器单元。电路参数(例如电阻值、晶体管尺寸和电压缩放)被选择以最佳地近似软异或的理想函数和/或最优化较高层次(例如,整体解码)系统性能。
参照图15B,图15A所示的对软异或电路520的作为替换方案的电路元件布置820使用分支树结构、可取舍地共享与相同双向校验节点相关联的不同树之间的信号,来实施定向软异或电路。特定地,使用参照图15A而引入的电路元件812、814和816,多组电路元件818有效地形成两输入、一输出的基于电压的软异或电路。然后,这些组电路元件818以树结构被布置,优选地为尽可能平衡地形成图中所示的电路布置820的二叉树结构。在一些实现中,图15B所示的分支结构可具有优选的特性,例如,用LLR表示来提供理想软异或函数的更好的近似。此外,当多个模块820针对一组单向异或电路而被实现时,某些计算可被共享,例如通过将信号825从一个模块传递至另一模块,其中所述另一模块中的树的一部分可被消除。
参照图16,在一些实现中,与各等同门相关联的总线714被分配。将其值存储为差动电压的每个存储器单元230在其输出处具有相应的电压-电流转换器912。这些电压-电流转换器与图14所示的转换器712类似。电流输出被传递至一组开关913,如果相对应的单元的值要作为对应于该开关913的电流总线714上的电流而被注入,则所述一组开关913中的最多一个开关被启用(enabled)。每条总线714类似地包括一个部分,在每个循环,与适当输入比特相关联的电流被注入到该部分上,以解决(account for)对应于该比特输入的等同门的输入。注意,每个等同节点的总线714可具有复杂结构,例如,具有大量的分支。尽管如此,所有注入到总线上的电流通行至该等同节点的电流-电压转换器716,电流从该处分支到需要此输出的单向异或电路。
参照图17,在利用分布式总线714来执行电流求和功能的一些实现中,图12所示的模块590被替换为连同分布式总线714和电压-电流转换器712的模块592。在模块592中,每个变量节点对应于电流-电压转换器716,该电流-电压转换器716输出与相应总线714上总共注入的电流成比例的电压,然后,该电压分支到适当的校验节点电路520。注意,在再其它的实现中,电流-电压转换器716自身被分配,并且,模块593(即,模块592的一部分)接收内部地分配给适当校验节点电路的电压输入。
参照图18,可操作以执行解码操作的迭代阶段以供与图11所示(1056,352)LDPC码一起使用的解码器的实现的第二例子提供与图13所示的实现相同或相似的功能。在此例子中,如图17所示,模块592被使用。实施与变量节点相关联的每个软等同电路的电路在模块592中包括电流-电压转换器,其中对应于模块592的10个单向变量节点的分布式总线被分配。每个存储器652包括经由读取切换电路671将电流注入至与不同变量节点的软等同电路对应的适当总线的电路。总线部分644基本上包括81条总线,每条总线在模块592的输入处与不同的电流-电压转换器716相关联。因此,软等同电路以基本上形成存储器652与模拟计算模块592之间的互连路径的方式被分配。
用于(1056,352)LDPC码的解码器的另一种实现使用不同的存储器单元布置,并且利用分布式的电流求和方法来实现基于对数似然比的等同门。该实现利用其中多个约束被应用在迭代的每一循环的调度,并且,更新值在迭代的下一循环中被使用。参照图11,前面描述的方法在每个循环中应用八个约束,每个约束与不同行块相关联。如下所讨论的,存在同一单元230在同一循环中既被写入又被读取的情况,因此诸如每个循环双缓冲和多阶段(更新、写入等)之类的方法被使用。在本实现中,在每个循环中应用多个约束,且这些约束被选择使得在存储器单元上没有读取与写入的冲突,从而允许调度方法而无需诸如双缓冲之类的方法。避免冲突的一种方式是使在一个循环中应用的约束中的每一个来自同一行块。这避免冲突的原因可参照有关较简单的长度为8的码的图7A来理解。如所阐释的那样,约束对应于码矩阵中的行,并且,被更新的单元与该行中的非零项相关联。被读取的单元处于其中约束的行具有非零项的列中。如果另一约束在同一循环中被应用,但与该约束相关联的列在与第一约束的行相同的列中没有非零项,则针对第二约束更新的单元不被读取以应用第一约束,并且,被读取以应用第二约束的单元与针对第一约束读取的单元相分离。回到图11所示的码矩阵,由于每个非零块的偏移对角结构,很明显来自同一行块的多个行具有这样的性质:没有两行在相同列的任何列中具有“1”。因此,与一个行块中的多个行对应的多个约束可在一个循环中被应用,而没有读取/写入冲突。作为另一观测,由于码矩阵的总体块结构,一行在偶数块2n并且一行在奇数块2n+3mod 8(或奇数块2n+5 mod 8)的两行类似地无法具有共同带有非零项的任何列。
参照图19,此方法的一个实例的部分图示将存储器950的存储器单元230布置于44个存储器单元的组955中。这些组955中的每一个对应于图11所示的码矩阵的不同的非零块。此外,这些组被布置到存储器库958中,每个存储器库958以与它们被布置在码矩阵中相同的方式对应于一列。对于首先的24列,在每个列块中恰好有对应于四个非零块的四个存储器组955。最后八列中的每一列各具有两个或三个存储器组。
在图19中,单个模块590被示出,表示更新逻辑在循环中应用单个约束。如前面讨论的,模块中的每个等同节点接收多达四个输入,多达三个输入来自存储器950内的存储器单元并且一个输入来自存储器960中的输入寄存器,所述输入寄存器也被布置到组965中,每个组965与不同列块相关联。等同节点使用分布式电流总线方法,如上所述,电流编码对数似然比被注入到该分布式电流总线上。图19示出第一行块中的约束的应用。在存储器组955的第一存储器库中,第一存储器组955中的一个存储器单元被更新,并且来自其它存储器组955中的每一个的一个存储器单元被读取,以及,来自与该列块相关联的寄存器组965中的输入寄存器的一个输入被读取。对模块590的10个(或11个,取决于行块而定)输入中的每一个均来自存储器组955的一个存储器库。
如下面进一步讨论的,块的非对角结构限制存储器单元的哪些组合在任何一个循环中被耦接至电流总线。特定地,存储器单元的组合必须在校验矩阵的同一列中被找到。因此,如果存储器955按块列内的列被编索引,则在任何特定循环中,相同索引被应用于存储器库958中的每个存储器955以及输入存储器组965。也请注意,按列编索引的布置,相邻的列自然地被相邻地编索引,将从最高索引(43)至零的范围作为相邻的来对待。
在一些例子中,在每个循环中应用一个行块中的多个约束。例如,可在每个循环中应用对应于四个相邻行的四个约束。参照图20,与图19相比,这样的例子具有模块592的四个副本,并且,每个分配的等同节点具有单独的输入总线。为更新一个行块内的四个相邻的约束行,对于每个块列,在存储器组955的每个存储器库958中读取或写入四个相邻的列。如在图19所示的例子中那样,同一列中的存储器位置被耦接至同一总线,因此,存储器955的四个相邻列的输出各被输出至四个总线中的不同总线。类似地,对存储器组955之一中的四个存储器单元的相邻组中的组955的更新的更新。每个存储器组955被布置在各有十一个存储器单元的四个组966中,各组966被耦接至四条总线中的相应的一条总线。例如,一个存储器组966具有块内列索引0、3、7、...40(即,列索引0 mod 4)的存储器单元,第二存储器组966具有列索引1、4、...41(即,1mod 4)的存储器单元,等等。在任何循环中,来自组966的一个单元被耦接至总线,或者来自该组的一个单元被写入。在在每个块列中,与第一模块590相关联被应用的列取决于被更新的块中的块对角线的偏移。因此,如果第一约束行在索引i的该块列中具有非零项,则偏移器970“旋转”电流总线i mod 4至第0模块590,“旋转”电流总线(i+1)mod 4至第1模块、“旋转”电流总线(i+2)mod 4至第2模块、以及“旋转”电流总线(i+3)mod 4至第3模块。
在一些例子中,软等同电路的功能被分配为使得存储器组966的输出是如图20所示在总线上求和的电流。于是,移位器970对于其输入处的每条总线包括电流-电压转换电路,进而当每个电压编码输入被应用于适当选择的软异或电路的输入时将所得的电压移至模块。然后,模块592被模块593代替,所述模块593接受电压而不是电流输入。
注意,一些进一步的优化可被使用以利用码的结构。例如,来自行块2n的四个约束可与来自行块(2n+3 mod 8)的四个约束同时被应用,由此允许在每个循环中应用八个约束。注意,在存储器组955的首先的16个存储器库中,偶数块行中的存储器基于仅基于首先的16个块列中的偶数块行以及最后8个块列中的奇数块行的更新而被更新。类似地,奇数块行中的存储器仅基于首先的16个块列中的奇数块行和最后8个块列中的偶数块行而被更新(用来更新块(0,16)的块(6,16)除外),反之亦然。
在各个例子中,可使用用于将多组约束与循环相关联的不同调度。例如,以四个模块590,应用于每个循环中的约束可在每个迭代的88个循环中作为{0、1、2、3}、{4、5、6、7}、...{40、41、42、43}、{44、45、46、47}、...{348、349、350、351}来进行。在使用十一个模块的另一例子中,这些循环可在每个迭代的32个循环中作为{0、1、...、10}、{11、12、...、21}、...{341、342、...、351}进行。作为另一例子,以两组四个模块590(即总共八个,四个针对块2n且四个针对块2n+3),应用的约束可在44个循环中作为{0、1、2、3、132、133、134、135}、{4、5、6、7、136、137、138、139}、...{40、41、42、43、172、172、173、174}、{88、89、90、91、220、221、222、223}、...进行。
参照图21A~B,示出针对具有图11所示的校验矩阵的码的解码器的实现的总体图。输入存储器1660保持1056=24x44个输入值,其被表示为与LLR输入成比例的电压。在一些例子中,这些值在迭代阶段开始之前以串行方式被加载例如一次四个值。在一些例子中,LLR值是从信号映射电路获得的,所述信号映射电路接受信号值yi中的一个或更多个并且输出LLR值中的一个或更多个。在一些例子中,例如,当使用多级编码时,诸如当以十六级模拟信号编码四比特值时,一个信号输入产生一组LLR输入。一般地,图21A~B中所示的架构具有针对“偶数”与“奇数”块行的分别的部分,其如上所介绍的那样允许对不同块行中的约束进行同时处理而没有存储器单元的读-写竞争。一组存储器库1650包括存储器1652,每个存储器1652保持与校验矩阵的相应块对应的44个项。每个存储器库在校验矩阵的特定块列中仅包括要么奇数要么偶数块行。这些存储器库一起对应于图19中所示的存储器955。两个奇偶校验处理器1590被示出。每个奇偶校验处理器1590实现四个模拟计算模块,这些模拟计算模块通常为在图17中所示的模块593的形式。存储器库1650经由旋转器模块1970被耦接至奇偶校验处理器1590。一般地,每个旋转器模块1970包括一组四个旋转器,每个旋转器与相应的奇偶校验处理器1590中的四个模拟计算模块之一相关联。注意,这些旋转器模块包括电流-电压转换电路,使得存储器库1650与旋转器模块1970之间的链接被以差动电流编码,而旋转器模块1970与奇偶校验处理器1590之间的链接被以差动电压编码。奇偶校验处理器1590的输出被传递至适当的存储器库1590,在该适当的存储器库1590中存储确定的值。输出部分1400被耦接至存储器库1650以及被耦接至输入存储器1660,并且包括用于计算输出值的电路,该电路在每次复用时可被计算多个输出。控制逻辑未被示出,该控制逻辑与存储器库内的旋转器和读写控制逻辑的配置进行协调。
应该理解,上面描述的解码器应用只是模拟信度传播处理器的应用的一个例子。在这些例子中采用的技术适用于信度传播的其它用途。
信度传播处理器的实现可对特定应用具有不同程度的客户定制化。一般地,控制器(未示出)对迭代的不同循环中的不同约束的应用进行排序,并且对用于完成计算的该系列的迭代进行排序。控制器可以是被配置用于特定码、用于特定码类别、或一些其它计算类别的特定用途控制器或序列发生器。该控制器也可以是可用来实现多种计算的通用控制器。在一些实现中,包括变量和约束节点的模块可具有固定的结构,或者可以是可配置的。电路配置可通过控制器的操作而发生以及/或者可通过场可编程方法来实现该配置,在所述场可编程方法中,使用应用于处理器的个性化数据来启用电路元件之间的某些连接。在一些情况中,控制器被实施在实施处理器的模拟电路部分的同一装置上,而在其它情况中,控制器在与实施模拟处理的装置通信的分开的装置中被完全或部分地实施。
信度传播处理器可用于许多应用中。一个应用涉及通信系统,其中,信度传播处理器被用作在软解映射器之后的软解码器,该软解映射器将在有噪通信信道上发射的信号转换成软比特。所述软比特可在概率域中被表示(例如,表示为概率或差动概率),或者作为替换方案,在对数域中被表示(例如,表示为对数似然比或对数优势)。软解映射的例子在名称为“Signal Mapping”的美国专利申请序号第61/156,721号中被详细描述。
使用模拟信度传播处理器时实施的解码器的一个应用是在通信系统中,其中,接收已发射信息的块,并且,解码器对所接收到的信息执行纠错。这种解码器的另一应用是作为数据存储系统的组件,例如半导体存储器(例如,可包括多级单元存储的闪存存储器)或盘存储存储器,其中,解码器对在存储系统中取出的信息(例如,作为存储器单元中的存储级或者作为盘存储系统中的磁化程度而被取出)执行纠错。在一些例子中,解码器与半导体存储器被集成在同一器件上,而在其它例子中,解码器在单独的器件中被实现(例如,在单独的集成电路上)。可利用如本申请所述的解码器实现的存储器系统的一些例子可在2009年8月6日提出的、名称为“STORAGE DEVICES WITHSOFT PROCESSING”的共同待决美国申请第12/537,060号中找到,以引用方式将该申请并入本文。
也应该明白的是,对所描述的方法的各种修改是可能的。例如,存储器元件未必是模拟和/或连续取值的。例如,可使用数字(例如,二进制(以2为基)的数位存储,可能具有“软”形式)和/或量化的存储。节点间传递的值的其它表示可被使用。在一些例子中,使用对数似然比。其它可能性包括传递线性概率。对于不同的表示,等同以及约束节点的不同电路实现将被使用。可使用表示的各种编码。在上述一些例子中,差动电压以及差动电流编码被使用。替换方案包括随机(例如,抖动)表示、数字或量化表示。
上述例子以各种方式被实现。在一个例子中,使用计算机实现(可取舍地,人类辅助)的技术来变换例如被表示为校验矩阵的特定码,该技术产生切换与互连电路的数据表示,以及可取舍地,软等同和软异或电路的电路实现的数据表示。在一些例子中,此数据表示(例如,数据结构或指令)被存储于机器可读取介质上,并且之后在被用于基于计算机的器件布局和制造系统中时被用来赋予功能性。换言之,当数据表示在这种系统中被采用时,该数据表述被读取并且确定物理电路实现。数据表示的一个例子包括遵循Verilog-A或Verilog-AMS规范的表示。在其它例子中,特定的码未被指定,并且,所得的器件可被配置为适应各种不同的码。此外,该方法并不限于用来对码进行解码的器件,因为可使用上述的技术实现许多其它基于模拟图的计算。
在一些例子中,器件可具有某种程度上不可预测的特性,例如,这取决于特定制造时间(工艺)或运行时间条件而定。例如,晶体管的增益可能取决于工艺特性或取决于器件的工作温度。一些设计包括可选择的和/或可配置的增益元件,例如,以调整软异或电路的增益、电流-电压转换电路的增益、存储器单元的电流输出的增益等。在一些例子中,通过例如在两输入异或阶段的树的最后阶段控制电阻元件来调整增益,所述电阻元件诸如但不限于:电流-电压转换器716(见图14)或电路812和814(见图15A)或电路816(见图15B)中的电阻性元件。增益控制能够以数字形式被提供,并且被传递通过数字-模拟转换器以到达模拟可控的电阻性元件(例如,被适当偏置的晶体管)。在一些例子中,例如,在工作用途之前的系统校正阶段或者在元件的正在进行的(例如,反馈)适应中,这些增益被调整以优化总体系统性能,以维持最优或接近最优的性能。
应理解,前面的描述意图在于说明而非限制本发明的范围,本发明的范围由后附的权利要求的范围来限定。其它实施例在后面的权利要求的范围内。
Claims (39)
1.一种模拟处理器,包括:
第一存储器模块(265;960),用于将第一组存储值存储于各自的存储元件(260)中,所述第一组存储值各表示各自的向处理器的输入;
第二存储器模块(250;450;950),用于将第二组存储值以模拟形式存储于各自的存储元件(230)中,所述第二组存储值包括在该处理器的操作期间所确定的中间值;
模拟计算模块(390;590;592;593),耦接至所述第一存储器模块和所述第二存储器模块,该处理器能够被配置为使得:在多个操作循环中的每个操作循环中,该模拟模块基于所述第一组存储值和第二组存储值中的至少一些存储值来确定该第二组存储值中的至少一些存储值的值;以及
输出模块(395;495),用于从第二组存储值中的至少一些存储值产生一组输出。
2.如权利要求1所述的处理器,其中,所述第一存储模块被配置为以模拟形式存储所述第一组存储值。
3.如权利要求1所述的处理器,其中,所述模拟计算模块经由模拟信号路径被链接至所述第一存储器模块和所述第二存储器模块。
4.如权利要求3所述的处理器,其中,所述模拟信号路径各被配置为在导体上承载值,该值被表示为与该值成比例的电压和电流中的至少一个。
5.如权利要求1所述的处理器,其中,所述模拟模块能够被配置为在多个操作循环中的每一个中确定所述第二组存储值的不同子集的值。
6.如权利要求1所述的处理器,进一步包括输入选择电路(370;470;440),该输入选择电路能够被配置为将模拟计算模块(390)耦接至第一存储器模块和第二存储器模块的所选择的存储器元件(260,230)的输出。
7.如权利要求1所述的处理器,所述处理器对于每个模拟计算模块(592)进一步包括多个信号总线(714),每个总线向模拟计算模块提供输入值并且可切换地耦接至所述第二存储器模块的多个所述存储元件(230)。
8.如权利要求7所述的处理器,其中,所述存储元件被耦接以可切换地提供存储于该存储元件中的存储值的电流表示,使得提供给模拟计算模块的输入值被表示为大体上与所述存储元件提供的电流表示的总和成比例的电流。
9.如权利要求1所述的处理器,进一步包括输出部分电路(395;495),该输出部分电路能够被配置为接受第一存储器模块和第二存储器模块的所选择的存储器元件(260,230)的输出,并且确定所述模拟处理器的输出。
10.如权利要求1所述的处理器,包括多个模拟计算模块(390),所述模拟计算模块在各操作循环中同时能够操作以确定第二组存储值的不同子集的值。
11.如权利要求10所述的处理器,其中,所述第二存储器模块包括多个部分(450),每个部分与模拟计算模块(390)中的相应的不同模拟计算模块相关联,用于存储由相关联的计算模块所确定的值。
12.如权利要求10所述的处理器,其中,所述第二存储器模块(250)被配置为使得在单个操作循环中,每个存储元件(230)能够向所述模拟计算模块(390)中的一个或更多个提供存储值,并且能够接受所确定的值以存储于存储元件中以便在后续操作循环中进行提供。
13.如权利要求12所述的处理器,其中,每个存储元件与两个存储位置相关联,使得在任何一个循环中,一个存储位置被用于接受确定的值而一个存储位置被用于提供值。
14.如权利要求10所述的处理器,其中,所述第二存储器模块包括多个存储器部分(955),多组所述存储器部分形成存储库(958),其中,对于所述模拟计算模块中的每一个,到该模块的多个输入中的每一个与这些存储器部分的不同存储库相关联。
15.如权利要求14所述的处理器,其中,所述处理器能够被配置为使得:在每个循环中,每个存储器部分包括向一个或更多个模拟计算模块提供值的存储器元件或者用来自一个或更多个模拟计算模块的值被更新的存储器元件。
16.如权利要求1所述的处理器,其中,所述处理器被配置为实施信度传播计算。
17.如权利要求1所述的处理器,其中,所述处理器被配置为实施因子图计算。
18.如权利要求16或17所述的处理器,其中,所述模拟计算模块被配置为接受和提供作为概率、似然和似然比中的至少一个的大体上的对数表示的模拟信号。
19.如权利要求17所述的处理器,其中,所述处理器被配置为实施低密度奇偶校验(LDPC)码的解码器。
20.如权利要求1所述的处理器,进一步包括:
控制器,被配置为控制该处理器的操作以执行计算的多个迭代,每个迭代包含多个计算循环。
21.如权利要求20所述的处理器,其中,所述多个计算循环在每个迭代中基本上是相同的,每个计算循环与所述第一存储模块和第二存储模块的配置相关联,以将输入和输出提供给一个或更多个模拟计算模块。
22.如权利要求20所述的处理器,其中,所述处理器被配置和/或能够被配置为实施解码器奇偶校验码,并且每个计算循环与一个或更多个奇偶校验约束相关联,并且其中,每个迭代的循环一同与该码的所有奇偶校验约束相关联。
23.如权利要求1所述的处理器,其中,所述模拟计算模块实现模拟处理元件的网络。
24.如权利要求24所述的处理器,其中,所述模拟处理元件包括表示软逻辑操作的元件。
25.如权利要求24所述的处理器,其中,所述软逻辑操作包括软异或操作。
26.如权利要求23所述的处理器,其中,元件的网络是非循环的。
27.如权利要求23所述的处理器,其中,元件的网络包括元件的至少一个循环,所述模拟计算模块被配置为实施松弛计算。
28.如权利要求23所述的处理器,其中,所述模拟计算模块包括用于在处理元件的网络中配置一个或更多个增益特性的输入。
29.一种解码器,包括:
第一存储器,用于存储具有以比特为单位的长度的码数据;
第二存储器,用于以模拟形式存储中间数据;
模拟解码器核,耦接至第一存储器以及耦接至第二存储器,该解码器核具有小于该码数据长度的输入长度和小于在该码数据中表示的约束数量的输出长度;
控制器,该控制器用于在多个循环中的每一个中将解码器核的输入耦接至来自所述第一存储器和第二存储器的所选择的值,并且耦接该解码器核的输出以供存储在第二存储器中;以及
输出部分,耦接至第二存储器,用于基于存储在第二存储器中的值来提供解码数据。
30.如权利要求29所述的解码器,其中,所述第一存储器被配置为用于以模拟形式存储码数据。
31.一种用于形成模拟处理器的数据表示的方法,该方法包括:
形成第一存储器模块(265;960)的数据表示,该第一存储器模块用于在各自的存储元件(260)中存储第一组存储值,所述第一组存储值各表示各自的向处理器的输入;
形成第二存储器模块(250;450;950)的数据表示,该第二存储器模块用于在各自的存储元件(230)中以模拟形式存储第二组存储值,所述第二组存储值包括在处理器的操作期间所确定的中间值;
形成耦接至第一存储器模块和第二存储器模块的模拟计算模块(390;590;592;593)的数据表示,所述处理器能够被配置为使得:在多个操作循环中的每一个中,该模拟模块基于所述第一组存储值和第二组存储值中的至少一些存储值来确定该第二组存储值中的至少一些存储值的值;以及
形成输出模块(395;495)的数据表示,该输出模块用于从该第二组存储值中的至少一些存储值产生一组输出。
32.如权利要求31所述的方法,其中,形成所述数据表示包括形成所述处理器的Verilog表示。
33.如权利要求31所述的方法,进一步包括根据所形成的数据表示来制造该模拟处理器的集成电路实现。
34.如权利要求31所述的方法,进一步包括:
接受对奇偶校验码的指定,以及
形成数据表示以代表该码的解码器的实现。
35.包含形成如权利要求1~27中的任一项的模拟处理器的数据表示的方法。
36.一种存储在计算机可读介质上的软件,其包括用于功能的指令和/或赋予功能的数据,所述用于功能的指令和/或赋予功能的数据在被应用于设备的计算机组件中时用于形成如权利要求1~27中的任一项所述的模拟处理器的集成电路实现。
37.一种解码方法,包括:
在解码操作的多个循环中的每个循环中,将码数据的一部分和中间值数据的一部分应用于模拟解码器核,以及将该解码器核的输出存储在该中间数据的模拟存储装置中;以及
将包括来自所述模拟存储装置的中间值数据的数据进行组合以形成表示该码数据的纠错的解码数据。
38.如权利要求37所述的方法,其中,所述多个循环中的每个循环与比所述码的全部多个奇偶校验约束少的相应子集相关联。
39.如权利要求38所述的方法,其中,所述中间值数据包括各与所述码的所述奇偶校验约束中的不同的奇偶校验约束相关联的值。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15679209P | 2009-03-02 | 2009-03-02 | |
US61/156,792 | 2009-03-02 | ||
US29399910P | 2010-01-11 | 2010-01-11 | |
US61/293,999 | 2010-01-11 | ||
PCT/US2010/025956 WO2010101944A1 (en) | 2009-03-02 | 2010-03-02 | Belief propagation processor |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102439853A true CN102439853A (zh) | 2012-05-02 |
CN102439853B CN102439853B (zh) | 2014-12-24 |
Family
ID=42709989
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080018698.XA Expired - Fee Related CN102439853B (zh) | 2009-03-02 | 2010-03-02 | 信度传播处理器 |
Country Status (5)
Country | Link |
---|---|
US (2) | US8799346B2 (zh) |
EP (1) | EP2404382A4 (zh) |
CN (1) | CN102439853B (zh) |
TW (1) | TW201037529A (zh) |
WO (1) | WO2010101944A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111158583A (zh) * | 2019-11-25 | 2020-05-15 | 深圳壹账通智能科技有限公司 | 图计算的布尔型变量存储方法、装置、设备及存储介质 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8633732B2 (en) | 2009-03-02 | 2014-01-21 | Mitsubishi Electric Research Laboratories, Inc. | Circuits for soft logical functions |
US8458114B2 (en) | 2009-03-02 | 2013-06-04 | Analog Devices, Inc. | Analog computation using numerical representations with uncertainty |
US8115513B2 (en) | 2009-03-02 | 2012-02-14 | Mitsubishi Electric Research Laboratories, Inc. | Circuits for soft logical functions |
TW201037529A (en) | 2009-03-02 | 2010-10-16 | David Reynolds | Belief propagation processor |
US8972831B2 (en) | 2010-01-11 | 2015-03-03 | Analog Devices, Inc. | Belief propagation processor |
US8627246B2 (en) | 2010-01-13 | 2014-01-07 | Analog Devices, Inc. | Implementation of factor graphs |
WO2011103565A1 (en) | 2010-02-22 | 2011-08-25 | Lyric Semiconductor, Inc. | Mixed signal stochastic belief propagation |
WO2011152900A2 (en) * | 2010-02-22 | 2011-12-08 | Benjamin Vigoda | Distributed factor graph system |
US9047153B2 (en) | 2010-02-22 | 2015-06-02 | Analog Devices, Inc. | Selective delay of data receipt in stochastic computation |
US8862961B2 (en) * | 2012-09-18 | 2014-10-14 | Lsi Corporation | LDPC decoder with dynamic graph modification |
US20150149390A1 (en) * | 2013-11-25 | 2015-05-28 | Palo Alto Research Center Incorporated | Method and system for creating an intelligent digital self representation |
JP6290057B2 (ja) * | 2014-09-22 | 2018-03-07 | 株式会社東芝 | 復号装置、復号方法およびメモリシステム |
WO2020006567A1 (en) * | 2018-06-29 | 2020-01-02 | Security On-Demand, Inc. | Systems and methods for intelligent capture and fast transformations of granulated data summaries in database engines |
WO2022047699A1 (en) * | 2020-09-03 | 2022-03-10 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and apparatus for improved belief propagation based decoding |
DE102022210055A1 (de) | 2022-09-23 | 2024-03-28 | Technische Universität Dortmund, Körperschaft des öffentlichen Rechts | Programmierbares integriertes analoges Schaltungsgitter |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4649515A (en) * | 1984-04-30 | 1987-03-10 | Westinghouse Electric Corp. | Methods and apparatus for system fault diagnosis and control |
CN1201296A (zh) * | 1997-05-01 | 1998-12-09 | 三菱电机株式会社 | 纠错方法和纠错装置 |
US6938196B2 (en) * | 2001-06-15 | 2005-08-30 | Flarion Technologies, Inc. | Node processors for use in parity check decoders |
US20060248317A1 (en) * | 2002-08-07 | 2006-11-02 | Martin Vorbach | Method and device for processing data |
US20080174460A1 (en) * | 2007-01-19 | 2008-07-24 | Vigoda Benjamin Butterfly Will | Apparatus and Method for Reducing Errors in Analog Circuits while Processing Signals |
Family Cites Families (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5243688A (en) | 1990-05-22 | 1993-09-07 | International Business Machines Corporation | Virtual neurocomputer architectures for neural networks |
US5539404A (en) * | 1993-02-08 | 1996-07-23 | Yasuo Nagazumi | Digital to analog converter using recursive signal dividing charge coupled devices |
TW230246B (zh) | 1993-03-03 | 1994-09-11 | Philips Electronics Nv | |
JPH0823874B2 (ja) * | 1993-11-18 | 1996-03-06 | 株式会社ジーデイーエス | シストリックアレイプロセサー |
WO1995017781A1 (en) | 1993-12-23 | 1995-06-29 | The State Of Oregon, Acting By And Through The State Board Of Higher Education On Behalf Of Portland State University | Programmable analog array circuit |
US5745382A (en) | 1995-08-31 | 1998-04-28 | Arch Development Corporation | Neural network based system for equipment surveillance |
EP0831394A1 (en) * | 1996-02-29 | 1998-03-25 | Co.Ri.M.Me. Consorzio Per La Ricerca Sulla Microelettronica Nel Mezzogiorno | Method for memorizing membership functions and a fuzzy processor implementing the same |
US6212654B1 (en) | 1997-07-22 | 2001-04-03 | Lucent Technologies Inc. | Coded modulation for digital storage in analog memory devices |
US6279133B1 (en) | 1997-12-31 | 2001-08-21 | Kawasaki Steel Corporation | Method and apparatus for significantly improving the reliability of multilevel memory architecture |
DE69935361T2 (de) | 1998-02-17 | 2007-11-29 | Anadec Gmbh | Verfahren und elektronische Schaltung zur Datenverarbeitung, insbesondere für die Berechnung von Wahrscheinlichkeitsverteilungen |
US6185331B1 (en) | 1998-03-20 | 2001-02-06 | United Microelectronics Corp. | Switched-current fuzzy processor for pattern recognition |
US6744299B2 (en) | 1999-01-06 | 2004-06-01 | Victorian Systems, Inc. | Electronic array having nodes and methods |
US6347125B1 (en) | 1999-01-11 | 2002-02-12 | Ericsson Inc. | Reduced complexity demodulator for multi-bit symbols |
DE10035183A1 (de) | 1999-08-06 | 2001-02-15 | Anadec Gmbh Cham | Verfahren zur mathematischen Verarbeitung zweier Werte in einer elektrischen Schaltung |
US6564194B1 (en) | 1999-09-10 | 2003-05-13 | John R. Koza | Method and apparatus for automatic synthesis controllers |
JP2001266498A (ja) | 2000-03-23 | 2001-09-28 | Sony Corp | データ再生装置及びデータ再生方法、並びに、データ記録再生装置及びデータ記録再生方法 |
US7133568B2 (en) | 2000-08-04 | 2006-11-07 | Nikitin Alexei V | Method and apparatus for analysis of variables |
US6763340B1 (en) | 2000-09-22 | 2004-07-13 | The United States Of America As Represented By The Secretary Of The Air Force | Microelectromechanical system artificial neural network device |
US6633856B2 (en) | 2001-06-15 | 2003-10-14 | Flarion Technologies, Inc. | Methods and apparatus for decoding LDPC codes |
ATE556491T1 (de) | 2002-07-03 | 2012-05-15 | Dtvg Licensing Inc | Methode und verfahren für die speicherverwaltung in low density parity check (ldpc) decodern |
US6762624B2 (en) | 2002-09-03 | 2004-07-13 | Agilent Technologies, Inc. | Current mode logic family with bias current compensation |
US7209867B2 (en) * | 2002-10-15 | 2007-04-24 | Massachusetts Institute Of Technology | Analog continuous time statistical processing |
US6957375B2 (en) | 2003-02-26 | 2005-10-18 | Flarion Technologies, Inc. | Method and apparatus for performing low-density parity-check (LDPC) code operations using a multi-level permutation |
US7139959B2 (en) * | 2003-03-24 | 2006-11-21 | Texas Instruments Incorporated | Layered low density parity check decoding for digital communications |
US6771197B1 (en) | 2003-09-26 | 2004-08-03 | Mitsubishi Electric Research Laboratories, Inc. | Quantizing signals using sparse generator factor graph codes |
US7418468B2 (en) | 2004-02-13 | 2008-08-26 | University Of Alberta | Low-voltage CMOS circuits for analog decoders |
US7071846B2 (en) | 2004-02-24 | 2006-07-04 | Lucent Technologies Inc. | Analog decoding method and decoder |
US7769798B2 (en) | 2004-04-27 | 2010-08-03 | Amir Banihashemi | Full CMOS min-sum analog iterative decoders |
WO2005112272A1 (en) | 2004-05-14 | 2005-11-24 | University Of Alberta | Method and apparatus for digit-serial communications for iterative digital processing algorithms |
US20060026224A1 (en) | 2004-07-30 | 2006-02-02 | Merkli Patrick P | Method and circuit for combined multiplication and division |
US7373585B2 (en) | 2005-01-14 | 2008-05-13 | Mitsubishi Electric Research Laboratories, Inc. | Combined-replica group-shuffled iterative decoding for error-correcting codes |
FR2883121B1 (fr) | 2005-03-11 | 2007-04-27 | France Telecom | Procede et dispositif de decodage de codes a roulettes |
WO2006124071A1 (en) | 2005-05-18 | 2006-11-23 | The Governors Of The University Of Alberta | Decoder for low-density parity-check convolutional codes |
US20070089016A1 (en) * | 2005-10-18 | 2007-04-19 | Nokia Corporation | Block serial pipelined layered decoding architecture for structured low-density parity-check (LDPC) codes |
US7292069B2 (en) | 2005-12-30 | 2007-11-06 | Intel Corporation | Locally asynchronous, block-level synchronous, configurable logic blocks with sub-threshold analog circuits |
KR100899738B1 (ko) * | 2006-02-02 | 2009-05-27 | 삼성전자주식회사 | 노드 메모리 기반의 ldpc 복호기 및 복호방법 |
US7669106B1 (en) | 2006-04-17 | 2010-02-23 | Aquantia Corporation | Optimization of low density parity check (LDPC) building blocks using multi-input Gilbert cells |
US7877333B2 (en) | 2006-09-06 | 2011-01-25 | D-Wave Systems Inc. | Method and system for solving integer programming and discrete optimization problems using analog processors |
CA2663235A1 (en) | 2006-09-22 | 2008-03-27 | Mcgill University | Stochastic decoding of ldpc codes |
US8504890B2 (en) * | 2006-12-17 | 2013-08-06 | Ramot At Tel Aviv University Ltd. | Scheduling for LDPC decoding |
US20080256343A1 (en) | 2007-04-11 | 2008-10-16 | The Royal Institution For The Advancement Of Learning/Mcgill University | Convergence determination and scaling factor estimation based on sensed switching activity or measured power consumption |
WO2008141453A1 (en) | 2007-05-23 | 2008-11-27 | The Royal Institution For The Advancement Of Learning/Mcgill University | Method for implementing stochastic equality nodes |
WO2009046534A1 (en) | 2007-10-11 | 2009-04-16 | The Royal Institution For The Advancement Of Learning/Mcgill University | Methods and apparatuses of mathematical processing |
WO2009070536A1 (en) | 2007-11-30 | 2009-06-04 | Massachusetts Institute Of Technology | Method and apparatus for performing probabilistic inference and providing related solution methods |
WO2009111559A2 (en) | 2008-03-04 | 2009-09-11 | Massachusetts Institute Of Technology | Combinational stochastic logic |
WO2009137227A2 (en) | 2008-04-11 | 2009-11-12 | Massachusetts Institute Of Technology | Analog logic automata |
WO2010006430A1 (en) | 2008-07-15 | 2010-01-21 | The Royal Institution For The | Decoding of linear codes with parity check matrix |
US8190962B1 (en) * | 2008-12-30 | 2012-05-29 | Qualcomm Atheros, Inc. | System and method for dynamic maximal iteration |
TW201042549A (en) | 2009-03-02 | 2010-12-01 | Benjamin Vigoda | Analog computation using numerical representations with uncertainty |
US8633732B2 (en) | 2009-03-02 | 2014-01-21 | Mitsubishi Electric Research Laboratories, Inc. | Circuits for soft logical functions |
EP2404415A4 (en) | 2009-03-02 | 2015-08-05 | Mitsubishi Electric Res Lab | CIRCUITS FOR SOFT LOGIC FUNCTIONS |
TW201037529A (en) | 2009-03-02 | 2010-10-16 | David Reynolds | Belief propagation processor |
US8115513B2 (en) | 2009-03-02 | 2012-02-14 | Mitsubishi Electric Research Laboratories, Inc. | Circuits for soft logical functions |
WO2010111589A2 (en) | 2009-03-27 | 2010-09-30 | Benjamin Vigoda | Storage devices with soft processing |
-
2010
- 2010-03-01 TW TW099105802A patent/TW201037529A/zh unknown
- 2010-03-02 CN CN201080018698.XA patent/CN102439853B/zh not_active Expired - Fee Related
- 2010-03-02 EP EP10749222A patent/EP2404382A4/en not_active Withdrawn
- 2010-03-02 WO PCT/US2010/025956 patent/WO2010101944A1/en active Application Filing
-
2011
- 2011-04-04 US US13/079,204 patent/US8799346B2/en active Active
-
2014
- 2014-08-04 US US14/450,636 patent/US20150026546A1/en not_active Abandoned
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4649515A (en) * | 1984-04-30 | 1987-03-10 | Westinghouse Electric Corp. | Methods and apparatus for system fault diagnosis and control |
CN1201296A (zh) * | 1997-05-01 | 1998-12-09 | 三菱电机株式会社 | 纠错方法和纠错装置 |
US6938196B2 (en) * | 2001-06-15 | 2005-08-30 | Flarion Technologies, Inc. | Node processors for use in parity check decoders |
US20060248317A1 (en) * | 2002-08-07 | 2006-11-02 | Martin Vorbach | Method and device for processing data |
US20080174460A1 (en) * | 2007-01-19 | 2008-07-24 | Vigoda Benjamin Butterfly Will | Apparatus and Method for Reducing Errors in Analog Circuits while Processing Signals |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111158583A (zh) * | 2019-11-25 | 2020-05-15 | 深圳壹账通智能科技有限公司 | 图计算的布尔型变量存储方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20150026546A1 (en) | 2015-01-22 |
US20110295786A1 (en) | 2011-12-01 |
TW201037529A (en) | 2010-10-16 |
CN102439853B (zh) | 2014-12-24 |
EP2404382A1 (en) | 2012-01-11 |
WO2010101944A1 (en) | 2010-09-10 |
US8799346B2 (en) | 2014-08-05 |
EP2404382A4 (en) | 2013-02-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102439853B (zh) | 信度传播处理器 | |
CN105846830B (zh) | 数据处理装置 | |
CN101106381B (zh) | 分层的低密度校验码译码器及译码处理方法 | |
JP4534128B2 (ja) | 符号化方法および装置 | |
CN101273532B (zh) | 解码装置及接收装置 | |
Olcer | Decoder architecture for array-code-based LDPC codes | |
CN101499804B (zh) | 准循环低密度校验码的多码率译码器 | |
CN106330203A (zh) | 一种ldpc的解码方法 | |
CN1937413A (zh) | 双涡轮结构低密度奇偶校验码解码器 | |
Bengough et al. | Sorting-based VLSI architectures for the M-algorithm and T-algorithm trellis decoders | |
US7769798B2 (en) | Full CMOS min-sum analog iterative decoders | |
CN102340320B (zh) | 卷积Turbo码双向并行译码方法 | |
CN113783576A (zh) | 用于从循环置换矩阵的集群构建的准循环低密度奇偶校验码的垂直分层解码的方法及设备 | |
Brandon et al. | A scalable LDPC decoder ASIC architecture with bit-serial message exchange | |
CN102064835B (zh) | 适用于准循环ldpc译码的译码器 | |
Larras et al. | Analog implementation of encoded neural networks | |
US8972831B2 (en) | Belief propagation processor | |
CN101834614A (zh) | 节省存储资源的多元ldpc码译码方法及装置 | |
CN113055025B (zh) | 可重构的极化码与低密度奇偶校验码译码器 | |
CN101436864B (zh) | 一种低密度奇偶校验码的译码方法及装置 | |
CN102624402B (zh) | 一种ldpc译码器 | |
US9294127B2 (en) | Current mode analog belief propagation | |
Gunnam et al. | Algorithms and vlsi architectures for low-density parity-check codes: part 2-efficient coding architectures | |
Khan et al. | Pipelined implementation of a real time programmable encoder for low density parity check code on a reconfigurable instruction cell architecture | |
Huang et al. | A Markov chain model for edge memories in stochastic decoding of LDPC codes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1169889 Country of ref document: HK |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20141224 Termination date: 20170302 |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1169889 Country of ref document: HK |