VHDL을 활용한 자동판매기(자판기Vending Machine) 논리회로설계
본 자료는 7페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
해당 자료는 7페이지 까지만 미리보기를 제공합니다.
7페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

VHDL을 활용한 자동판매기(자판기Vending Machine) 논리회로설계에 대한 보고서 자료입니다.

목차

1.개요
-VHDL언어란
2. Term Project주제
-구현방법
-구현내용
3.구현과정
-동작 알고리즘
-기본 동작
-VHDL 코드
4.시나리오
5.검토 및 고찰

본문내용

re100 <= '0';
re500 <= '0';
cnt1 :=1;
state <=sum650;
else
state <=sum650;
end if;
if(cnt=1) then--return기능으로 잔돈반환
re50 <= '0';
re100 <= '0';
re500 <= '1';
state <= sum150;
elsif(cnt1=2) then --차액으로 인한 잔돈반환
re50 <= '0';
re100 <= '0';
re500 <= '1';
cnt1 :=3;
state <=sum0;
elsif(cnt1=5) then--차액으로 인한 잔돈반환
re50 <= '0';
re100 <= '1';
re500 <= '0';
cnt1 :=3;
state <=sum0;
elsif(cnt1=7) then--차액으로 인한 잔돈반환
re50 <= '1';
re100 <= '0';
re500 <= '0';
cnt1 :=3;
state <=sum0;
end if;
if(coffee = '1' and cocoa = '0') then--커피,코코아 출력 기능
coffee_out <= '1';
cocoa_out <= '0';
state <= sum500;
elsif(coffee = '0' and cocoa = '1') then
coffee_out <= '0';
cocoa_out <= '1';
state <= sum350;
else
coffee_out <= '0';
cocoa_out <= '0';
end if;
--세가지 초과 경우, 변수값다르게설정
if(cnt1=1) then--차액 return위한 변수 증가
cnt1 := cnt1+1;
elsif(cnt1=4) then--차액 return위한 변수 증가
cnt1 := cnt1+1;
elsif(cnt1=6) then--차액 return위한 변수 증가
cnt1 := cnt1+1;
end if;
end case;
end if;
end process;
end behavioral;
4. 시나리오
4-1) 500원 1번 + 100원 1번 + 500원 1번 + 반환
4-1-1) 500원과 100원이 입력되었을 때 -> 600원상태
4-1-2) 600원상태에서 500원 입력 -> 650원 상태 -> 450원 반환
4-1-3) 반환버튼 -> 650원 반환
4-2) 500원 1번 + 100원 1번 + 커피 1번 + 코코아 1번 + 반환
4-2-1) 500원과 100원 입력으로 600원 상태
4-2-2) 커피 버튼 입력 -> 커피출력 -> 450상태
4-2-3) 코코아 버튼 입력 -> 코코아출력 -> 150상태
4-2-4) 반환 버튼 입력 -> 150원 출력
4-3) 4-2 시나리오에서 res버튼 입력 추가
4-3-1) 500원과 100원 입력으로 600원 상태
4-3-2) 커피 버튼 입력 -> 커피출력 -> 450상태
4-3-3) 코코아 버튼 입력 -> 코코아출력 -> 150상태
4-3-4) 초기화 버튼 입력 -> 모두 0인 상태
4-3-5) 반환 버튼 입력 -> 동작 X -> 초기화해서 모든 상태가 0이기 때문
5. 검토 및 고찰
디지털 논리회로에서의 설계는 조합논리회로와 순서논리회로를 사용한 설계로 나눌수 있습니다. Vending Machine과 같이 조합논리회로를 사용해서는 표현하지 못하거나 어려운 부분을 순서논리회로를 사용하여 표현하면 보다 정확하게 표현이 가능했습니다. 이 과정에서 순서논리회로의 기억소자의 강점을 알게 되었으며, 이때 기억소자(FF, Latch)를 활용한 Vending Machine 설계를 상태머신을 통해 구현하였습니다. 상태머신 설계에 앞서 동작 알고리즘을 작성한 뒤에 각각의 상태에서 동작 알고리즘을 만족하도록 코딩을 시작했습니다. 무작정 코딩을 통해 구현하는 방법보다는 정해진 순서를 통해 구하는 방법이 수월하였습니다. 상태 변수 할당 및 VHDL 문법을 통한 코딩을 하였는데 그 과정에 크고, 작은 오류가 발생하였습니다. 가장 큰 오류는 코딩을 다 한 뒤에 Simulation을 통해 확인하는 과정에서 발견되었습니다. 첫째, 하나의 CLK에서는 한번의 동작만 가능한데 이를 인지하지 못하고, 한 CLK에 모든 잔돈을 반환하려니 반환금액이 명확하지 못한 문제가 발생하였습니다. 그래서 CLK 1번당 1회의 동작을 하며, Simulation에서의 out signal인 re50, re100, re500의 상태(High, Low)를 보고 총 금액을 알 수 있게 수정하였습니다. 이로인해 코딩을 처음부터 다시 하는 결과를 가져다주게 되었지만 그 과정에서 실제 사용가능한 기계 설계시에 고려해야 될 점들을 하나 둘씩 알아가는 계기가 되었습니다. 둘째, 잔돈반환에 대해 코딩중 잔돈반환을 한뒤에 State를 이동하는 과정에서 원상태와 엇갈려 버리는 과정이 있었는데 이 문제는 잔돈반환을 위한 특정 변수를 생성한 뒤 코딩을 하여 해결하였습니다. 셋째, VHDL내에서의 문법의 정확한 이해가 부족하여 문법에 관한 문제가 발생하였습니다. if문내에서 else내에서 state의 상태를 지시했을 때 if의 조건이 아닐시 else 의 상태로 가는 것을 고려하지 못해 발생한 문제가 있었으며 해결하였습니다. 덧붙여 커피, 코코아의 경우 버튼을 누르면 바로 출력이 되게 구성하였는데 그 이유는 잔돈반환처럼 상태를 다시 기억하여 출력할 필요가 없다고 생각되어 이렇게 구성을 하였습니다.
이번 Term Project를 수행하면서 VHDL을 통한 하드웨어 구현을 통해 기존의 인식을 바꾸는 계기가 되었습니다. 하드웨어를 설계하는 즉 회로도 설계가 PCB를 통한 기판에 설계하는 것이 다 인줄 알았습니다. 원하는 기능을 하는 부품이 시중에 없을 때 자신이 직접 만들어 사용할 수 있는 것, 원하는 기능을 하는 회로를 표현하는 것, 컴퓨터를 통해 구현하는 것은 보이지 않을 뿐이지만 이 또한 코딩으로 인해 회로를 기판에 표현하는 것과 같은 것 같습니다. 회도로를 이용한 설계보다 코딩으로 기술 가능한 점, Simulation을 통해 오류를 찾기 쉬운점, 정확한 논리식이 불필요하고 알고리즘에 의해 구현가능한 점, 쉽게 수정 가능한 점을 이번 Term Project를 통해 느끼게 되었습니다.
  • 가격10,000
  • 페이지수21페이지
  • 등록일2018.06.21
  • 저작시기2018.6
  • 파일형식한글(hwp)
  • 자료번호#1057464
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니