Claims
- 1. An apparatus for multiplying and accumulating numeric quantities, comprising:
a multiplier receiving the numeric quantities, said multiplier having a sum output and a carry output; a first shift register having an input coupled to the sum output of said multiplier, and an output; a second shift register having an input coupled to the carry output of said multiplier, and an output; an accumulator having an input and an output; an adder having a first input coupled to the output of said first shift register, a second input coupled to the output of said second shift register, a third input coupled to the output of said accumulator, and an output; a third shift register having an input coupled to the output of said adder and an output, the input of said accumulator being coupled to the output of said third shift register.
- 2. An apparatus as in claim 1, wherein said adder comprises:
a full adder having an, input coupled to the output of said first shift register, an input coupled to the output of said second shift register, an input coupled to the output of said accumulator, a sum output, and a carry output; and a carry select adder having an input coupled to the sum output of said full adder, an input coupled to the carry output of said full adder, and an output.
- 3. An apparatus as in claim 2 further comprising an overflow clamp, said overflow clamp having an input connected to the output of said carry select adder, and an output connected to:the input of said third shift register.
- 4. An apparatus as in claim 1, further comprising:
a first pipeline register having an input connected to the output of said first shift register, and an output connected to the first input of said adder; and a second pipeline register having an input connected to the output of said second shift register, and an output connected to the second input of said adder.
- 5. An apparatus as in claim 1, further comprising
a second accumulator having an input and an output; and a multiplexer, said multiplexer having a first input connected to the output of said first-mentioned accumulator, a second input connected to the output of said second accumulator, and an output connected to the third input of said adder.
- 6. An apparatus for performing shifting and transposition of binary data, comprising:
a first multiplexer having a first set of inputs, a second set of inputs, and an output, a first group of binary data being applied to said first set of inputs and a second group of binary data being applied to said second set of inputs; and a second multiplexer having a third set of inputs, a fourth set of inputs, and an output, a third group of binary data being applied to said third set of inputs and a fourth group of binary data being applied to said fourth set of inputs; wherein said first and third sets of inputs correspond to one another and said third group of binary data is a transposed arrangement of said first group, and said second and fourth sets of inputs correspond to one another and said second and fourth groups of binary data are progressive subsets of a group of binary data.
- 7. An arithmetic logic unit for processing operandi representing pixel data and discrete cosine transform data in the data path of a vision processor to provide sum, difference, average, and absolute difference results from said operandi, comprising:
an adder having inputs for receiving the operandi and an output for furnishing a sum of the operandi; a divide-by-two circuit having an input coupled to the output of said adder and an output for furnishing an average of the operandi; a subtractor having inputs for receiving the operandi, a first output for furnishing a difference of the operandi, including a sign bit, and a second output for furnishing a difference of the operandi plus one; an inverter having an input coupled to the second output of said subtractor and an output; and a multiplexer having a first input coupled to the first output of said subtractor, a second input coupled to the output of said inverter, a select input coupled to the sign bit of the first output of said subtractor, and an output for furnishing an absolute value of the operandi.
- 8. An apparatus for transposing data in a two dimensional discrete cosine transform calculation, comprising:
a memory having a plurality of separately addressable banks, each of said banks having an input and an output and being readable and writable in the same address cycle; and a parallel transpose circuit having inputs coupled to the outputs of the banks of said memory, and outputs coupled to the inputs of said memory.
- 9. An apparatus as in claim 8, wherein said memory comprises four banks having outputs denoted A, B, C and D, and wherein said transpose circuit selectively performs the transpositions A-B-C-D, B-A-D-C, C-D-A-a, and D-C-B-A.
- 10. A method of transposing data for a two dimensional discrete cosine transform, comprising the steps of:
storing data items in a plurality of memory banks; addressing each of said memory banks; reading a data item from each of said memory banks in accordance with the addressing established in said addressing step; transposing the respective data items from said reading step; and writing data items from said transposing step respectively to said memory banks in accordance with the addressing established in said addressing step.
- 11. A method as in claim 10, wherein said addressing step comprises the steps of:
applying N addresses within the same address cycle to N of said memory banks, wherein N is a number less than the number of said address banks, each of said banks having N outputs corresponding to said N addresses; and selecting without duplication one of said N outputs of each of said banks for said transposing step.
- 12. An apparatus for performing multiplications and accumulations for a two dimensional discrete cosine transform calculation, comprising:
a memory having a plurality of jointly addressable banks, each of said banks having an input and two outputs and being readable and writable in the same address cycle; and a plurality of multiplier-accumulator units having inputs coupled to the outputs of the banks of said memory, and outputs coupled to the inputs of said memory.
- 13. An apparatus as in claim 12, further comprising:
a register for storing data including mode decision parametric data and quantization data; and a plurality of multiplexers, each having one input connected to said register, another input connected to the output of a corresponding one of said banks, and an output connected to a corresponding one of said multiplier-accumulator units.
- 14. A method of data management in performing multiply and accumulation operations in a two dimensional discrete cosine transform, comprising the steps of:
storing data items in a plurality of memory banks; multiply addressing each of said memory banks; reading multiple data items from each of said memory banks in accordance with the addressing established in said addressing step; performing multiply-accumulate operations on the respective data items from said reading step; writing single data items from said multiply-accumulate performing step respectively to said memory banks in accordance with the addressing established in said addressing step; and writing additional data items to said memory banks in parallel with said single data item writing step, in accordance with the addressing established in said addressing step.
- 15. A method of selectively compressing or decompressing digitized video data in accordance with a video compression/decompression algorithm utilizing the discrete cosine transform (“DCT”) function, comprising the steps of:
storing first data derived from said video data in a first memory; processing said first data in a first operation selected from a group of operations including addition, subtraction, multiplication, accumulation, scaling, rounding, normalization, and transposition, wherein said first operation is an element of a calculation selected from a group of calculations including discrete cosine transform, quantization, mode decision parametric, and filter calculations; concurrently with said first data processing step, transferring second data comprising pixels of the video data in conjunction with a second memory; and processing said second data in an operation selected from a group of operations including addition, subtraction, and averaging, wherein said second operation is an element of a motion calculation.
- 16. A method of selectively compressing or decompressing digitized video data in accordance with a video compression/decompression algorithm utilizing the discrete cosine transform (“DCT”) function, comprising the steps of:
storing first data derived from said video data in a first memory; storing second data comprising pixels of the video data in a second memory; processing said first data in a first operation selected from a group of operations including multiplication, accumulation, scaling, rounding, and normalization, wherein said first operation is an element of a calculation selected from a group of calculations including discrete cosine transform, quantization, mode decision parametric, and filter calculations; and concurrently with said first data processing step, processing said second data in an operation selected from a group of operations including addition, subtraction, and averaging, wherein said second operation is an element of a motion calculation.
- 17. An apparatus for compressing or decompressing digitized video data stored in an external memory in accordance with a video compression/decompression algorithm utilizing the discrete cosine transform (“DCT”) function, comprising:
a programmable controller; a motion calculation path including a first memory for storing image data, a second memory for storing search data, and a first arithmetic logic unit; and a transform/coding path including a third memory for storing data derived from the video data, a multiplier-accumulator, a transposer, and a second arithmetic logic unit; wherein said programmable controller is operatively coupled to said motion calculation path and to said transform/coding path to implement input/output operations between said external memory and one of said first and second memories concurrently with operations in said transform/coding path.
- 18. An apparatus for compressing or decompressing digitized video data stored in an external memory in accordance with a video compression/decompression algorithm utilizing the discrete cosine transform (“DCT”) function, comprising:
a programmable controller; a motion calculation path including a first memory for storing image data, a second memory for storing search data, and a first arithmetic logic unit; and a transform/coding path including a third memory for storing data derived from the video data, a multiplier-accumulator, a transposer, and a second arithmetic logic unit; wherein said programmable controller is operatively coupled to said motion calculation path and to said transform/coding path to implement arithmetic operations in said motion calculation path concurrently with multiply-accumulate operations in said transform/coding path.
CROSS REFERENCES TO RELATED APPLICATIONS
[0001] This is a continuation of U.S. patent application Ser. No. 09/098,106, filed on Jun. 16, 1998, which is a continuation of U.S. patent application Ser. No. 09/005,053, filed on Jan. 9, 1998(now U.S. Pat. No. 6,124,882), which is a continuation-in-part of U.S. patent application Ser. No. 08/908,826, filed on Aug. 8, 1997, (now U.S. Pat. No. 5,790,712), which is a continuation of U.S. patent application Ser. No. 08/658,917, filed May 31, 1996 (now abandoned), which is a continuation of U.S. patent application Ser. No. 07/303,973, filed on Sep. 9, 1994 (now abandoned), which is a continuation of U.S. patent application Ser. No. 07/838,382, filed on Feb. 19, 1992, (now U.S. Pat. No. 5,379,351), and to which priority is claimed.
Continuations (4)
|
Number |
Date |
Country |
Parent |
09098106 |
Jun 1998 |
US |
Child |
10470571 |
Mar 2001 |
US |
Parent |
09005053 |
Jan 1998 |
US |
Child |
09098106 |
Jun 1998 |
US |
Parent |
08658917 |
May 1996 |
US |
Child |
08908826 |
Aug 1997 |
US |
Parent |
07303973 |
Jan 1989 |
US |
Child |
08658917 |
May 1996 |
US |
Continuation in Parts (1)
|
Number |
Date |
Country |
Parent |
08908826 |
Aug 1997 |
US |
Child |
09005053 |
Jan 1998 |
US |