베릴로그 카운터 및 FSM을 이용한 프로젝트 ( 콜라 자판기 )
- 최초 등록일
- 2007.09.13
- 최종 저작일
- 2006.10
- 3페이지/ 압축파일
- 가격 5,000원
소개글
카운터 및 FSM의 원리를 사용하여 베릴로그 tool으로 시뮬레이션 한 프로젝트 입니다
프로젝트에 대한 설명으로 1.한글파일과 2.테스트벤치, 3.DUT 파일을 첨부하였습니다
원하신다면 발표자료(PPT)를 보내드리도록 하겠습니다
목차
1. 서론
2. 본론
(CODE 설명)
3. 구현방법 및 실험결과
4. $monitor 구문의 결과
5. 타이밍도
6. 결과
7. 참고문헌
본문내용
1. 서론
입력은 2비트 2진수로 정의한다.
입력은 총 세 가지 경우가 있다.
X0 = 2`b00 (동전을 넣지 않음)
X5 = 2`b01 (50센트 투입)
X10 = 2`b10 (1달러 투입)
출력은 1비트 2진수로 정의하며
출력은 총 두 가지 경우가 있다.
coke=1`b0 (콜라 출력 x)
coke=1‘b1 (콜라 출력)
FSM 내에 네 가지 상태가 존재하는데
S=0 (0달러)
S=5 (50센트)
S=10 (1달러)
로 각각 정의한다.
2. 본론
동전을 넣으면 2비트 신호 coin[1:0]을 디지털 회로에 보낸다. 그 신호는 전체 클락 신호의 다음 하강 에지에서 동작한다. FSM을 리셋시키기 위해 RESET 신호를 사용한다.
그림 1은 유한 상태 기계의 state diagram을 보여준다. FSM 내의 각각의 원에 입력값이 2비트이고 출력값이 1비트인 <INPUT>/<OUTPUT> 라벨이 붙여져 있다.
각각의 상태에서 입력값에 따라 출력값을 가지며 S15 상태에는 무조건 출력이 된다.
Verilog는 키워드 parameter로 모듈 내에서 상수를 정의할 수 있다. 각 모듈 인스턴스의 파라미터 값은 컴파일 시 개별적으로 대치될 수 있는데 각각의 parameter를 사용함으로써 상태를 부호화 한다.
parameter S0 = 2`b00;
parameter S5 = 2`b01;
parameter S10 = 2`b10;
parameter S15 = 2`b11;
FSM을 정의하기 위해 “function [2:0] fsm” 구문을 쓴다. fsm 함수를 썼을 때와 쓰지 않았을 때를 비교하면 함수를 선언하고 그에 따른 input과 reg를 다시 설정해야 한다, 그리고 각각의 입력값에 따른 결과값을 써야 하기 때문에 쓰지 않았을 때보다 눈으로 봐도 복잡해 보이며 코드의 양도 훨씬 길어지게 된다. 하지만 이번 프로젝트에는 사용하였다.
각각의 상태를 고려하여 case 구문을 사용한다.
S0, S5, S10, S15 각각의 입력의 세 가지 경우를 생각하며 그에 따른 출력값을 고려해 준다.
결과값을 화면에 나타내기 위해
$monitor("%d %d %d", $time, coin,reset, coke);
구문을 사용한다.
참고 자료
없음
압축파일 내 파일목록
tb_vend.v
vend.v
설명.hwp