필요한 조언과 도움을!

M

mat_jat

Guest
안녕하세요!내가이 포럼 및 VHDL 프로그래밍에서
마일 안돼서 ...
그래서 누군가가 내 프로그래밍과 올바른을 도와줄 수 있었으면 좋겠
날 .. 조언좀
내가 UART 및 AES는 코어 사이에 제어 장치를 만들려고했는데 ...내가 좀하게
소스 코드가 열려 코어에서 다운로드의 moddification ...
노호 내 제어 장치가 난 기사를 쓰는하지만
어떻게 모든 경로가 나타납니다 ... 도와 plz받을 수있는 데이터를 확인할지 모르겠 시도입니다- 베타 버전

도서관은 IEEE;
IEEE.std_logic_1164.all 사용;
IEEE.std_logic_arith.all 사용;
IEEE.std_logic_unsigned.all 사용;엔티티 final_aes128입니다
포트 (
RxD : Std_Logic에;
TxD : Std_Logic;
재설정 : STD_LOGIC;
다 : std_logic;
CLK : STD_LOGIC에

);
최종 final_aes128;final_aes128의 건축물 final_aes128_arch입니다

- AES는 신호
AES_start, AES_outrdy, AES_mode, 부하 : std_logic 신호;
신호 AES_DataOut : std_logic_vector (127 downto 0);
- counter_DataIn, counter_KeyIn : std_logic 신호;

- 접수 및 신호 전송
UART_Outrdy, UART_Rx, UART_Tx, UART_Tdone, UART_TbufE : std_logic 신호;

- 입력 AES는 핵심 신호
AES_key 신호 : std_logic_vector (127 downto 0);
AES_data 신호 : std_logic_vector (127 downto 0);

(7 downto 0) UART_DataIn, UART_DataOut : std_logic_vector 신호;
신호 En_Encryp : std_logic;

- 상태 신호
신호 상태 : std_logic_vector (3 downto 0);
신호 sub_state : std_logic_vector (3 downto 0);구성 요소 clk_divider
포트 (
SysClk : Std_Logic; - 시스템 클럭
En_Encryp : Std_Logic; - 제어 신호
재설정 : Std_Logic에 - 재설정
);

엔드 컴포넌트 clk_divider;구성 요소 miniUART
포트 (
DataRdy : std_logic;
SysClk : Std_Logic; - 시스템 클럭
재설정 : Std_Logic; - 리셋 입력
- CS_N : Std_Logic에;
RD_N : Std_Logic에;
WR_N : Std_Logic에;
RxD : Std_Logic; -
W8 핀 할당
TxD : Std_Logic; - D15에 핀 할당
TBufE : 버퍼 std_logic;
TDone : std_logic;
Std_Logic_Vector에 DataIn : (7 downto 0); - AES가에서 출력 코어가 나타납니다
DataOut : Std_Logic_Vector (7 downto 0 ));-- AES는 핵심 데이터를 전송
엔드 컴포넌트 miniUART;구성 요소 aes128_fast
포트 (
CLK : std_logic;
재설정 : std_logic;
시작 : std_logic; - 시작 암호화 / 암호 해독 프로세스가 로딩
후모드 : std_logic; - 암호화 또는 암호 해독을 선택합니다
부하 : std_logic; - 입력 및 열쇠를로드합니다.
키 : std_logic_vector에 (127 downto 0);
data_in : std_logic_vector에 (127 downto 0);
data_out : std_logic_vector (127 downto 0);
다 : std_logic);
엔드 컴포넌트 aes128_fast;시작

U_clkdiv : clk_divider
포트 매핑 (Clk, En_Encryp, 재설정);

U_UART : miniUART
포트 매핑 (UART_outrdy, Clk, 재설정, UART_Rx, UART_Tx, RxD, TxD,
UART_TBufE, UART_TDone, UART_DataIn, UART_DataOut);

U_AES : aes128_fast
포트 매핑 (En_Encryp, 재설정, AES_start, AES_mode, 부하, AES_key,
AES_data, AES_DataOut, AES_Outrdy);FSM : 프로세스 (CLK, 재설정, UART_DataIn, UART_DataOut, UART_Outrdy,
UART_TbufE, UART_TDone,
상태, sub_state, AES_key, AES_Data, AES_Outrdy,
AES_DataOut)

"와 - 상태 메시지 변수, #"- 끝 - 라인 문자로.

시작

만약 리셋 = '1 '을
선택한 다음
상태 <= X "는 0"; - 상태
sub_state <= X "는 0"; - substate

UART_Tx <= '1 '; -
= '0'파 데이터 전송
UART_Rx <= '1 '; - = '0'파 데이터
trmUART_DataIn <= (다른 => '0 ');-- 분명한 데이터 입력의 UART
AES_data <= (다른 => '0 ');
AES_key <= (다른 => '0 ');
AES_start <= '0 '; - 프로세스를 암호화 시작 / 해독할
AES_mode <= '0 '; - 신호 모드 암호화 / 해독하는
다 <= '0 '; - 가기 엔티티에서
부하 <= '0 '; -로드 키 및 데이터를

elsif clk'event과 CLK = '1 '을
선택한 다음
AES_Start <= '0 '; - 비활성화 시작 암호화 / 해독하는
UART_Tx <= '1 '; - 전송 신호를 해제
UART_Rx <= '1 '; - 해제가 나타날
신호
사건 상태입니다
- 대기 상태, 시작을 조금 기다려
엑스 때 "0"=> - 언제 상태 0
UART_Rx <= '0 '; - 읽기 활성화
UART_Outrdy = '1 '다음 - 데이터를 읽을 준비를하는
경우만약 UART_DataOut = X "는 31 일"후 -
= 1 바이트를 16 진수로 시작
상태 <= 상태 1;
다 <= '0 ';
elsif UART_DataOut = X "는 30 일"다음 - 요청 상태
상태 <= X "는 0"; - 상태 <= "1101"
다 <= '0 ';

끝;
끝;

엑스 때 "1"=> - 주 1 때
만약 UART_TBufE = '1 '다음 - 확인 버퍼가 비어
UART_DataIn <= X "는 31 일";
UART_Tx <= '0 '; - 데이터를 전송할 수 있도록
상태 <= 상태 1;

끝;

- 받기 일반 텍스트
엑스 때 "2"=>
UART_Rx <= '0 '; -받을 수 있도록
부하 <= '1 '; -
데이터 로딩
만약 (UART_Outrdy = '1 ') 다음 - 읽기 준비
sub_state 사건입니다

엑스 때 "0"=> - sub_state
AES_data (127 downto 120) <= UART_DataOut;
상태 <= 상태 1;
sub_state <=
1 sub_state;
엑스 때 "1"=>
AES_data (119 downto 112) <= UART_DataOut;
상태 <= 상태 1;
sub_state <=
1 sub_state;
엑스 때 "2"=>
AES_data (111 downto 104) <= UART_DataOut;
상태 <= 상태 1;
sub_state <=
1 sub_state;
엑스 때 "3"=>
AES_data (103 downto 96) <= UART_DataOut;
상태 <= 상태 1;
sub_state <=
1 sub_state;
엑스 때 "4"=>
AES_data (95 downto 8

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="차가운" border="0" />

<= UART_DataOut;
상태 <= 상태 1;
sub_state <=
1 sub_state;
엑스 때 "5"=>
AES_data (87 downto 80) <= UART_DataOut;
상태 <= 상태 1;
sub_state <=
1 sub_state;
엑스 때 "6"=>
AES_data (79 downto 72) <= UART_DataOut;
상태 <= 상태 1;
sub_state <=
1 sub_state;
엑스 때 "7"=>
AES_data (71 downto 64) <= UART_DataOut;
상태 <= 상태 1;
sub_state <=
1 sub_state;
엑스 때 "8"=>
AES_data (63 downto 56) <= UART_DataOut;
상태 <= 상태 1;
sub_state <=
1 sub_state;
때 X "는 9 일"=>
AES_data (55 downto 4

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="차가운" border="0" />

<= UART_DataOut;
상태 <= 상태 1;
sub_state <=
1 sub_state;
때 X "는 한"=>
AES_data (47 downto 40) <= UART_DataOut;
상태 <= 상태 1;
sub_state <=
1 sub_state;
때 엑스의 "B"=>
AES_data (39 downto 32) <= UART_DataOut;
상태 <= 상태 1;
sub_state <=
1 sub_state;
때 엑스는 "C"=>
AES_data (31 downto 24) <= UART_DataOut;
상태 <= 상태 1;
sub_state <=
1 sub_state;
때 엑스에서 "D"=>
AES_data (23 downto 16) <= UART_DataOut;
상태 <= 상태 1;
sub_state <=
1 sub_state;
때 X "는 이메일을"=>
AES_data (15 downto

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="차가운" border="0" />

<= UART_DataOut;
상태 <= 상태 1;
sub_state <=
1 sub_state;
엑스 때
붙은 "F"=>
AES_data (7 downto 0) <= UART_DataOut;
상태 <= X "가 4"; - 주 4로 이동
sub_state <= X "는 0";

결국 사건;
끝;
- 데이터의 다음 바이트를 얻을
엑스 때 "3"=>
만약 UART_TBufE = '1 '다음 - trnsmit 버퍼가 비어있는 경우
UART_Tx <= '0 '; - 전송 활성화
UART_DataIn <= UART_DataOut;
상태 <= X "는 2";
끝;

엑스 때 "4"=>
만약 UART_TBufE = '1 '을
선택한 다음
UART_Tx <= '0 ';
UART_DataIn <= UART_DataOut;
상태 <= 상태 1;
끝;

- 수신을 암호화하거나 암호를 해독 코드를 선택하십시오
엑스 때 "5"=>
UART_Rx <= '0 ';
UART_Outrdy = '1 '을 입력한
경우만약 UART_Dataout = X "는 31 일"다음
AES_mode <= '1 '; - 암호화
elsif UART_Dataout = X "가 32"다음
AES_mode <= '0 '; - 해독할

끝;
상태 <= 상태 1;
끝;

엑스 때 "6"> -
모드 AES를 전송 =
만약 UART_TBufE = '1 '을
선택한 다음
UART_Tx <= '0 ';
UART_DataIn <= UART_DataOut;
상태 <= 상태 1;

끝;

- 받기 암호화 키
엑스 때 "7"=>
UART_Rx <= '0 ';
부하 <= '1 ';
만약 (UART_Outrdy = '1 ') 다음

sub_state 사건입니다

엑스 때 "0"=> - sub_state
AES_key (127 downto 120) <= UART_DataOut;
상태 <= 상태 1;
sub_state <=
1 sub_state;
엑스 때 "1"=>
AES_key (119 downto 112) <= UART_DataOut;
상태 <= 상태 1;
sub_state <=
1 sub_state;
엑스 때 "2"=>
AES_key (111 downto 104) <= UART_DataOut;
상태 <= 상태 1;
sub_state <=
1 sub_state;
엑스 때 "3"=>
AES_key (103 downto 96) <= UART_DataOut;
상태 <= 상태 1;
sub_state <=
1 sub_state;
엑스 때 "4"=>
AES_key (95 downto 8

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="차가운" border="0" />

<= UART_DataOut;
상태 <= 상태 1;
sub_state <=
1 sub_state;
엑스 때 "5"=>
AES_key (87 downto 80) <= UART_DataOut;
상태 <= 상태 1;
sub_state <=
1 sub_state;
엑스 때 "6"=>
AES_key (79 downto 72) <= UART_DataOut;
상태 <= 상태 1;
sub_state <=
1 sub_state;
엑스 때 "7"=>
AES_key (71 downto 64) <= UART_DataOut;
상태 <= 상태 1;
sub_state <=
1 sub_state;
엑스 때 "8"=>
AES_key (63 downto 56) <= UART_DataOut;
상태 <= 상태 1;
sub_state <=
1 sub_state;
때 X "는 9 일"=>
AES_key (55 downto 4

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="차가운" border="0" />

<= UART_DataOut;
상태 <= 상태 1;
sub_state <=
1 sub_state;
때 X "는 한"=>
AES_key (47 downto 40) <= UART_DataOut;
상태 <= 상태 1;
sub_state <=
1 sub_state;
때 엑스의 "B"=>
AES_key (39 downto 32) <= UART_DataOut;
상태 <= 상태 1;
sub_state <=
1 sub_state;
때 엑스는 "C"=>
AES_key (31 downto 24) <= UART_DataOut;
상태 <= 상태 1;
sub_state <=
1 sub_state;
때 엑스에서 "D"=>
AES_key (23 downto 16) <= UART_DataOut;
상태 <= 상태 1;
sub_state <=
1 sub_state;
때 X "는 이메일을"=>
AES_key (15 downto

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="차가운" border="0" />

<= UART_DataOut;
상태 <= 상태 1;
sub_state <=
1 sub_state;
엑스 때
붙은 "F"=>
AES_key (7 downto 0) <= UART_DataOut;
상태 <= X "는 9 일"; - 상태를 9로 이동
sub_state <= X "는 0";
결국 사건;

끝;

-의 다음 바이트를 얻을 열쇠
엑스 때 "8"=>
만약 UART_TBufE = '1 '을
선택한 다음
UART_Tx <= '0 ';
UART_DataIn <= UART_DataOut;
상태 <= X "가 7";
끝;

때 X "는 9 일"=> - 주 9
만약 UART_TBufE = '1 '다음 - 버퍼 있습니까
전송UART_Tx <= '0 '; - 전송 활성화
UART_DataIn <= UART_DataOut;
AES_start <= '1 '; - 시작 암호화 / 해독하는
상태 <= 상태 1;
끝;

- 암호화, CipherText 전송 완료
때 X "는 한"=> - 주 10

만약 (UART_TBufE = '1 '과 AES_Outrdy = '1') 다음 - aes_outready
UART_Tx <= '0 ';
sub_state 사건입니다
엑스 때 "0"=>
UART_DataIn <= AES_DataOut (127 downto 120);
sub_state <=
1 sub_state;
상태 <= 상태 1;
엑스 때 "1"=>
UART_DataIn <= AES_DataOut (119 downto 112);
sub_state <=
1 sub_state;
상태 <= 상태 1;
엑스 때 "2"=>
UART_DataIn <= AES_DataOut (111 downto 104);
sub_state <=
1 sub_state;
상태 <= 상태 1;
엑스 때 "3"=>
UART_DataIn <= AES_DataOut (103 downto 96);
sub_state <=
1 sub_state;
상태 <= 상태 1;
엑스 때 "4"=>
UART_DataIn <= AES_DataOut (95 downto 8

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="차가운" border="0" />

;
sub_state <=
1 sub_state;
상태 <= 상태 1;
엑스 때 "5"=>
UART_DataIn <= AES_DataOut (87 downto 80);
sub_state <=
1 sub_state;
상태 <= 상태 1;
엑스 때 "6"=>
UART_DataIn <= AES_DataOut (79 downto 72);
sub_state <=
1 sub_state;
상태 <= 상태 1;
엑스 때 "7"=>
UART_DataIn <= AES_DataOut (71 downto 64);
sub_state <=
1 sub_state;
상태 <= 상태 1;
엑스 때 "8"=>
UART_DataIn <= AES_DataOut (63 downto 56);
sub_state <=
1 sub_state;
상태 <= 상태 1;
때 X "는 9 일"=>
UART_DataIn <= AES_DataOut (55 downto 4

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="차가운" border="0" />

;
sub_state <=
1 sub_state;
상태 <= 상태 1;
때 X "는 한"=>
UART_DataIn <= AES_DataOut (47 downto 40);
sub_state <=
1 sub_state;
상태 <= 상태 1;
때 엑스의 "B"=>
UART_DataIn <= AES_DataOut (39 downto 32);
sub_state <=
1 sub_state;
상태 <= 상태 1;
때 엑스는 "C"=>
UART_DataIn <= AES_DataOut (31 downto 24);
sub_state <=
1 sub_state;
상태 <= 상태 1;
때 엑스에서 "D"=>
UART_DataIn <= AES_DataOut (23 downto 16);
sub_state <=
1 sub_state;
상태 <= 상태 1;
때 X "는 이메일을"=>
UART_DataIn <= AES_DataOut (15 downto

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="차가운" border="0" />

;
sub_state <=
1 sub_state;
상태 <= 상태 1;
엑스 때
붙은 "F"=>
UART_DataIn <= AES_DataOut (7 downto 0);
상태 <= 엑스는 "C";
sub_state <= X "는 0";

결국 사건;

끝;

때 엑스의 "B"=> - state11
만약 UART_TbufE = '0 '다음 - 준비되지 전송
상태 <= X "는"; - 전송 반복
끝;

때 엑스는 "C"=> -
상태 <= X "는 0"; - 반복
다 <= '1 '; - 전송 완료다른 때 => null을;
결국 사건;
끝;
엔드 프로세스 FSM;최종 final_aes128_arch;

이 내 최고의 엔티티 프로그램입니다 ...

 
모두 당신이해야 할 첫 코드를 identination.

모든 경우에만, FSM의 감도 목록으로 재설정해야 CLK 넣어 두 번째.

 
답장을 보내주셔서 고맙습니다!!
그래서 당신은 내가 넣어 CLK과에 reset FSM 상태가 둘 다의 민감한 ... 난 단지에 노력할 것입니다 필요 말은 ...

 

Welcome to EDABoard.com

Sponsor

Back
Top