Abstract:
A circuit module for data processing comprises several first inputs (I x,i ), several second inputs (I y,i ) and several outputs (I i,j ). First transistors (T i,j ) combine the first and second inputs. Each of the first transistors (T i,j ) is connected at its emitter or source with a first input and at its base or gate with a second input. Each second input is further connected to the base or gate and the emittor or source of a second transistor (T i ). The currents of the outputs correspond to the product of the currents through the individual inputs. By combining the outputs sum products can be calculated, especially for computing discrete probability distributions. The combination of several circuit modules allows to solve complex signal processing tasks.

Description:
CROSS REFERENCE TO RELATED APPLICATIONS 
     This application claims the priority of Swiss patent application 375/98, filed Feb. 17, 1998, the disclosure of which is incorporated herein by reference in its entirety. 
     BACKGROUND OF THE INVENTION 
     The invention relates to a method and a circuit for the calculation of at least one discrete probability distribution. 
     Many signal processing algorithms consist essentially of elementary sum-product computations with quantities that are (or can be viewed as representing) probability distributions. 
     It is therefore an object of the present invention to implement these elementary computations by means of simple electronic circuits. 
     BRIEF SUMMARY OF THE INVENTION 
     Now, in order to implement these and still further objects of the invention, which will become more readily apparent as the description proceeds, the invention manifested by a method for the calculation of at least one discrete probability distribution [p(Z 1 ), . . . , p(z k )], k≧2, from discrete probability distributions [p(x 1 ), . . . , p(x m )], m≧2, and [p(y 1 ), . . . , p(y n )], n≧2, according to the formula p(z)=γΣ x Σ y p(x)p(y)f(x, y, z) with at least one given {0,1}-valued function f(x, y, z) and with a scaling factor γ by means of an electronic circuit, wherein said electronic circuit comprises a first and a second circuit section, the first circuit section comprising m current inputs (I x,1  . . . I x,m ) for [p(x 1 ), . . . , p (x m ) ] and n current inputs (I y,1  . . . I y,n ) for [p(y 1 ) , . . . , p(y n )], m·n transistors T i,j , i=1 . . . m, j=1 . . . n, wherein an emitter or a source of transistor T i,j  is connected to the current input for p(x i ) and a base or a gate of transistor T i,j  is connected to the current input for p(y j ), additional n transistors T j , j=1 . . . n, wherein a base or gate and a collector or drain of transistor T i  is connected to the current input for p(y j ) and an emitter or source is connected to a reference voltage; wherein the second circuit section comprises k current outputs for [P(z 1 ), . . . , p(z k )]; said method comprising the steps of summing the collector or drain currents of said transistors T i,j  corresponding to the required product terms p(x i )p(y j ) and copying those currents that correspond to multiply used product terms. 
     In another aspect of the invention, the invention relates to a circuit for signal processing comprising several circuit sections, each circuit section having m inputs x 1 , . . . , x m  and n inputs y 1 , . . . , y n , m≧2, n≧2 and m·n transistors T i,j , i=1 . . . m, j=1 . . . n, wherein the emitter or source of transistor T i, j  is connected to the input x i  and the base or gate of transistor T i,j  is connected to input y i , wherein each circuit section further comprises n transistors T j , j=1 . . . n, wherein the base or gate and the collector or drain of transistor T j  is connected to the current input for p(y j ) and the emitter or source is connected to a fixed reference voltage; wherein m, n and k can be different for differing circuit sections, wherein several circuit sections are connected in such a way that the inputs x 1 , . . . , x m  or y 1 , . . . , y n  of one circuit section are connected to the collector or drain of the transistors T i,j  of another circuit section according a connection pattern, wherein an input x i  or y j  can be connected to several transistors T i,j  of the other circuit section, and wherein such connection is implemented directly or via current mirrors and/or vector scaling circuits and/or switches and/or delay elements, and wherein the circuit comprises at least two differing circuit sections and/or at least two differing connection patterns between circuit sections. 
     In yet another aspect, the invention relates to a method for the calculation of at least one discrete probability distribution [p(z 1 ), . . . , p(z k )], k≧2, from discrete probability distributions [p(x 1 ), . . . , p(x m )], m≧2, and [p(y 1 ), . . . , p(y n )], n≧2, according to the formula p (z)=γΣ x Σ y p(x)p(y)f(x, y, z) with at least one given {0,1}-valued function f(x, y, z) and with a scaling factor γ by means of an electronic circuit, wherein said electronic circuit comprises a first and a second circuit section, the first circuit section comprising m current inputs (I x,1  . . . I x,m ) for [p(x 1 ), . . . , p(x m )] and n current inputs (I y,1  . . . I y,n ) for [p(y 1 ), . . . , p(y n )], m·n transistors T i,j , i=1 . . . m, j=1 . . . n, wherein an emitter or a source of transistor T i,j  is connected to the current input for p(x i ) and a base or a gate of transistor T i,j  is connected to the current input for p(y j ), additional n transistors T j , j=1 . . . n, wherein a base or gate and a collector or drain of transistor T i  is connected to the current input for p(y j ) and an emitter or source is connected to a reference voltage; wherein the second circuit section comprises k current outputs for [p(z 1 ), . . . , p(z k )]; said method comprising the steps of summing the collector or drain currents of said transistors T i,j  corresponding to the required product terms p(x i )p(y j ), copying those currents that correspond to multiply used product terms and using said method for calculating a problem selected from the group of separating interfering digital signals; separating users in multi-access communication systems; equalization of digital data; combined equalization, user separation and decoding of coded, digital signals; calculating at least some metric vectors in a sum product algorithm; decoding an error correcting code; decoding encoded data; source coding; carrying out a forward-backward algorithm in a hidden Markov model; and carrying out probability propagation in a Bayesian network. 
     The method according to the invention exploits the fact that the described circuit is topologically closely related to the mathematical structure of the probability distribution that is to be computed and that it can easily be combined with further circuits to form larger networks. 
     The transistors in the claimed circuits may not only be FET or bipolar transistors, but also “super transistors” including, e.g., Darlington transistors or cascodes. 
     If several discrete probability distributions corresponding to several {0,1}-valued functions are to be calculated from the same input values, all product terms are preferably calculated only once in the first circuit section, wherein the different sums for the individual functions are calculated in the second circuit section. Currents of multiply used product terms can e.g. be copied in current mirrors. 
     The circuit according to the present invention may comprise several circuit sections that are combined according to some connection patterns. By a suitable choice of the circuit sections and of the connection patterns, various complex signal processing tasks can be carried out. For assessing equality of such connection patterns, any intermediate current mirrors or any vector scaling circuits between the sub-circuits are to be disregarded. 
     Due to its topological simplicity and its scalability, the circuit technology of the present invention allows highly efficient implementation. 
     The invention is particularly suited to the computation of metric vectors in a sum-product algorithm, to the decoding of error correcting codes or coded modulation schemes, and to further tasks that are mentioned below. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The invention will be better understood and objects other than those set forth above will become apparent when consideration is given to the following detailed description thereof. Such description makes reference to the annexed drawings, wherein: 
     FIG. 1 is a circuit for the computation of the products p (x i )p(y j ) 
     FIG. 2 is a circuit diagram of a vector scaling circuit, 
     FIG. 3 is a trellis diagram of a binary-valued function f(x, y, z), 
     FIG. 4 is a circuit diagram for the computation of equation (1) for f(x, y, z) as in FIG. 3, 
     FIG. 5 is a trellis diagram of (the indicator function of) the relation x=y·z, 
     FIG. 6 is a circuit diagram for the computation of equation (1) for f(x, y, z) as in FIG. 5, 
     FIG. 7 is a trellis diagram of (the indicator function of) the relation x=y=z, 
     FIG. 8 is a circuit diagram for the computation of equation (1) for f(x, y, z) as in FIG. 7, 
     FIG. 9 is a circuit diagram of an extended version of the circuit of FIG. 8 with integrated vector current scaling, 
     FIG. 10 is a trellis diagram for a simple error correcting code, 
     FIG. 11 is a block circuit diagram of a decoder for the code of FIG. 10, 
     FIG. 12 is a circuit diagram for the type-A modules in FIG. 11, 
     FIG. 13 is a circuit diagram for the type-B modules in FIG. 11, 
     FIG. 14 is a circuit diagram for the type-C module in FIG. 11, 
     FIG. 15 is a circuit diagram for the type-D module in FIG. 11, 
     FIG. 16 is a part of a factor graph, and 
     FIG. 17 is (a part of) a factor graph for a hidden-Markov model. 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     In the following, we first explain the basic transistor circuit for the sum-product generation, then specific embodiments, combinations and applications of this circuit are discussed. 
     Transistor Circuit for Elementary Sum-product Computation 
     By a “discrete probability distribution” we mean, here and in the sequel, an n-tuple (“vector”) of nonnegative real numbers that add up to one. As will be detailed in Sections “Factor Graphs and the Sum-Product Algorithm” and “Applications”, many signal processing algorithms can be decomposed into elementary computations of the following kind: a discrete probability distribution [p(z 1 ), . . . , p(z k )], k≧2, is computed from the discrete probability distributions [p(x 1 ), . . . , p(x m )], m≧2, and [p(y 1 ), . . . , p(y n )], n≧2, according to the formula 
     
       
           p ( z   h )=γΣ i=1 . . . m Σ j=1 . . . n   p ( x   i ) p ( y   j ) f ( x   i   , y   j   , z   h ),  h= 1  . . . k,   (1) 
       
     
     where f(x, y, z) is a {0, 1}-valued function and where γ is a suitable scaling factor. 
     A key element of the technology is the simultaneous computation of the products p(x i )p(y j ) in (1) by the circuit of FIG.  1 . For the following description of that circuit, the transistors in FIG. 1 are assumed to be voltage-controlled current sources, whose drain current (in saturation) depends from the gate-source voltage according to 
     
       
           I   drain   =I   0   ·e   κ(Vgate−Vsource) .  (2) 
       
     
     This holds, in particular, for MOS transistors in the subthreshold mode, but also (with emitter, base, and collector instead of source, gate, and drain) for bipolar transistors. The inputs to the circuit in FIG. 1 are the currents I x,i , i=1 . . . m and I y,j , j=1 . . . n, which are assumed to be determined by external circuitry (not shown). The outputs of the circuit are the currents I i,j , i=1 . . . m, j=1 . . . n. We have 
       I   i,j   =I   x,i   ·I   y,j   /I   y   (3) 
     or, more symmetrically, 
     
       
           I   i,j   /I   tot =( I   x,i   /I   x )·( I   y,j   /I   y )  (4) 
       
     
     with I x =I x,1 +I x,2 +. . . +I x,m , I y =I y,1 +I y,2 . . . +I y,n  and I tot =I 1,1 +I 1,2 +. . . +I m,n =I x . For the derivation of (3), let V x,i i=1 . . . m, and V y,j , j=1 . . . n, be the potentials at the corresponding input terminals. On the one hand, we have                I     i   ,   j       /     I     x   ,   i               =       I     i   ,   j       /     (       I     i   ,   1       +     I     i   ,   2       +   …   +     I     i   ,   n         )                            (   5   )                             =         I   0     ·       e     κ                   (     Vy   ,     j   -   Vx     ,   i     )         /     I   0       ·     e     κ                   (     Vy   ,     1   -   Vx     ,   i     )           +   …   +             (   6   )                                          I   0     ·     e     κ        (     Vy   ,     n   -   Vx     ,   i     )                                               =       e       κ                 Vy     ,   j       /     (       e       κ                 Vy     ,   1       +   …   +     e       κ                 Vy     ,   n         )               (   7   )                                
     and on the other hand, we have                I     y   ,   j       /     I   y             =       I     y   ,   j       /     (       I     y   ,   1       +     I     y   ,   2       +   …   +     I     y   ,   n         )                            (   8   )                             =         I   0     ·       e     κ                   (     Vy   ,     j   -   Vref       )         /     I   0       ·     e     κ                   (     Vy   ,     1   -   Vref       )           +   …   +                          (   9   )                                            I   0     ·     e     κ        (     Vy   ,     n   -   Vref       )                                               =       e       κ                 Vy     ,   j       /       (       e       κ                 Vy     ,   1       +   …   +     e       κ                 Vy     ,   n         )     .               (   10   )                                
     Equations (7) and (10) yield (3). 
     For the computation of (1), all inputs and outputs are thus represented as current vectors. The circuit of FIG. 1 simultaneously provides all the products p(x i )p(y j ) as the currents I i,j . The summation of the required terms in (1) is then easily accomplished by adding the respective currents. If some particular term p(x i )p(y j ) is used more than once, the corresponding current I i,j  is first copied a corresponding number of times (see, e.g., FIG.  6 ). 
     The scaling factor γ in (1) can, in principle, be ignored since any two current vectors that differ only by a scale factor represent the same probability distribution. However, for proper operation of the circuits, current vectors sometimes need to be scaled to some prescribed level, which can be done by the circuit of FIG.  2 . As a special case, with m=1, of the circuit of FIG. 1, its function is given by 
     
       
           I   out,i   =I   ref   ·I   in,i /( I   in,1    +. . . +I   in,n )·  (11) 
       
     
     Examples of Specific Modules 
     For the discussion of particular circuit modules as described above, the corresponding binary function f(x, y, z) is conveniently represented by a trellis diagram. Such a trellis diagram for a {0, 1}-valued function is a bipartite graph with labeled edges defined as follows: 
     The left-hand nodes correspond to the possible values of x. 
     The right-hand nodes correspond to the possible values of z. 
     For every combination x, y, z with f(x, y, z)=1, there is an edge from node x to node z that is labeled with y. 
     Note that the trellis diagram completely determines f(x, y, z). E.g., let x and y be binary variables, let z be a ternary variable, and let f(x, y, z) be defined by the trellis diagram of FIG.  3 . 
     For this example, FIG. 4 shows a circuit for the computation of (1) as described above. According to (3), the output currents are 
       I   z   p ( z= 0)= I   x   p ( x= 0) p ( y= 0)  (12) 
     
       
           I   z   p ( z= 1)= I   x   p ( p ( x= 0) p ( y= 1)+ p ( x= 1) p (y=0))  (13) 
       
     
     
       
           I   z   p ( z= 2)=I x   p ( x= 1) p ( y= 1)  (14) 
       
     
     with I z =I x . As an extension to the circuit of FIG. 1, all input currents and all output currents are reflected by current mirrors, which makes the circuit freely cascadable with similar circuit modules. The structure of the trellis diagram is obvious in the topology of the circuit. 
     For another example, let x, y, and z be binary variables and let f(x, y, z)=1 if x=y·z and f(x, y, z)=0 in all other cases. FIG. 5 shows the corresponding trellis diagram and FIG. 6 shows the corresponding circuit for the computation of (1). 
     An important special case is the trellis diagram of FIG.  7 . (The corresponding function f(x, y, z) is given by f(x, y, z)=1 if and only if x=y=z.) The corresponding circuit is shown in FIG.  8 . 
     A network of such modules is a versatile signal processing engine. If necessary, vector scaling circuits (FIG. 2) can either be inserted between such modules or be integrated into such modules (e.g., as in FIG.  9 ). The connection between the modules may also comprise controlled switches or delay elements. If the supply voltage is sufficiently high, such modules can also be stacked upon each other. Further variations of the circuit arise from using also “upside-down” modules, where the n-channel transistors (or npn-transistors) in FIG. 1 are replaced by p-channel transistors (or pnp-transistors, respectively). Some of the transistors may also be realized as “super transistors” such as, e.g., Darlington transistors or cascodes. 
     Application Example: a Decoder Circuit for a Trellis Code 
     Consider the error correcting code that consists of the following four codewords: [0, 0, 0, 0, 0], [0, 0, 1, 1, 1], [1, 1, 1, 0, 0], [1, 1, 0, 1, 1]. The first and the third bit (bold face) are “free” information bits, the other bits are check bits. FIG. 10 shows a trellis diagram for that code. The trellis diagram consists of five sections, each of which (in this example) corresponds to one code bit. Every path from the start node (leftmost node) to the terminal node (rightmost node) corresponds to one codeword. 
     The job of the decoder is to convert a received “noisy” word y=[y 1 , Y 2 , . . . , Y 5 ] back into a clean codeword (or at least to recover the information bits). Let the noise be modeled as a “discrete memory-less channel”: 
     
       
           p ( y   1   , y   2   , . . . , y   5   |x   1   , x   2   , . . . , x   5 )= p ( y   1   |x   1 )  p ( y   2   |x   2 )  p ( y   3   |x   3 )  p ( y   4   |x   4 )  p ( y   5   |x   5 ).  (15) 
       
     
     The transition probabilities p(y i |x i =0) and p(y i |x i =1), i=1 . . . 5, are assumed to be known. The a priori probabilities for all four codewords are assumed to be equal (i.e., ¼). In the sequel, the short-hand notation λ i (b)=p(y i |x i =b) will be used. For any fixed given noisy word y, both λ i (0) and λ i (1) are thus known numbers. 
     The a posteriori probabilities of the four codewords are 
     
       
           p ( x   1 =0,  x   3 =/0   y   )=γλ 1 (0) λ 2 (0) λ 3 (0) λ 4 (0) λ 5 (0)  (16) 
       
     
     
       
           p ( x   1 =0,  x   3 =1 | y   )=γλ 1 (0) λ 2 (0) λ 3 (1) λ 4 (1) λ 5 (1)  (17) 
       
     
     
       
           p ( x   1 =1,  x   3 =0 | y   )=γλ 1 (1) λ 2 (1) λ 3 (1) λ 4 (0) λ 5 (0)  (18) 
       
     
     
       
           p ( x   1 =1,  x   3 =1 | y   )=γλ 1 (1) λ 2 (1) λ 3 (0) λ 4 (1) λ 5 (1)  (19) 
       
     
     where the scaling factor γ is determined by the condition that the sum of these four probabilities equals one. The a posteriori probabilities of the two information bits x 1  and x 3  are then given by 
     
       
           p ( x   1 =0 | y   )= p ( x   1 =0, x   3 =0 | y   )+ p ( x   1 =0, x   3 =1 | y   )  (20) 
       
     
     
       
           p ( x   1 =1 | y   )= p ( x   1 =1, x   3 =0 | y   )+ p ( x   1 =1, x   3 =1 | y   )  (21) 
       
     
     
       
           p ( x   3 =0 | y   )= p ( x   1 =0, x   3 =0 | y   )+ p ( x   1 =1, x   3 =0 | y   )  (22) 
       
     
     
       
           p ( x   3 =1 | y   )= p ( x   1 =0, x   3 =1 | y   )+ p ( x   1 =1, x   3 =1 | y   ).  (23) 
       
     
     A preferred circuit for the computation of these probabilities is shown in FIG. 11 with the modules A . . . D as in FIGS. 12 . . .  15 . The block circuit diagram of FIG. 11 is an immediate application of the forward-backward algorithm [Bahl et al., “Optimal decoding of linear codes for minimizing symbol error rate,” IEEE Trans. Information Theory, vol.20, pp.284-287, 1974], which is a general algorithm for the computation of a posteriori probabilities in a trellis. The dashed parts in FIG. 11 indicate parts of the general forward-backward algorithm that are not needed in this example. 
     The following detailed description of the circuit of FIG. 11 begins with the middle row (the “backward” part). The module A 2  produces a scaled version of the vector [λ 5 (0), λ 5 (1)]. The module B 4  computes the vector [λ 4 (0)λ 5 (0), λ 4 (1)λ 5 (1)] (or a scaled version thereof). The Module C computes, on the one hand, the vector [λ 3 (0)λ 4 (0)λ 5 (0), λ 3 (1)λ 4 (0)λ 5 (0), λ 3 (0)λ 4 (1)λ 5 (1), λ 3 (1)λ 4 (1)λ 5 (1)], and from it, on the other hand, the vector 
     [λ 3 (0)λ 4 (0)λ 5 (0)+λ 3 (1)λ 4 (1)λ 5 (1), 
     λ 3 (1)λ 4 (0)λ 5 (0)+λ 3 (0)λ 4 (1)λ 5 (1) ]. 
     From the latter, module B 3  computes the vector 
     [λ 2 (0)λ 3 (0)λ 4 (0)λ 5 (0)+λ 3 (1)λ 4 (1)λ 5 (1)), 
     λ 2 (1)λ 3 (1)λ 4 (0)λ 5 (0)+λ 3 (0)λ 4 (1λ 5 (1))]. 
     From that, module B 2  computes the vector 
     [λ 1 (0)λ 2 (0)λ 3 (0)λ 4 (0)λ 5 (0)+λ 3 (1)λ 4 (1)λ 5 (1)) 
     λ 1 (1)λ 2 (1)λ 3 (1)λ 4 (0)λ 5 (0)+λ 3 (0)λ 4 (1)λ5(1)) 
     which is a scaled version of [p(x 1 =0| y ), p(x 1 =1| y )]. 
     In the top row (“forward” part), module A 1  produces a scaled version of the vector [λ 1 (0) , λ 1 (1)] and module B 1  computes [λ 1 (0)λ 2 (0) λ 1 (1)λ 2 (1)]. In the bottom row (combination part), module C computes (a scaled version of) 
     
       
         [λ 1 (0)λ 2 (0)λ 3 (0)λ 4 (0)λ 5 (0)+λ 1 (1)λ 2 (1)λ 3 (0)λ 4 (1)λ 5 (1), 
       
     
     
       
         λ 1 (0)λ 2 (0)λ 3 (1)λ 4 (1)λ 5 (1)+λ 1 (1)λ 2 (1)λ 3 (1)λ 4 (0)λ 5 (0)], 
       
     
     which is a scaled version of [p(x 3 =0| y ), p(x 3 =1| y )]. 
     For proper functioning, additional vector scaling circuits (FIG. 2) may be needed between, or integrated into, the modules shown in FIG.  11 . 
     The circuit of FIG. 11 does not contain any feedback loops. This need not be so. As will be made clear in the next section, circuits with many feedback loops are actually particularly powerful. 
     Factor Graphs and the Sum-Product Algorithm 
     Factor graphs and the sum-product algorithm are mathematical abstractions, by which a large number of signal processing algorithms can be described in a unified manner. A few keywords to this topic will be given below; for an in-depth treatment, see [B. J. Frey, F. R. Kschischang, H. -A. Loeliger, and N. Wiberg, “Factor Graphs and Algorithms,” Proc. 35th Allerton Conference on Communication, Control, and Computing, (Allerton House, Monticello, Ill.), Sept. 29-Oct. 1, 1997]. 
     A factor graph is a bipartite graph that represents the factorization of a “global” function of several variables into a product of “local” functions. Of particular interest are factor graphs for binary functions (whose only possible values are 0 and 1) and for probability distributions. Factor graphs for binary functions (also called “Tanner graphs” or “TWL graphs”) may be viewed as generalized trellises (in coding theory) or as state realizations (system theory). Factor graphs for probability distributions may be viewed as generalization of both Markov random fields and Bayesian networks; they arise, in particular, in decoding and state-estimation problems, often as trivial extensions of a factor graph for a code or for an a priori probability distribution. 
     The sum-product algorithm is a generic algorithm for the (exact or approximate) computation of “marginal functions” on a factor graph. A number of algorithms in artificial intelligence and digital communications can be viewed as instances of the sum-product algorithm. Examples include the forward-backward algorithm for Hidden-Markov Models, Pearl&#39;s belief propagation algorithm for Bayesian networks, and iterative decoding of turbo codes and similar codes. 
     A part of a factor graph is shown in FIG.  16 . The circles represent variables (x,y,z, . . .) and the squares represent local functions (f,g,h, . . .). The node for some function f is connected by an edge to the node for some variable x if and only if x is an argument of f. E.g., node f in FIG. 16 represents a function f(x, y, z). 
     In its basic form, the sum-product algorithm computes, for every edge of the factor graph, two vector signals, one for each direction, according to the following rules: 
     
       
         μ f→z ( z ):=Σ x,y   f ( x,y,z )μ x→f ( x )μ y→f ( y )  (24) 
       
     
     
       
         μ z→f (   z ): =μg→z( z )μ h→z ( z )  (25) 
       
     
     For clarification, these rules are re-written below for the special case that all variables are binary. Rule (24) then becomes:                        μ     f   -&gt;   z            (   0   )                  =         f        (     0   ,   0   ,   0     )                         μ     x   -&gt;   f            (   0   )                         μ     y   -&gt;   f            (   0   )         +                                  f        (     0   ,   1   ,   0     )                         μ     x   -&gt;   f            (   0   )                         μ     y   -&gt;   f            (   1   )         +                                  f        (     1   ,   0   ,   0     )                         μ     x   -&gt;   f            (   1   )                         μ     y   -&gt;   f            (   0   )         +                                f        (     1   ,   1   ,   0     )                         μ     x   -&gt;   f            (   1   )                         μ     y   -&gt;   f            (   1   )                       (   26   )                         μ     f   -&gt;   z            (   1   )                  =         f        (     0   ,   0   ,   1     )                         μ     x   -&gt;   f            (   0   )                         μ     y   -&gt;   f            (   0   )         +                                  f        (     0   ,   1   ,   1     )                         μ     x   -&gt;   f            (   0   )                         μ     y   -&gt;   f            (   1   )         +                                  f        (     1   ,   0   ,   1     )                         μ     x   -&gt;   f            (   1   )                         μ     y   -&gt;   f            (   0   )         +                                f        (     1   ,   1   ,   1     )                         μ     x   -&gt;   f            (   1   )                         μ     y   -&gt;   f            (   1   )                       (   27   )                                
     Rule (25) becomes: 
     
       
         μ z→f (0)=μ g→z (0)μ h→z (0)  (28) 
       
     
     
       
         μ z→f (1)=μ g→z (1)μ h→z (1)  (29) 
       
     
     In general, a function f may have an arbitrary number of arguments and a variable x may be an argument of an arbitrary number of functions. The nodes in a factor graph are thus, in general, connected to an arbitrary number of neighbor nodes. The rules (24) and (25) have to be adapted accordingly: for a vector signal out of a node with (totally) n neighbors, the rules (24) and (25) are modified to contain n−1 factors μ(. . . ) and the sum in (24) is modified to run over n−1 variables. 
     The vector signals μ(. . .) of the sum-product algorithm are often (scaled versions of) probability distributions in the sense of Section “Transistor circuit for elementary sum-product computation”. If the factor graph satisfies the following conditions, the rules (24) and (25) have the form (1): 
     Function nodes for binary functions (i.e., functions taking only the values 0 and 1) have at most three neighbor nodes (arguments). 
     All other functions nodes have only one neighbor node (one argument). 
     The variable nodes have at most three neighbor nodes (as in FIG.  16 ). 
     In many applications, these conditions are met or can be met by a suitable construction of the factor graph. The rules (24) and (25) can then be computed by circuit modules as in Section “Examples of specific modules”. In fact, the last of these three rules is not really necessary: the generalization of (25) to variable nodes with an arbitrary number of neighbors can still be computed by circuits as in FIG. 8 (in general, with n=m=k&gt;=2). 
     The sum-product algorithm is usually carried out in discrete steps, in some applications (graphs with loops, especially for decoding turbo codes and similar codes) with many iterations. However, already the work by Wiberg et al. [N. Wiberg, H. -A. Loeliger, and R. Koetter, “Codes and iterative decoding on general graphs,” European Trans. on Telecommunications, vol. 6, pp. 513-525, Sep./Oct. 1995] (see also [N. Wiberg, “Approaches to neural-network decoding of error-correcting codes,” Linkoeping Studies in Science and Technology, Thesis No. 425, 1994]) was motivated by the vision of an analog decoder for error correcting codes in “neuromorphic” VLSI (in the sense of Mead [C. Mead, “Analog VLSI and Neural Systems,” Addison Wesley, 1989]). That vision included, in particular, that the discrete iteration steps would be replaced by the continuous-time operation of the circuit. This idea was also pursued by Hagenauer [J. Hagenauer, “Decoding of Binary Codes with Analog Networks,” IEEE Int. Workshop on Information Theory, San Diego Calif., Feb. 8-11, 1998]. The present invention goes far beyond that earlier work by the discovery of the correspondence between the rules (24) and (25) on the one hand and the circuit of FIG. 1 on the other hand. 
     Applications 
     The claimed circuit technology is suitable for most applications of the sum-product algorithm that have been described in the literature. This applies, in particular, to the decoding of error correcting codes and coded modulation, but also to belief propagation in Bayesian networks (in artificial intelligence) and to the forward-backward algorithm of Hidden-Markov Models (which is a standard algorithm in speech processing). 
     For that latter application, a generic factor graph that meets the conditions mentioned in Section “Factor graphs and the sum-product algorithm” is shown in FIG.  17 . The squares in the top row represent {0,1}-valued functions. The squares in the bottom row represent the a priori probabilities as well as the likelihoods of the observed variables. 
     Another application is source coding; in particular, the transformation of discrete-time analog signals into a compressed digital representation. A standard approach in that field is based on trellis codes [Marcellin and Fischer, “Trellis coded quantization of memoryless and Gauss-Markov sources,” IEEE Trans. Communications, vol.38, pp.82-93, 1990] and can be implemented with circuits of the type described in section “a decoder circuit for a trellis code”. It appears likely that, in the future, more general factor graphs will be used also in this field. 
     Another important application is the separation of superimposed digital signals, in particular, the separation of users in multi-access communication systems [Moher, “Iterative multi-user decoder for bit-synchronous communications,” IEEE Trans. Communications, to be published; see also Proc. IEEE Int. Symp. on Inform. Theory, Jun. 29-Jul. 4, 1997, Ulm/Germany, p.195], [Tarköy, “Iterative Multi-User Decoding for Asynchronous Users,” Proc. IEEE Int. Symp. on Inform. Theory, Jun. 29-Jul. 4, 1997, Ulm/Germany, p.30]. 
     Yet another application is the equalization (or deconvolution) of digital data. E.g., the distorted signals can be represented by a trellis and treated similarly as in Section “a decoder circuit for a trellis code”. 
     By combinations of the mentioned applications, the possibility arises of constructing a complete receiver (e.g., as a combination of equalization, multi-user separation, and decoding, perhaps with feedback loops between these function blocks) in the same circuit technology. 
     In many of these applications, the required precision in the computation of (1) is modest. In consequence, the transistors need not be very accurate. In fact, networks of circuit modules as described above can be powerful signal processing engines even if the transistors do not behave according to (2) at all, e.g., transistors where the drain current depends quadratically on the voltage between gate and source. 
     Crude approximations often suffice, in particular, if the sum-product computation (1) is replaced by a maximum-product computation [B. J. Frey, F. R. Kschischang, H. -A. Loeliger, and N. Wiberg, “Factor Graphs and Algorithms,” Proc. 35th Allerton Conference on Communication, Control, and Computing, (Allerton House, Monticello, Ill.), Sep. 29-Oct. 1, 1997]. Such computations arise also in applications of fuzzy logic. 
     While there are shown and described presently preferred embodiments of the invention, it is to be distinctly understood that the invention is not limited thereto but may be otherwise variously embodied and practiced within the scope of the following claims.