Abstract:
A data processing system uses the same structure and hardware to implement either a general purpose multiplier or arithmetic operations associated with the least-mean-squares (LMS) algorithm. Multiplier and adder circuits are time-shared to perform the myriad functions. In one form, further modified Booth&#39;s algorithm is utilized so that an output product of two binary input numbers may be quickly formed by executing a series of multiplications and accumulations. The operation is pipelined for continuous processing activity.

Description:
CROSS REFERENCE TO RELATED APPLICATION 
     U.S. Pat. No. 4,947,363 entitled &#34;A Pipelined Processor For Implementing The Least-Mean-Squares Algorithm&#34; filed by Tim Williams and assigned to the assignee hereof. 
     TECHNICAL FIELD 
     This invention relates to data processors, and more particularly, to data processors operating in adaptive systems. 
     BACKGROUND OF THE INVENTION 
     In an adaptive, time varying system a predetermined impulse function used for excitation changes at every data sample point or set of data samples. Such a system is therefore nonlinear. A digital filter is directed to a particular transfer function by an adaption processor depending upon a desired function of the filter. An application of a digital filter is to achieve the minimum mean square error when filtering a set of data with a predetermined transfer function. This function is known as the least-mean-squares (LMS) algorithm. The error represents an error between some desired goal and what the filter is actually computing and is a measurement of the misadjustment of the filter. The LMS algorithm involves: (1) an adaption computation which is an update of coefficients in the filter based in part upon the previous error; (2) a convolution computation which is an accumulation of the product of predetermined coefficient values and data values; and (3) an error calculation. 
     One application of the LMS algorithm is within the implementation of a telecommunications U-interface transceiver as defined by the American National Standards Institute (ANSI) for a U-interface reference model. This interface is the twisted pair of wires which link a central office location and a subscriber in a communications system. The ANSI standard specifies a coding scheme, a data transmission rate, an echo cancellation technique and startup and synchronization procedures at both a network termination and a line termination. The LMS algorithm may be used to implement a variety of functions including: (1) a linear echo canceller (LEC); (2) a decision feedback equalizer (DFE); and (3) adaptive reference compensation. In addition, a general purpose multiplier is needed to implement a U-interface transceiver. 
     Others have developed a data processor for ISDN U-interface transceivers which conform to the ANSI standard. As an example, Koh et al. in an article entitled &#34;Algorithms and Architecture of a VLSI Signal Processor For ANSI Standard ISDN Transceiver&#34; in the IEEE International Conference of Acoustics, Speech and Signal Processing Proceedings, 1989, pages 2468-2471, a processor which implements a U-interface transceiver is shown. A plurality of individual arithmetic unit circuits is typically required to implement each of the functions of the linear echo canceller and decision feedback equalizer and separate circuitry is required to implement a general purpose multiplier. Similar subject matter is also discussed by Khorramabadi et al. in a paper entitled &#34;An ANSI Standard ISDN Transceiver Chip Set&#34; in the IEEE International Solid-State Circuits Conference, 1989, pages 256-257. Another example of a processor which implements the ISDN interface defined by ANSI is described by Agazzi et al. in a paper entitled &#34;A Digital Signal Processor for an ANSI Standard ISDN Transceiver&#34; in the IEEE Journal of Solid-State Circuits, Vol. 24, No. 6, Deccember 1989. A large amount of individual arithmetic processing units are typically required to implement each of the distinct functions required by the ANSI standard at the U-interface. 
     SUMMARY OF THE INVENTION 
     Accordingly, it is an object of the present invention to provide an improved data processor with combined adaptive LMS and general multiplication functions. 
     Another object of the present invention is to provide an improved multiple purpose data processor and method of use which minimizes circuitry. 
     In carrying out the above and other objects of the present invention, there is provided, in one form, a data processing system using time multiplexed circuitry to combine digital filtering and general multiplication functions with the same circuitry. The digital filtering includes implementing a predetermined algorithm in an N-tap filter, where N is an integer. A convolution of a series of data values and coefficient values for the N taps is calculated while an adaption calculation of the series of coefficient values is performed by updating the coefficient value for each tap of the filter. The general multiplication includes multiplying first and second input operands. An update portion has a first multiplier and a first adder for performing a predetermined number of update calculations to the coefficient values required to implement the predetermined algorithm. The update portion also selectively provides a first plurality of recorded operands associated with the general multiplication at an output of the first multiplier and provides partial products at an output of the first adder. A convolution portion comprises a second multiplier and a second adder coupled to the update portion. The convolution portion sums a predetermined number of convolution products, each formed by multiplying a predetermined coefficient value and a predetermined data value to provide an output signal which represents the convolution. The second multiplier also selectively provides a second plurality of recoded operands associated with the general multiplication at an output of the second multiplier and provides partial products at an output of the second adder. The second adder selectively provides an output product of the general multiplication. A storage device is coupled to both the update portion and convolution portion for selectively providing both the data values and the coefficient values required by both the update portion and convolution portion to implement the predetermined algorithm. 
     These and other objects, features, and advantages, will be more clearly understood from the following detailed description taken in conjunction with the accompanying drawings. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 illustrates in block diagram form a data processor in accordance with the present invention; 
     FIG. 2 illustrates in table form a two cycle recoded multiplication of two binary numbers with the processor of FIG. 1; and 
     FIGS. 3A, 3B and 3C in combination illustrate in graphical chart form the pipelined operation of the processor of the present invention wherein FIG. 3B is placed above FIG. 3C as noted and FIG. 3A is placed above FIG. 3B as noted. 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     Shown in FIG. 1 is a data processor 10 which may both function to implement adaptive filter functions such as those required by a U-interface transceiver in accordance with the ANSI standard and to implement a general purpose recoded two&#39;s complement multiplier also required to implement the U-interface transceiver. Data processor 10 has many structural features in common with the data processor taught in FIG. 5 of Tim Williams&#39; copending patent application U.S. Ser. No. 07/283,101 entitled &#34;A Pipelined Processor For Implementing The Least-Mean-Squares Algorithm&#34; which is herein incorporated by reference. Data processor 10 of the present invention implements the same functions as previously discussed in addition to the function of a general purpose multiplier. Therefore, for purposes of comparison, common elements between FIG. 1 herein and the processor of FIG. 5 of U.S. Ser. No. 07/283,101 are similarly numbered. Accordingly, a detailed description of the interconnections of those structural elements will not be repeated herein. It should be well understood that the filtering operation of data processor 10 involving convolution and update operations is the same as described in the incorporated copending application. 
     Additionally, a latch 119 for receiving an operand labeled &#34;Operand X&#34; is connected to a data bus 170. An output of latch 119 is connected to an input of a data shifter 120 and to an input labeled &#34;C&#34; of multiplexor 86. Multiplexor 86 also has an input labeled &#34;B&#34; for receiving a zero value and an input labeled &#34;A&#34; connected to the latch 85. The &#34;A&#34; and &#34;B&#34; inputs of multiplexor 86 are used exclusively in the filter operation described in the incorporated copending application. A latch 121 for receiving an operand labeled &#34;Operand Y&#34; is connected to data bus 170. An output of latch 121 is connected to an input of a cycle select circuit 122. A first multi-bit output of cycle select circuit 122 is connected to an input labeled &#34;A&#34; of recorder 92. A second multi-bit output of cycle select circuit 122 is connected to an input also labeled &#34;A&#34; of recorder 93. A multiplexor 123 has first and second inputs respectively labeled &#34;A&#34; and &#34;B&#34; and an output connected to a first input labeled &#34;A&#34; of adder 96. A second input of adder 96 which is connected to an output of latch 88 is labeled &#34;B&#34;. A multiplexor 124 has a first input labeled &#34;A&#34; connected to an output of shifter 120 and has a second input labeled &#34;B&#34; connected to the output of latch 97. A shifter 125 has an input connected to the output of latch 114 and an output connected to the first input of multiplexor 123. An output of latch 104 is connected to the second input of multiplexor 123. A latch 126 has first and second inputs respectively labeled &#34;A&#34; and &#34;B&#34; connected to first and second outputs of latch 108. A first output of latch 126 is connected to an input labeled &#34;B&#34; of adder 110, and a second output of latch 126 is connected to a control input of adder 110. A multiplexor 127 has a first input labeled &#34;A&#34; connected to the output of latch 97 and has a second input labeled &#34;B&#34; connected to the output of latch 114. An output of multiplexor 127 is connected to an input labeled &#34;A&#34; of adder 110. A control signal C4 is connected to a control input of multiplexor 86, and a control signal C5 is connected to a control input of latch 116. A control signal C6 is connected to a control input of each of multiplexors 123, 124 and 127, and a control signal C7 is connected to a control input of each of recoders 92 and 93. A control signal C8 is connected to a control input of latch 126, and a control signal C9 is connected to a control input of latch 112. A Reset signal is connected to a control input of latch 114. 
     In operation, data processor 10 may alternately function as a general purpose recoded two&#39;s complement multiplier in addition to the filtering functions detailed in the incorporated pending application Ser. No. 07/283,101. To perform a multiplication of two numbers, data processor 10 again functions in a pipelined manner. As an example of the mathematical operations which are performed when two numbers are multiplied, FIG. 2 illustrates how a product is mathematically formed. It should be well understood that any plurality of cycles may be required to complete a multiplication operation depending upon the size of input operands and recoding technique. For purposes of a fundamental illustration of the multiplication operations, only two cycles are shown in FIG. 2. FIG. 3 will subsequently illustrate how these mathematical operations are efficiently implemented in a hardware data processor. 
     Shown in FIG. 2 is a multiplication operation of two binary numbers X and Y each having an arbitrary number of bits. For purposes of discussion, the further Modified Booth&#39;s recoding algorithm is utilized wherein further Modified Booth&#39;s algorithm is defined as the recoding of groups of four bits of an input operand to reduce partial product accumulations in a multiplication operation. In this context, Modified Booth&#39;s algorithm is defined as the recoding of groups of three bits of an input operand and Booth&#39;s algorithm is defined as the recoding of groups of two bits of an input operand. It should be well understood that other recoding algorithms may also be utilized in connection with the present invention. As shown in FIG. 2, when operands X and Y having the illustrated values are multiplied, an integer hexadecimal result of E8213F should result. Although operand Y has twelve bits and operand X has thirteen bits, any bit size may be accommodated by data processor 10. A product contains a number of bits equal to the sum of the number of bits of each operand minus one. 
     In the illustrated form, the product may be formed in two steps or cycles labeled &#34;A&#34; and &#34;B&#34;. Initially, a reset or zeroed partial product operand is created. To provide the final product, groups of four bits each of operand Y are recoded into one of the values: (1) ±4X; (2) ±3X; (3) ±2X; or (4) ±X. In the example provided herein, only the values of +X and -X are required. Initially, bits labeled (-1) thru 2 of operand Y are recoded. The minus one bit of operand Y is a binary zero which is added to the right of the three right-most bits of operand Y. Therefore, in the example shown the bits &#34;Y[2:-1]&#34; are &#34;1110&#34;. The bits are respectively weighted from left to right as &#34;-4&#34;, &#34;+2&#34;, &#34;+1&#34; and &#34;+1&#34;. Therefore, the value &#34;1110&#34;  recodes to [(-4)+(+2)+(+1)+(+0)] or (-1)X. A second group of four bits of operand Y[5:2] are similarly recoded wherein one bit is overlapped with the previously recoded four bits of operand Y. In the illustrated example, this group of bits also recodes to (-X). A shift to the left of three bits of this recoded operand value is made before the two recoded operands are added to provide a partial product shown at the completion of cycle A. 
     During cycle B, two more four-bit groups of operand Y are recoded. Namely, bits five thru eight which recode to +X and bits eight thru eleven which also recode to +X. Each recoded X operand is shifted to the left by three bit positions from the previous recoded operand. An accumulation of the previous partial product with the two newly formed recoded values is made to provide another partial product at the end of cycle B. Since operand Y was only twelve bits wide, the multiplication is completed after two cycles. It can be readily verified that the computed final partial product value is equivalent to E8213F. The operation described herein is in accordance with the conventional further modified Booth&#39;s algorithm. 
     Shown in FIGS. 3A and 3B is the operation of a similar multiplication operation by data processor 10 in accordance with the present invention. The operation is pipelined and may be done by the same hardware which is capable of implementing functions required by the ANSI standard to implement a U-interface transceiver. In the illustrated form, a twenty-four bit value for operand Y is shown. For this size of operand, four clock cycles each having two clock phases are required to complete a recoding operation and provide a final output product. Initially, an operand X and an operand Y are coupled by data bus 170 to data processor 10. Operand X is stored in latch 119 and shifted left by three bit positions by shifter 120 before being connected to inputs A of each of multiplexor 124 and adder 106. Operand Y is stored in latch 121 and connected to cycle select circuit 122 which couples the appropriate four bits of operand Y into recoders 92 and 93. During phase one of clock cycle one, operand X is connected to input A of multiplier 87 in response to control signal C4. Also, operand X which is shifted to the left by three bits is connected to input A of multiplier 106 in response to control signal C6. Control signal C7 allows recoders 92 and 93 to function to recode four bits of operand Y. 
     During phase two of clock cycle one, multiplier 87 multiplies the recoded four bits of operand Y by the operand X and stores the result in latch 88. Multiplier 106 multiplies another four bits, (5-2), of operand Y by operand X shifted three bits to the left to compute a recoded operand value (i.e. either ±4X, ±3X, ±2X or ±X) and stores the result in latch 108. Adder 110 does not operate during this cycle. The control signals required to implement this operation are shown in FIG. 3A. 
     During phase one of clock cycle two, adder 96 functions to add the contents of shifter 125 initially representing a reset or zeroed partial product and the contents of latch 88. The sum is stored in latch 97 at the conclusion of phase one. Concurrently, the contents of latch 108 are stored in latch 126. The control signals required to implement this operation are also shown in FIG. 3A. 
     During phase two of clock cycle two, multiplier 87 forms a product from another four-bit group of bits of operand Y and operand X and stores the product in latch 88. Adder 110 adds the contents of latch 97 and latch 126 and stores the contents in latch 114. Multiplier 106 concurrently multiplies another four-bit group of bits, (11-8), of operand Y and operand X shifted left by three bit positions to compute a recoded operand value (i.e. either ±4X, ±3X, ±2X or ±X). The output of multiplier 106 is stored in latch 108. The control signals required to implement this operation are also shown in FIG. 3A. 
     During phase one of clock cycle three, adder 96 adds the output of latch 114 shifted to the right by six bits thru shifter 125 and the contents of latch 88. The sum is stored in latch 97. Latch 126 is also loaded with the contents of latch 108. The control signals required to implement this operation are shown in FIG. 3B. 
     During phase two of clock cycle three, multiplier 87 forms a product by multiplying another group of four bits, (11-14), of operand Y and operand X. Concurrently, adder 110 adds the contents of latch 97 coupled via multiplexor 127 with the A contents of latch 126 representing a previous product formed by multiplier 106. Also, multiplier 106 is forming a new product for storage in latch 108 by multiplying another group of four bits, (17-14), of operand Y and the X operand shifted left by three bit positions to compute ±4X, ±3X, ±2X or ±X. The control signals required to implement this operation are also shown in FIG. 3B. 
     During phase one of clock cycle four, adder 96 adds the contents of shifter 125 and the contents of latch 88. The contents of shifter 125 is the previous partial product output shifted by six bits to the right. The contents of latch 88 is the previous output of multiplier 87 formed during the second clock phase of cycle three. Concurrently, the contents of latch 108 are transferred to latch 126. Latch 108 contains the product computed by multiplier 106 during the second clock phase of cycle three. The control signals required to implement this operation are also shown in FIG. 3C. 
     During phase two of clock cycle four, multiplier 87 forms a product by multiplying another group of four bits, (20-17), of operand Y and operand X. Concurrently, adder 110 adds the contents of latch 97 coupled via multiplexor 127 with the A contents of latch 126 representing a previous product formed by multiplier 106. Also, multiplier 106 is forming a new product for storage in latch 108 by multiplying the last group of four bits, (23-20), of operand Y and the X operand shifted left by three bit positions to implement ±4X, ±3X, ±2X or ±X. The control signals required to implement this operation are also shown in FIG. 3B. 
     At this point in the described operation, data processor 10 is now ready to begin a new multiplication operation while a final partial product accumulation associated with the first multiplication operation is being completed. Therefore, data processor 10 functions in a pipelined manner as previously described for a filtering operation. During a first phase of a repeat clock cycle one, adder 96 functions to add the contents of shifter 125 and latch 88. The contents of shifter 125 is the previous partial product output shifted by six bits to the right. The contents of latch 88 is the previous output of multiplier 87 formed during the second clock phase of cycle two. Concurrently, the contents of latch 108 are loaded into latch 126. The control signals required to implement this operation are also shown in FIG. 3B. 
     During a second phase of repeat clock cycle one, multiplier 87 multiplies a recoded four bits (two thru &#34;minus one&#34;) of a new operand Y by operand X and stores the result in latch 88. The &#34;minus one&#34; bit is an inserted zero added to the right of the LSB of operand Y. Latch 114 is reset to zero by a Reset signal. Multiplier 106 multiplies another four bits, (5-2), of operand Y by a three-bit shifted value of the X operand to implement a recoded operand value (±4X, ±3X, ±2X or ±X) and stores the result in latch 108. To complete the first multiplication operation, adder 110 functions to add the contents of latch 97 coupled to adder 110 via multiplexor 127 and latch 126. An output sum is coupled to latch 116 via latch 112. Again, the control signals required to implement this operation are shown in FIG. 3B. The output product is provided via driver circuit 118. Therefore, a product of a twenty-four bit Y operand which is recoded and an eighteen bit X operand has been formed utilizing further modified Booth&#39;s algorithm. Latch 116 may be implemented to store either all output product bits which are generated to maintain full resolution of the output product or to store only a predetermined number of output product bits. When all bits are stored, a predetermined number of output product bits are generated and stored by latch 116 at the conclusion of each clock cycle. In one form, the function of latch 116 may be implemented by a plurality of parallel-connected latch circuits to avoid truncating output product bits. 
     By now it should be apparent that there has been provided a multiple purpose data processor which was optimized to perform LMS algorithm filtering functions as described in U.S. patent application Ser. No. 07/283,101. In addition, without adding new multiplier and adder circuitry, the present invention utilizes the same hardware to perform general purpose multiplications as a two&#39;s complement multiplier. Filtering functions adapted for a U-interface transceiver as defined by ANSI may be implemented in addition to a general purpose multiplier with the same hardware structure. The filter processor may implement the LMS algorithm in an N tap digital filter in (N+1) time cycles, where N is an integer. Examples of the LMS algorithm calculations include linear echo cancellation (LEC), decision feedback equalization (DFE) and adaptive reference compensation (ARC). The present invention operates efficiently in a pipelined manner and significantly reduces the amount of circuitry previously required to implement a variety of data processing functions. Although adaptive filtering has been discussed exclusively herein, it should also be understood that the present invention may be implemented for processing calculations associated with nonadaptive filtering. 
     While there have been described herein the principles of the invention, it is to be clearly understood to those skilled in the art that this description is made only by way of example and not as a limitation to the scope of the invention. Accordingly, it is intended, by the appended claims, to cover all modifications of the invention which fall within the true spirit and scope of the invention.