Claims
- 1. A circuit for multiplying two binary numbers A and B having up to n bits each wherein the multiplication is modulo N, an odd number, and wherein at least one of the numbers A and B is partitionable into m blocks of k bits each, such that mk≧n+2, said circuit comprising:
a plurality W of processor elements connected in series with each processor being capable of processing data in blocks of d bits each with each processor in the series processing increasingly higher order blocks of d bits from the numbers A and B, and wherein each processor element includes: an accumulating register portion with 2k bits for receiving and holding intermediate results during at least one of a plurality m of processor element cycles with each cycle having a first phase and a second phase; a first multiplexor for selecting for output, during said first phase of each cycle, 2k bits of data with the leftmost k bits being selected from an accumulating register portion in a subsequent processor in said series, and with the rightmost bits being selected from the leftmost k bits from said accumulating register portion and for selecting, during said second phase of each cycle, the entire 2k bits of data from said accumulating register portion; a factor register portion for storing a block of 2k bits of said number B; a modulo register portion for storing a block of 2k bits of said number N; a second multiplexor for selecting for output, during said first phase of each cycle, 2k bits of data from said factor register portion, and for selecting, during said second phase of each cycle, 2k bits of data from said modulo register portion; a temporary register for storing the output of said second multiplexor; a third multiplexor for selecting for output, during said first phase of each cycle, k bits of data representing a block of data from the binary representation for said number A and for selecting, during said second phase of each cycle, the rightmost k bits of data fedback from an output adder; a first k bit by k bit multiplier having as input factors the output k bits from said third multiplexor and the leftmost k bits from said temporary register, wherein the leftmost k bits output from said first multiplier are available as a partial product for the subsequent processor element in said series; a second k bit by k bit multiplier having as input factors the output k bits from said third multiplexor and the rightmost k bits from said temporary register; an intermediate 2k bit adder with a first input and second input, wherein the leftmost portion of said first input is the rightmost k bits output from said first multiplier and wherein the rightmost portion of said first input is the rightmost k bits output from said second multiplier and wherein the leftmost portion of said second input is the leftmost k bits output from said second multiplier and wherein the rightmost portion of said second input is a k bit partial product from a previous processor element in said series, said intermediate adder also accepting a carry-in signal into its low order position from a previous processor element in said series and generating a carry-out signal as an input to a subsequent processor element in said series; and said output adder also having a first input and second input, said first input being the output of said first multiplexor and said second input being the output of said intermediate adder, and wherein the output from said output adder is supplied to said accumulating register portion, said output adder also accepting a carry-in signal into its low order position from a previous processor element in said series and generating a carry-out signal as an input to a subsequent processor element in said series.
CROSS REFERENCE TO RELATED APPLICATION
[0001] This application is a divisional of U.S. application Ser. No. 09/740,685 filed on Dec. 19, 2000, the entirety of which is hereby incorporated herein by reference.
Divisions (1)
|
Number |
Date |
Country |
Parent |
09740685 |
Dec 2000 |
US |
Child |
10841770 |
May 2004 |
US |