논리회로설계실험 10주차 up down counter설계
본 내용은
"
논리회로설계실험 10주차 up down counter설계
"
의 원문 자료에서 일부 인용된 것입니다.
2023.09.12
문서 내 토픽
  • 1. Moore machine
    Moore machine의 가장 큰 특징은 output이 current state에 의해서만 결정된다는 것이다. 이러한 특징을 이용하여 3-bit up-down counter를 Moore machine-style diagram으로 그려보았다. 오른쪽의 diagram과 같이 current state에 의해서만 output이 결정되는 Moore machine-style diagram이 그려진다. Input으로 reset, mode가 필요하며, output으로는 next_state가 필요하다. S0부터 S7까지 총 8개의 state가 필요할 것이므로 3-bit의 state가 필요하고, output과 next_state도 마찬가지로 3-bit가 필요할 것이다.
  • 2. Mealy machine
    Mealy machine은 current state와 input에 의해서 output이 결정된다. 이러한 특징을 이용하여 3-bit up-down counter를 Moore machine-style diagram으로 그려보았다. 오른쪽의 diagram과 같이 current state와 input으로 output이 결정되는 Mealy machine-style diagram이 그려진다. Input으로 reset, mode가 필요하며, output으로는 state와 output이 필요하다. S0부터 S7까지 총 8개의 state가 필요할 것이므로 3-bit의 state가 필요하고, output도 마찬가지로 3-bit가 필요할 것이다.
  • 3. Moore machine 구현
    Moore-machine style로 3-bit up-down counter를 구현한 코드는 위와 같다. Input에는 clk, rst, mode를 입력할 수 있고, output으로는 3-bit의 out, state, next_state를 설정하였으며, reg에도 동일하게 두었다. State를 구분하기 위한 Parameter은 S0~S7까지 설정하였고, 각각 0~7의 숫자로 두었다. 먼저 output은 Moore machine의 특성상 current state에만 의존하여 정해진다. 따라서 always @ (state)로 always 구문을 작성하였고, 그 아래로 현재의 state에 따라 output을 어떻게 출력할 지 구현하였다. 그 다음으로는 current state를 update하는 코드를 작성하는데 clk이 posedge일 때 RESET = 1 인 경우를 제외하고 state가 next_state의 값으로 update 되도록 구현하였다. 마지막으로 next_state를 update하는 코드를 작성하였다.
  • 4. Mealy machine 구현
    Mealy-machine style로 3-bit up-down counter를 구현한 코드는 위와 같다. Input에는 clk, rst, mode를 입력할 수 있고, output으로는 3-bit의 out, state를 설정하였으며, reg에도 동일하게 두었다. State를 구분하기 위한 Parameter은 S0~S7까지 설정하였고, 각각 0~7의 숫자로 두었다. 먼저 output은 Mealy machine의 특성상 current state와 input에 의존하여 정해진다. 따라서 always @ (state or mode)로 always 구문을 작성하였고, 그 아래로 mode값과 현재의 state에 따라 output을 어떻게 출력할 지 if문과 case문을 사용하여 구현하였다. 그 다음으로 작성한 코드는 다음 state를 결정하는 코드이다.
  • 5. Testbench 구현
    Testbench code의 input에는 Moore counter와 Mealy counter 둘 다 reg로 RESET, MODE를 선언하였다. output에는 Moore counter에서는 OUT, STATE, NEXT_STATE를 wire로, Mealy counter에서는 OUT, STATE를 wire로 선언하였다. Module instantiation 부분에서는 구현한 두가지의 Moore counter, Mealy counter의 module을 선언하였다. RESET과 MODE의 초기값을 지정하는 부분에서는 Moore과 Mealy 둘 다 RESET 초기값은 1'b1, MODE의 초기값은 1'b0으로 설정하였다. 또한 test pattern 코드에서는 1'b1이던 Moore과 Mealy의 RESET값을 1'b0으로 바꾼다. 그 후, Moore과 Mealy의 MODE값을 1로 150ns동안 유지하고, 그 후엔 MODE값을 다시 0으로 유지하게 test pattern을 구현해보았다.
  • 6. Moore machine 실행 결과
    위의 그래프는 Moore-machine style로 3-bit up-down counter를 구현하여 simulation 결과 출력된 wave이다. 가장 위에는 CLK의 파형이고 그 아래는 RESET, MODE, OUT, STATE, NEXT_STATE의 wave이다. 170ns 이전까지는 RESET = 1이므로 output은 000이 출력된다. 이후에 RESET = 0이 되고 이때 MODE = 0 이므로 000에서 down되어 111이 출력된다. 이후로 111, 110, 101, 100 … 000으로 계속 down동작이 이어지다가 320ns에 MODE = 1로 바뀌고 000부터 001, 010, 011…111로 up 동작이 이어진다. 이후에 470ns이후에 MODE = 0으로 바뀌고나서 다시 down 동작이 일어난다. Moore machine으로 설계한 module은 OUT이 현재의 State에만 의존하므로 바로 바뀌지 않고 Clock의 Positive edge에서 OUT이 바뀌는 모습을 관찰할 수 있다.
  • 7. Mealy machine 실행 결과
    위의 그래프는 Moore-machine style로 3-bit up-down counter를 구현하여 simulation 결과 출력된 wave이다. 가장 위에는 CLK의 파형이고 그 아래는 RESET, MODE, OUT, STATE의 wave이다. 170ns 이전까지는 RESET = 1이므로 output은 000이 출력된다. 이후에 RESET = 0이 되고 이때 MODE = 0 이므로 000에서 down되어 111이 출력된다. 이후로 111, 110, 101, 100 … 000으로 계속 down동작이 이어지다가 320ns에 MODE = 1로 바뀌고 000부터 001, 010, 011…111로 up 동작이 이어진다. 이후에 470ns이후에 MODE = 0으로 바뀌고나서 다시 down 동작이 일어난다. Mealy machine으로 설계한 module은 OUT이 현재 State와 MODE 둘의 조합에 따라 결정되므로 320ns에서 바로 up counter의 동작이 OUT으로 나타나는 것을 확인할 수 있다.
  • 8. 실습 결과 및 고찰
    이번 실습에서는 Moore machine-style과 Mealy machine-style 두가지로 3-bit up-down counter를 구현해보았다. 코드를 작성하기전에 각 machine-style diagram을 직접 그려보고 참고하였고 3-bit up-down counter를 좀 더 쉽게 구현할 수 있었다. 구현한 두개의 modeling을 Modelsim의 simulation을 이용하여 출력되는 wave를 확인하였더니 두가지 3-bit up-down counter모두 정상적으로 작동함을 알 수 있었다. 이번 실습에서는 FSM type중 하나인 Moore machine과 Mealy machine에 대한 더욱 깊은 이해를 할 수 있었으며 이들의 동작 방식에 대한 이론을 바탕으로 3-bit up-down counter를 설계해보며 이전 실습시간에 다루었던 counter를 복습할 수 있는 기회가 되었다는 점에서 이번 실습의 의의가 있다.
Easy AI와 토픽 톺아보기
  • 1. Moore machine
    Moore machine은 유한 상태 기계(FSM)의 한 종류로, 출력이 현재 상태에만 의존하는 특징을 가지고 있습니다. 이는 Mealy machine과 달리 출력이 현재 상태와 입력에 모두 의존하는 것과 구분됩니다. Moore machine은 상태 천이 다이어그램을 통해 쉽게 설계할 수 있으며, 구현이 상대적으로 간단합니다. 또한 출력이 안정적이라는 장점이 있어 제어 시스템 등에 널리 사용됩니다. 하지만 Mealy machine에 비해 상태 수가 많아질 수 있다는 단점이 있습니다.
  • 2. Mealy machine
    Mealy machine은 유한 상태 기계(FSM)의 한 종류로, 출력이 현재 상태와 입력에 모두 의존하는 특징을 가지고 있습니다. 이는 Moore machine과 달리 출력이 현재 상태에만 의존하는 것과 구분됩니다. Mealy machine은 상태 천이 다이어그램을 통해 설계할 수 있으며, 상태 수가 Moore machine에 비해 적다는 장점이 있습니다. 또한 입력에 따라 출력이 달라질 수 있어 더 복잡한 동작을 구현할 수 있습니다. 하지만 출력이 불안정할 수 있다는 단점이 있어 제어 시스템 등에서는 Moore machine이 더 선호되기도 합니다.
  • 3. Moore machine 구현
    Moore machine을 구현하기 위해서는 상태 천이 다이어그램을 설계하고, 이를 바탕으로 상태 천이 로직과 출력 로직을 구현해야 합니다. 상태 천이 로직은 현재 상태와 입력에 따라 다음 상태를 결정하는 것이며, 출력 로직은 현재 상태에 따라 출력을 결정하는 것입니다. 이를 위해 상태 레지스터와 조합 논리 회로를 사용하여 구현할 수 있습니다. 또한 상태 천이 다이어그램을 바탕으로 상태 천이 테이블을 작성하면 구현이 더 용이해질 수 있습니다. Moore machine은 구현이 상대적으로 간단하지만, 상태 수가 많아질수록 복잡도가 증가할 수 있습니다.
  • 4. Mealy machine 구현
    Mealy machine을 구현하기 위해서는 상태 천이 다이어그램을 설계하고, 이를 바탕으로 상태 천이 로직과 출력 로직을 구현해야 합니다. 상태 천이 로직은 현재 상태와 입력에 따라 다음 상태를 결정하는 것이며, 출력 로직은 현재 상태와 입력에 따라 출력을 결정하는 것입니다. 이를 위해 상태 레지스터와 조합 논리 회로를 사용하여 구현할 수 있습니다. 또한 상태 천이 다이어그램을 바탕으로 상태 천이 테이블을 작성하면 구현이 더 용이해질 수 있습니다. Mealy machine은 Moore machine에 비해 상태 수가 적지만, 출력 로직이 복잡해질 수 있다는 단점이 있습니다.
  • 5. Testbench 구현
    유한 상태 기계(FSM)인 Moore machine과 Mealy machine을 검증하기 위해서는 Testbench를 구현해야 합니다. Testbench는 입력 시퀀스를 생성하고, 출력을 모니터링하여 FSM의 동작을 검증하는 역할을 합니다. 이를 위해 입력 시퀀스 생성기, 출력 모니터링 로직, 그리고 검증 결과 확인 등의 기능이 필요합니다. 또한 다양한 입력 시퀀스와 초기 상태를 고려하여 충분한 테스트 케이스를 작성해야 합니다. Testbench 구현은 FSM의 정확한 동작을 검증하는 데 필수적이며, 디버깅 및 최적화에도 활용될 수 있습니다.
  • 6. Moore machine 실행 결과
    Moore machine의 실행 결과를 확인하기 위해서는 Testbench를 통해 다양한 입력 시퀀스를 적용하고, 출력 동작을 관찰해야 합니다. Moore machine은 출력이 현재 상태에만 의존하므로, 상태 천이 다이어그램에 따라 예측 가능한 출력 동작을 보일 것입니다. 실행 결과를 통해 Moore machine의 상태 천이 로직과 출력 로직이 올바르게 구현되었는지 확인할 수 있습니다. 또한 다양한 입력 시퀀스에 대한 출력 동작을 관찰하여 Moore machine의 동작을 종합적으로 검증할 수 있습니다.
  • 7. Mealy machine 실행 결과
    Mealy machine의 실행 결과를 확인하기 위해서는 Testbench를 통해 다양한 입력 시퀀스를 적용하고, 출력 동작을 관찰해야 합니다. Mealy machine은 출력이 현재 상태와 입력에 모두 의존하므로, 상태 천이 다이어그램에 따라 예측 가능한 출력 동작을 보일 것입니다. 실행 결과를 통해 Mealy machine의 상태 천이 로직과 출력 로직이 올바르게 구현되었는지 확인할 수 있습니다. 또한 다양한 입력 시퀀스에 대한 출력 동작을 관찰하여 Mealy machine의 동작을 종합적으로 검증할 수 있습니다.
  • 8. 실습 결과 및 고찰
    이번 실습을 통해 Moore machine과 Mealy machine의 특성과 구현 방법을 이해할 수 있었습니다. Moore machine은 상태 천이 다이어그램이 간단하고 출력이 안정적이라는 장점이 있지만, 상태 수가 많아질수록 복잡도가 증가할 수 있습니다. 반면 Mealy machine은 상태 수가 적고 더 복잡한 동작을 구현할 수 있지만, 출력이 불안정할 수 있다는 단점이 있습니다. 이번 실습을 통해 각 FSM의 특성을 이해하고, 주어진 문제에 적합한 FSM을 선택할 수 있는 능력을 기를 수 있었습니다. 또한 Testbench 구현을 통해 FSM의 동작을 체계적으로 검증하는 방법을 익힐 수 있었습니다.
주제 연관 리포트도 확인해 보세요!