The PKA engine (see Figure 13-4) contains the following internal modules:
- PKCP module (EIP-27): Can perform a suite of large number (vector) operations typically encountered in public key cryptography applications. Both arguments and results are stored PKA RAM (a memory block shared between the PKA engine and its host).
- LNME module (optional): A Montgomery multiplication and exponentiation unit based on a scalable systolic array of processing elements (PEs). Requires access to the PKA RAM (through a separate port) and a dedicated LNME FIFO RAM.
- Sequencer module (EIP-83): Controlling modular exponentiation, elliptic curve cryptography, and modular inversion operations on large numbers in PKA RAM. One of the main tasks of the sequencer module is to hide that most of these operations are completed with numbers in Montgomery form. This module requires a program ROM or RAM as code store.
- Register interface: Used to control the PKCP, LNME, and Sequencer modules.
The LNME and the LNME FIFO RAM are not present in this configuration. The PKA engine is a fully synchronous design with a single clock and has a single active low asynchronous reset input.