AES128 icon indicating copy to clipboard operation
AES128 copied to clipboard

C++ and Verilog to implement AES128

README for AES128


Repository containing C++ and Verilog to implement AES128 for final year project.

C++ = C++ program to implement AES.

C_Microblaze_Tests = C code to test crypto modes through UART to Microblaze processor.

RTL_TB = Some verilog testbench files created during process of writing working Verilog.

RTL = Verilog to implement AES128-ECB & AES128-CBC:

AES128-CBC Hierarchy:
Encryption:
-> aes128_cbc_encrypt_top
	-> expand_key
	-> key_scheduler
	-> encrypt_top
		-> add_vector
		-> add_round_key	
		-> encrypt_round
			-> sub_bytes
			-> shift_rows
			-> mix_columns
			-> add_round_key
		-> encrypt_final_round
			-> sub_bytes
			-> shift_rows
			-> add_round_key
Decryption:
-> aes128_cbc_decrypt_top
	-> expand_key
	-> key_scheduler
	-> decrypt_top
		-> decrypt_initial_round
			-> add_round_key
			-> inv_shift_rows
			-> inv_sub_bytes
		-> decrypt_round
			-> add_round_key	
			-> inv_mix_columns
				-> mul_9
				-> mul_11
				-> mul_12
				-> mul_13
			-> inv_shift_rows
			-> inv_sub_bytes
		-> add_round_key
		-> add_vector