-
[디지털시스템] Design synchronous sequence detector which detects “0101” or “0110” sequenceDream/전공과목 (전전) 2020. 9. 13. 02:19
1) Condition:
1. Use mealy machine structure
2. If the input sequence “0101” or “0110” occurs, an output of two successive 1’s will occer
3. the firs of these 1s should occur coincident with the last input of the “0101” or “0110”sequence.
4. the circuit should reset when the second 1 outpout occurs.
2) Source code
주어진 조건에 맞춰 state diagram을 참고해 sequence detector를 설계하면 위와 같이 나올 것이다. 이때 mealy machine으로 설계를 해야하므로 clock을 설정해줘야 함을 잊지 말도록 하자. 또한 case문을 활용해서 각각의 state의 상황에 따라 다른 nextstate와 출력을 가지도록 설계하였다.
3) Test Bench
4) Wave form
5) 고찰
이번 과제는 앞서 수업시간에 배웠던 16-to-1 MUX와 mealy machine을 behavioral modeling이나 structural modeling등과 같은 다양한 방법으로 설계해보는 과제였다. 4-to-1 MUX는 로직이 간단하고 또 많이 접해봤는지라 이번 과제도 금방 수월하게 할 수 있을 것이라고 생각하였으나 16-to-1 MUX를 막상 설계해보니 어려운 점이 많았다. 우선 설계를 함에 있어 세미콜론이나 signal 연결을 안해주는 등 기본적인 문법 실수가 많이 나와 계속해서 Synthesize 오류가 떴었다. 사실 중간고사도 쳤고 이쯤 되면 vhdl 코딩에 대해 조금은 잘한다고 생각했었으나 오늘 설계를 하면서 ‘아직 나는 어설프게 알고 있구나. 더 공부해야겠다.’ 라고 느꼈다. 또 설계 시에 주로 process를 이용하여 설계를 많이 하다보니 process가 없는 MUX를 설계하는데 바로 설계방법이 떠오르지 않았다. 그래서 인터넷과 책을 찾아보면서 이를 해결하였다. 테스트 벤치를 구성할 때에도 제어입력 s의 값을 어떻게 변화시켜야 할지 등 생각보다 설계를 함에 있어 시간이 오래 걸렸다. 또 structural modeling을 통해 16-to-1 MUX를 설계할 때에도 다른 점은 크게 어려움이 없었으나 main 함수 안에서 4-to-1 MUX를 5개를 배치해야함을 몰라 설계 시에 어려움을 겪었었다. 그래서 수업을 같이 듣는 친구에게 물어보니 MUX를 4개가 아닌 5개로 해야 한다고 알려주었고 곧 이를 해결하였다.
이외에도 Mealy machine을 설계할 때 clock을 설정해줘야함을 까먹어 synthesize 오류가 나고 실행이 되지 않았다. 코드를 곰곰이 살펴보다가 이내 clock이 없음을 발견하고 clock을 넣어준 결과 원하는 결과값을 얻어낼 수 있었다. 저번 과제 때 보다는 확실히 훨씬 실력이 늘었음을 느끼고 있지만 아직 많은 부분에서 부족함과 어설픔을 느끼고 있다. 앞으로 더 많은 설계 과제와 다양한 예제들을 통해 연습과 노력을 게을리하지 않는다면 이는 곧 극복할 수 있을것이라고 생각한다. 오늘 설계를 통해서 다시 한 번 behavioral modeling과 structural modeling 그리고 mealy machine과 moore machine까지 복습하게 되는 계기가 되었다. 또한 mealy machine으로 sequence detector를 만들었는데 설계를 하면서 이를 그냥 코딩뿐이아닌 실제 반도체 소자로 만들어보고 싶다고도 생각하였다.
'Dream > 전공과목 (전전)' 카테고리의 다른 글
[디지털시스템] Procedure를 이용한 설계 - n-bit vector 내의 1의 개수를 출력하는 Numones procedure (0) 2020.09.13 [디지털시스템] Function을 이용한 설계 - n-bit vector의 2의 보수 형태를 출력하는 코드 (0) 2020.09.13 [디지털시스템] Design 16-to-1 Multiplexer with 4-to-1 Multiplexer (0) 2020.09.13 [디지털시스템] Design 16-to-1 Multiplexer without process statement (0) 2020.09.13 [디지털시스템] Design AND, OR and XOR gates. (0) 2020.09.13