반응형
1011이 입력되면 1이 출력.
RESET : S0 초기화
S0 : 초기상태로 1011중 하나도 안들어온 상태
S1 : S0상태에서 1이 들어온 상태 (S0상태에서 0입력시 S0유지)
S2 : S0상태에서 10이 들어온 상태
S3 : S0상태에서 101이 들어온 상태
S4 : S0상태에서 1011이 들어온상태
2.소스코드 및 설명
12 : state 타입은 s0,s1,s2,s3,s4로 이루어진 것을 선언
13 : state타입의 present_state,next_state란 signal형 선언
19 : clk pulse가 상승신호일시
20 : rst=1 이면 present_state 는 s0
23 : 아닐 경우 present_state에 next_state를 전달해준다
28 : present_state와 D_in에관하여 process문
29,30 : next_state는 s0부터 시작한다.
32: present_state의 case문으로 present_state의 상태에따라 결정하는 조건문
33~62 : 각 s0,s1,s2,s3,s4의 상태에 대해서 입력값 D_iN이 1일 때와 0일 때 next_state가 어떤 값으로 가는지 state타입으로 적어준다, 1과 0에 따라 next_state가 변하므로 D_in에 대하여 하나의 입력신호에 대해서 if문을 사용하여 next_state를 정해주고 나머지 입력 신호에 대해선 else를 사용
63: 나머지의 경우에 대해선 next_state에 s0을 전달해준다,
67 : p2 단계에서 D_in의 입력 신호에따라 next_state를 present_state에 전달 해주 었다. p3단게에서는 present_state에 전달된 state type의 값을 기술해준다.
69~75 S0은 0이고,S1은 0,S2은 0,S3은 0,S4은 1 이값을 D_out에 전달해준다.
3.시뮬레이션 결과 및 설명
1. RST=1이므로 초기값은 s0이 되었다. 이제 clk pulse의 상승신호에 맞춰 상태가 변한다. 처음에 S0에서 D_in 0이 되었으므로 S0을 유지하고 그다음 clk pulse에서 0이므로 S0을 유지한다.
2. S0에서 CLK_PULSE에 맞춰 D_in에 값에 따라 S0 -> S1 (D_in 1)
S1 -> S2 (D_in 0) , S2-> S3(D_in 1), S3 -> S4(D_in 1) 까지 상태가 변하므로 S4에서 1이 검출된다. 1011일시 1이 검출된 것이다.
반응형
'VHDL' 카테고리의 다른 글
Coffe Vending Machine 설계(Meerly) (0) | 2021.06.09 |
---|---|
Coffe Vending Machine VHDL (Moore설계) (0) | 2021.06.09 |
램메모리 VHDL RAM(Random Access Memory) VHDL (0) | 2021.06.09 |
ROM memory (Read Only Memory) VHDL (0) | 2021.06.09 |
4비트 존슨 카운터(4bit johnson counter) (0) | 2021.06.09 |