FPGA Implementation of AES 128/192/256
Download
Report
Transcript FPGA Implementation of AES 128/192/256
By: William Whitehouse
Objectives
Design an FPGA that is capable of AES encryption and
decryption with 128, 192, and 256 bit keys.
Optimize encryption/decryption throughput by
implementing multiple cores
Synthesize multi-core design and generate a
simulated throughput
AES Core Modules
Used AES Core Modules developed by Jerzy Gbur
Contains:
key_expansion.vhd – 128, 192, or 256 bit key expansion
module
aes_enc.vhd – AES encryption module
aes_dec.vhd – AES decryption module
Single AES Core Timing
Key Size
128-bit
192-bit
256-bit
Key Valid (cycles)
16
24
32
Key Expansion
(cycles)
133
123
157
Enc/Dec Data
Valid (cycles)
16
16
16
Enc/Dec (cycles)
99
119
139
Single Core Wave
Top Level Diagram
Multi-Core Timing
Key Size
128-bit
192-bit
256-bit
Initial Enc/Dec
(cycles)
99
119
139
Enc/Dec (cycles)
17
17
17
Max Cores
Utilized
8
9
11
Multi-core Enc/Dec Wave
AES Design Synthesis
Target FPGA: Xilinx Virtex 5 XC5VLX110
Single Core
11 Core
Slice Registers
693
7282
Slice LUTs
2416
26121
Block RAMs
4
44
Max Freq. (MHz)
297.95
297.42
Max Throughput
(MBps)
39 (128-bit)
33 (192-bit)
29 (256-bit)
266
Growth Opportunities
Add more Enc/Dec inputs and 11-core modules
Optimize the design for size
Allow the key to be different for each core
Use different AES Core
Questions
Design is located at:
http://code.google.com/p/multicore-aes-fpga/
If you have any questions please email me at:
[email protected]