Main Content

High-Level Synthesis Code Generation for Advanced Encryption Standard

This example shows how to generate High-Level Synthesis (HLS) code from MATLAB® code that implements an AES (Advanced Encryption Standard) algorithm.

AES MATLAB Design

AES is a symmetric block cipher that encrypts and decrypts confidential data using the same cipher key. You can design complicated algorithms such as AES using MATLAB code and then generate their equivalent HLS code.

In this example, the mlhdlc_aes function implements the AES encryption algorithm. This function accepts plain text to encrypt and a cipher key as inputs and outputs encrypted text. The mlhdlc_aesd function decrypts the encrypted text to plain text.

Set up the AES model for this example.

mlhdlc_demo_setup('aes');

To review the MATLAB code for encryption and decryption of text, open the files mlhdlc_aes.m and mlhdlc_aesd.m.

open('mlhdlc_aes');
open('mlhdlc_aesd');

You can also review the MATLAB test bench file.

open('mlhdlc_aes_tb')

Test the MATLAB Algorithm

To avoid run-time errors, simulate the design by using the test bench.

mlhdlc_aes_tb
1
Plain Text: D1 E8 21 EA A2 19 47 8C F5 F7 28 F8 F5 7C CD 24 
Cipher Key: 6C EA CB F6 A8 09 D9 EF AE C2 BE 64 A8 2C B5 08 
Cipher Text: 1F 9D 05 17 7B B0 5F 87 99 7A AE F3 9E 82 51 CC 
Decrypted Plain Text:D1 E8 21 EA A2 19 47 8C F5 F7 28 F8 F5 7C CD 24 
!!!!!Decrypted plain text matches the original text.!!!!!
2
Plain Text: 47 0C 19 D3 B2 51 F3 09 70 62 C4 CC 30 7D 72 A5 
Cipher Key: B6 C1 47 AE A8 2A 1E 80 F6 57 96 39 C0 41 82 B3 
Cipher Text: 2D CF CD F1 30 B8 A0 34 BB B1 BD 26 0B 0C 9D A0 
Decrypted Plain Text:47 0C 19 D3 B2 51 F3 09 70 62 C4 CC 30 7D 72 A5 
!!!!!Decrypted plain text matches the original text.!!!!!
3
Plain Text: E4 F6 8C 23 26 42 D7 41 D0 3E EE 5A 32 40 9E 79 
Cipher Key: 5A D5 96 8D EB 49 C2 C1 61 91 13 0E 88 C7 EF 21 
Cipher Text: 65 76 0D 70 C8 3A 59 D9 FD AD F0 E4 B5 61 3B 28 
Decrypted Plain Text:E4 F6 8C 23 26 42 D7 41 D0 3E EE 5A 32 40 9E 79 
!!!!!Decrypted plain text matches the original text.!!!!!
4
Plain Text: 92 78 03 56 2A CB 50 87 2A 9A 43 A7 B0 C0 73 15 
Cipher Key: 3B EA 27 D3 8A FF 14 71 1B F6 01 C6 D1 DE 16 66 
Cipher Text: 9B 77 32 8F 14 FD A5 F7 BB 2B 5B 45 CD 87 59 E5 
Decrypted Plain Text:92 78 03 56 2A CB 50 87 2A 9A 43 A7 B0 C0 73 15 
!!!!!Decrypted plain text matches the original text.!!!!!
5
Plain Text: 43 CD 6E E9 2F 44 25 23 DF 94 8D 25 DA 9F 5A 83 
Cipher Key: 67 13 3D 20 2F 3D 6B 0D E7 F2 7E 7D 56 E6 5F 1C 
Cipher Text: 96 9C D7 D1 FB 3C 26 B4 31 0F 7C 64 1A DE 4B BB 
Decrypted Plain Text:43 CD 6E E9 2F 44 25 23 DF 94 8D 25 DA 9F 5A 83 
!!!!!Decrypted plain text matches the original text.!!!!!

Generate HLS Code by Using HDL Workflow Advisor

HLS code generation with the HDL Workflow Advisor has the following basic steps:

  1. At the MATLAB command line, set up the HLS tool path for HLS code generation by using the function hdlsetuphlstoolpath.

  2. Create a HDL Coder project by adding the mlhdlc_aes.m design file and mlhdlc_aes_tb.m test bench file to the HDL workflow advisor.

  3. Launch the HDL Workflow Advisor to generate HLS code. Do not run floating point to fixed point conversion on this design, as the AES MATLAB code is already in fixed point and suitable for HLS code generation.

For detailed information about these steps, see Get Started with MATLAB to High-Level Synthesis Workflow Using the Command Line Interface or Get Started with MATLAB to High-Level Synthesis Workflow Using HDL Coder App.

See Also