M
mat_jat
Guest
ciao!i, m novizio in questo forum e programmazione VHDL ...
quindi spero che qualcuno mi può aiutare a correggere la mia programmazione e
darmi qualche consiglio ..
Stavo cercando di fare una unità di controllo tra UART e core AES ...Faccio un po
'moddification del codice sorgente che ho scaricato da nuclei aperti ...
soffietto è la mia unità di controllo che provo a scrivere ma non so come controllare che ogni percorso di ricevere i dati che dovrebbero ricevere ... plz help me- Versione Beta
library IEEE;
uso IEEE.std_logic_1164.ali;
uso IEEE.std_logic_arith.all;
uso IEEE.std_logic_unsigned.all;entità final_aes128 è
port (
RxD: in std_logic;
TxD: out std_logic;
Reset: in std_logic;
Fatto: out std_logic;
CLK: in std_logic
);
fine final_aes128;final_aes128_arch architettura di final_aes128 è
- AES segnali
segnale AES_start, AES_outrdy, AES_mode, carico: std_logic;
AES_DataOut segnale: std_logic_vector (127 downto 0);
- Segnale counter_DataIn, counter_KeyIn: std_logic;
- ricevere e trasmettere il segnale
segnale UART_Outrdy, UART_Rx, UART_Tx, UART_Tdone, UART_TbufE: std_logic;
- AES segnale di input core
segnale AES_key: std_logic_vector (127 downto 0);
segnale AES_data: std_logic_vector (127 downto 0);
segnale UART_DataIn, UART_DataOut: std_logic_vector (7 downto 0);
En_Encryp segnale: std_logic;
- lo stato del segnale
stato del segnale: std_logic_vector (3 downto 0);
sub_state segnale: std_logic_vector (3 downto 0);componente clk_divider
port (
SysClk: in std_logic; - L'orologio del sistema
En_Encryp: out std_logic; - segnale di controllo
Reset: in std_logic - reset
);
clk_divider end component;componente miniUART
port (
DataRdy: out std_logic;
SysClk: in std_logic; - L'orologio del sistema
Reset: in std_logic; - ingresso Reset
- CS_N: in std_logic;
RD_N: in std_logic;
WR_N: in std_logic;
RxD: in std_logic; - assegnare i pin di W8
TxD: out std_logic; - assegnare i pin di D15
TBufE: buffer std_logic;
TDone: out std_logic;
DataIn: in std_logic_vector (7 downto 0); - ricevere l'output da AES core
DataOut: out std_logic_vector (7 downto 0 ));-- inviare dati a AES core
componente fine miniUART;componente aes128_fast
port (
clk: in std_logic;
reset: in std_logic;
Start: in std_logic; - di avviare il processo di cifratura / decifratura dopo il caricamento
Modalità: in std_logic; - per selezionare la cifratura o decifratura
carico: in std_logic; - per caricare l'ingresso e le chiavi.
principali: in std_logic_vector (127 downto 0);
data_in: in std_logic_vector (127 downto 0);
data_out: out std_logic_vector (127 downto 0);
Fatto: out std_logic);
aes128_fast end component;iniziare
U_clkdiv: clk_divider
port map (clk, En_Encryp, reset);
U_UART: miniUART
port map (UART_outrdy, clk, reset, UART_Rx, UART_Tx, RxD, TxD,
UART_TBufE, UART_TDone, UART_DataIn, UART_DataOut);
U_AES: aes128_fast
port map (En_Encryp, reset, AES_start, AES_mode, carico, AES_key,
AES_data, AES_DataOut, AES_Outrdy);FSM: process (clk, reset, UART_DataIn, UART_DataOut, UART_Outrdy,
UART_TbufE, UART_TDone,
Stato, sub_state, AES_key, AES_Data, AES_Outrdy,
AES_DataOut)
- Le variabili messaggio di stato, con "#" come end-of-line carattere.
iniziare
Se il reset = '1 'then
state <= X "0"; - Stato
sub_state <= X "0"; - sottostato
UART_Tx <= '1 '; - il trasferimento dei dati bl = '0'
UART_Rx <= '1 '; - dati TRM bl = '0'
UART_DataIn <= (others => '0');-- chiaro i dati di input UART
AES_data <= (others => '0 ');
AES_key <= (others => '0 ');
AES_start <= '0 '; - avviare un processo cifrare / decifrare
AES_mode <= '0 '; - encrypt modalità segnale / decifrare
done <= '0 '; - da un'entità superiore
Carico <= '0 '; - chiave di carico e dati
elsif clk'event e clk = '1 'then
AES_Start <= '0 '; - encrypt start disattivare / decifrare
UART_Tx <= '1 '; - disabilitare la trasmissione del segnale
UART_Rx <= '1 '; - disattivare il segnale ricevuto
caso è stato
- Stato di standby, attendere po 'Start
quando X "0" => - quando lo stato 0
UART_Rx <= '0 '; - enable leggere
se UART_Outrdy = '1 'allora - i dati pronto a leggere
se UART_DataOut X = "31", quindi - start byte = 1 in Hex
state <= Stato 1;
done <= '0 ';
elsif UART_DataOut = X "30", quindi - stato della richiesta
state <= X "0"; - Stato <= "1101"
done <= '0 ';
end if;
end if;
quando X "1" => - quando lo stato 1
se UART_TBufE = '1 'then - buffer di controllo vuoto
UART_DataIn <= X "31";
UART_Tx <= '0 '; - consentire la trasmissione dei dati
state <= Stato 1;
end if;
- Ricevere PlainText
quando X "2" =>
UART_Rx <= '0 '; - enable ricevere
Carico <= '1 '; - caricamento dei dati
if (UART_Outrdy = '1 '), poi - pronto a leggere
sub_state caso è
quando X "0" => - sub_state
AES_data (127 downto 120) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "1" =>
AES_data (119 downto 112) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "2" =>
AES_data (111 downto 104) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "3" =>
AES_data (103 downto 96) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "4" =>
AES_data (95 downto 8
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Fresco" border="0" />
<= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "5" =>
AES_data (87 downto 80) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "6" =>
AES_data (79 downto 72) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "7" =>
AES_data (71 downto 64) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "8" =>
AES_data (63 downto 56) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "9" =>
AES_data (55 downto 4
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Fresco" border="0" />
<= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "A" =>
AES_data (47 downto 40) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "B" =>
AES_data (39 downto 32) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "C" =>
AES_data (31 downto 24) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "D" =>
AES_data (23 downto 16) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "E" =>
AES_data (15 downto
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Fresco" border="0" />
<= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "F" =>
AES_data (7 downto 0) <= UART_DataOut;
state <= X "4"; - andare allo stato 4
sub_state <= X "0";
end case;
end if;
- ottenere il byte successivo dei dati
quando X "3" =>
se UART_TBufE = '1 'then - se buffer trnsmit vuoto
UART_Tx <= '0 '; - consentire la trasmissione
UART_DataIn <= UART_DataOut;
state <= X "2";
end if;
quando X "4" =>
se UART_TBufE = '1 'then
UART_Tx <= '0 ';
UART_DataIn <= UART_DataOut;
state <= Stato 1;
end if;
- Ricevi Crittografare o decrittografare codice selezionare
quando X "5" =>
UART_Rx <= '0 ';
se UART_Outrdy = '1 'then
se UART_Dataout X = "31", quindi
AES_mode <= '1 '; - encrypt
elsif UART_Dataout X = "32", quindi
AES_mode <= '0 '; - decrypt
end if;
state <= Stato 1;
end if;
quando X "6" => - la modalità di trasmissione AES
se UART_TBufE = '1 'then
UART_Tx <= '0 ';
UART_DataIn <= UART_DataOut;
state <= Stato 1;
end if;
- Ricevere Cipher Key
quando X "7" =>
UART_Rx <= '0 ';
Carico <= '1 ';
if (UART_Outrdy = '1 ') then
sub_state caso è
quando X "0" => - sub_state
AES_key (127 downto 120) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "1" =>
AES_key (119 downto 112) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "2" =>
AES_key (111 downto 104) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "3" =>
AES_key (103 downto 96) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "4" =>
AES_key (95 downto 8
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Fresco" border="0" />
<= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "5" =>
AES_key (87 downto 80) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "6" =>
AES_key (79 downto 72) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "7" =>
AES_key (71 downto 64) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "8" =>
AES_key (63 downto 56) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "9" =>
AES_key (55 downto 4
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Fresco" border="0" />
<= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "A" =>
AES_key (47 downto 40) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "B" =>
AES_key (39 downto 32) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "C" =>
AES_key (31 downto 24) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "D" =>
AES_key (23 downto 16) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "E" =>
AES_key (15 downto
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Fresco" border="0" />
<= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "F" =>
AES_key (7 downto 0) <= UART_DataOut;
state <= X "9"; - andare allo stato 9
sub_state <= X "0";
end case;
end if;
- ottenere il byte successivo della chiave
quando X "8" =>
se UART_TBufE = '1 'then
UART_Tx <= '0 ';
UART_DataIn <= UART_DataOut;
state <= X "7";
end if;
quando X "9" => - Stato 9
se UART_TBufE = '1 'then - trasmettere Kosong buffer
UART_Tx <= '0 '; - consentire la trasmissione
UART_DataIn <= UART_DataOut;
AES_start <= '1 '; - avviare una codifica / decodifica
state <= Stato 1;
end if;
- Cipher fatto, trasmettere fuori testo cifrato
quando X "A" => - Stato 10
if (UART_TBufE = '1 'e AES_Outrdy = '1'), poi - aes_outready
UART_Tx <= '0 ';
sub_state caso è
quando X "0" =>
UART_DataIn <= AES_DataOut (127 downto 120);
sub_state <sub_state = 1;
state <= Stato 1;
quando X "1" =>
UART_DataIn <= AES_DataOut (119 downto 112);
sub_state <sub_state = 1;
state <= Stato 1;
quando X "2" =>
UART_DataIn <= AES_DataOut (111 downto 104);
sub_state <sub_state = 1;
state <= Stato 1;
quando X "3" =>
UART_DataIn <= AES_DataOut (103 downto 96);
sub_state <sub_state = 1;
state <= Stato 1;
quando X "4" =>
UART_DataIn <= AES_DataOut (95 downto 8
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Fresco" border="0" />
;
sub_state <sub_state = 1;
state <= Stato 1;
quando X "5" =>
UART_DataIn <= AES_DataOut (87 downto 80);
sub_state <sub_state = 1;
state <= Stato 1;
quando X "6" =>
UART_DataIn <= AES_DataOut (79 downto 72);
sub_state <sub_state = 1;
state <= Stato 1;
quando X "7" =>
UART_DataIn <= AES_DataOut (71 downto 64);
sub_state <sub_state = 1;
state <= Stato 1;
quando X "8" =>
UART_DataIn <= AES_DataOut (63 downto 56);
sub_state <sub_state = 1;
state <= Stato 1;
quando X "9" =>
UART_DataIn <= AES_DataOut (55 downto 4
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Fresco" border="0" />
;
sub_state <sub_state = 1;
state <= Stato 1;
quando X "A" =>
UART_DataIn <= AES_DataOut (47 downto 40);
sub_state <sub_state = 1;
state <= Stato 1;
quando X "B" =>
UART_DataIn <= AES_DataOut (39 downto 32);
sub_state <sub_state = 1;
state <= Stato 1;
quando X "C" =>
UART_DataIn <= AES_DataOut (31 downto 24);
sub_state <sub_state = 1;
state <= Stato 1;
quando X "D" =>
UART_DataIn <= AES_DataOut (23 downto 16);
sub_state <sub_state = 1;
state <= Stato 1;
quando X "E" =>
UART_DataIn <= AES_DataOut (15 downto
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Fresco" border="0" />
;
sub_state <sub_state = 1;
state <= Stato 1;
quando X "F" =>
UART_DataIn <= AES_DataOut (7 downto 0);
state <= X "C";
sub_state <= X "0";
end case;
end if;
quando X "B" => - state11
se UART_TbufE = '0 'allora - non trasmettere pronto
state <= X "A"; - ripetere la trasmissione
end if;
quando X "C" => --
state <= X "0"; - ripeto
done <= '1 '; - completa trasmissionewhen others => null;
end case;
end if;
FSM fine processo;fine final_aes128_arch;
questo è il mio programma di entità superiore ...
quindi spero che qualcuno mi può aiutare a correggere la mia programmazione e
darmi qualche consiglio ..
Stavo cercando di fare una unità di controllo tra UART e core AES ...Faccio un po
'moddification del codice sorgente che ho scaricato da nuclei aperti ...
soffietto è la mia unità di controllo che provo a scrivere ma non so come controllare che ogni percorso di ricevere i dati che dovrebbero ricevere ... plz help me- Versione Beta
library IEEE;
uso IEEE.std_logic_1164.ali;
uso IEEE.std_logic_arith.all;
uso IEEE.std_logic_unsigned.all;entità final_aes128 è
port (
RxD: in std_logic;
TxD: out std_logic;
Reset: in std_logic;
Fatto: out std_logic;
CLK: in std_logic
);
fine final_aes128;final_aes128_arch architettura di final_aes128 è
- AES segnali
segnale AES_start, AES_outrdy, AES_mode, carico: std_logic;
AES_DataOut segnale: std_logic_vector (127 downto 0);
- Segnale counter_DataIn, counter_KeyIn: std_logic;
- ricevere e trasmettere il segnale
segnale UART_Outrdy, UART_Rx, UART_Tx, UART_Tdone, UART_TbufE: std_logic;
- AES segnale di input core
segnale AES_key: std_logic_vector (127 downto 0);
segnale AES_data: std_logic_vector (127 downto 0);
segnale UART_DataIn, UART_DataOut: std_logic_vector (7 downto 0);
En_Encryp segnale: std_logic;
- lo stato del segnale
stato del segnale: std_logic_vector (3 downto 0);
sub_state segnale: std_logic_vector (3 downto 0);componente clk_divider
port (
SysClk: in std_logic; - L'orologio del sistema
En_Encryp: out std_logic; - segnale di controllo
Reset: in std_logic - reset
);
clk_divider end component;componente miniUART
port (
DataRdy: out std_logic;
SysClk: in std_logic; - L'orologio del sistema
Reset: in std_logic; - ingresso Reset
- CS_N: in std_logic;
RD_N: in std_logic;
WR_N: in std_logic;
RxD: in std_logic; - assegnare i pin di W8
TxD: out std_logic; - assegnare i pin di D15
TBufE: buffer std_logic;
TDone: out std_logic;
DataIn: in std_logic_vector (7 downto 0); - ricevere l'output da AES core
DataOut: out std_logic_vector (7 downto 0 ));-- inviare dati a AES core
componente fine miniUART;componente aes128_fast
port (
clk: in std_logic;
reset: in std_logic;
Start: in std_logic; - di avviare il processo di cifratura / decifratura dopo il caricamento
Modalità: in std_logic; - per selezionare la cifratura o decifratura
carico: in std_logic; - per caricare l'ingresso e le chiavi.
principali: in std_logic_vector (127 downto 0);
data_in: in std_logic_vector (127 downto 0);
data_out: out std_logic_vector (127 downto 0);
Fatto: out std_logic);
aes128_fast end component;iniziare
U_clkdiv: clk_divider
port map (clk, En_Encryp, reset);
U_UART: miniUART
port map (UART_outrdy, clk, reset, UART_Rx, UART_Tx, RxD, TxD,
UART_TBufE, UART_TDone, UART_DataIn, UART_DataOut);
U_AES: aes128_fast
port map (En_Encryp, reset, AES_start, AES_mode, carico, AES_key,
AES_data, AES_DataOut, AES_Outrdy);FSM: process (clk, reset, UART_DataIn, UART_DataOut, UART_Outrdy,
UART_TbufE, UART_TDone,
Stato, sub_state, AES_key, AES_Data, AES_Outrdy,
AES_DataOut)
- Le variabili messaggio di stato, con "#" come end-of-line carattere.
iniziare
Se il reset = '1 'then
state <= X "0"; - Stato
sub_state <= X "0"; - sottostato
UART_Tx <= '1 '; - il trasferimento dei dati bl = '0'
UART_Rx <= '1 '; - dati TRM bl = '0'
UART_DataIn <= (others => '0');-- chiaro i dati di input UART
AES_data <= (others => '0 ');
AES_key <= (others => '0 ');
AES_start <= '0 '; - avviare un processo cifrare / decifrare
AES_mode <= '0 '; - encrypt modalità segnale / decifrare
done <= '0 '; - da un'entità superiore
Carico <= '0 '; - chiave di carico e dati
elsif clk'event e clk = '1 'then
AES_Start <= '0 '; - encrypt start disattivare / decifrare
UART_Tx <= '1 '; - disabilitare la trasmissione del segnale
UART_Rx <= '1 '; - disattivare il segnale ricevuto
caso è stato
- Stato di standby, attendere po 'Start
quando X "0" => - quando lo stato 0
UART_Rx <= '0 '; - enable leggere
se UART_Outrdy = '1 'allora - i dati pronto a leggere
se UART_DataOut X = "31", quindi - start byte = 1 in Hex
state <= Stato 1;
done <= '0 ';
elsif UART_DataOut = X "30", quindi - stato della richiesta
state <= X "0"; - Stato <= "1101"
done <= '0 ';
end if;
end if;
quando X "1" => - quando lo stato 1
se UART_TBufE = '1 'then - buffer di controllo vuoto
UART_DataIn <= X "31";
UART_Tx <= '0 '; - consentire la trasmissione dei dati
state <= Stato 1;
end if;
- Ricevere PlainText
quando X "2" =>
UART_Rx <= '0 '; - enable ricevere
Carico <= '1 '; - caricamento dei dati
if (UART_Outrdy = '1 '), poi - pronto a leggere
sub_state caso è
quando X "0" => - sub_state
AES_data (127 downto 120) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "1" =>
AES_data (119 downto 112) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "2" =>
AES_data (111 downto 104) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "3" =>
AES_data (103 downto 96) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "4" =>
AES_data (95 downto 8
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Fresco" border="0" />
<= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "5" =>
AES_data (87 downto 80) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "6" =>
AES_data (79 downto 72) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "7" =>
AES_data (71 downto 64) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "8" =>
AES_data (63 downto 56) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "9" =>
AES_data (55 downto 4
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Fresco" border="0" />
<= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "A" =>
AES_data (47 downto 40) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "B" =>
AES_data (39 downto 32) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "C" =>
AES_data (31 downto 24) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "D" =>
AES_data (23 downto 16) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "E" =>
AES_data (15 downto
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Fresco" border="0" />
<= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "F" =>
AES_data (7 downto 0) <= UART_DataOut;
state <= X "4"; - andare allo stato 4
sub_state <= X "0";
end case;
end if;
- ottenere il byte successivo dei dati
quando X "3" =>
se UART_TBufE = '1 'then - se buffer trnsmit vuoto
UART_Tx <= '0 '; - consentire la trasmissione
UART_DataIn <= UART_DataOut;
state <= X "2";
end if;
quando X "4" =>
se UART_TBufE = '1 'then
UART_Tx <= '0 ';
UART_DataIn <= UART_DataOut;
state <= Stato 1;
end if;
- Ricevi Crittografare o decrittografare codice selezionare
quando X "5" =>
UART_Rx <= '0 ';
se UART_Outrdy = '1 'then
se UART_Dataout X = "31", quindi
AES_mode <= '1 '; - encrypt
elsif UART_Dataout X = "32", quindi
AES_mode <= '0 '; - decrypt
end if;
state <= Stato 1;
end if;
quando X "6" => - la modalità di trasmissione AES
se UART_TBufE = '1 'then
UART_Tx <= '0 ';
UART_DataIn <= UART_DataOut;
state <= Stato 1;
end if;
- Ricevere Cipher Key
quando X "7" =>
UART_Rx <= '0 ';
Carico <= '1 ';
if (UART_Outrdy = '1 ') then
sub_state caso è
quando X "0" => - sub_state
AES_key (127 downto 120) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "1" =>
AES_key (119 downto 112) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "2" =>
AES_key (111 downto 104) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "3" =>
AES_key (103 downto 96) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "4" =>
AES_key (95 downto 8
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Fresco" border="0" />
<= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "5" =>
AES_key (87 downto 80) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "6" =>
AES_key (79 downto 72) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "7" =>
AES_key (71 downto 64) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "8" =>
AES_key (63 downto 56) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "9" =>
AES_key (55 downto 4
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Fresco" border="0" />
<= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "A" =>
AES_key (47 downto 40) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "B" =>
AES_key (39 downto 32) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "C" =>
AES_key (31 downto 24) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "D" =>
AES_key (23 downto 16) <= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "E" =>
AES_key (15 downto
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Fresco" border="0" />
<= UART_DataOut;
state <= Stato 1;
sub_state <sub_state = 1;
quando X "F" =>
AES_key (7 downto 0) <= UART_DataOut;
state <= X "9"; - andare allo stato 9
sub_state <= X "0";
end case;
end if;
- ottenere il byte successivo della chiave
quando X "8" =>
se UART_TBufE = '1 'then
UART_Tx <= '0 ';
UART_DataIn <= UART_DataOut;
state <= X "7";
end if;
quando X "9" => - Stato 9
se UART_TBufE = '1 'then - trasmettere Kosong buffer
UART_Tx <= '0 '; - consentire la trasmissione
UART_DataIn <= UART_DataOut;
AES_start <= '1 '; - avviare una codifica / decodifica
state <= Stato 1;
end if;
- Cipher fatto, trasmettere fuori testo cifrato
quando X "A" => - Stato 10
if (UART_TBufE = '1 'e AES_Outrdy = '1'), poi - aes_outready
UART_Tx <= '0 ';
sub_state caso è
quando X "0" =>
UART_DataIn <= AES_DataOut (127 downto 120);
sub_state <sub_state = 1;
state <= Stato 1;
quando X "1" =>
UART_DataIn <= AES_DataOut (119 downto 112);
sub_state <sub_state = 1;
state <= Stato 1;
quando X "2" =>
UART_DataIn <= AES_DataOut (111 downto 104);
sub_state <sub_state = 1;
state <= Stato 1;
quando X "3" =>
UART_DataIn <= AES_DataOut (103 downto 96);
sub_state <sub_state = 1;
state <= Stato 1;
quando X "4" =>
UART_DataIn <= AES_DataOut (95 downto 8
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Fresco" border="0" />
;
sub_state <sub_state = 1;
state <= Stato 1;
quando X "5" =>
UART_DataIn <= AES_DataOut (87 downto 80);
sub_state <sub_state = 1;
state <= Stato 1;
quando X "6" =>
UART_DataIn <= AES_DataOut (79 downto 72);
sub_state <sub_state = 1;
state <= Stato 1;
quando X "7" =>
UART_DataIn <= AES_DataOut (71 downto 64);
sub_state <sub_state = 1;
state <= Stato 1;
quando X "8" =>
UART_DataIn <= AES_DataOut (63 downto 56);
sub_state <sub_state = 1;
state <= Stato 1;
quando X "9" =>
UART_DataIn <= AES_DataOut (55 downto 4
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Fresco" border="0" />
;
sub_state <sub_state = 1;
state <= Stato 1;
quando X "A" =>
UART_DataIn <= AES_DataOut (47 downto 40);
sub_state <sub_state = 1;
state <= Stato 1;
quando X "B" =>
UART_DataIn <= AES_DataOut (39 downto 32);
sub_state <sub_state = 1;
state <= Stato 1;
quando X "C" =>
UART_DataIn <= AES_DataOut (31 downto 24);
sub_state <sub_state = 1;
state <= Stato 1;
quando X "D" =>
UART_DataIn <= AES_DataOut (23 downto 16);
sub_state <sub_state = 1;
state <= Stato 1;
quando X "E" =>
UART_DataIn <= AES_DataOut (15 downto
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Fresco" border="0" />
;
sub_state <sub_state = 1;
state <= Stato 1;
quando X "F" =>
UART_DataIn <= AES_DataOut (7 downto 0);
state <= X "C";
sub_state <= X "0";
end case;
end if;
quando X "B" => - state11
se UART_TbufE = '0 'allora - non trasmettere pronto
state <= X "A"; - ripetere la trasmissione
end if;
quando X "C" => --
state <= X "0"; - ripeto
done <= '1 '; - completa trasmissionewhen others => null;
end case;
end if;
FSM fine processo;fine final_aes128_arch;
questo è il mio programma di entità superiore ...