This is a "pipelined" version of hardware implementaion in system-verilog. Here I pipeline the key expansion process into 15 steps to address the SLACK problem. This implements encryption in 110MHz. Throughput is 2 * 128bits * 200M = 51.2 Gbps. Worst SLACK is 0.04 ns. Reference AES.
-
Vivado 16.4 or higher.
-
Implementaion is on a SUME FPGA board.
-
Modify the simulation file test128.sv.
-
In the directory run:
bash shell/sim.bash
- Run:
bash shell/make.bash
-
Download the bitstream file to hardware.
-
ATTENTION It is a real-time running version of 128 bit encryption which only supports 128-bit-multiple input by now.
- Run:
cd pyaes
ipython3 notebook
- Modify and run the pyaes\test.py to get the right encryption result for 128-bit-mulitple input. Or you can migrate to ipython notebook to debug it. And modify the input in test128.sv to check if the SW/HW results coincide.
- (Now 15 clks) Further parallelize the data links.
- (Done encryption part) Double the data rate by using data on falling and rising edge.