[verilog]BCD 덧셈기와 Finite state machine을 사용하는 간단한 게임기 설계
- 최초 등록일
- 2013.12.26
- 최종 저작일
- 2011.11
- 17페이지/
압축파일
- 가격 5,000원
![할인쿠폰받기](/images/v4/document/ico_det_coupon.gif)
소개글
BCD 덧셈기와 Finite state machine을 사용하는 간단한 게임기 설계
쿼터스를 이용하여 verilog로 설계하였습니다.
시작버턴을 눌러서 랜덤으로 선택된 세자리 숫자 2개를 더하여 지정된 범위 안에 들어오면 이기는 게임입니다.
필요한 모든 쿼터스 파일, 파형 파일이 첨가 되어 있습니다.
보고서에 제작에 관련된 모든 것(플로우 차트, 상태도, 검증, 고찰)이 포함되어 있습니다.
정확히 동작이 되며, 교수님께 보고서 우수로 칭찬받은 프로젝트입니다.
감사합니다.
목차
1. 3비트 BCD 덧셈기 설계
(1) 1비트 BCD 덧셈기 설계
(2) 1비트 BCD 덧셈기를 이용한 3자리 BCD 가산기 설계
2. 3자리수 BCD 카운터 설계 (카운터 인에이블, tc, 비동기 리셋 포함)
(1) 1자리 BCD 카운터 설계
(2) 1자리 BCD 카운터를 이용한 3자리 BCD 카운터 설계(BCD3DIG)
(3) 6자리 BCD 카운터 설계 (3자리 BCD 카운터 2개 연결)
-상위 3자리(HI_CNT)와 하위 3자리 BCD(LO_CNT) 덧셈 기능 추가
3. BCD 게임 설계
(1) Flow-Chart
(2) 상태도
(3) 7-Segment Decoder 설계
(4) BCD 게임 종합 설계
(5) RTL-Viewer
(6) 핀 할당 내용
4. 동작 검증
5. 고찰
본문내용
●BCD 1자리는 4비트로 구성되기 때문에 입력 값을 4비트로 받는다.
●BCD 1자리와 1자리를 더해서 캐리가 발생하면 cout에 저장한다.
●보정 여부를 결정하기 위해서 덧셈의 임시 저장 값(sum_temp)을 5비트로 지정하였다.
●덧셈을 하여 9가 넘으면 6을 더해서 보정하게 된다. 캐리가 발생하기 때문에 캐리 값을 1로 설정한다.( cout = 1)
●그 외에는 덧셈 값을 그대로 사용하고 캐리 값은 0으로 설정한다. (cout=0)
●임시 저장 값 sum_temp)은 5비트인데 이 중 최상위 비트는 보정 여부를 판단하기 위해 사용하였으므로 값을 버리고 4비트 값만 sum에 저장하게 된다.
<중 략>
(1) Go 입력에 대한 PB 스위치를 누르면 BCD 카운터가 동작한다. (초기 Idle 상태)
(2) Go SW를 떼면 두 개의 카운터 출력을 BCD 덧셈기로 더한 값을 레지스터에 저장한다. 이 레지스터를 PR (Point Register)라 명명한다. PR 레지스터는 4비트(BCD값 저장)로 3자리수이고 캐리는 버린다.
(3) PR 레지스터의 값이 설정 값 (GUESS) (예 : High=550 ~ Low=400)안에 들어오면 게임에 이긴다 (win 상태). WIN LED를 ON하여 게임에 이긴 것을 표시한다. go 스위치를 누르면 다시 게임의 초기 상태로 돌아간다. 설정값의 범위를 좁게 할수록 처음시도에서 win 하기가 어렵다.
(4) PR이 GUESS 값의 Low 보다 작은 값이면 게임에 진다(lose상태). LOSE LED를 ON하여 게임에 진 것을 표시한다. go 스위치를 누르면 다시 게임의 초기 상태로 돌아간다.
(5) PR이 GUESS 값의 High 보다 크면 다시 go SW를 눌러 카운터를 동작시킨다. 이때 PR은 처음 저장된 값을 그대로 유지하고 있어야 한다. 카운터의 합이 GUESS 범위 안에 들어오면 게임은 WIN 상태로 가고, 그 외의 모든 경우는 LOSE 상태로 가서 게임은 종료된다.
(6) Win이나 Lose 상태에서는 상태를 그대로 유지하다가, Reset 신호를 누르면 idle 상태로 가고, go SW를 눌러 게임이 시작되기를 기다린다. (초기상태는 모든 레지스터 0 )
참고 자료
없음
압축파일 내 파일목록
bcdgame.sof
bcdgame.v
bcdgame.vwf
rpt4.hwp
segment_dec.v
segment_disp.v
bcd_adder1.v
bcd_adder3.v
bcd_adder3.vwf
bcd_cnt1.v
BCD3DIG.v
BCD6.v
BCD6.vwf
bcdgame.qpf
bcdgame.qsf
bcdgame.qws