저는 VHDL과 XILINX ISE를 처음 사용했습니다. 나는 자일링스 ISE 버전 13.2를 사용한다.VHDL과 자일링스를 이용한 푸시 버튼 스위치 설계 카운터
나는 다음과 같은 입력이 매우 간단한 카운터 설계 할 :
- 방향을
- 카운트
카운트 입력이 버튼에 할당 내가 계산하는 카운터를 원하는 것 버튼을 누를 때 방향 입력에 따라 위 또는 아래로 움직입니다. 이 전에 샘플 VHDL을 작성했습니다. 그것은 클럭 입력을 가졌고 그것은 클럭 입력에 따라 세고있었습니다. 이제는 동 기적으로 계산하는 대신 버튼을 누르면 계산됩니다.
여기에 (내 코드는 논리적 또는 기타 결함이 있으면 말씀 해주십시오) 내 VHDL 코드입니다 :
entity counter is
Port (COUNT_EN : in STD_LOGIC;
DIRECTION : in STD_LOGIC;
COUNT_OUT : out STD_LOGIC_VECTOR (3 downto 0));
end counter;
architecture Behavioral of counter is
signal count_int : std_logic_vector(3 downto 0) := "0000";
begin
process
begin
if COUNT_EN='1' then
if DIRECTION='1' then
count_int <= count_int + 1;
else
count_int <= count_int - 1;
end if;
end if;
end process;
COUNT_OUT <= count_int;
end Behavioral;
나는 스파르타 xc3s500e를 사용하고 난 그에 따라 입력을 두었다.
#Created by Constraints Editor (xc3s500e-fg320-5) - 2013/03/18
NET "COUNT_EN" LOC = K17;
NET "COUNT_OUT[0]" LOC = F12;
NET "COUNT_OUT[1]" LOC = E12;
NET "COUNT_OUT[2]" LOC = E11;
NET "COUNT_OUT[3]" LOC = F11;
NET "DIRECTION" LOC = L13;
#Created by Constraints Editor (xc3s500e-fg320-5) - 2013/03/18
NET "COUNT_EN" CLOCK_DEDICATED_ROUTE = FALSE;
나는 내가 오류가 발생했기 때문에 마지막 라인을 변경하는 데 필요한 :
This will not allow the use of the fast path between the IO and the Clock...
이 오류가 간 후에, 나는 장치를 프로그램 아래 내 .ucf 파일입니다. 그러나 출력 (leds)은 미친 듯이 행동했다. 그들은 때로는 몇 초 동안 그대로 서 있었고 때로는 매우 빠르게 깜박 거리기도했습니다. 나는 내 실수가 어디인지 알 수 없었다. 어떤 도움을 주시면 감사하겠습니다. 초보자 용 자습서를 많이 읽으 셨습니다. (링크를 통해 자일링스 문서에 대한 안내를 받았으며 초보자에게는 상당히 복잡해 보였습니다.)
나는이 게시물이 오래되었음을 알고 있지만, 여기 아래 그림에서 중요한 결함이 있습니다! 표시된 디 바운스 로직은 에지 감지입니다. 실제 디 바운스 로직은 글리치 (debouncing)에 대한 입력 신호를 필터링하기 위해 타이머와 FSM이 필요합니다. – Paebbels