SWCU195A December 2024 – May 2025 CC2744R7-Q1 , CC2745P10-Q1 , CC2745R10-Q1 , CC2745R7-Q1 , CC2755R10
The AES accelerator consists of the register interface and the finite state machine (FSM).
The register bank provides various options to the user to configure the plaintext source, encryption triggers, µDMA channel triggers, counter size, endianness, alignment, and actions that clear status events and IRQs. In addition to the key storage register, there are registers for plaintext and buffer. Users can also configure side effects such as XORing, clearing of events or IRQs, and generation of µDMA and AES triggers. Due to these options, external intervention by the CPU or µDMA is kept to a minimum, thereby significantly increasing throughput.
The FSM operates on the input block, performing the required substitution, shift, and mix operations. A new subkey is generated and XORed with the data each round. Round keys are generated on-the-fly and parallel to data processing. To accommodate CTR cipher mode, the IP offers a 128-bit register acting either as a counter in CTR cipher mode or acting as a pipeline buffer to enable update of the next plaintext/ciphertext while AES-128 encryption is ongoing.
Data blocks can be transferred to and from AES either through µDMA or CPU.
AES supports key programming from the HSM. This allows the key to be fetched from a secure key store in HSM and configured into AES. However, configuring AES operation and transferring plaintext and ciphertext shall still be done by the CPU/µDMA.
The KEY0 to KEY3 registers are protected from partial writes to ensure it is not infringed by any malicious software. When a different AHB initiator, say H1, writes to any of the KEY registers, STA.KEYSTATE is cleared, indicating that the KEY is not completely written and hence not valid. Only after all the other KEY bits are written by H1, STA.KEYSTATE is set back to 1. In short, STA.KEYSTATE is asserted only when all the bits in KEY0 to KEY3 are written by the same initiator. AES operations are allowed only after the STA.KEYSTATE is set.