aes128

The present design implements the cipher of the 128-bit version of the Advanced Encryption Standard (AES).  Since the design targets a high-throughput implementation, both the key expansion and the actual cipher are pipeline.

Inputs and outputs are registered.  While the plaintext and the ciphertext are registered in the top entity, the cipherkey is registered within the key expansion entity.  Due to the input buffering, the actual encryption starts with a delay of one clock cycle.  After that, both the key expansion and the encryption are executed “in parallel”.

General Information

Fileaes128.vhd
TitleHigh-throughput implementation of AES-128
ProjectVLSI Book AES-128 Example
AuthorMichael Muehlberghuber (mb.nosp@m.gh@iis.ee..nosp@m.ethz.ch)
CompanyIntegrated Systems Laboratory, ETH Zurich
CopyrightCopyright © 2014 Integrated Systems Laboratory, ETH Zurich
File Created2014-10-16
Last Updated2014-10-16
PlatformSimulation=QuestaSim; Synthesis=Synopsys
StandardSystemVerilog 1800-2009

Revision Control System Information

File ID$Id: aes128.sv 23 2014-10-20 09:23:20Z u59323933 $
Revision$Revision: 23 $
Local Date$Date: 2014-10-20 11:23:20 +0200 (Mon, 20 Oct 2014) $
Modified By$Author: u59323933 $

Major Revisions

2014-10-16 (v1.0)Created (mbgh)
Summary
aes128The present design implements the cipher of the 128-bit version of the Advanced Encryption Standard (AES).
Types
stateArrayTypeAn array holding 10 Matrices.
Methods
to_matrixConverts a logic[127:0] to a Matrix.
to_logicConverts a matrix to a logic[127:0].

Types

stateArrayType

An array holding 10 Matrices.

Methods

to_matrix

function Matrix to_matrix

Converts a logic[127:0] to a Matrix.

to_logic

function logic[127:0] to_logic

Converts a matrix to a logic[127:0].  The 0-th byte of the first word of the matrix becomes the most significant byte of the std_logic_vector.

function Matrix to_matrix
Converts a logic[127:0] to a Matrix.
function logic[127:0] to_logic
Converts a matrix to a logic[127:0].
Close