디시설, 디지털시스템설계 실습과제 6주차 인하대
- 최초 등록일
- 2021.08.31
- 최종 저작일
- 2021.02
- 5페이지/
MS 워드
- 가격 1,500원
![할인쿠폰받기](/images/v4/document/ico_det_coupon.gif)
소개글
"디시설, 디지털시스템설계 실습과제 6주차 인하대"에 대한 내용입니다.
목차
없음
본문내용
If else 문을 사용한 mux부터 살펴보자. output을 reg 형으로 선언하는 것 외에 입출력선언은 structural, dataflow modeling 과 다른 것이 없다.
이제 구현부를 살펴보면 always문을 사용했는데 모든 input변화에 대해 작동해야 하므로 sensitive list는 모든 변수인 *를 사용했다. 이후 if문을 통해 s1이 1일시 바로 다음 문장을 실행하도록 했고, s1이 0일결우 else 문을 실행하도록 했다. s1이 1일 때 s0의 0, 1여부를 확인해 (10)일 경우 i2, (11)일 경우 i3를 출력한다. s1이 0일때는 s0의 0, 1여부를 확인해 (00)일 경우 i0, (01)일 경우 i1를 출력한다. 이렇게 mux구현이 완료된다.
출력 wave form을 확인해보자. 각 출력 값을 확인하기 쉽도록 테스트 벤치에서 i0 ~ i3의 값을 50ns 간격으로 설정하여 10ns 마다 각기 다른 값으로 초기화해 구분하기 편하게 했다. s0과 s1의 경우 s0은 50ns 마다 1을 더해주고 s1은 100ns 마다 1을 더해주어 50ns 마다 s0s1이 1씩 증가하도록 구현했다. 결과적으로 output을 확인해보면 s1s0이 00, 01, 10, 11일 때 mux기능이 잘 구현되는 것을 볼 수 있다.
이제 case 문을 사용한 mux를 보자. If else 문을 사용한 mux와 비교해보면 S를 [1:0]의 2비트 변수로 설정해줬고 구현부에서 S의 값을 직접 비교하여 i0 ~ i3 중 원하는 값을 선택하도록 구현했다. If else 문을 사용한 mux보다 간결하고 이해하기가 쉽다.
출력 wave form을 확인해보면 If else 문을 사용한 mux와 마찬가지로 i0 ~ i3을 세팅해줬고 결과적으로 output을 확인해보면 s1s0이 00, 01, 10, 11일 때 mux기능이 잘 구현되는 것을 볼 수 있다.
참고 자료
없음