URL
https://opencores.org/ocsvn/avs_aes/avs_aes/trunk
Subversion Repositories avs_aes
Compare Revisions
- This comparison shows the changes necessary to convert path
/avs_aes/trunk
- from Rev 18 to Rev 17
- ↔ Reverse comparison
Rev 18 → Rev 17
/doc/manual/src/avs_aes.ist
1,29 → 1,15
% makeindex style file created by the glossaries package |
% for document 'avs_aes' on 2011-5-15 |
actual '?' |
encap '|' |
level '!' |
quote '"' |
% makeindex style file created by LaTeX for document "avs_aes" on 2010-4-3 |
keyword "\\glossaryentry" |
preamble "\\glossarysection[\\glossarytoctitle]{\\glossarytitle}\\glossarypreamble\n\\begin{theglossary}\\glossaryheader\n" |
postamble "\%\n\\end{theglossary}\\glossarypostamble\n" |
group_skip "\\glsgroupskip\n" |
item_0 "\%\n" |
item_1 "\%\n" |
item_2 "\%\n" |
item_01 "\%\n" |
item_x1 "\\relax \\glsresetentrylist\n" |
item_12 "\%\n" |
item_x2 "\\relax \\glsresetentrylist\n" |
delim_0 "\{\\glossaryentrynumbers\{\\relax " |
delim_1 "\{\\glossaryentrynumbers\{\\relax " |
delim_2 "\{\\glossaryentrynumbers\{\\relax " |
delim_t "\}\}" |
preamble "\\begin{theglossary}" |
postamble "\n\\end{theglossary}\n" |
group_skip "\\gloskip " |
item_0 "\n\n\\gloitem " |
delim_0 "\n\\glodelim " |
page_compositor "-" |
delim_n "\\delimN " |
delim_r "\\delimR " |
delim_t "\\delimT " |
headings_flag 1 |
heading_prefix "\\glsgroupheading\{" |
heading_suffix "\}\\relax \\glsresetentrylist " |
symhead_positive "glssymbols" |
numhead_positive "glsnumbers" |
page_compositor "." |
heading_prefix "\\glogroup" |
symhead_positive "Symbols" |
numhead_positive "Numbers" |
/doc/manual/src/avs_aes.tex
6,8 → 6,10
|
\usepackage[ |
style=altlist, |
toc=true, |
acronym=true]{glossaries} |
hyper=true, |
number=none, |
acronym=true, |
header=none]{glossary} |
\usepackage{capt-of} |
|
%%% Water mark |
16,8 → 18,9
%\SetWatermarkScale{0.9} |
%\SetWatermarkLightness{0.85} |
|
|
\makeglossaries |
\makeacronym |
\makeglossary |
\input{acronym} |
\input{glossary} |
\bibliographystyle{IEEEtran} |
|
26,7 → 29,7
%%%%%%%%%%%%%%%%% |
\docDate{ \today } |
\docID{avs\_aes\_doc} |
\docRevision{0.8} |
\docRevision{0.5} |
\docStatus{Final} |
\docTitle{\mbox{AES 128/192/256 (ECB)} \mbox{Avalon\rtm-MM Slave}} |
\keywords{Avalon, bus, slave, cryptography, AES, ecb, IP core } |
47,7 → 50,6
0.5 & all & final release & 2010/03/07 & T. Ruschival \\ |
0.6 & 3,6 & fixed memory map, added testbench description & 2010/04/02 & T. Ruschival \\ |
0.7 & 3,6 & fixed typos & 2010/04/03 & T. Ruschival \\ |
0.8 & 6 & corrected key schedule & 2011/05/15 & T. Ruschival \\ |
} |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
59,11 → 61,11
\newpage |
|
\section{Introduction} |
\label{sec:intro} The \gls{AES} is a symmetric block cipher operating on fixed block sizes |
\label{sec:intro} The \AES is a symmetric block cipher operating on fixed block sizes |
of 128 Bit and is specified for key sizes of 128, 192 and 256 Bit designed by Joan |
Daemen and Vincent Rijmen. The algorithm was standardized by \gls{NIST}. For more |
Daemen and Vincent Rijmen. The algorithm was standardized by \NIST. For more |
information on the algorithm see \cite{NIST:Fips197}.\\ |
This component implements an AES encryption decryption data path in \gls{ECB} mode with |
This component implements an AES encryption decryption data path in \ECB mode with |
either 128,192 or 256 Bit keys. The key length is determined by generics at compile |
time. Also the decryption data path can be disabled by generics if it is not needed |
for the application.\\ |
81,7 → 83,7
signals in a Wishbone implementation.The component can be used both in polling |
mode or can provide an interrupt for signalling. \\ |
Unfortunately Avalon\rtm\ is an Altera\rtm\ proprietary technology. The actual AES |
core however is a self contained entity and can be embedded into other \gls{SoC} bus |
core however is a self contained entity and can be embedded into other \SoC\ bus |
interfaces as well or used independently. |
|
\subsection{Configuration Generics} |
107,7 → 109,7
implements the signals shown in table \ref{tab:signals}. All signals are synchronous, |
sampled at the rising edge of the clock. The type for all signals is \texttt{IEEE1164 |
std\_logic} or \texttt{std\_logic\_vector}. For signals wider that 1 Bit the range |
is \gls{MSB} \texttt{downto} \gls{LSB}. \\ |
is \MSB\ \texttt{downto} \LSB\. \\ |
This components has only output signals driven by registers no input signals are directly combinatorially connected to the |
output signals, thus combinational loops are avoided. All signals are active |
high. This component does not support burst transfers. |
227,7 → 229,7
The result of the operation can be read from the \texttt{RESULT} area of the memory |
and is not cleared. It will be overwritten by succeeding operations. |
|
The underlying AES core uses the \gls{FSM} shown in \ref{fig:aesFSM} for processing of |
The underlying AES core uses the \FSM\ shown in \ref{fig:aesFSM} for processing of |
the data. The signals \texttt{data\_stable} and \texttt{key\_stable} are accessible |
over the control status word \texttt{CTRL} \ref{sec:ctrl}. \texttt{key\_ready} is a |
signal driven by the key generator when all keys are expanded. The signal |
263,7 → 265,7
The algorithmic core is divided into two separate data paths one for encryption and a |
second for decryption operation. The two data paths are independent, however they |
share the keyexpansion component which provides decrypt and encrypt keys (which are |
the same only in opposite order). Each data path is controlled by its own \gls{FSM}. If |
the same only in opposite order). Each data path is controlled by its own \FSM\. If |
configured by the generic \texttt{DECRYPTION} \ref{gen:decryption} the decryption |
data path is included and some multiplexers are generated for the shared signals, |
e.g. \texttt{result} or \texttt{roundkey\_index}.\\ |
285,16 → 287,10
always of 4 DWORDs, thus it takes 4 cycles to send data to the core, one cycle to activate the computation with the |
control register \ref{sec:ctrl} and 4 cycles to retrieve the data. |
|
The keyexpansion component computes one column of a roundkey in two clock cycles. In |
the first cycle the column is substituted throught the s-box, in the second cycle the |
shift-operation is executed. AES specifies \cite{NIST:Fips197}, depending on the key length $ N_{roundkeys}=\{10,12,14\} $ |
roundkeys with 4 columns each. The \gls{FSM} of the keyexpansion module adds o clockcycle for the ``DONE'' state. |
\begin{equation} |
T_{keyexpansion}(N_{roundkeys}) = 2 \cdot 4 \cdot N_{roundkeys} +1 |
\label{eqn:keyexp} |
\end{equation} |
The keyexpansion therefore takes 81, 97 or 115 clockcycles until the encryption or decryption can start. The |
roundkeys are stored until invalidated, see \ref{sec:usage} thus this step is is only needed once after power-up until the key changes. |
The keyexpansion component computes one column of a roundkey each clock cycle. AES takes, depending on the key length, |
10, 12 or 14 roundkeys with each 4 columns, see \cite{NIST:Fips197}. The keyexpansion therefore takes 40, 48 or 56 |
cycles until the encryption or decryption can start. The roundkeys are stored until invalidated, see \ref{sec:usage} |
thus this step is is only needed once after power-up until the key changes. |
|
The AES core computes one iteration (round) of the Rijndael-Algorithm each clock cycle, thus a 128 Bit data block is |
encrypted or decrypted in 10, 12 or 14 cycles plus an initial round. |
360,6 → 356,7
frequency $f_{max}$ of the configuration compared to encryption only versions. |
|
\section{Simulation} |
\label{sec:simulation} |
\subsection{Testbench} |
\label{sec:testbench} |
In \texttt{./bench/VHDL/} a ``self-checking testbench'' is provided which runs tests |
456,7 → 453,8
Mentor Graphics and ModelSim are registered trademarks of Mentor Graphics |
Corporation 8005 SW Boeckman Road, Wilsonville OR USA \newpage |
|
\printglossaries |
\printacronym |
\printglossary |
|
\bibliography{cited} |
\revisionTable |
/doc/manual/src/avs_aes.acn
1,9 → 1,30
\glossaryentry{AES?\glossaryentryfield{AES}{\glsnamefont{AES}}{Advanced Encryption Standard}{\relax }|setentrycounter{page}\glsnumberformat}{3} |
\glossaryentry{NIST?\glossaryentryfield{NIST}{\glsnamefont{NIST}}{National Institute of Standards and Technology}{\relax }|setentrycounter{page}\glsnumberformat}{3} |
\glossaryentry{ECB?\glossaryentryfield{ECB}{\glsnamefont{ECB}}{Electronic Code Book}{\relax }|setentrycounter{page}\glsnumberformat}{3} |
\glossaryentry{SoC?\glossaryentryfield{SoC}{\glsnamefont{SoC}}{System on Chip}{\relax }|setentrycounter{page}\glsnumberformat}{3} |
\glossaryentry{MSB?\glossaryentryfield{MSB}{\glsnamefont{MSB}}{Most Significant Bit}{\relax }|setentrycounter{page}\glsnumberformat}{4} |
\glossaryentry{LSB?\glossaryentryfield{LSB}{\glsnamefont{LSB}}{Least Significant Bit}{\relax }|setentrycounter{page}\glsnumberformat}{4} |
\glossaryentry{FSM?\glossaryentryfield{FSM}{\glsnamefont{FSM}}{Finite State Machine}{\relax }|setentrycounter{page}\glsnumberformat}{6} |
\glossaryentry{FSM?\glossaryentryfield{FSM}{\glsnamefont{FSM}}{Finite State Machine}{\relax }|setentrycounter{page}\glsnumberformat}{8} |
\glossaryentry{FSM?\glossaryentryfield{FSM}{\glsnamefont{FSM}}{Finite State Machine}{\relax }|setentrycounter{page}\glsnumberformat}{10} |
\begin{theglossary}\glogroupA |
|
\gloitem {\glosslabel{acn:AES}{Advanced Encryption Standard\ (\noexpand \acronymfont {AES})}}NIST approved symmetric block cypher\relax |
\glodelim |
\glsnumformat{3}\delimT \gloskip \glogroupE |
|
\gloitem {\glosslabel{acn:ECB}{Electronic Codebook\ (\noexpand \acronymfont {ECB})}}application of a cypher algorithm without further processing of the blocks\relax |
\glodelim |
\glsnumformat{3}\delimT \gloskip \glogroupF |
|
\gloitem {\glosslabel{acn:FSM}{Finite State Machine\ (\noexpand \acronymfont {FSM})}}Behavioural Model with finite number of states and transitions\relax |
\glodelim |
\glsnumformat{6}\delimN \glsnumformat{8}\delimT \gloskip \glogroupL |
|
\gloitem {\glosslabel{acn:LSB}{Least Significant Bit\ (\noexpand \acronymfont {LSB})}}least value bit in a vector\relax |
\glodelim |
\glsnumformat{4}\delimT \gloskip \glogroupM |
|
\gloitem {\glosslabel{acn:MSB}{Most Significant Bit\ (\noexpand \acronymfont {MSB})}}highest value bit in a vector\relax |
\glodelim |
\glsnumformat{4}\delimT \gloskip \glogroupN |
|
\gloitem {\glosslabel{acn:NIST}{National Institute of Standards and Technology\ (\noexpand \acronymfont {NIST})}}US standardisation office\relax |
\glodelim |
\glsnumformat{3}\delimT \gloskip \glogroupS |
|
\gloitem {\glosslabel{acn:SoC}{System on Chip\ (\noexpand \acronymfont {SoC})}}System of seperate functional interacting together implemented on a single chip\relax |
\glodelim |
\glsnumformat{3}\delimT |
\end{theglossary} |
/doc/manual/src/avs_aes.acr
1,26 → 1,8
\glossarysection[\glossarytoctitle]{\glossarytitle}\glossarypreamble |
\begin{theglossary}\glossaryheader |
\glsgroupheading{A}\relax \glsresetentrylist % |
\glossaryentryfield{AES}{\glsnamefont{AES}}{Advanced Encryption Standard}{\relax }{\glossaryentrynumbers{\relax |
\setentrycounter{page}\glsnumberformat{3}}}\glsgroupskip |
\glsgroupheading{E}\relax \glsresetentrylist % |
\glossaryentryfield{ECB}{\glsnamefont{ECB}}{Electronic Code Book}{\relax }{\glossaryentrynumbers{\relax |
\setentrycounter{page}\glsnumberformat{3}}}\glsgroupskip |
\glsgroupheading{F}\relax \glsresetentrylist % |
\glossaryentryfield{FSM}{\glsnamefont{FSM}}{Finite State Machine}{\relax }{\glossaryentrynumbers{\relax |
\setentrycounter{page}\glsnumberformat{6}\delimN |
\setentrycounter{page}\glsnumberformat{8}\delimN |
\setentrycounter{page}\glsnumberformat{10}}}\glsgroupskip |
\glsgroupheading{L}\relax \glsresetentrylist % |
\glossaryentryfield{LSB}{\glsnamefont{LSB}}{Least Significant Bit}{\relax }{\glossaryentrynumbers{\relax |
\setentrycounter{page}\glsnumberformat{4}}}\glsgroupskip |
\glsgroupheading{M}\relax \glsresetentrylist % |
\glossaryentryfield{MSB}{\glsnamefont{MSB}}{Most Significant Bit}{\relax }{\glossaryentrynumbers{\relax |
\setentrycounter{page}\glsnumberformat{4}}}\glsgroupskip |
\glsgroupheading{N}\relax \glsresetentrylist % |
\glossaryentryfield{NIST}{\glsnamefont{NIST}}{National Institute of Standards and Technology}{\relax }{\glossaryentrynumbers{\relax |
\setentrycounter{page}\glsnumberformat{3}}}\glsgroupskip |
\glsgroupheading{S}\relax \glsresetentrylist % |
\glossaryentryfield{SoC}{\glsnamefont{SoC}}{System on Chip}{\relax }{\glossaryentrynumbers{\relax |
\setentrycounter{page}\glsnumberformat{3}}}% |
\end{theglossary}\glossarypostamble |
\glossaryentry{AES@{\glosslabel{acn:AES}{Advanced Encryption Standard\ (\noexpand \acronymfont {AES})}}NIST approved symmetric block cypher\relax|glsnumformat}{3} |
\glossaryentry{NIST@{\glosslabel{acn:NIST}{National Institute of Standards and Technology\ (\noexpand \acronymfont {NIST})}}US standardisation office\relax|glsnumformat}{3} |
\glossaryentry{ECB@{\glosslabel{acn:ECB}{Electronic Codebook\ (\noexpand \acronymfont {ECB})}}application of a cypher algorithm without further processing of the blocks\relax|glsnumformat}{3} |
\glossaryentry{SoC@{\glosslabel{acn:SoC}{System on Chip\ (\noexpand \acronymfont {SoC})}}System of seperate functional interacting together implemented on a single chip\relax|glsnumformat}{3} |
\glossaryentry{MSB@{\glosslabel{acn:MSB}{Most Significant Bit\ (\noexpand \acronymfont {MSB})}}highest value bit in a vector\relax|glsnumformat}{4} |
\glossaryentry{LSB@{\glosslabel{acn:LSB}{Least Significant Bit\ (\noexpand \acronymfont {LSB})}}least value bit in a vector\relax|glsnumformat}{4} |
\glossaryentry{FSM@{\glosslabel{acn:FSM}{Finite State Machine\ (\noexpand \acronymfont {FSM})}}Behavioural Model with finite number of states and transitions\relax|glsnumformat}{6} |
\glossaryentry{FSM@{\glosslabel{acn:FSM}{Finite State Machine\ (\noexpand \acronymfont {FSM})}}Behavioural Model with finite number of states and transitions\relax|glsnumformat}{8} |
/doc/manual/src/glossary.tex
1,8 → 1,29
\newacronym{LSB}{LSB}{Least Significant Bit} |
\newacronym{MSB}{MSB}{Most Significant Bit} |
\newacronym{SoC}{SoC}{System on Chip} |
\newacronym{AES}{AES}{Advanced Encryption Standard} |
\newacronym{ECB}{ECB}{Electronic Code Book} |
\newacronym{FSM}{FSM}{Finite State Machine} |
\newacronym{NIST}{NIST}{National Institute of Standards and Technology} |
\glossary{name={Byte}, |
description={String of Bits - nowadays mostly a string of 8 Bits, also called oktett}, |
sort={Byte} |
} |
\glossary{name={Bit}, |
description={Binary Digit, atomary information unit}, |
sort={Bit} |
} |
\glossary{name={switch fabric}, |
description={Interconnect between IP-Cores providing arbiration and glue logic. Altera\rtm\ Avalon\rtm\ term}, |
sort={Switch fabric} |
} |
|
\glossary{name={Master}, |
description={Entity initiating and controlling communication.}, |
sort={Master} |
} |
|
\glossary{name={Slave}, |
description={Entity responding to communication requests by a Master.}, |
sort={Slave} |
} |
|
\glossary{name={memory mapped}, |
description={Method of addressing peripheral components like Avalon Slaves via the same address bus as main memory}, |
sort={memory mapped} |
} |
|
|
/doc/manual/src/acronym.tex
0,0 → 1,15
\newacronym{LSB}{Least Significant Bit}{description=least value bit in a vector} |
\newacronym{MSB}{Most Significant Bit}{description=highest value bit in a vector} |
\newacronym{SoC}{System on Chip}{description=System of seperate functional interacting together implemented on a single chip } |
\newacronym{AES}{Advanced Encryption Standard}{description=NIST approved symmetric |
block cypher} |
\newacronym{ECB}{Electronic Codebook}{description=application of a cypher algorithm |
without further processing of the blocks} |
\newacronym{FSM}{Finite State Machine}{description=Behavioural Model with finite |
number of states and transitions} |
\newacronym{NIST}{National Institute of Standards and Technology}{description=US |
standardisation office} |
|
|
|
|
doc/manual/src/acronym.tex
Property changes :
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property