FPGA-AES篇(Xilinx-ZedBoard)


經過上次做RSA的加解密經驗,再做其他的一樣也是依樣畫葫蘆,所以這次的流程會比較簡化,畢竟都一樣只有位元數(RSA32位元AES128位元)、測試、程式碼、暫存器配置不同。

開始製作IP

AES128程式碼的Port部分:

這次需要13個暫存器,因為板子的Data width只能傳輸32位元,所以超過就要拆開來去分配,key data_in各2個 data_out需要4個。
照慣例匯入source之後開始配暫存器以下為程式碼。

因為超過32位元沒辦法一次寫完,所以我們要自己再寫signal去配置。

告訴他們key_signal和data_in_signal是不同暫存器組成。

配置暫存器。

這樣就寫好囉,那就存檔並且合成吧!結束之後開始packge ip(記得merge)。

開始匯入IP與設置電路

過來就一樣開啟舊專案或新專案來放置我們IP,因為只是測試所以我只放新IP要不然燒錄時間會拖長。(PS:記得在專案內引進自己做得IP哦)

一樣動作Generate Output Products->Create HDL warpper
完成後Run Synthesis -> Run Implemented -> Generate Bitstream
跑完就export Hardware-> launch sdk 轉戰SDK囉。

SDK做測試

如果是用舊專案可以把原本的SDK先刪掉或關掉,再去生成比較好有時候生出來還是舊的沒更新成新的電路。

注意看看是不是新的AES哦!

一樣開啟一個專案來並寫上測試:



透過程式碼能知道load是告訴程式後面的值還要輸入的開關,mode的開關是加解密開關,start是告訴程式是否已經準備好,done則是做完的時候會立起flag在繼續往下。
過來就是開putty去跑板子試試看啦!

這就是AES128從IP到Standalone的流程啦。