Programmable ALU
OwnerGreg S. Calleninventor
Life of this patent
Estimating the term…
Abstract
A programmable arithmetic and logic unit (ALU) comprising a plurality of data selectors, the data selectors having corresponding data input lines; a plurality of ALU function input lines wherein the number of ALU function input lines is equal to the number of data input lines on each of the data selectors, and each ALU function input line corresponds to one data input line on each of the data selectors; wherein each of the data input lines of each of the data selectors is connected to the corresponding data input lines of each of the other data selectors and to the corresponding ALU function input line.
Claims16
A programmable arithmetic and logic unit (ALU) comprising:
- at least first, second, and third sets of ALU data input lines;
- at least first and second sets of ALU result output lines;
- at least first and second sets of ALU function input lines;
- at least first and second programmable logic blocks (PLBs), each PLB of the at least first and second PLBs having
- at least first, second and third PLB data input lines,
- at least first and second sets of PLB function input lines, and
- at least first and second PLB result output lines,
- wherein every combination of binary values on the first, second, and third PLB data input lines identifies a single corresponding PLB function line in each of the at least first and second sets of PLB function input lines, and placing binary values on the first, second, and third PLB data input lines results in the value of the corresponding PLB function line of the first set of PLB function input lines being placed on the first PLB result output line, and also results in the value of the corresponding PLB function line of the second set of PLB function input lines being placed on the second PLB result output line;
- and
- at least first and second routers,
- each router of the at least first and second routers is associated with a PLB of the at least first and second PLBs and is electrically coupled to the second PLB result output line of a non-associated PLB of the at least first and second PLBs, and is electrically coupled to the third PLB data input line of the associated PLB such that values placed on the second output line of the non-associated PLB may result in the same value on the third PLB data input line of the associated PLB;
- wherein
- each line of the first set of ALU data input lines is electrically coupled to the first PLB data input line of a PLB of the at least first and second PLBs,
- each line of the second set of ALU data input lines is electrically coupled to the second PLB data input line of a PLB of the at least first and second PLBs,
- each line of the first set of ALU result output lines is electrically coupled to the first PLB result output line of a PLB of the at least first and second PLBs,
- each line of the second set of ALU result output lines is electrically coupled to the second PLB result output line of a PLB of the at least first and second PLBs,
- each line of the first set of ALU function input lines is electrically coupled to the first set of PLB function input lines of all of the at least first and second PLBs,
- each line of the second set of ALU function input lines is electrically coupled to the second set of PLB function input lines of all of the at least first and second PLBs,
- each line of the third set of ALU data input lines is electrically coupled to a router of the at least first and second routers.
A programmable arithmetic and logic unit (ALU) capable of performing arithmetic and logical operations on R inputs to produce Y outputs where R and Y are at least 2, and each of R-1 inputs has N bits where N is at least 2, the ALU having:
- R sets of ALU data input lines wherein R-1 of the R sets has at least N ALU data input lines and the remaining set has at least one ALU data input line where each of the at least one ALU data input line is a carry line;
- Y*2X ALU function input lines, wherein X is an integer less than or equal to R, and X is at least 2;
- Y sets of ALU result output lines wherein a first set of the Y sets of ALU result output lines has at least N ALU result output lines and a second set of the Y sets of ALU result output lines has at least one ALU result output line;
- N programmable logic blocks (PLBs),
- wherein each PLB has
- X PLB data input lines,
- Y*2X PLB function input lines, and
- Y PLB result output lines, the Y PLB result output lines having at least a first result output line and a second result output line;
- and
- wherein every combination of binary values on the X PLB data input lines identifies Y corresponding PLB function input lines of the 2X PLB function input lines, and placing binary values on the X PLB data input lines results in the values of the corresponding Y PLB function input lines being placed on the Y PLB result output lines;
- and
- N routers,
- each router having at least first and second router input lines, and a router output line,
- wherein each router is associated with a PLB and
- the first router input line of a first router of the N routers is electrically coupled to the second PLB result output line of a first non-associated PLB, and the second router input line of the first router of the N routers is electrically coupled to a carry line, the router output line of the first router of the N routers electrically coupled to a PLB data input line of the associated PLB,
- the first router input line of a second router of the N routers is electrically coupled to a carry line, and the second router input line of the second router of the N routers is electrically coupled to the second PLB result output line of a first non-associated PLB, the router output line of the second router of the N routers electrically coupled to a PLB data input line of the associated PLB,
- the first router input line of each of the N routers, excluding the first and second routers, is electrically coupled to the second PLB result output line of a first non-associated PLB, and the second router input line of each of the N routers, excluding the first and second routers, is electrically coupled to the second PLB result output line of a second non-associated PLB, the router output line of the each of the N routers, excluding the first and second routers, is electrically coupled to a PLB data input line of the associated PLB;
- wherein
- one ALU data input line of each of X-1 sets of the R sets of ALU data input lines having at least N ALU data input lines is electrically coupled to one of the X PLB data input lines of one of the N PLBs,
- each ALU result output line of the first set of ALU result output lines is electrically coupled to the first PLB result output line of one of the N PLBs,
- each ALU function input line of the Y*2X ALU function input lines is coupled to one of the Y*2X PLB function input line of each of the N PLBs.
Dependencies are inferred from the claim text.