VHDL Stop Watch를 이용한 스톱워치 설계
- 최초 등록일
- 2012.11.17
- 최종 저작일
- 2011.11
- 7페이지/ 한컴오피스
- 가격 1,500원
소개글
1 MSEC의 단위로 0~9999 Msec까지 범위의 작동하는 스톱워치를 설계하고 실제로 확인하라.
목차
1.실험 내용 및 목적
2.소스작성 및 분석
3.설계 VHDL Simulation값
4.Segment 동작사진
5.비고 및 소감
본문내용
- 도입부는 시작(ENTITY), 와 ARCHITECTURE 구분이 있으며 먼저 ENTITY문부터 설명하겠습니다.
ENTITY에서 4개의 버튼, 클럭을 입력으로 넣어주었으며 SEG와 SEG COM을 버퍼로 설정시켜 주었습니다. 하지만 출력 값 SEG 와 SEG_COM을 out이 아닌 Buffer로 넣어준 이유는 이 출력 값들이 가변하기 때문입니다. 다음으로 ARCHITECTURE에서는 먼저 FUNCTION으로 SEG_TEN 이라는 함수를 선언하고, 그 기능으로 CASE 문으로 SEG_DATA값을 넣어주었습니다.
<중 략>
- 마지막 버튼 설정입니다.SW_A는 STARTSTOP가 1로 두었고, 그러면 MSEC 기능에서 STARTSTOP이 1이므로 1씩 증가하는 카운터기능이 작동합니다. 다른 방법으로 SW_B는 STOP를 설정하였는데 STARTSTOP가 0이면 MSEC 기능에서 전체 부정이 되므로 동작이 안됩니다. 다음은 SW_C인데 SW_C는 MSEC 값이 0이면 작동이 중지됩니다. 따라서 예외 문으로 만들고, 그 외의 조건이면 STARTSTOP가 1이 되게하는 조건문을 작성하였습니다. 마지막으로 SW_D는 CLEAR인데 STARTSTOP은 0의 값을 가져야 합니다. 그런데 MSEC문에서 SW_D가 1이면이라는 ELSIF 조건문이 있습니다. 이것은 또 다른 SIGNAL로 CLEAR가 작동 됐는지 구분하는 변수를 따로 선언함으로써 MSEC안에 있는 조건문을 제거 할 수 있습니다. 예를 들어 SIGNAL에서 CLEARS라는 STD_LOGIC이라는 변수를 선언 하고 스위치 설정시 SW_D=1이라는 조건문에서 안에 CLEARS<=1;이라는 추가문장을 작성하고 MSEC 부분에 ELSIF 조건문에서 SW_D=1이라는 문장을 CLEARS=1로 대체하면 SW_D가 사라지고, 스위치 설정하는 부분에서는 스위치 설정 조건만 나오고 MSEC에서는 SW_D가SIGNAL CLEARS로 대체 되었으므로, MSEC 기능 중의 하나로 판단 할 수 있습니다.[SW_C에서 버튼은 하나만 눌리기 때문에 if문을 써서 어떤 하나가 눌리면 어떻게 동작한다는 형식으로 설계하였으며, COUNTINUE에서는 START와 다르게 설정하기 위해서 (처음에는 작동하지 않도록 설정) MSEC값이 0일 때. 즉, 0000일 때는 작동하지 않도록 ‘0’을 입력시키도록 했습니다.
참고 자료
없음