Abstract:
A system, such as, e.g., a multiplier, for processing digital signals by using digital signals in the Canonic Signed Digit representation, the system including an input element to make the digital signals available in the Binary Canonic Signed Digit representation, a converter to convert the digital signals into Canonic Signed Digit representation for use in processing. The input element may be a memory where the signals are stored in the Binary Canonic Signed Digit representation. Alternatively, the input element is adapted to be fed with digital signals in the two&#39;s complement representation, and includes at least one converter to convert the digital signals from the two&#39;s complement representation into the Binary Canonic Signed Digit representation. This preferably occurs via the T2I transformation, which leads to generating signals in the Canonic Signed Digit representation, which are then converted to the Binary Canonic Signed Digit representation.

Description:
BACKGROUND OF THE INVENTION 
   1. Field of the Invention 
   The present invention relates to digital signal processing, including computer arithmetic, low-power and high-speed architectures and, more particularly, to blocks for low-area multipliers, and in general for complex signal processing involving multiplications with variable coefficients, such as scalable FFT, adaptive digital filters, and any kind of application that requires multiplying a N-bit signal with a M-bit dynamic coefficient, and related methodology. 
   2. Description of the Related Art 
   Canonic Signed Digit (CSD) encoding/decoding operations are well known, and a significant literature exists on that topic. In A. Peled, “On the hardware implementation of digital signal processors”, IEEE Transactions on Acoustics, Speech, and Signal Processing, vol. 24(1), pp. 76-78, February 1976, the Canonic Signed Digit encoding properties have been extensively explored. 
   Binary Canonic Signed Digit (BCSD) encoding has been introduced in R. Hashemian, “A New Method for Conversion of a Two Complement to Canonic Signed Digit Number System and its Representation”, IEEE Thirtieth Asilomar Conference on Signals Systems and Computers, vol. 2, pp. 904-906, November 1996, with special emphasis placed on computer programming. This document discloses an algorithm that performs the Binary Canonic Signed Digit encoding of a number in two&#39;s complement notation using a procedure written in C language. The procedure proposed is not suitable for hardware implementation. 
   Moreover, no mention is made of any Binary Canonic Signed Digit decoding process, “decoding” being intended to designate the process aimed at recovering the Canonic Signed Digit notation for subsequent Canonic Signed Digit processing. 
   A further document of interest in this area is U.S. Pat. No. 4,623,872, which discloses a circuit for CSD-coding of binary numbers represented in two&#39;s complement. 
   BRIEF SUMMARY OF THE INVENTION 
   In view of the foregoing, the need is felt for an efficient hardware implementation of a method of processing digital signals involving the use of digital signals in the Canonic Signed Digit (CSD) representation, possibly involving encoding a number in two&#39;s complement notation into its Binary Canonic Signed Digit notation. 
   More specifically, the need is felt for an arrangement for decoding a Binary Canonic Signed Digit number into its Canonic Signed Digit notation. Binary Canonic Signed Digit encoding is a serial, recursive algorithm. 
   According to the disclosed embodiments of the present invention, a method and device is provided having the features set forth in the claims that follow. In one embodiment, the invention relates to a computer program product, loadable in the memory of at least one computer and including software code portions for performing the steps of the method of the invention when the product is run on a computer. As used herein, reference to such a computer program product is intended to be equivalent to reference to a computer-readable medium containing instructions for controlling a computer system to coordinate the performance of the method of the invention. Reference to “at least one computer” is evidently intended to highlight the possibility for the present invention to be implemented in a distributed/modular fashion. 
   The solution described herein performs the Binary Canonic Signed Digit encoding operation splitting the recursive algorithm into three steps: the parallel pre-processing, the recursive serial processing, and the parallel post-processing. 
   Moreover, the remaining recursive processing is carried on using low-latency parallel structures in order to reduce the overall processing time, which is the limiting element in the Canonic Signed Digit processing techniques. The Binary Canonic Signed Digit decoding scheme takes advantage of the BCSD digits to perform the Binary Canonic Signed Digit decoding back to its Canonic Signed Digit notation. 
   In accordance with one embodiment of the invention, a method of processing digital signals is provided, the method including the steps of making the digital signals available in Binary Canonic Signed Digit representation, and converting the digital signals made available in Binary Canonic Signed Digit representation into Canonic Signed Digit representation for use in processing. 
   In accordance with another aspect of the foregoing embodiment, the Binary Canonic Signed Digit representation is in sign-extended encoding, and the processing includes a step of multiplication using the CSD representation. During processing the digital signals are dynamically varied, and they can be made available in two&#39;s complement representation to produce BCSD representation or to produce CSD representation from which is produced the BCSD representation. The two&#39;s complement representation into CSD representation can be done via the inverse two&#39;s complement transformation, including subjecting the digital signals in the two&#39;s complement representation to processing a parallel-prefix structure or by means of the Sklansky parallel-prefix algorithm. 
   In accordance with another embodiment of the invention, a system for processing digital signals is provided, the system including an input element configured to make the digital signals available in Binary Canonic Signed Digit representation, and a converter to convert the digital signals made available in the Binary Canonic Signed Digit representation into Canonic Signed Digit representation for use in processing. 
   In accordance with another embodiment of the invention, a digital signal processing method is provided that includes converting the digital signals into Binary Canonic Signed Digit representation using sign-extended coding, and converting the BCSD representation into Canonic Signed Digit representation for use in a multiplication operation. 
   In accordance with yet a further embodiment of the invention, an electronic circuit is provided that includes an input element configured to receive digital signals and to convert the digital signals into Binary Canonic Signed Digit representation using sign-extended encoding, a converter configured to receive the BCSD representation and to output a Canonic Signed Digit representation, and a multiplier adapted to be fed with the CSD representation. 

   
     BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS 
     The invention will now be described, by way of example only, with reference to the enclosed figures of drawing, wherein: 
       FIG. 1  shows a two&#39;s complement multiplication of a M-bit signal and a N-bit coefficient; 
       FIG. 2  is a schematic representation of a so-called Sklansky Parallel-Prefix algorithm for N=16; 
       FIG. 3  shows a circuital representation of a Sklansky algorithm; 
       FIG. 4  shows the NAND-NOR-NOT version of the Sklansky circuit of  FIG. 3 ; 
       FIG. 5  shows an example of an Optimally Convertible Block (OCB) indicator; 
       FIG. 6  shows an Optimally Convertible Block detector; 
       FIG. 7  shows a simpler version of the Optimally Convertible Block detector of  FIG. 6 ; 
       FIG. 8  shows a encoder/decoder chain; 
       FIG. 9  shows an example of a Sklansky structure with full and half cells; 
       FIG. 10  shows the logic within the full and half cells of  FIG. 9 ; 
       FIG. 11  shows an example of CSD encoder (in the case where the OCB was estimated); 
       FIG. 12  shows an example of two&#39;s complement to CSD mapping process; 
       FIG. 13  shows an example of a BCSD encoder; 
       FIG. 14  shows an example of two&#39;s complement to BCSD mapping process; 
       FIG. 15  shows another example of the BCSD encoder; 
       FIG. 16  shows a block diagram of the two&#39;s complement to BCSD encoder process; 
       FIG. 17  shows a BCSD multiplier; 
       FIG. 18  shows a block diagram of the BCSD to CSD decoder process; 
       FIG. 19  shows a circuital representation of the block diagram of  FIG. 18 ; 
       FIG. 20  shows an example of BCSD to CSD decoding process; 
       FIG. 21  shows the complexity comparison between multipliers; 
       FIG. 22  shows the speed comparison between multipliers. 
   

   DETAILED DESCRIPTION OF THE INVENTION 
   The two&#39;s complement notation for a given number x is: 
                 x   =         ∑     n   =   0       N   -   2       ⁢       a   n     ·     2   n         -       a     N   -   1       ·     2     N   -   1                   (   1   )               
where a n  belongs to the binary alphabet a n ε{0, 1}. A two&#39;s complement multiplication of a N-bit coefficient x and a M-bit signal y, to produce an M+N-bit output signal z thus requires a N-adder tree, as shown in  FIG. 1 .
 
   There, reference  2  designates a selector having as its inputs x and y, which are the N-bit coefficient and the M-bit signal respectively. Reference  4   i  designates any one of a bank of N Shift Left (SHL) elements, and reference  6  designates an adder tree. 
   The Signed Digit (SD) ternary representation of a given number x is: 
                 x   =       ∑     n   =   0       N   -   2       ⁢       s   n     ·     2   n                 (   2   )               
where s n  belongs to the ternary alphabet s n ε{−1, 0, 1}. Signed Digit multiplications allow reducing the number of Non-Zero Digits (NZDs), thus reducing the complexity of the adder tree.
 
   Among the Signed Digit representations, the Canonic Signed Digit (CSD) representation of a given number x is the minimal SD representation, i.e., the representation having minimal number of Non-Zero Digits. The Canonic Signed Digit representation of x is unique. 
   It has been demonstrated that a Canonic Signed Digit number has a maximum number of Non-Zero Digits equal to N/2 (N even), while the average number of Non-Zero Digits is about N/3. 
   The inverse two&#39;s complement is a ternary representation of a binary number x. The T2I transformation is the transformation of a two&#39;s complement number into its inverse two&#39;s complement representation, the expression “T2I” being in fact a sort of acronym of “Two&#39;s complement notation  2  (to) Inverse two&#39;s complement notation”. 
   The T2I transformation can be accomplished by first finding the two&#39;s complement of x and then replacing all ‘1’ by ‘−1’, except for the Most Significant Bit, which remains unchanged. The inverse two&#39;s complement transformation of each number is unique. 
   While the two&#39;s complement notation of a given number is a binary representation of the number, the T2I transformation can be seen like an intermediate step in order to transform a number represented in its two&#39;s complement notation in its CSD representation. So, the T2I is a transformation that maps a number given in its two&#39;s complement notation into a new ternary representation. 
   The CSD representation of a number, made available in its two&#39;s complement notation, can be obtained operating the T2I transformation on each Optimally Convertible Block inside the given number. 
   An Optimally Convertible Block (OCB) is a block of consecutive digits of a binary number x that starts with the couple ‘11’ and ends with the first zero of the couple ‘00’ or with the end of the word itself. More than one Optimally Convertible Block can be found within x. 
   Any other block within x that cannot be marked as Optimally Convertible Block will be called Non-optimally Convertible Block (NCB). 
   For a given binary number x represented in two&#39;s complement notation, the number of Non-Zero Digits can be reduced to a minimum if every Optimally Convertible Block found within x is converted using the T2I transformation. Accordingly, a ternary number generated by the former method is a Canonic Signed Digit number. This is shown, e.g., in G. K. Ma, F. J. Taylor, “Multiplier Policies for Digital Signal Processing”, IEEE ASSP Mag. NO.1, pp.6-20, January 1990. 
   A N-bit Canonic Signed Digit word has a total number of Non-Zero Digits that never exceeds N/2 (N even). As a drawback, the Canonic Signed Digit number word size is twice (2N) the word length of the corresponding two&#39;s complement number (N). This is because each CSD digit shall be represented over two-bits. 
   If (x n ) CSD  is a Non-Zero Digit within a Canonic Signed Digit number, then (x n+1 ) CSD  is always zero, i.e., only the couples ‘01’ or ‘0−’ can be found within a Canonic Signed Digit number. 
   The zero digit (x n+1 ) CSD  can thus be used to code the sign of the preceding digit (x n ) CSD , i.e., mapping the couples ‘01’ and ‘0−’ into ‘01’ and ‘11’ respectively. The Binary CSD encoding does not introduce representation overhead. 
   This leads again to a binary number that is called “Binary CSD” (BCSD). Since the CSD notation for a two&#39;s complement number is unique, and given that the CSD/BCSD transformation is unique, the two&#39;s complement to BCSD transformation is unique as well, i.e., there is a one-to-one correspondence between a two&#39;s complement number and its Binary CSD representation. 
   A recursive linear equation in the form:
 
 c   n+1   =p   n   ·c   n   +g   n   (3)
 
can be solved by serially evaluating each term as a function of the previous one. Thus, it has a complexity of N and a latency of N.
 
   If highspeed is needed, any Parallel-Prefix structure can be conveniently used.  FIG. 2  schematically shows the so-called Sklansky Parallel-Prefix algorithm for a N=16 digits recursive formula. Further details on the Sklansky Parallel-Prefix algorithm can be found in J. Sklansky “Conditional sum addition logic”, IRE Transaction on Electronic Component, vol. 9(6), pp. 226-231, June 1960. 
   The complexity of the Sklansky algorithm is N/2·log 2 (N) while the tree depth is log 2 (N), thus it is sensibly faster than the serial algorithm in front of a slightly higher complexity. 
   For instance, assuming for simplicity g n =0 in equation (3), the recursive formula c n+1 =p n ·c n  can be solved by means of the circuit shown in  FIG. 3 , where N=8 and c 0 =1. This arrangement can be conveniently implemented as a combinatory network of AND gates, e.g., as shown in  FIG. 3 . According to the following equation: 
   
     
       
         
           
             
               
                 
                   
                     
                       
                         C 
                         
                           n 
                           + 
                           1 
                         
                       
                       = 
                       
                         
                           p 
                           n 
                         
                         · 
                         
                           c 
                           n 
                         
                       
                     
                   
                 
                 
                   
                     
                       = 
                       
                         
                           p 
                           n 
                         
                         · 
                         
                           ( 
                           
                             
                               p 
                               
                                 n 
                                 - 
                                 1 
                               
                             
                             · 
                             
                               c 
                               
                                 n 
                                 - 
                                 1 
                               
                             
                           
                           ) 
                         
                       
                     
                   
                 
                 
                   
                     
                       = 
                       
                         
                           p 
                           n 
                         
                         ⁡ 
                         
                           ( 
                           
                             
                               
                                 
                                   p 
                                   _ 
                                 
                                 
                                   n 
                                   - 
                                   1 
                                 
                               
                               + 
                               
                                 
                                   c 
                                   _ 
                                 
                                 
                                   n 
                                   - 
                                   1 
                                 
                               
                             
                             _ 
                           
                           ) 
                         
                       
                     
                   
                 
                 
                   
                     
                       = 
                       
                         
                           
                             
                               p 
                               _ 
                             
                             n 
                           
                           + 
                           
                             ( 
                             
                               
                                 
                                   p 
                                   _ 
                                 
                                 
                                   n 
                                   - 
                                   1 
                                 
                               
                               + 
                               
                                 
                                   c 
                                   _ 
                                 
                                 
                                   n 
                                   - 
                                   1 
                                 
                               
                             
                             ) 
                           
                         
                         _ 
                       
                     
                   
                 
                 
                   
                     
                       = 
                       
                         
                           
                             
                               p 
                               _ 
                             
                             n 
                           
                           + 
                           
                             
                               
                                 p 
                                 
                                   n 
                                   - 
                                   1 
                                 
                               
                               · 
                               
                                 c 
                                 
                                   n 
                                   - 
                                   1 
                                 
                               
                             
                             _ 
                           
                         
                         _ 
                       
                     
                   
                 
               
             
             
               
                 ( 
                 4 
                 ) 
               
             
           
         
       
     
   
     FIG. 4  shows an alternative NAND/NOR/NOT version of the circuit of  FIG. 3 . 
   In both  FIGS. 3 and 4  the logical gates shown (of the AND, NAND, NOR and NOT type) are represented by using their canonic representations, thus making it unnecessary to insert reference numerals. The references p 0  to p 7  and c 1  to c 8  designate the individual digits of the numbers p n  and c n . 
   Those of skill in the art will be in a position to easily derive further, equivalent embodiments of the same function. 
   An indicator, which “flags” the presence of all the Optimally Convertible Blocks within the input word x, is introduced. The Optimally Convertible Blocks detector b must detect the couple ‘11’ and ‘00’, i.e., the beginning and the end of each Optimally Convertible Block. 
   For reasons that will be explained later, it is convenient that the Optimally Convertible Block (OCB) detector may flag (i.e., set the corresponding bit to one) all the digits within each Optimally Convertible Block without flagging the Least Significant Bit of the Optimally Convertible Block itself, as in the example of  FIG. 5 , where the OCB detector function is schematically indicated as b. 
   Prior to performing the Optimally Convertible Block detection the input word x may be sign-extended to retain the information on the sign of the signal. 
   The Optimally Convertible Block (OCB) detector can be implemented as in  FIG. 6 . 
   Starting from b o =0, the Optimally Convertible Block detector can be expressed by the following recursive equation:
 
 b   n+1 =( g   n   +b   n   ·  g     n )·   b     n   +p   n   ·b   n   (5)
 
where:
 
   
     
       
         
           
             
               
                 
                   
                     g 
                     n 
                   
                   = 
                   
                     
                       x 
                       n 
                     
                     · 
                     
                       x 
                       
                         n 
                         + 
                         1 
                       
                     
                   
                 
                 ⁢ 
                 
                   
 
                 
                 ⁢ 
                 
                   
                     p 
                     n 
                   
                   = 
                   
                     
                       x 
                       n 
                     
                     + 
                     
                       x 
                       
                         n 
                         + 
                         1 
                       
                     
                   
                 
               
             
             
               
                 ( 
                 6 
                 ) 
               
             
           
         
       
     
   
   It is easy to show that the Optimally Convertible Block detector can also be written as:
 
 b   n+1 =( x   n   +x   n+1 )· b   n   +x   n   ·x   n+1   =p   n   ·b   n   +g   n   (7)
 
which corresponds to the circuit shown in  FIG. 7 .
 
   Once again, the AND/OR gates shown in these Figures have not been allotted specific reference numerals. Conversely, reference  12 ,  14 , and  16  in  FIG. 6  designate respective selector blocks whose output is set to either of the input values (0, 1) depending on the value of the input bits p n , b n , and g n , respectively. 
     FIG. 8  shows a chain where reference  10  is a block acting as a “source” for a number x in a BCSD notation. 
   In a first possible embodiment, the block  10  may be simply comprised of a memory where the number x—in the BCSD notation—has been previously stored. 
   Alternatively (this is the embodiment specifically referred to in  FIG. 8 ) the block  10  is comprised of an encoder that maps a N-bit number x in its two&#39;s complement notation into its BCSD notation (over N bits). 
   In either case a decoder  20  is provided in order to map the BCSD number into its CSD notation that uses 2N bits. 
   Reference  2  designates the selector having as its inputs:
         the signal x from block  20  presented in its CSD notation over 2N bits, and   the M-bit coefficient y.       

   Reference  8   i  designates any one of a bank of N/2 Shift Left (SHL) elements, and finally, reference  6  designates the adder tree. 
   Direct comparison of the arrangements shown in  FIG. 1  and  FIG. 8  shows that in the arrangement of  FIG. 8  there are only N/2 SHL elements  8   i , while in the case of  FIG. 1  there are N SHL elements  4   i.    
   If an encoder is used in the place of a memory as the block  10 , a possible approach in producing the number x in the BCSD format is to start from the number in the two&#39;s complement notation, convert it to the CSD format by exploiting the T2I transformation and then convert the CSD number into the BCSD format. Despite the notional complexity, such an approach lends itself to an efficient, fast and simple hardware implementation. 
   A critical point in implementing the Binary CSD encoder architecture is the Optimally Convertible Blocks detection, which consists of the following recursive equation:
 
 b   n+1   =p   n   ·b   n   +g   n   (8)
 
   Equation (8) is in the form of equation (3) and can be easily implemented in serial or parallel way, where in the latter case any parallel-prefix structure can be used. 
   Equation (8) can be carried out, e.g., by the Sklansky Parallel-Prefix algorithm. Both p n  and g n  can be evaluated in parallel prior to feeding them into the Sklansky tree. 
     FIG. 9  shows an example of Sklansky structure for N=8, where b 0 =0. Specifically, in the network shown in  FIG. 9 , reference numerals  22  and  24  designate so-called Full and Half cells corresponding to the block diagrams shown in  FIG. 10  (once again, the AND/OR gates shown therein are represented by means of their standard graphical representation). 
   The inverse two&#39;s complement transformation (T2I) has to be performed by first evaluating the two&#39;s complement of each Optimally Convertible Blocks, and then substituting each ‘1’ with ‘−1’ except for the Most Significant Bit which shall remain unchanged. Since each Optimally Convertible Block begins with ‘11’, the two&#39;s complement of an Optimally Convertible Block z of size m can be easily performed as follows:
 
 −z=  z   +1=1   z     M−2    . . .  z     2 01  (9)
 
which means performing the bit-wise inversion of the OCB bits while excluding the LSB.
 
   The two&#39;s complement can thus be evaluated by simply performing the one&#39;s complement of the Most Significant Bit of each Optimally Convertible Block while leaving its Least Significant Bit unchanged. This is the reason why the Optimally Convertible Block detector does not flag the Least Significant Bit of each Optimally Convertible Block. 
   The first step of the inverse two&#39;s complement transformation can then be accomplished by applying the Optimally Convertible Block detector b to the word x by means of a controlled one&#39;s operator:
 
d n =x n ⊕b n   (10)
 
   It has to be noted that d flags the position of all the Non-Zero Digits within the Canonic Signed Digit coding of x, without giving any information about the sign of these Non-Zero Digits. 
   To obtain the Canonic Signed Digit representation of x, each Non-Zero Digit within d corresponding to an Optimally Convertible Block must be replaced by ‘−1’, except for the Most Significant Bit of each Optimally Convertible Block which shall remain unchanged. This suggests using the Optimally Convertible Block to directly retrieve the sign of each Non-Zero Digit. 
   In that respect it has to be noted that the right shift of the indicator b flags exactly each OCB while leaving out the Most Significant Bit. Sign s n  can be expressed as:
 
s n =x n+1   (11)
 
where
 
b n+1 =x n+d     n     (12)
 
and it has to be assumed that indicator s is meaningful only when the indicator d point to a Non-Zero Digit.
 
   As soon as the sign s has been determined, the Canonic Signed Digit transformation can be accomplished using the CSD encoder of  FIG. 11 . 
   There, references  28  and  29  in  FIG. 11  designate respective multiplexer blocks whose output is set to either of the input values (0, 1) depending on the value of the input bits s n  and d n  respectively. The value of the bit d n  is the result of the logical XOR operation of bits b n  and x n . 
     FIG. 12  shows an example of the overall two&#39;s complement to CSD mapping process. 
   To obtain the Binary CSD transform of x each couple ‘0−’ in (x) CSD  shall be mapped into the couple ‘11’, while all the pairs ‘01’ shall be unchanged. 
   Since d n  identifies the position of each Non-Zero Digits, while their sign can be retrieved from x n−1 , the Binary CSD mapping can be done by using both d n  and x n+1 , as shown in the BCSD encoder in  FIG. 13 . 
   There, reference  32  in  FIG. 13  designates a selector block whose output is set to either of the input values (0, 1) depending on the value of the input bit d n . 
   The BCSD encoder of  FIG. 13  corresponds to the following equation:
 
( x   n ) BCSD   =d   n   +x   n   ·d   n−1   ·  d     n   (13)
 
   After some manipulations, and considering that:
 
  b   n+1 =(    x     n   +  x     n+1 )·    b     n   +  x     n     x     n+1   (14)
 
equation (13) can be simplified as follows:
 
   
     
       
         
           
             
               
                 
                   
                     
                       
                         
                           ( 
                           
                             x 
                             n 
                           
                           ) 
                         
                         BCSD 
                       
                       = 
                       
                         
                           
                             x 
                             n 
                           
                           · 
                           
                             
                               x 
                               _ 
                             
                             
                               n 
                               - 
                               1 
                             
                           
                         
                         + 
                         
                           
                             ( 
                             
                               
                                 b 
                                 
                                   n 
                                   - 
                                   1 
                                 
                               
                               ⊕ 
                               
                                 x 
                                 n 
                               
                             
                             ) 
                           
                           · 
                           
                             x 
                             
                               n 
                               - 
                               1 
                             
                           
                         
                       
                     
                   
                 
                 
                   
                     
                       = 
                       
                         
                           x 
                           n 
                         
                         ⊕ 
                         
                           ( 
                           
                             
                               b 
                               
                                 n 
                                 - 
                                 1 
                               
                             
                             · 
                             
                               x 
                               
                                 n 
                                 - 
                                 1 
                               
                             
                           
                           ) 
                         
                       
                     
                   
                 
               
             
             
               
                 ( 
                 15 
                 ) 
               
             
           
         
       
     
   
     FIG. 14  shows an example of the overall two&#39;s complement to BCSD mapping process. 
   Binary CSD mapping can be retrieved using equation (15). It corresponds to the BCSD encoder shown in  FIG. 15 . 
   There, reference  34  designates the logical XOR operation of x n  and the output of the AND gate. The output of the AND gate depends on the value of the input bits x n−1  and b n−1 . 
     FIG. 16  shows a block diagram of the two&#39;s complement to BCSD encoder process. In particular block  30  performs equation (6), block  40  performs equation (8) and block  50  performs equation (15). 
   The BCSD encoding does not carry any sign information on the Most Significant Bit. Sign indicator can be easily retrieved from x itself (if available) or by means of a recursive equation dealing with the representation range. 
   As soon as the x operand has been Binary CSD converted, the BCSD number can be converted back into its CSD notation. 
   First of all, it has to be recalled that for each (x n ) BCSD  Non-Zero Digit, the (x n+1 ) BCSD  represent the sign of (x n ) BCSD  digit.  FIG. 17  shows a BCSD multiplier where the outer multiplexer  60  is driven by the following flag operator:
 
 d   n+1   =  d     n ·( x   n ) BCSD   (16)
 
   There, reference  42  designates a OCB detector block and reference  44  designates a BCSD mapper block. Reference  10  designates a BCSD encoder block that comprises blocks  42  and  44 . 
   Reference  46  designates a Two&#39;s Complement block. This block operates the two&#39;s complement of the input parameter y. 
   Again, reference  8   i  designates any one of a bank of N/2 Shift Left (SHL) elements, and reference  6  designates an adder tree. 
   Assuming d 0 =0, d n+1  flags the presence of the Non-Zero Digits taking into account that for each Non-Zero Digit, the preceding one must be zero. The inner multiplexer retrieves the sign of each Non-Zero Digit (x n ) BCSD  according to the value of (x n+1 ) BCSD . 
   Again, the flag operator d n+1  can be conveniently implemented using a Parallel-Prefix structure. 
   Equation (17) shows the sign indicator operation: 
                         s     n   +   1       =           (     x     n   +   1       )     BSCD     ·     d     n   +   1         +       s   n     ·       d   _       n   +   1                         s     N   -   1       =       s   _       N   -   1                     (   17   )               
while equation (18) shows the CSD mapping function:
 ( x   n ) CSD =(1−2 s   n )· d   n   (18) 
     FIG. 18  shows a block diagram of the BCSD to CSD decoder process. In particular block  70  performs equation (16), block  80  performs equation (17) and block  90  performs equation (18). 
   The decoding operation can be simplified by resolving the Most Significant Bit sign ambiguity by means of extended BCSD encoding. 
   Such an extended BCSD encoding requires one extra bit (N+1 bits) but has the advantage of making it easier to decode back the BCSD number when the two&#39;s complement input number is not available. 
   As stated, sign indicator evaluation can be strongly simplified when x is BCSD encoded using the extended BCSD representation. In fact, in this case the sign information can be recovered directly from the Most Significant Bit of x EBCSD  as shown in equation (19).
 
 s   n+1 =( x   n+1 ) EBCSD   (19)
 
   An important aspect of both encoding and decoding functions resides in the recursive nature of the involved equations. Each equation having a recursive nature can be conveniently implemented using Parallel-Prefix structures. In addition (and as shown), Parallel-Prefix structures are well suited for pure NAND-NOR-NOT logic implementation. 
   A BCSD multiplier is the optimal choice when dealing with applications where the multiplicand can be chosen from a set of coefficients stored in a memory, such as scalable architectures and adaptive or serial signal processing. 
   Multipliers which make use of BCSD encoded multiplicand require only the decoding function to map the BCSD number back into its CSD notation, while introducing no memory overhead. 
   A circuital representation of the BCSD to CSD decoder process is shown in  FIG. 19 . 
   There, references  54  and  56  in  FIG. 19  designate respective selector blocks whose output is set to either of the input values (0, 1) depending on the value of the input bits (x n+1 ) BCSD  and d n+1  respectively. The value of the bit d n+1  is the result of the logical AND operation, gate  52 , of bits  d   n  and (x n ) BCSD . 
   Multiplication is carried on in the conventional way, shifting and adding the different replicas of the M-bit y operand according to the Non-Zero Digit of the N-bit x operand. In principle, a N×M bits multiplication (with N&lt;M) requires N shift-and-add operators. 
   A Binary CSD multiplier requires only N/2 (with N even) shift-and-add operators, which is equivalent (and can then be fairly compared) to the Radix-4 Booth Encoding. 
   Finally,  FIG. 20  shows an example of BCSD to CSD decoding process. 
   Complexity and speed evaluation resulting from logical synthesis for the HCMOS9 technology are shown in  FIGS. 21 and 22 . 
     FIG. 21  shows the complexity comparison between multipliers. 
     FIG. 22  shows the speed comparison between multipliers. 
   The BCSD multiplier has been implemented by embedding the BCSD decoder only, thus assuming that the multiplicand is available in its BCSD representation, for both the standard (a) and the extended (b) BCSD decoding schemes. 
   To perform a fair comparison, both the CSD and the largely exploited signed digit modified Booth (Radix-4) multiplier have been implemented. For each of them, the same Wallace tree and Parallel-Prefix structures adopted for the BCSD multiplier have been employed. 
   Since CSD and Booth multipliers suffer the redundancies due to the ternary representation, they have been implemented as two&#39;s complement multipliers, thus embedding also the Booth and CSD encoding functions respectively. 
   It has to be noted that the BCSD multiplier embedding both the encoding and the decoding functions can be actually seen as a pure CSD multiplier, thus showing the same performance in terms of both complexity and speed. 
   It is noteworthy that the complexity gain of the BCSD multiplier with respect to the Booth and the CSD multipliers increases with the increasing of the input word-length. This is largely due to the presence of the encoding functions included in the Booth and the CSD multipliers, whose load becomes considerable even for modest word-lengths. 
   In terms of speed, both CSD and BCSD multipliers have almost the same behavior, which depends on the fact that CSD encoding has the same recursive nature of the BCSD decoding, even if the latter exhibits a smaller complexity which in turn results in an overall speed improvement. 
   The BCSD multiplier that makes use of the extended BCSD decoding performs better than the conventional scheme in terms of both complexity and speed; but as a drawback it requires an extra-bit for each BCSD encoded operand. 
   Moreover, if a very small-area is the primary need of the application, a BCSD encoder can be implemented, avoiding the complexity and attendant overhead due to the Parallel-Prefix structure and the adoption of the fast Carry Select Adder Wallace tree. In this case, synthesis results revealed a gain of more than 10% in terms of complexity with respect to the reference multiplier. 
   It has to be noted that, if a BCSD-coded version of x operand is available into a memory, then the BCSD encoder can be omitted from the multiplier, i.e., the multiplication for a pre-calculated coefficient exhibits a complexity reduction since only the BCSD decoder is needed (which is the less expensive part in terms of complexity). 
   To sum up, CSD numbers are well known in the literature, and can be conveniently used when performing some signal processing with fixed coefficient (static filters, fixed size FFTs), but they suffer the redundancy due to the ternary representation when applied to dynamic coefficients. In fact, an N-bit two&#39;s complement number needs 2N-digit to be mapped into a CSD number. When dealing with dynamic coefficients stored in a memory, CSD processing requires a memory that is twice the memory required by the two&#39;s complement. 
   The advantage of storing BCSD encoded coefficients is that it requires the same amount of memory required by the two&#39;s complement coefficients while maintaining all the advantages of the CSD processing. BCSD numbers stored in a memory must be efficiently decoded back to their CSD notation before they can be used in CSD processing. In this case, when the BCSD encoded numbers are available, only the BCSD decoder has to be implemented, with a considerable hardware saving. 
   Advantageously, the arrangement described herein can be incorporated in a system architecture as described, e.g., in the paper by Daniele Lo lacono et al. “Serial Block Processing for Multi-Code WCDMA Frequency Domain Equalization”—Proc. of the IEEE Wireless Communications and Networking Conference WCNC 2005, New Orleans, La., March 2005, whose disclosure is incorporated herein by reference. 
   Specifically, while retaining the same architecture (see especially  FIG. 11  of the paper by Lo lacono et al.) the re-configurable FFT Radix-R butterfly can be implemented using BCSD multipliers instead of the traditional two&#39;s complement multipliers (such as the Booth Radix-4 multiplier). In that case, the corresponding Twiddles Factors ROM must hold BCSD twiddles, i.e., twiddles represented into their BCSD notation. 
   Since both the complexity and the speed bottlenecks of the FFT reside in the multipliers, the BCSD FFT exhibits improved performance over a traditional arrangement employing Booth multipliers in terms of both reduced complexity and increased speed. The size of the Twiddles ROM Bank is the same as in the conventional case when using a BCSD multiplier, and slightly larger in comparison with arrangements using Extended BCSD. In the latter case, the FFT itself shows the best performance. 
   It will be appreciated that both the x input vector (via the input RAM banks) and the X output vector are still two&#39;s complement number. Thus, there is no need to convert the input/output streams into BCSD (which is however the way a BCSD multiplier works). 
   Consequently, without prejudice to the underlying principle of the invention, the details and the embodiments may vary, also appreciably, with reference to what has been described by way of example only, without departing from the scope of the invention as defined by the annexed claims. 
   All of the above U.S. patents, U.S. patent application publications, U.S. patent applications, foreign patents, foreign patent applications and non-patent publications referred to in this specification and/or listed in the Application Data Sheet, are incorporated herein by reference, in their entirety. 
   From the foregoing it will be appreciated that, although specific embodiments of the invention have been described herein for purposes of illustration, various modifications may be made without deviating from the spirit and scope of the invention. Accordingly, the invention is not limited except-as by the appended claims and the equivalents thereof.