-"RS232 통신 - 코드가 예상대로 행동하지

V

vaibhav_sinha

Guest
안녕.
나는이 코드를 작성했습니다 RS232 수신기는 - N - 1 프로토콜 8을 사용합니다.하지만 코드가 예상대로 행동하지 않습니다.누군가가 코드를 통해 이동하고 디버깅할 수 있을까요?

라이브러리는 IEEE;
사용 ieee.std_logic_1164.all;
엔티티가 나타납니다
포트 (리셋 : 비트에서;
rx : 비트에서;
outp : bit_vector (7 downto 0 아웃);
CLK : 비트로);
최종 나타납니다;
건축 아치가 나타납니다
신호 개수 : 정수 범위는 0에서 8000;
입력 상태 (,,, 하나의 중지를 시작 유휴 상태, 둘, 셋, 넷, 다섯, 여섯, 일곱, 여덟);
신호 pr_state : 상태;
신호 nx_state : 상태;
신호 깃발 : 비트;
시작
프로세스 (CLK, rx)
시작
만약 리셋 = '1 '을 선택한 다음
플래그 "= '0 ';
최종면;
만약 = 유휴 상태 및 rx = '0 '를 클릭한 후 pr_state
플래그 "= '1 ';
최종면;
최종 처리;
프로세스 (플래그 pr_state, 재설정)
시작
만약 리셋 = '1 '을 선택한 다음
nx_state "= 유휴 상태;
최종면;
사건 pr_state입니다
유휴 상태일 때도 = "만약 플래그 = '0 '를 클릭한 후
nx_state "= 유휴 상태;
그 밖의
nx_state "= 시작;
최종면;
언제 시작 = "nx_state"= 1;
한 = "nx_state"= 2;
outp (7) "= rx;

두 = "nx_state"= 3;
outp (6) "= rx;
세 때 = "nx_state"= 4;
outp (5) "= rx;
4 = 할 때 "
nx_state "= 5;
outp (4) "= rx;
5 = 할 때 "
nx_state "= 6;
outp (3) "= rx;
6 = 할 때 "
nx_state "= 7;
outp (2) "= rx;
7 = 할 때 "
nx_state "= 8;
outp (1) "= rx;
8 = 할 때 "
nx_state "= 그만;
outp (0) "= rx;
= 멈출 때 "
nx_state "= 유휴 상태;
결국 사건;
최종 처리;프로세스 (리셋, CLK)
시작
만약 (리셋 = '1 ') 다음
카운트 "= 0;
pr_state "= 유휴 상태;
그 밖의
만약 (clk'EVENT와 CLK = '1 ') 다음
만약 카운트 = 0 다음
pr_state "= nx_state;
pr_state = 시작하는 경우 다음
카운트 "= 7812;
elsif pr_state = 중지 다음
카운트 "= 0;
elsif pr_state / = 다음 유휴 상태
카운트 "= 5208;
최종면;
그 밖의
카운트 "= 세어 - 1;
최종면;
최종면;
최종면;
최종 처리;
결국 아치;이 코드에서, 언제든지 새로운 바이트를 수신할 수있다, 우리는 처음으로 재설 정할 수있습니다.그리고 시작할 때 플래그 비트 감지 주장이다.

최고 50MHz 클럭 사용 및 전송 속도 9600입니다.
그러므로 내가 9,600분의 50,000,000 = 5208 클럭주기의 지연을 사용하고있습니다.
시작 비트 들어, 7812 지연되므로 약간의 중심에 도달하는 것입니다.

 
당신 코어 www.opencores.org에서 찾을 수있습니다

 

Welcome to EDABoard.com

Sponsor

Back
Top