디시설, 디지털시스템설계 실습과제 9주차 인하대
- 최초 등록일
- 2021.08.31
- 최종 저작일
- 2021.02
- 6페이지/
MS 워드
- 가격 1,500원
![할인쿠폰받기](/images/v4/document/ico_det_coupon.gif)
소개글
"디시설, 디지털시스템설계 실습과제 9주차 인하대"에 대한 내용입니다.
목차
1. shift register
2. shift register with parallel load
3. 결과분석 및 고찰
본문내용
첫번째 문제에선 flip flop을 사용해 shift register를 구현했다. 파라미터를 사용해서 register의 크기를 변경할 수 있게 했다. input으로 입력되는 신호는 1비트 sin으로 선언하여 serial하게 입력 받도록 설정했다. 구현부를 살펴보면 always 문을 사용했고, sensitivity list에 positive edge일 때 동작하도록 했고 negative edge에서 동작하는 reset_n 신호를 넣어 reset 신호가 clk 신호에 동기화되지 않도록 asynchronous하게 구현했다. reset_n이 negative edge에서 동작하므로 값이 0일 때 출력으로 N비트 0을 내보낸다. reset_n이 1일 경우 N비트 출력 qout에 새로이 입력된 데이터 sin 과 이전에 register에 저장되어 있던 데이터 중 최하위 LSB를 제외한 MSB부터 1항까지의 데이터를 concatenation 하여 입력해준다. 따라서 새로 입력된 sin 값을 출력 최상위 비트에 입력시키고 이전 data를 shift하는 register가 구현된다.
이제 테스트벤치를 살펴보자. 파라미터로 4를 사용해 4비트 출력을 받도록 했다. clk신호는 20ns마다 0과 1을 출력하도록 설정했고, serial 입력 sin 은 30ns 마다 0과 1을 출력하도록 설정했다. clk와 sin을 모두 0으로 초기화하고 reset_n 신호를 작동시켜 초기값을 0000으로 만들어준다.
waveform을 살펴보면 초기값이 0000으로 리셋 된 후 2번의 positive edge에서 sin의 값이 모두 0이므로 100ns 직전까지 출력 값이 0000인 것을 확인 할 수 있다. 이후 positive edge에서 sin의 값이 1이된 것을 확인할 수 있다. 따라서 출력으로 sin과 이전 qout의 상위3비트 000을 concatenation한 1000이 출력되었다.
참고 자료
없음