VHDL 프로젝트, 볼링스코어 계산 시스템
- 최초 등록일
- 2008.04.13
- 최종 저작일
- 2006.06
- 26페이지/ 한컴오피스
- 가격 4,000원
소개글
내 용 : 쓰러진 볼링 핀의 개수를 입력받아 시스템이 시작하면 1프레임부터 10프레임까지의 입력신호들을 통하여 볼링 스코어 계산 규칙에 따라 점수를 계산하여 각 프레임의 현재 스코어 및 상태를 보여주고 최종스코어를 수정하여 10프레임까지 완료시 SEGMENT를 통해서 마지막 프레임의 스코어와 최종 점수를 확인할 수 있다. 단, 10프레임의 3회 이상의 스크라이크(터키,포베거)는 무시하기로 한다.
규 칙 :
- 볼이 핀에 닿기 전에 레인의 옆으로 빠졌을 때(거터) 또는 제 1 투구에서 남은 핀을 제 2투구에서 모두 쓰러뜨리지 못하고 남길 때(미스) 0점으로 한다.
- 스트라이크는 기본적인 점수 10점에 다음투구로 넘어진 핀과 그 다음에 넘어진 핀의 수를 더한 수가 점수가 됨.
- 스페어는 기본 점수 10점에 다음 투구로 쓰러진 핀의 수만 가산.
목차
1. Register Block (REG.vhd)
2. Strike or Spare? (STSP.vhd)
3. Past strike or spare? ()
4. Controller (SELECTOR.vhd)
5. Accumulator (BCD_ACCUM.vhd, BCD_ADDER.vhd, BCD_CONV.vhd)
- BCD_ACCUM.vhd
- BCD_ADDER.vhd
- BCD_CONV.vhd
6. Total Score (SCORE.vhd)
7. Frame Counter (COUNT.vhd)
8. Current -> Past (STATUS.vhd)
8. STATE MACHINE (SM.vhd)
8. Bowling Machine (BW_TOP.vhd)
본문내용
처음 상태도를 작성하기 위해서 볼링머신이 처해질 수 있는 상황들에 대해서 아래 그림 1 처럼 매우 복잡하게 그림을 그렸었다. 그러다 같은 동작을 수행하는 부분들을 하나로 합쳐나가면서 그림 2와 같이 총 6개의 상태로 축소시킬 수 있었다.
우리가 설계한 볼링 머신은 단순히 점수 계산 프로그램이다. 쉽게 말해서 그냥 덧셈을 하는 기계일 뿐이지만 점수를 계산하는 방법이 다르기 때문에 볼링머신이 처해있을 수 있는 상태를 잘 조절해서 덧셈을 하는 것이다. 그런데 위의 점수 계산 방법을 다시 보면 3개의 값을 더한다거나 4개의 값을 더하는 식이 많다. 이렇게 되면 덧셈을 반복적으로 수행해야 하기 때문에 전체점수를 계산할 때 단순히 더해서 저장하는 것이 아닌 방법을 채택하기로 했다.
<중략..>
library ieee;
use ieee.std_logic_1164.all;
entity REG is
port( NUM : in std_logic_vector(3 downto 0);
RESET : in std_logic;
THR : in std_logic;
CLK : in std_logic;
REG1 : out std_logic_vector(3 downto 0);
REG2 : out std_logic_vector(3 downto 0);
PIN : out std_logic_vector(3 downto 0));
end REG;
architecture RTL of REG is
signal reg1_l : std_logic_vector(3 downto 0);
signal reg2_l : std_logic_vector(3 downto 0);
signal cn_pin : std_logic_vector(3 downto 0);
begin
process(RESET, THR, NUM, CLK)
begin
if RESET = `1` then
참고 자료
없음