EP0466814A4 - Integer divider circuit - Google Patents

Integer divider circuit

Info

Publication number
EP0466814A4
EP0466814A4 EP19900906531 EP90906531A EP0466814A4 EP 0466814 A4 EP0466814 A4 EP 0466814A4 EP 19900906531 EP19900906531 EP 19900906531 EP 90906531 A EP90906531 A EP 90906531A EP 0466814 A4 EP0466814 A4 EP 0466814A4
Authority
EP
European Patent Office
Prior art keywords
denominator
scaled
numerator
binary signals
binary
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
EP19900906531
Other languages
French (fr)
Other versions
EP0466814A1 (en
Inventor
William J. Ooms
Clifford D. Leitch
Rene M. Delgado
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Motorola Solutions Inc
Original Assignee
Motorola Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Motorola Inc filed Critical Motorola Inc
Publication of EP0466814A1 publication Critical patent/EP0466814A1/en
Publication of EP0466814A4 publication Critical patent/EP0466814A4/en
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/535Dividing only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/02Digital function generators
    • G06F1/03Digital function generators working, at least partly, by table look-up
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/535Indexing scheme relating to groups G06F7/535 - G06F7/5375
    • G06F2207/5354Using table lookup, e.g. for digit selection in division by digit recurrence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/535Indexing scheme relating to groups G06F7/535 - G06F7/5375
    • G06F2207/5356Via reciprocal, i.e. calculate reciprocal only, or calculate reciprocal first and then the quotient from the reciprocal and the numerator

Definitions

  • This invention relates generally to the field of signal processing, and more particularly to circuits that perform division operations on binary integer inputs.
  • a divider circuit is included in a portion of an AM receiver.
  • a digital to analog converter in the receiver samples a received signal and a reference signal at a certain rate, and the divider performs a normalization operation by dividing the received input signal by the reference signal.
  • the division operation is continuous (real time) and is performed within a portion of the sampling period.
  • the received signal constitutes the numerator input N and the reference signal constitutes the denominator input D of the divider.
  • the result of a division operation may not be an exact value, and a certain error may be present in the resulting quotient.
  • FIG. 1 shows a conventional 4 bit by 4 bit divider circuit, which divides, using repeated subtraction, a four-digit dividend X represented by bits X3-X0 by a divisor Y represented by Y3-Y0.
  • the dividend X is loaded into a register 90 via buffers 61 , 62, 63, and 64 of a tri-state buffer device 60, having a control input 15.
  • the control input 15, in association with circuitry shown in block 80, allows the dividend X to be loaded in to register 90 only in the initial step of the division operation.
  • the register 90 consists of four type-D flip flops 11, 12, 13, and 14 having outputs Q0, Q1 , Q2, and Q3 coupled to first inputs A0, A1 , A2, and A3 respectively of a four bit full adder 20.
  • the divisor Inputs Y3-Y0 are coupled to inverters 31 , 32, 33, and 34 of an inverting device 30, and will produce the ones complement of the divisor Y.
  • the outputs of the inverting device 30 are coupled to second inputs B0, B1 , B2, and B3 of the adder 20.
  • the output of an AND gate 40 is coupled to clock input of the register 90, while inputs of the AND gate 40 are coupled to carry output C2 of the adder 20, and a clock signal 25.
  • Carry input C1 of the adder 20 is set to a logic 1 , in order to produce a two complete of the Y input.
  • the output of the AND gate 40 is coupled to a 4-bit counter 50 having an output Z, represented by Z3-Z0 .
  • the counter 50 has an initial setting of 0, after dividend X is loaded in to register 90.
  • the C2 output initially will be set to 1 , and hence the AND gate 40 is enabled.
  • the difference X - Y appears at outputs S3, S2, S1 , and SO of the adder 20.
  • the first clock pulse will load the difference X - Y into the register, and will also advance the counter 50 by one step.
  • the numeric output of the adder 20 will be equal to [(X - Y) - Y], or (X - 2Y). If C2 is still a logic 1 , the AND gate 40 will be enabled and the second clock pulse will load X - 2Y into the register and advance the counter a second step.
  • a divider circuit for producing a quotient output having a numerator input and a denominator input.
  • a scale factor is derived from the magnitude of denominator input .
  • the scale factor scales the denominator so as to produce a scaled denominator in a predetermined range.
  • the scaled denominator output is coupled to a means for reciprocating the scaled denominator to produce a scaled denominator reciprocal.
  • a means for multiplying two inputs is coupled to the numerator input, and the reciprocal of the scaled denominator to produce a scaled quotient.
  • FIG. 1 is a circuit schematic diagram of a prior art 4-bit by 4- bit divider circuit.
  • FIG. 2 is a schematic block diagram of a divider circuit according to the present invention.
  • FIG. 3 is a schematic diagram of a preferred scale factor circuit.
  • FIG. 4 is a schematic diagram of a preferred denominator scaling circuit .
  • FIG. 5 is a schematic diagram of a switch column comprising known transmission gates.
  • FIG. 6, is a schematic diagram of a preferred a numerator scaling circuit.
  • FIG. 7, is a diagram of a 64 byte read only memory (ROM).
  • FIG. 8 is a diagram of a combinational modified booth 8-bit by 8-bit multiplier.
  • the divider 100 accepts an integer numerator input N and an integer denominator input D, and produces an integer quotient output Q.
  • the quotient output Q represents the result of dividing the numerator N by the denominator D.
  • the denominator D and the numerator N are limited to a predetermined range.
  • the denominator D is a 13-bit binary number represented by bits D0-D12
  • the numerator is a 16-bit binary number represented by bits N0-N15.
  • the denominator D is a positive binary number
  • the numerator N is a signed binary number.
  • the invention can be adapted to handle signed denominators by detecting the presence of a negative denominator, and inverting the sign of both the numerator and the denominator.
  • the denominator D has been selected to be within the range of 64 to 8,191
  • the numerator has been selected to be within the range of -16384 to +16383. It should be noted that these ranges are arbitrary and the invention can be made to function in any desired ranges.
  • a scale factor K is computed in block 400, based on the magnitude of the denominator D. The implementation and operation of this block is discussed in conjunction with FIG. 3.
  • the scale factor K is a value represented by K1 -K7, which is used to scale down the denominator D and the numerator N.
  • the block 400 constitutes a means for providing a scale factor, wherein the scale factor is derived from the denominator magnitude.
  • the denominator D is scaled by power of 2 in block 200, implementation and operation of which is described in conjunction with FIG. 4.
  • the denominator D is scaled by a factor of K as determined in block 400.
  • the scaled denominator SD is a value within a predetermined range of 64 to 127, and is represented by SD0-SD5.
  • block 200 constitutes a means for scaling the denominator.
  • the numerator N is scaled by power of 2 in block 300, implementation and operation of which is described in conjunction with FIG. 6.
  • the numerator N is scaled by factor of 2 * K, and produces a 8-bit scaled numerator SN represented by SN0-SN7.
  • the scaled numerator SN is ranged between -127 to +128.
  • the most significant bit SN7 represents the sign of the numerator N.
  • block 300 constitutes a means for scaling the numerator.
  • a block 500 provides the reciprocal of the scaled denominator SD. Since the reciprocal of the scaled denominator SD is not an integer number, therefore block 500 provides for multiplying the result of reciprocation by an arbitrary constant factor, so as to produce an integer scaled denominator reciprocal SRD represented by SRD7-SRD0.
  • the hardware implementation of block 500 is described in conjunction with FIG. 7. Accordingly, the block 500 constitutes ⁇ mean for reciprocating the scaled denominator output.
  • a multiplier 600 is used to multiply the scaled numerator SN by the scaled denominator reciprocal SRD, and provides a scaled quotient SQ represented by SQ0-SQ15.
  • a post scaling block 700 may be added for scaling of the scaled quotient SQ by a constant factor. In some application it may not be necessary to obtain the exact result of the division operation, instead a relative quotient result may suffice. A person of ordinary skill in the art will appreciate that the scaling of the numerator N, or the scaled quotient SQ or both may not be incorporated in the divider 100, if a relative division result is desired.
  • each block comprise combinational logic circuit.
  • the use of combinational logic provides for a substantially faster divider circuit, as well as efficiency in power consumption.
  • the scale factor circuit 400 detects the leftmost logic 1 in the 6 most significant bits D12-D6 of the denominator D, and provides a scale factor K represented by scale factor bits K7-K1.
  • the denominator input bits D12-D6 are coupled to combinational logic blocks 410-460, respectively, and provide complimentary output bits K2bar-K7bar and K2-K7.
  • the most significant bit D12 of the denominator D is coupled to a block 410, which comprise known logic gates in order to determine if bit D12 is a logic 1 or a logic 0.
  • D12 is a logic 1 then K7 will be set (logic 1), and bits K6-K1 will be cleared (logic 0).
  • D11 is coupled to a block 420 to determine if the D11 is a logic 1 or a 0. If D11 is a logic 1 and D12 is a logic 0 then K6 will be set (logic 1), and bits K7 and K5-K1 will be cleared (logic 0). Accordingly, one of the scale factor bits K5-K2 will be set if their corresponding denominator bit D10-D7 is the leftmost significant bit having a logic 1. Scale factor bit K1 and its compliment K1 is provided by inputing scale factor bits K7-K2 into circuitry of logic block 470.
  • the logic block 470 sets K1 if none of the scale factor bits K7-K2 are set.
  • K7-K1 sets only one of the output bits K7-K1 will be set, depending on the leftmost significant denominator bit having a logic 1. Therefore, for a denominator D having a range of 64 to 8191 , the scale factor K can only assume one of the seven values of 1 ,2,4,8,16,32 and 64.
  • the circuit 400 of FIG. 3 may be implemented using other known logic circuit configurations to perform the same function.
  • the scaling circuit 200 of FIG 4 is a parallel binary shifter, which receives the denominator input bits D11-D0, and Scale factor bits K7-K1 to provide scaled denominator out put bits SD5-SD0.
  • the range of denominator is 64 to 8191.
  • the preferred scaling circuit 200 is primarily a switch matrix configuration including switch columns KD1 through switch column KD7.
  • FIG. 5 a schematic diagram a switch column KD is shown.
  • the switch column KD comprises six independent CMOS transmission gates 220 coupled in series to CMOS buffer gates 210.
  • the transmission gate 220 in association with buffer gate 210 constitute a independent switching mechanism for the switch column KD.
  • Each switch has an input 230, and an output 240, and is controlled by two complementary control signals 260 and 270.
  • the control signal 260 and its complement control signal 270 are provided to open or close the transmission gate 220. It is known that complementary control signals 260 and 270 provide for static operation, and low power consumption of CMOS transmission gate 220.
  • the buffer gate 210 is provided in order to overcome input capacitance of the transmission gate 220, and increase switching speed.
  • the control signals 260 of transmission gates 220 are coupled together.
  • complementary control signals 270 of transmission gates 220 are coupled together.
  • the control signals 260 and 270 comprise the two complementary common controls of each switch columns KD7-KD1.
  • Each switch column is controlled by a corresponding scale factor bit K7-K1 and its complement K7bar- Klbar.
  • K7-K1 Scal factor bits
  • scaled denominator outputs SD5-SD0 are coupled to corresponding switch outputs 240.
  • switch column KD1 is coupled between D6-D0 and SD6-SD0, while switch column KD2 is independently coupled between D7-D1 and SD5-SD0.
  • Similar switch columns KD3-KD7 independently couple subsequent 6 denominator bits to scaled denominator bits SD5-SD0. Setting of any scale factor bits K7-K1 closes the corresponding switch column. As described previously only one of the scale factor bits K7-K1 is set at a time, therefore only one of the switch columns KD7-KD1 is closed.
  • the scaling circuit 200 shifts to the right the denominator bits D11-D0 by a number of bit determined by scale factor K. Mathematically the above operation can be described by equation :
  • Scaled denominator bits SD5-SD0 represent a quasi scaled denominator value SD', and the scaled denominator SD is determined by the equation:
  • SD 64+SD' (2).
  • This relation ship is due to the fact that, the most significant bit of the scaling result (64 to 127) is always a 1 , and does not appear in the scaled denominator bits SD5-SD0. Accordingly, the most significant bit D12 is not coupled to scaling circuit 200. Because, D12 is a don't care value unless it is a logic 1 (otherwise the value of the denominator D can be represented by D11-D0). Even if denominator bit D12 is a logic 1 , then scale factor K is 64, and the desired result for scaled denominator SD may be obtained according to equation 2. In other words, when D12 is a logic 1 , its significance is embedded in equation 2. For every value of scale factor K (i.e.
  • the quasi scaled denominator SD' will repeatedly assume a value between the range of 0 to 63.
  • the following examples describes two distinct denominator ranges of 4096 to 8191 , and 64 to 127.
  • the input numerator bits N14-N1 and scale factor bits K7-K1 are coupled to the scaling circuit 300 to provide a scaled numerator output SN represented by scaled numerator bits SN7-SN0.
  • Switch columns KN7-KN1 couple numerator bits N14-N1 to scaled numerator bits SN7-SN0.
  • Switch column KN1-KN7 each comprise 8 independent switches 320, and are similar to switch column KD as described in FIG. 5.
  • the scale factor used for scaling the numerator N is equal to 2K. A person of ordinary skill in the art will appreciate that this additional scaling is simply accomplished by ignoring bit SNO.
  • the switch column KN1 is coupled between N8-N1 and SN7-SN0.
  • the switch column KN2 is independently coupled between N9-N2 and SN7-SN0.
  • Similar switch columns KN3-KN7 independently couple subsequent 8 numerator bits to scaled numerator bits SN7- SNO, Setting of any scale factor bits K7-K1 closes the corresponding switch column. As described previously only one of the scale factor bits K7-K1 is set at a time, therefore only one of the switch columns KN7-KN1 is closed.
  • the numerator scaling circuit 300 shifts to the right the numerator bits N14-N1 by a number of bit determined by scale factor K.
  • the numerator N will be scaled by a scale factor of 2K.
  • the numerator bit N15 constitutes the sign bit for the numerator N.
  • the bit N15 is ignored in the hardware implementation, because the numerator is confined within the range of -16384 to 16383, and Therefore, the sign bit is present on numerator bit N14.
  • the scaled denominator SN will always be within the range of -128 to 127.
  • a truncation circuit (not shown ) may be used to carry the sign bit and insure a scaled numerator SN in the range of -128 to 127.
  • the preferred hardware implementation of reciprocating block 500 of FIG. 2 comprise a Read Only Memory 500 (ROM).
  • the ROM 500 is a 64 byte fully static CMOS memory.
  • the ROM 500 stores scaled denominator reciprocals SRD, represented by bits SRD7-SRD0. Scaled denominator bits SD5-SD0 address one of memory locations M0-M63 of the ROM 500. Each memory locations M0-M63 comprise an 8-bit number, which will appear at the data bus when addressed.
  • the ROM 500 serves as a look up table to store a representation of the reciprocal of the 64 possible values (64 to 127) of the scaled denominator SD.
  • the content of the memory locations M0-M63 are each equal to the reciprocal of each scaled denominator SD multiplied by a constant 8192 (2 ⁇ 13).
  • MO contains reciprocal of 64 (0+64) multiplied by 8192, which is equal to 127 (after truncation).
  • M63 contains reciprocal of 127 (63+64) multiplied by 8191 which is equal to 64 (after truncation), and so on. Since the SRD can be represented by 7 bits, therefore the bits SRD7 is set to a logic 0.
  • the multiplier 600 is a 8-bit by 8-bit multiplier having a 16-bit output.
  • the multiplier 600 may be any suitable modified booth combinational multiplier such as the one fully described in U.S. patent number 4,575,812, the disclosure of which is hereby incorporated by reference.
  • Inputs of the multiplier 600 comprise the scaled denominator reciprocal bits SRD7-SRD0, and the scaled numerator bits SN7-SN0.
  • the post scaling block 700 of FIG. 2 may be required due to various scaling used in performing the division operation.
  • the scaled quotient SQ is post scaled by a factor of 2 ⁇ 6.
  • the post scaling does not require any circuitry, and is simply implemented by ignoring the 6 least significant bits of the scaled quotient SQ.in order to provide the desired quotient Q.
  • the scaling factor of block 700 is arbitrary, and may be determined by the application wherein the divider circuit is used.
  • the hardware implementation of the divider circuit 100 as described, provides a totally combinational circuit. Accordingly, the divider circuit 100 has a substantially lower propagation delay than the clock period of the signal processing circuit. Therefore, a division operation is executed within one clock cycle. For reasons described below, the divider circuit 100 also provides a controlled error in the result for a wide range of inputs.
  • the truncation of scaled denominator (range of 64 to 127), and reciprocal of scaled denominator (range 127 to 64) are the primary source of error in the resulting quotient. Assuming, the result of scaling a denominator D by a factor of K produces an actual scaled denominator of 68.49.
  • This scaled denominator will be truncated to produce an integer scaled denominator value of 68, thereby introducing an error.
  • the scaled denominator reciprocal SRD is produced by 8192 / 68 which is truncated to a value of 120, therefor introducing additional error.
  • the total error is a finite value, and depends on the resolution of integers from 64 to 127. If smaller error is required the circuit design of divider 100 may be modified to produce scaled denominator values in the range of 128 to 255. This will produce twice the resolution, compared to the preferred divider circuit 100. The later, obviously requires a 128 byte memory for storing the additional data.
  • the divider circuit 100 may be designed to produce a controlled error over a wide range of inputs.
  • the block diagram of the divider 100 may be implemented in a software program of a commercially available microcomputer.
  • the software program may be implemented in a low level programming language, such as a assembly for any suitable microprocessor, or a high level programming language such as FORTRAN.

Abstract

A divider circuit (100) for producing a quotient result (Q) within one cycle time is provided. The invention utilizes combinational circuitry for performing a division operation by computing a scaled reciprocal of the denominator (SRD) and multiplying the scaled output by a similarly scaled numerator. The denominator is scaled such that it falls within a predetermined range, and the reciprocal value may be looked up from a memory device such as a ROM (500). The output of the multiplier (SQ) may also be scaled in order to produce the desired result (Q). The resulting quotient has a controlled error over a wide range of numerator and denominator input values.

Description

INTEGER DIVIDER CIRCUIT
Technical Field
This invention relates generally to the field of signal processing, and more particularly to circuits that perform division operations on binary integer inputs.
Background Art
In digital signal processing applications, it may be desired to implement an integer divide function in the hardware of a digital circuit to perform specific function. In a typical application, a divider circuit is included in a portion of an AM receiver. A digital to analog converter in the receiver samples a received signal and a reference signal at a certain rate, and the divider performs a normalization operation by dividing the received input signal by the reference signal. The division operation is continuous (real time) and is performed within a portion of the sampling period. The received signal constitutes the numerator input N and the reference signal constitutes the denominator input D of the divider. However, the result of a division operation may not be an exact value, and a certain error may be present in the resulting quotient.
FIG. 1 shows a conventional 4 bit by 4 bit divider circuit, which divides, using repeated subtraction, a four-digit dividend X represented by bits X3-X0 by a divisor Y represented by Y3-Y0. The dividend X is loaded into a register 90 via buffers 61 , 62, 63, and 64 of a tri-state buffer device 60, having a control input 15. The control input 15, in association with circuitry shown in block 80, allows the dividend X to be loaded in to register 90 only in the initial step of the division operation. The register 90 consists of four type-D flip flops 11, 12, 13, and 14 having outputs Q0, Q1 , Q2, and Q3 coupled to first inputs A0, A1 , A2, and A3 respectively of a four bit full adder 20. The divisor Inputs Y3-Y0 are coupled to inverters 31 , 32, 33, and 34 of an inverting device 30, and will produce the ones complement of the divisor Y. The outputs of the inverting device 30 are coupled to second inputs B0, B1 , B2, and B3 of the adder 20. The output of an AND gate 40 is coupled to clock input of the register 90, while inputs of the AND gate 40 are coupled to carry output C2 of the adder 20, and a clock signal 25. Carry input C1 of the adder 20 is set to a logic 1 , in order to produce a two complete of the Y input. The output of the AND gate 40 is coupled to a 4-bit counter 50 having an output Z, represented by Z3-Z0 . The counter 50 has an initial setting of 0, after dividend X is loaded in to register 90.
Assuming that X > Y, the C2 output initially will be set to 1 , and hence the AND gate 40 is enabled. The difference X - Y appears at outputs S3, S2, S1 , and SO of the adder 20. After closing the clock switch 70, the first clock pulse will load the difference X - Y into the register, and will also advance the counter 50 by one step. The numeric output of the adder 20 will be equal to [(X - Y) - Y], or (X - 2Y). If C2 is still a logic 1 , the AND gate 40 will be enabled and the second clock pulse will load X - 2Y into the register and advance the counter a second step. If after n clock pulses the remainder becomes less than Y, then C2 becomes a logic 0. The AND gate 40 will now be disabled and the counter 50 will stop. Hence the quotient Z is read from the counter. in some digital signal processing circuits, it is necessary to perform the division operation within one clock cycle. The divider circuit 10 operates in a sequential mode, therefore it is not desirable in applications, wherein division speed is critical.
Furthermore, in a digital division operation of two integer binary numbers the result is truncated, in order to provide an integer quotient. However, for the purpose of normalizing amplitudes of signals, it is desirable to have a relatively constant error over a wide range of input amplitudes.
Another disadvantage of a sequential circuit, such as the divider 10, is that it consumes more power than an equivalent combinational logic circuit. This is primarily due to multiple clocking nature of the divider 10. Summary of the Invention
Accordingly, it is an object of the present invention to provide a divider circuit capable of performing division operations within one clock cycle.
It is another object of the invention to provide a divider circuit having a controlled error over a wide range of inputs.
Briefly, according to the invention, a divider circuit for producing a quotient output is provided having a numerator input and a denominator input. A scale factor is derived from the magnitude of denominator input . The scale factor scales the denominator so as to produce a scaled denominator in a predetermined range. The scaled denominator output is coupled to a means for reciprocating the scaled denominator to produce a scaled denominator reciprocal. A means for multiplying two inputs is coupled to the numerator input, and the reciprocal of the scaled denominator to produce a scaled quotient. Brief Description of the Drawings
FIG. 1 , is a circuit schematic diagram of a prior art 4-bit by 4- bit divider circuit. FIG. 2, is a schematic block diagram of a divider circuit according to the present invention.
FIG. 3, is a schematic diagram of a preferred scale factor circuit.
FIG. 4, is a schematic diagram of a preferred denominator scaling circuit .
FIG. 5, is a schematic diagram of a switch column comprising known transmission gates.
FIG. 6, is a schematic diagram of a preferred a numerator scaling circuit. FIG. 7, is a diagram of a 64 byte read only memory (ROM).
FIG. 8, is a diagram of a combinational modified booth 8-bit by 8-bit multiplier.
Detailed Description of the Preferred Embodiment
Referring to FIG. 2, the block diagram of an integer divider 100 is shown. The divider 100 accepts an integer numerator input N and an integer denominator input D, and produces an integer quotient output Q. The quotient output Q represents the result of dividing the numerator N by the denominator D. The denominator D and the numerator N are limited to a predetermined range. In the preferred embodiment of the divider 100, the denominator D is a 13-bit binary number represented by bits D0-D12, and the numerator is a 16-bit binary number represented by bits N0-N15. The denominator D is a positive binary number, and the numerator N is a signed binary number. The invention can be adapted to handle signed denominators by detecting the presence of a negative denominator, and inverting the sign of both the numerator and the denominator. The denominator D has been selected to be within the range of 64 to 8,191 , and the numerator has been selected to be within the range of -16384 to +16383. It should be noted that these ranges are arbitrary and the invention can be made to function in any desired ranges. A scale factor K is computed in block 400, based on the magnitude of the denominator D. The implementation and operation of this block is discussed in conjunction with FIG. 3. The scale factor K is a value represented by K1 -K7, which is used to scale down the denominator D and the numerator N. Scaling will be done by powers of two, since scaling by power of two is accomplished by shifting of binary numbers. Accordingly, the block 400 constitutes a means for providing a scale factor, wherein the scale factor is derived from the denominator magnitude. The denominator D is scaled by power of 2 in block 200, implementation and operation of which is described in conjunction with FIG. 4. The denominator D is scaled by a factor of K as determined in block 400. The scaled denominator SD is a value within a predetermined range of 64 to 127, and is represented by SD0-SD5. Accordingly, block 200 constitutes a means for scaling the denominator.
The numerator N is scaled by power of 2 in block 300, implementation and operation of which is described in conjunction with FIG. 6.The numerator N is scaled by factor of 2 * K, and produces a 8-bit scaled numerator SN represented by SN0-SN7. The scaled numerator SN is ranged between -127 to +128. The most significant bit SN7 represents the sign of the numerator N. The implementation and operation of scaling the numerator is similar to that of the denominator. Accordingly, block 300 constitutes a means for scaling the numerator.
A block 500 provides the reciprocal of the scaled denominator SD. Since the reciprocal of the scaled denominator SD is not an integer number, therefore block 500 provides for multiplying the result of reciprocation by an arbitrary constant factor, so as to produce an integer scaled denominator reciprocal SRD represented by SRD7-SRD0. The hardware implementation of block 500 is described in conjunction with FIG. 7. Accordingly, the block 500 constitutes § mean for reciprocating the scaled denominator output. A multiplier 600 is used to multiply the scaled numerator SN by the scaled denominator reciprocal SRD, and provides a scaled quotient SQ represented by SQ0-SQ15. Due to various scale factors used a post scaling block 700 may be added for scaling of the scaled quotient SQ by a constant factor. In some application it may not be necessary to obtain the exact result of the division operation, instead a relative quotient result may suffice. A person of ordinary skill in the art will appreciate that the scaling of the numerator N, or the scaled quotient SQ or both may not be incorporated in the divider 100, if a relative division result is desired.
In the hardware implementation of the preferred divider 100, each block comprise combinational logic circuit. The use of combinational logic provides for a substantially faster divider circuit, as well as efficiency in power consumption.
Referring to FIG. 3, a preferred hardware implementation of scale factor block 400 of FIG. 2 is shown. Operationally, the scale factor circuit 400 detects the leftmost logic 1 in the 6 most significant bits D12-D6 of the denominator D, and provides a scale factor K represented by scale factor bits K7-K1. The denominator input bits D12-D6 are coupled to combinational logic blocks 410-460, respectively, and provide complimentary output bits K2bar-K7bar and K2-K7. The most significant bit D12 of the denominator D is coupled to a block 410, which comprise known logic gates in order to determine if bit D12 is a logic 1 or a logic 0. If D12 is a logic 1 then K7 will be set (logic 1), and bits K6-K1 will be cleared (logic 0). Similarly, D11 is coupled to a block 420 to determine if the D11 is a logic 1 or a 0. If D11 is a logic 1 and D12 is a logic 0 then K6 will be set (logic 1), and bits K7 and K5-K1 will be cleared (logic 0). Accordingly, one of the scale factor bits K5-K2 will be set if their corresponding denominator bit D10-D7 is the leftmost significant bit having a logic 1. Scale factor bit K1 and its compliment K1 is provided by inputing scale factor bits K7-K2 into circuitry of logic block 470. The logic block 470 sets K1 if none of the scale factor bits K7-K2 are set. By referring to schematic of FIG. 3, a person of the ordinary skill in the art can appreciate that only one of the output bits K7-K1 will be set, depending on the leftmost significant denominator bit having a logic 1. Therefore, for a denominator D having a range of 64 to 8191 , the scale factor K can only assume one of the seven values of 1 ,2,4,8,16,32 and 64. It should be noted that the circuit 400 of FIG. 3 may be implemented using other known logic circuit configurations to perform the same function.
Referring to FIG. 4, a preferred hardware implementation of scaling block 200 of FIG. 2 is shown. The scaling circuit 200 of FIG 4 is a parallel binary shifter, which receives the denominator input bits D11-D0, and Scale factor bits K7-K1 to provide scaled denominator out put bits SD5-SD0. The range of denominator is 64 to 8191. The preferred scaling circuit 200 is primarily a switch matrix configuration including switch columns KD1 through switch column KD7. Referring to FIG. 5, a schematic diagram a switch column KD is shown. The switch column KD comprises six independent CMOS transmission gates 220 coupled in series to CMOS buffer gates 210. The transmission gate 220 in association with buffer gate 210 constitute a independent switching mechanism for the switch column KD. Each switch has an input 230, and an output 240, and is controlled by two complementary control signals 260 and 270. The control signal 260 and its complement control signal 270 are provided to open or close the transmission gate 220. It is known that complementary control signals 260 and 270 provide for static operation, and low power consumption of CMOS transmission gate 220. The buffer gate 210 is provided in order to overcome input capacitance of the transmission gate 220, and increase switching speed. The control signals 260 of transmission gates 220 are coupled together. Similarly, complementary control signals 270 of transmission gates 220 are coupled together. The control signals 260 and 270 comprise the two complementary common controls of each switch columns KD7-KD1. Each switch column is controlled by a corresponding scale factor bit K7-K1 and its complement K7bar- Klbar. For ease of understanding, only scale factor bits K7-K1 will be referenced when describing the control of each switch column, and references to the complementary scale factor bits K7bar-K1 bar will be avoided. As described below, the input denominator bits D0-D11 are coupled to corresponding switch inputs 230, and scaled denominator outputs SD5-SD0 are coupled to corresponding switch outputs 240.
Now referring back to FIG. 4, switch column KD1 is coupled between D6-D0 and SD6-SD0, while switch column KD2 is independently coupled between D7-D1 and SD5-SD0. Similar switch columns KD3-KD7 independently couple subsequent 6 denominator bits to scaled denominator bits SD5-SD0. Setting of any scale factor bits K7-K1 closes the corresponding switch column. As described previously only one of the scale factor bits K7-K1 is set at a time, therefore only one of the switch columns KD7-KD1 is closed. The scaling circuit 200 shifts to the right the denominator bits D11-D0 by a number of bit determined by scale factor K. Mathematically the above operation can be described by equation :
SD= D / K (1) Accordingly, for a denominator D of 8191 , the scale factor K is equal to 64, and scaled denominator SD is equal to 127. Similarly, for a denominator D of 64, the scale factor K is equal to 1 , and the scaled denominator SD is equal to 64. Therefore, for the specified denominator range, the scaled denominator SD is always a number between 64 to 127.
Scaled denominator bits SD5-SD0 represent a quasi scaled denominator value SD', and the scaled denominator SD is determined by the equation:
SD=64+SD' (2). This relation ship is due to the fact that, the most significant bit of the scaling result (64 to 127) is always a 1 , and does not appear in the scaled denominator bits SD5-SD0. Accordingly, the most significant bit D12 is not coupled to scaling circuit 200. Because, D12 is a don't care value unless it is a logic 1 (otherwise the value of the denominator D can be represented by D11-D0). Even if denominator bit D12 is a logic 1 , then scale factor K is 64, and the desired result for scaled denominator SD may be obtained according to equation 2. In other words, when D12 is a logic 1 , its significance is embedded in equation 2. For every value of scale factor K (i.e. seven values), within the specified denominator range, the quasi scaled denominator SD' will repeatedly assume a value between the range of 0 to 63. The following examples describes two distinct denominator ranges of 4096 to 8191 , and 64 to 127.
First, assuming denominator value of 4096 (binary 1,0000,0000,0000) , then K7 is set (D12 is logic 1). Therefore, the denominator bits D11-D6 is connected to scaled denominator bits SD5-SD0, making SD' equal to 0. Similarly, assuming a denominator value of 8191 (binary 1,1111,1111,1111), K7 remains set, and the quasi scaled denominator SD' is equal to 63. Therefore, for the denominator range of 4096 to 8191 , the quasi scale denominator SD' is within a range of 0 to 63.
Second, assuming a denominator value of 64 (binary 0,0000,0100,0000), then K1 is set (D6 is the leftmost logic 1). Thus, the denominator bits D5-D0 is connected to scaled denominator bits SD5-SD0, making SD' equal to 0. Finally, assuming denominator value of 127 (binary 0,0000,011 ,1111), K7 remains set, and the scaled denominator SD is equal to 63. Again, for the denominator range of 64 to 127 the quasi scale denominator SD' is within a range of 0 to 63. The same discussion applies for every possible range within which K7-K1 is set. Referring to FIG. 6 , a scaling circuit 300, similar to the circuit
200 as described FIG. 3, is shown. The input numerator bits N14-N1 and scale factor bits K7-K1 are coupled to the scaling circuit 300 to provide a scaled numerator output SN represented by scaled numerator bits SN7-SN0. Switch columns KN7-KN1 couple numerator bits N14-N1 to scaled numerator bits SN7-SN0. Switch column KN1-KN7 each comprise 8 independent switches 320, and are similar to switch column KD as described in FIG. 5. The scale factor used for scaling the numerator N is equal to 2K. A person of ordinary skill in the art will appreciate that this additional scaling is simply accomplished by ignoring bit SNO.
In the preferred hardware implementation of the circuit 300, the switch column KN1 is coupled between N8-N1 and SN7-SN0. The switch column KN2 is independently coupled between N9-N2 and SN7-SN0. Similar switch columns KN3-KN7 independently couple subsequent 8 numerator bits to scaled numerator bits SN7- SNO, Setting of any scale factor bits K7-K1 closes the corresponding switch column. As described previously only one of the scale factor bits K7-K1 is set at a time, therefore only one of the switch columns KN7-KN1 is closed. The numerator scaling circuit 300 shifts to the right the numerator bits N14-N1 by a number of bit determined by scale factor K.
In operation, the numerator N will be scaled by a scale factor of 2K. The numerator bit N15 constitutes the sign bit for the numerator N. The bit N15 is ignored in the hardware implementation, because the numerator is confined within the range of -16384 to 16383, and Therefore, the sign bit is present on numerator bit N14. The scaled denominator SN will always be within the range of -128 to 127. In order to increase the range of the numerator to -32768 to 32767, a truncation circuit (not shown ) may be used to carry the sign bit and insure a scaled numerator SN in the range of -128 to 127. Mathematically the above operation may be described by the equation:
SN=N / 2K (3). Referring to FIG. 7, The preferred hardware implementation of reciprocating block 500 of FIG. 2 comprise a Read Only Memory 500 (ROM). The ROM 500 is a 64 byte fully static CMOS memory. The ROM 500 stores scaled denominator reciprocals SRD, represented by bits SRD7-SRD0. Scaled denominator bits SD5-SD0 address one of memory locations M0-M63 of the ROM 500. Each memory locations M0-M63 comprise an 8-bit number, which will appear at the data bus when addressed. The ROM 500 serves as a look up table to store a representation of the reciprocal of the 64 possible values (64 to 127) of the scaled denominator SD.The content of the memory locations M0-M63 are each equal to the reciprocal of each scaled denominator SD multiplied by a constant 8192 (2Λ13). For the reasons described in the description of block 500 of FIG. 2, the constant value 2Λ13 has been chosen so that reciprocals of scaled denominator SRD also fall within the range of 64 to 127. Mathematically this operation may be described by the equation: SRD= 2Λ13 / SD, (4) and substituting equation (1 ) for SD : SRD= 2Λ13 * (K / D). (5) Accordingly, MO contains reciprocal of 64 (0+64) multiplied by 8192, which is equal to 127 (after truncation). Similarly, M63 contains reciprocal of 127 (63+64) multiplied by 8191 which is equal to 64 (after truncation), and so on. Since the SRD can be represented by 7 bits, therefore the bits SRD7 is set to a logic 0.
Referring to FIG 8, a block diagram of a combinational modified booth multiplier 600 is shown. The multiplier 600 is a 8-bit by 8-bit multiplier having a 16-bit output. The multiplier 600 may be any suitable modified booth combinational multiplier such as the one fully described in U.S. patent number 4,575,812, the disclosure of which is hereby incorporated by reference. Inputs of the multiplier 600 comprise the scaled denominator reciprocal bits SRD7-SRD0, and the scaled numerator bits SN7-SN0. The output of the multiplier 600 is a 16 bit scaled quotient SQ represented by SQ15-SQO. Mathematically the scaled quotient is described by : SQ= SN * SRD. (6) The post scaling block 700 of FIG. 2 may be required due to various scaling used in performing the division operation. In the preferred embodiment of divider 100, the scaled quotient SQ is post scaled by a factor of 2Λ6. In hardware, the post scaling does not require any circuitry, and is simply implemented by ignoring the 6 least significant bits of the scaled quotient SQ.in order to provide the desired quotient Q. Considering equations (3), (4), (5), and (6), the quotient Q may be described by the following equations: Q = SQ / 2Λ6; or Q=SN * SRD / 2 Λ6; or Q= [N / 2 K] * [ 2Λ13 * ( /D)] / 2Λ6; or
Q= 2Λ6 * (N / D). The scaling factor of block 700 is arbitrary, and may be determined by the application wherein the divider circuit is used.
The hardware implementation of the divider circuit 100 as described, provides a totally combinational circuit. Accordingly, the divider circuit 100 has a substantially lower propagation delay than the clock period of the signal processing circuit. Therefore, a division operation is executed within one clock cycle. For reasons described below, the divider circuit 100 also provides a controlled error in the result for a wide range of inputs. The truncation of scaled denominator (range of 64 to 127), and reciprocal of scaled denominator (range 127 to 64) are the primary source of error in the resulting quotient. Assuming, the result of scaling a denominator D by a factor of K produces an actual scaled denominator of 68.49. This scaled denominator will be truncated to produce an integer scaled denominator value of 68, thereby introducing an error. According to the description of circuit 500 of FIG. 7, the scaled denominator reciprocal SRD is produced by 8192 / 68 which is truncated to a value of 120, therefor introducing additional error. The total error is a finite value, and depends on the resolution of integers from 64 to 127. If smaller error is required the circuit design of divider 100 may be modified to produce scaled denominator values in the range of 128 to 255. This will produce twice the resolution, compared to the preferred divider circuit 100. The later, obviously requires a 128 byte memory for storing the additional data. As can be seen, the divider circuit 100 may be designed to produce a controlled error over a wide range of inputs. A person of ordinary skill in the art will appreciate that, the block diagram of the divider 100 may be implemented in a software program of a commercially available microcomputer. The software program may be implemented in a low level programming language, such as a assembly for any suitable microprocessor, or a high level programming language such as FORTRAN.
What is claimed is:

Claims

Claims
1. An apparatus for obtaining binary signals representative of the quotient of two numbers within a single clock cycle, comprising: means for providing binary signals representative of a denominator and binary signals representative of a numerator; combinational logic means for parallel shifting said binary signals representative of said denominator by a number of bits corresponding to said denominator so as to provide binary signals representing a scaled denominator; a read only memory means having prestored therein binary representation corresponding to reciprocal of said scaled denominator; combinational logic means for addressing said memory means and for providing binary signals corresponding to reciprocal of said scaled denominator; combinational multiplier means for multiplying said binary signals corresponding to reciprocal of said scaled denominator by said binary signal representative of said numerator.
2. The apparatus of claim 10, wherein said combinational logic means for parallel shifting scales said denominator to a predefined range, and said memory means prestores all possible reciprocals of said scaled denominator within that range. 3. The apparatus of claim 10 further comprising:
. combinational logic means for parallel shifting said binary signals representative of said numerator by a number of bits corresponding to said denominator so as to provide binary signals representative of a scaled numerator, wherein said combinational multiplier means multiplies said binary signals corresponding to reciprocal of said scaled denominator by said binary signal representative of said scaled numerator.
4. The apparatus of claim 10, wherein said combinational multiplier means comprise a combinational modified booth multiplier.
5. A method for obtaining binary signal representative of the quotient of two numbers within a single clock cycle, comprising steps of:
(a) providing binary signals representative of a denominator and binary signals representative of a numerator;
(b) combinationally parallel shifting said binary signals representative of said denominator by a number of bits corresponding to said denominator so as to provide binary signals representative of a scaled denominator; (c) addressing a read only memory means having prestored therein binary representation corresponding to the reciprocal of said scaled denominator;
(d) outputting signals corresponding to reciprocal of said scaled denominator;
(e) combinationally multiplying said binary signal representative of reciprocal of said scaled denominator by said binary signal representative of said numerator.
6. The method of claim 14, wherein said step (b) scales said denominator to a predefined range, and said memory means prestores all possible reciprocals of said scaled denominator within that range.
7. The method of claim 14 further comprising steps of: combinationally parallel shifting said binary signals representative of said numerator by a number of bits corresponding to said denominator so as to provide binary signals representative of a scaled numerator, wherein said step (d) multiplies said binary signals corresponding to reciprocal of said scaled denominator by said binary signal representative of said scaled numerator.
8. The method of claim 14, wherein said step (d) of utilizes a combinational modified booth multiplier.
EP19900906531 1989-04-10 1990-04-02 Integer divider circuit Withdrawn EP0466814A4 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US33531989A 1989-04-10 1989-04-10
US335319 1989-04-10

Publications (2)

Publication Number Publication Date
EP0466814A1 EP0466814A1 (en) 1992-01-22
EP0466814A4 true EP0466814A4 (en) 1993-02-24

Family

ID=23311277

Family Applications (1)

Application Number Title Priority Date Filing Date
EP19900906531 Withdrawn EP0466814A4 (en) 1989-04-10 1990-04-02 Integer divider circuit

Country Status (3)

Country Link
EP (1) EP0466814A4 (en)
JP (1) JPH04504478A (en)
WO (1) WO1990012361A1 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4315898A1 (en) * 1993-05-12 1994-11-17 Siegfried Hecker Device for calculating the quotient of two rational numbers
JP2846816B2 (en) * 1994-09-13 1999-01-13 三洋電機株式会社 Digital signal processor
CN100367802C (en) 2002-07-02 2008-02-06 松下电器产业株式会社 Motion vector deriving method, motion picture encoding method, and motion picture decoding method

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4626825A (en) * 1985-07-02 1986-12-02 Vlsi Technology, Inc. Logarithmic conversion apparatus
US4779218A (en) * 1985-09-04 1988-10-18 Jauch Jeremy P Complex arithmetic unit

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3648038A (en) * 1969-04-25 1972-03-07 Ibm Apparatus and method for obtaining the reciprocal of a number and the quotient of two numbers
JPS5725039A (en) * 1980-07-21 1982-02-09 Fujitsu Ltd Dividing circuit
DE3377029D1 (en) * 1982-06-15 1988-07-14 Toshiba Kk Apparatus for dividing the elements of a galois field
EP0111587B1 (en) * 1982-12-23 1986-11-05 International Business Machines Corporation Method and apparatus for division operations
JPS59136849A (en) * 1983-01-27 1984-08-06 Mitsubishi Electric Corp Dividing device
JPS60163128A (en) * 1984-02-02 1985-08-26 Nec Corp Multiplier circuit
US4718032A (en) * 1985-02-14 1988-01-05 Prime Computer, Inc. Method and apparatus for effecting range transformation in a digital circuitry
US4823301A (en) * 1987-10-22 1989-04-18 Tektronix, Inc. Method and circuit for computing reciprocals

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4626825A (en) * 1985-07-02 1986-12-02 Vlsi Technology, Inc. Logarithmic conversion apparatus
US4779218A (en) * 1985-09-04 1988-10-18 Jauch Jeremy P Complex arithmetic unit

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
COMPCON Spring '84, San Fransisco, US, pp 168-171; Ware: 'Pipelined IEEE Floating Point Pro cessors' *
See also references of WO9012361A1 *

Also Published As

Publication number Publication date
JPH04504478A (en) 1992-08-06
WO1990012361A1 (en) 1990-10-18
EP0466814A1 (en) 1992-01-22

Similar Documents

Publication Publication Date Title
US5020017A (en) Method and apparatus for obtaining the quotient of two numbers within one clock cycle
US5726924A (en) Exponentiation circuit utilizing shift means and method of using same
EP0394171A2 (en) Floating-point processor having pre-adjusted exponent bias for multiplication and division
US5508948A (en) Numeric representation converting apparatus and vector processor unit such apparatus
GB2330226A (en) Digital signal processor for performing fixed-point and/or integer arithmetic
US5111421A (en) System for performing addition and subtraction of signed magnitude floating point binary numbers
KR950006584B1 (en) Floating-point dividing circuit
EP0466814A4 (en) Integer divider circuit
US4734878A (en) Circuit for performing square root functions
US5400271A (en) Apparatus for and method of calculating sum of products
JPH0690668B2 (en) Fuzzy computing device
EP0044450A1 (en) Digital adder circuit
JPH0346024A (en) Floating point computing element
RU2711051C1 (en) Arithmetic logic unit for addition, subtraction and multiplication of numbers modulo
Pandit et al. Design and simulation of 16× 16 bit iterative logarithmic multiplier for accurate results
US5777907A (en) Processor for selectively performing multiplication/division
EP0356940B1 (en) Finite state machine
Steer et al. Digital hardware for sine-cosine function
Davies et al. Interfacing a hardware multiplier to a general-purpose microprocessor
Kantabutra A new algorithm for division in hardware
JPH0520292A (en) Random number pulse string generating circuit device and signal processor
JP2822472B2 (en) Integer square root calculator
GB2345562A (en) Digital signal processor for performing fixed-point and/or integer arithmetic
KR0182169B1 (en) Log arithmathic value calculator
KR920006324B1 (en) Optimization method of 2's complement code multplier

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 19911010

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AT BE CH DE DK ES FR GB IT LI LU NL SE

A4 Supplementary search report drawn up and despatched

Effective date: 19930106

AK Designated contracting states

Kind code of ref document: A4

Designated state(s): AT BE CH DE DK ES FR GB IT LI LU NL SE

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 19941102