The RTL module Aes is the core module of AES encryption/decryption module. It uses native RTL ports interface. You can find the Verilog source code in the ~/aes/rtl directory. The signal descriptions are as follows.
| Name | Width (bits) | Direction | Description |
|---|---|---|---|
| CLK | 1 | in | Clock input |
| RESETn | 1 | in | Active low reset input |
| DATA_INPUT | 128 | in | Input data block for encrytion or decryption |
| KEY | 256 | in | AES key for encryption or decryption, when using 128/192 bit key, aligned to MSB (complement 0s to LSB) |
| DATA_OUTPUT | 128 | out | Output data block for encryption or decryption |
| NK | 2 | in | AES Key length: 2'b00=128bit, 2'b01=192bit, 2'b10=256bit |
| NR | 4 | in | Reserved, tie to 4'b0000 for common AES operation |
| START_CIPHER | 1 | in | When given one cycle active high trigger, cipher operation is executed (encryption or decryption). |
| START_KEYEXP | 1 | in | When given one cycle active high trigger, AES key expansion operation is executed. |
| OP_FINISH | 1 | out | When the encryption or decryption job is in progress, OP_FINISH will keep low. OP_FINISH will keep high in idle state. |
| EXP_FINISH | 1 | output | When the key expansion job is in progress, EXP_FINISH will keep low. EXP_FINISH will keep high in idle state. |