Logo Katedry
Strona główna
Katedra Systemów Mikroelektronicznych, Wydział Elektroniki, Telekomunikacji i Informatyki, Politechnika Gdańska Logo Wydziału
English English version

Testowanie i implementacja układu szyfrującego AES 128 bit

Opis

Napisać testbench w języku VHDL do testowania układu szyfrującego, którego kod źródłowy załączono do ćwiczenia. Testbench powinien odczytywać sygnały pobudzające z pliku tekstowego z wykorzystaniem biblioteki std_logic_textio.
Tak przetestowany układ należy zrealizować z wykorzystaniem układu FPGA, poprzez osadzenie go w module, który na stale generuje klucz. Zamiast 128 bitów sygnału data_i należy podać 8 najmłodszych bitów z przełączników SW7-SW0, pozostałe bity należy wypełnić zerami.
Sygnały wyjściowe można obserwować na wyświetlaczu LED lub diodach LED (nie da się wyświetlić 128 bitów sygnału wyjściowego, więc obserwacji będzie podlegać tylko część bitów). Porównać wynik implementacji z wynikami z testbencha.
Sprawdzić z jaką maksymalną częstotliwością może działać zaprojektowany układ.

Załączniki

Przykładowy plik ucf do zadania, płytka Digilent Spartan-3, układ Spartan-3 3S200 FT256-4:
NET clk TNM_NET = clk;
TIMESPEC TS_clk = PERIOD clk 20 ns;
NET rst TIG;
#########################################################################################
# Clock:
NET "clk" LOC = "T9" ; # 50 MHz clock
NET "rst" LOC = "L14" ; # PB3 active high
#########################################################################################
#########################################################################################
# Slide switches:
# sw7 Sw6 sw5 sw4 sw3 sw2 sw1 sw0
NET "data_i<0>" LOC = "F12" ; # active high when in UP position
NET "data_i<1>" LOC = "G12" ; # active high when in UP position
NET "data_i<2>" LOC = "H14" ; # active high when in UP position
NET "data_i<3>" LOC = "H13" ; # active high when in UP position
NET "data_i<4>" LOC = "J14" ; # active high when in UP position
NET "data_i<5>" LOC = "J13" ; # active high when in UP position
NET "data_i<6>" LOC = "K14" ; # active high when in UP position
NET "data_i<7>" LOC = "K13" ; # active high when in UP position
#########################################################################################
NET "data_write_i" LOC = "M13" ; # active high
#########################################################################################
NET "data_o<0>" LOC = "K12" ; # LD0 active high
NET "data_o<1>" LOC = "P14" ; # LD1 active high
NET "data_o<2>" LOC = "L12" ; # LD2 active high
NET "data_o<3>" LOC = "N14" ; # LD3 active high
NET "data_o<4>" LOC = "P13" ; # LD4 active high
NET "data_o<5>" LOC = "N12" ; # LD5 active high
NET "data_o<6>" LOC = "P12" ; # LD6 active high
NET "data_o<7>" LOC = "P11" ; # LD7 active high
#########################################################################################