
VLSI Technology, a subsidiary of Philips Semiconductors
8/10/99
18
Revision: 2.3
906
Data Sheet
5.2
Exponentiator
This block performs a complete exponentiation of a 1024 bit number, a 1024-bit modulus and a
1024-bit base. The user must precompute 2 values that are dependent only upon the modulus.
The main 128-word (512 bytes) RAM is used to store the operands for the Exponentiate func-
tions. The operands are stored on 32 word boundaries within the RAM area. The locations are
then defined by the use of the pointer register. The contents of this RAM are not changed by a
hardware/software block level reset. Since this RAM appears in the full chip memory map, this
area can be used as a general-purpose scratchpad RAM when the Exponentiator block is not in
use.
The following equation is considered when exponentiating:
Y = AE mod N
Where:
A = base
E = exponent
N = modulus
K = -N[0]-1
B = 22n mod N
n = number of bits in the modulus
The process of exponentiation destroys the value in the A location and the value in the B location.
Additional pointers for initial A and initial B are provided as a non-destructive way to exponenti-
ate. If the 128-word RAM configuration is not using the non-destructive capability, then A and B
have to be reloaded after each exponentiation. In this configuration the pointer register must have
initial A and initial B set to the same value as A and B pointer locations.
The exponentiation function requires that the K and B values be precomputed (per the equations
above), then loaded into the Exponentiator’s input RAM. The software must then load the Initial
A (base), N (modulus) and E (exponent) values into their respective input RAM locations. The
number of bits in the exponent must be set in the Number of Bits Register prior to exponentiation
and the lower 8 bits of the Control/Status Register must be loaded with the value of 40H to start
exponentiation.
The done bit is set when the hardware completes the exponentiation function and the interrupt
output pin is driven active until the done bit is written to a zero. The result (in integer form) is
returned in the B location of the input RAM.