高度暗号化標準の高位合成コード生成
この例では、AES (高度暗号化標準) アルゴリズムを実装する MATLAB® コードから高位合成 (HLS) コードを生成する方法を示します。
AES MATLAB 設計
AES は、同じ暗号キーを使用して機密データを暗号化および復号化する対称ブロック暗号です。MATLAB コードを使用して AES などの複雑なアルゴリズムを設計し、それと同等の HLS コードを生成できます。
この例の関数 mlhdlc_aes は、AES 暗号化アルゴリズムを実装します。この関数は、暗号化するプレーン テキストと暗号キーを入力として受け入れ、暗号化テキストを出力します。関数 mlhdlc_aesd は、暗号化テキストをプレーン テキストに復号化します。
この例の AES モデルを設定します。
mlhdlc_demo_setup('aes');
Copying files from the following folders: /mathworks/devel/bat/filer/batfs2566-0/Bdoc26a.3146167/build/runnable/matlab/toolbox/hdlcoder/hdldesignpatterns/matlabhdl/crypto Successfully copied: mlhdlc_aes Successfully copied: mlhdlc_aes_getExpandedKeys Successfully copied: mlhdlc_aes_getSboxValue Successfully copied: mlhdlc_aes_runme Successfully copied: mlhdlc_aes_tb Successfully copied: mlhdlc_aesd Successfully copied: mlhdlc_tutorial_comms_aes
テキストを暗号化および復号化するための MATLAB コードを確認するには、ファイル mlhdlc_aes.m および mlhdlc_aesd.m を開きます。
open('mlhdlc_aes'); open('mlhdlc_aesd');
MATLAB テスト ベンチ ファイルも確認できます。
open('mlhdlc_aes_tb')
MATLAB アルゴリズムのテスト
実行時エラーを避けるために、テスト ベンチを使用して設計をシミュレートします。
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: F2 80 BC 52 1D 8E 1A 87 4A B5 3D F3 7F B1 63 AE 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: 78 98 3A 70 59 69 9B F6 38 DA 98 3C E4 4D FE 18 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: 7A 9B E6 0C 8D D4 CF 2A 13 68 7E CA E6 73 22 2A 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: 1B B6 1F 81 5A 27 8F 73 6D DE 4B CC D2 78 0C 3C 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: D4 D8 F1 72 DA EE C0 37 A0 E0 F0 E8 2D 59 33 FE 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.!!!!!
HDL ワークフロー アドバイザーを使用した HLS コードの生成
HDL ワークフロー アドバイザーを使用して HLS コードを生成する基本的な手順は、以下のとおりです。
MATLAB コマンド ラインで、関数
hdlsetuphlstoolpathを使用し、HLS コード生成用の HLS ツール パスを設定します。mlhdlc_aes.m設計ファイルおよびmlhdlc_aes_tb.mテスト ベンチ ファイルを HDL ワークフロー アドバイザーに追加して、HDL Coder プロジェクトを作成します。HDL ワークフロー アドバイザーを起動して HLS コードを生成します。この設計に対して浮動小数点から固定小数点への変換は実行しないでください。AES MATLAB コードは既に固定小数点であり、HLS コード生成に適しています。
これらの手順の詳細については、Get Started with MATLAB to High-Level Synthesis Workflow Using the Command Line InterfaceまたはHDL Coder アプリを使用した MATLAB から高位合成へのワークフロー入門を参照してください。