Claims
- 1. A multiplier for multiplying a first signal and a second signal, the first signal representing a first binary number A=[aN−1 . . . a1 a0], the second signal representing a second binary number B=[bN−1 . . . b1 b0], the multiplier comprising:
a first port for receiving the first signal; a second port for receiving the second signal; a first circuit for generating a triangle array as a function of the first signal and the second signal.
- 2. The multiplier according to claim 1, wherein the triangle array is stored in a memory element.
- 3. The multiplier according to claim 1, further including an adder for adding elements of the triangle array to produce a third signal representing a product of the first signal and the second signal.
- 4. The multiplier according to claim 3, further including a second circuit for positioning the elements of the triangle array to form a reduced array having a reduced number of lines compared to the triangle array, the second circuit operatively coupled to the adder such that the adder adds the reduced number of lines when adding elements of the triangle array.
- 5. The multipler according to claim 4, wherein the reduced array has
- 6. The multiplier according to claim 1, wherein the triangle array includes lines k=0 to N−1, such that:
the line k=0 of the triangle array is equal to [0 (a0*b0)]; and the lines k=1 to N−1 of the triangle array are equal to:
[0k+1 0k 0k−1 . . . 0] if [ak bk]=[0 0], [0k+1 0k ak−1 . . . a1 a0] if [ak bk]=[0 1], [0k+1 0k bk−1 . . . b1 b0] if [ak bk]=[1 0], and [ck not(ck) sk−1 . . . s1 s0] if [ak bk]=[1 1], wherein S=[sN−2 . . . s1 s0] is equal to the sum sequence A′+B′, where A′=[aN−2 . . . a1 a0] and B′=[bN−2 . . . b1 b0], and C=[cN−1 . . . c1] is equal to the carry sequence associated with the sum sequence S.
- 7. The multiplier according to claim 6, further comprising a second adder for producing the sum sequence S and the carry sequence C.
- 8. The multiplier according to claim 6, wherein the first circuit includes at least one multiplexer.
- 9. The multiplier according to claim 8, wherein each line k=1 to N−1 has an associated multiplexer having as inputs [0k+1 0k 0k−1 . . . 0], [0k+1 0k ak−1 . . . a1 a0], [0k+1 0k bk−1 . . . b1 b0], and [ck not(ck) sk−1 . . . s1 s0], the multiplexer controlled by [ak bk].
- 10. The multiplier according to claim 1, wherein the triangle array is represented by a number of digits that is substantially 30% less than the number of digits required in a diamond array.
- 11. The multiplier according to claim 1, wherein the triangle array is represented by a number of digits that is substantially 50% less than the number of digits required in a diamond array.
- 12. The multiplier according to claim 1, wherein the triangle array includes N(N+3)/2 digits.
- 13. A processor for multiplying a first signal and a second signal, the first signal representing a first binary number A=[aN−1 . . . a1 a0], the second signal representing a second binary number B=[bN−1 . . . b1 b0], the processor comprising:
a first port for receiving the first signal a second port for receiving the second signal; means for forming a triangle array as a function of the first signal and the second signal.
- 14. The processor according to claim 13, wherein the means for forming a triangle array includes a memory element for storing the triangle array.
- 15. The processor according to claim 13, further including an adder for adding elements of the triangle array to form a third signal representing a product of the first signal and the second signal.
- 16. The processor according to claim 15, wherein the means for forming a triangle array includes a positioning circuit for positioning the elements of the triangle array to form a reduced array having a reduced number of lines compared to the triangle array, the positioning circuit operatively coupled to the adder such that the adder adds the reduced number of lines when adding elements of the triangle array.
- 17. The multipler according to claim 4, wherein the reduced array has
- 18. The processor according to claim 13, wherein the triangle array includes lines k=0 to N−1, such that:
the line k=0 of the triangle array is equal to [0 (a0*b0)]; and the lines k=1 to N−1 of the triangle array are equal to:
[0k+1 0k 0k−1 . . . 0] if [ak bk]=[0 0], [0k+1 0k ak−1 . . . a1 a0] if [ak bk]=[0 1], [0k+1 0k bk−1 . . . b1 b0] if [ak bk]=[1 0], and [ck not(ck) sk−1 . . . s1 s0] if [ak bk]=[1 1], wherein S=[sN−2 . . . s1 s0] is equal to the sum sequence A′+B′, where A′=[aN−2 . . . a1 a0] and B′=[bN−2 . . . b1 b0], and C=[cN−1 . . . c1] is equal to the carry sequence associated with the sum sequence S.
- 19. The processor according to claim 18, further comprising a second adder for producing the sum sequence S and the carry sequence C.
- 20. The processor according to claim 18, wherein the means for forming the triangle array includes at least one multiplexer.
- 21. The processor according to claim 20, wherein each line k=1 to N−1 has an associated multiplexer having as inputs [0k+1 0k 0k−1 . . . 0], [0k+1 0k ak−1 . . . a1 a0], [0k+1 0k bk−1 . . . b1 b0], and [ck not(ck) sk−1 . . . s1 s0], the multiplexer controlled by [ak bk].
- 22. The processor according to claim 18, wherein the triangle array is represented by a number of digits that is substantially 30% less than the number of digits required in a diamond array.
- 23. The processor according to claim 18, wherein the triangle array is represented by a number of digits that is substantially 50% less than the number of digits required in a diamond array.
- 24. The processor according to claim 18, wherein the triangle array includes N(N+3)/2 digits.
- 25. A computer program product for use on a computer system for multiplying a first binary number A=[aN−1 . . . a1 a0] and a second binary number B=[bN−1 . . . b1 b0], the computer program product comprising a computer usable medium having computer readable program code thereon, the computer readable program code comprising:
program code for receiving the first binary number; program code for receiving the second binary number; program code for forming a triangle array as a function of the first binary number and the second binary number.
- 26. The computer program product according to claim 25, further including program code for adding elements of the triangle array to produce a third number representing a product of the first binary number and the second binary number.
- 27. The computer program product according to claim 26, further including program code for positioning the elements of the triangle array to form a reduced array having a reduced number of lines compared to the triangle array, wherein the program code for adding elements of the triangle array adds the reduced number of lines.
- 28. The computer product according to claim 27, wherein the reduced array has
- 29. The computer program product according to claim 25, wherein the program code for forming the triangle array includes:
program code for producing lines k=0 to N−1 of the triangle array such that:
the line k=0 of the triangle array is equal to [0 (a0*b0)]; and the lines k=1 to N−1 of the triangle array are equal to:
[0k+1 0k 0k−1 . . . 0] if [ak bk]=[0 0], [0k+1 0k ak−1 . . . a1 a0] if [ak bk]=[0 1], [0k+1 0k bk−1 . . . b1 b0] if [ak bk]=[1 0], and [ck not(ck) sk−1 . . . s1 s0] if [ak bk]=[1 1], wherein S=[sN−2 . . . s1 s0] is equal to the sum sequence A′+B′, where A′=[aN−2 . . . a1 a0] and B′=[bN−2 . . . b1 b0], and C=[cN−1 . . . c1] is equal to the carry sequence associated with the sum sequence S.
- 30. The computer program product according to claim 29, further including program code for producing the sum sequence S and the carry sequence C.
- 31. The processor according to claim 25, wherein the triangle array is represented by a number of digits that is substantially 30% less than the number of digits required in a diamond array.
- 32. The processor according to claim 25, wherein the triangle array is represented by a number of digits that is substantially 50% less than the number of digits required in a diamond array.
- 33. The processor according to claim 25, wherein the triangle array includes N(N+3)/2 digits.
- 34. A method for performing signal processing that requires multiplication of a first signal representing a binary number A=[aN−1 . . . a1 a0] and a second signal representing a second binary number B=[bN−1 . . . b1 b0], the method comprising:
receiving the first signal; receiving the second signal; forming a triangle array from the first signal and the second signal.
- 35. The method according to claim 34, further including adding elements of the triangle array to produce a third signal representing a product of the first signal and the second signal.
- 36. The method according to claim 35, further including positioning elements of the triangle array to form a reduced array having a reduced number of lines compared to the triangle array, and wherein adding elements of the triangle array include adding the reduced number of lines.
- 37. The method according to claim 34, wherein forming the triangle array includes:
producing line k=0 of the triangle array such that line k=0 is equal to [0 (a0*b0)]; producing lines k=1 to N−1 of the triangle array such that lines k=1 to N−1 are equal to: [0k+10k 0k−1 . . . 0] if [ak bk]=[0 0], [0k+1 0k ak−1 . . . a1 a0] if [ak bk]=[0 1], [0k+1 0k bk−1 . . . b1 b0] if [ak bk]=[1 0], and [ck not(ck) sk−1 . . . s1 s0] if [ak bk]=[1 1], wherein S=[sN−2 . . . s1 s0] is equal to the sum sequence A′+B′, where A′=[aN−2 . . . a1 a0] and B′=[bN−2 . . . b1 b0], and C=[cN−1 . . . c1] is equal to the carry sequence associated with the sum sequence S.
CROSS REFERENCE TO RELATED APPLICATIONS
[0001] This application is a continuation-in-part of U.S. patent application No. 10/646,463, filed on Aug. 22, 2003, entitled “Method and System for Multiplication of Binary Numbers”, which claim priority from U.S. provisional application serial No. 60/405,241, filed Aug. 22, 2002, entitled “Method and System for Multiplication of Binary Numbers”. Each of the above-mentioned applications is hereby incorporated herein by reference.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60405241 |
Aug 2002 |
US |
Continuation in Parts (1)
|
Number |
Date |
Country |
Parent |
10646463 |
Aug 2003 |
US |
Child |
10682814 |
Oct 2003 |
US |