OpenCores

* Avalon AES ECB-Core (128, 192, 256 Bit)

Project maintainers

Details

Name: avs_aes
Created: May 17, 2009
Updated: Oct 11, 2017
SVN Updated: Apr 19, 2014
SVN: Browse
Latest version: download (might take a bit to start...)
Statistics: View
Bugs: 6 reported / 5 solved
Star6you like it: star it!

Other project properties

Category:Crypto core
Language:VHDL
Development status:Stable
Additional info:Design done, FPGA proven, Specification done
WishBone compliant: No
WishBone version: n/a
License: BSD

General Description

I know there are plenty of AES (Rijndael) implementations around. I created my own anyway because I was unhappy with either the implementation language (I don't know Verilog and I think its an ugly language), the documentation or the performance/resource usage of the ones I found on the net.

Here are the key parameters for this core:
- strictly modular design
- generics for the keylength (128,192,256 Bit) and enabling and disabling of decrypt datapath.
- Avalon Interface tested with niosII (can be adapted to match wishbone (I have no whishbone CPU so I didn't test))
- Interrupt or polling behaviour
- The ressource usage is IMHO ok for 128 Bit encrypt only version (797 LE on a CylconeII). (There is work to do to achieve better f_max and ressource usage for the cores with both encrypt and decrypt datapath)
- documentation available : Datasheet

TODO

1.) @anybody with Wishbone experience: can you write an interface or adapt it to whishbone? It should be no problem for the standard signals, however I found no clue how to handle IRQ for wishbone.
Possibly check it with openrisc?
2.) Write a VHDL configuration for choosing the architectures used in the generate statements. especially to switch between Altera M4K-Block bases sbox-ROMs and generic ones.
3.) Increase performance for configurations with both encrypt and decrypt datapath. currently keyexpansion is shared and result signals are multiplexed which leads to drastic decline of f_max. (95MHz for encrypt vs. 65MHz for encrpyt+decrypt).