디시설, 디지털시스템설계 실습과제 12주차 인하대
- 최초 등록일
- 2021.08.31
- 최종 저작일
- 2021.01
- 8페이지/ MS 워드
- 가격 1,500원
소개글
"디시설, 디지털시스템설계 실습과제 12주차 인하대"에 대한 내용입니다.
목차
1. 32-bits ALU
2. 결과분석 및 고찰
본문내용
우선 모듈 코드부터 살펴보자. 1비트 모듈 ALU_1 과 ALU_2를 나누어서 작성했는데, ALU_1은 총 32개의 모듈 중 0번 ~ 30번까지 사용되며, ALU_2는 최상위 31번 모듈에 사용된다. 우선 ALU_1부터 보면 INPUT으로는 입력 값 a, b와 less신호, 감산을 위한 b_invert, c_in신호를 선언해주었다. OUTPUT으로는 c_out 과 result를 선언했다. ALU_op 신호를 사용해 수행할 연산을 선택하도록 작성했고 각 연산이 진행되고 나서 출력은 wire out_and, out_or, out_adder, out_less를 통해 MUX로 입력되도록 작성했다.
이제 ALU기능을 구현한 부분을 살펴보자. 모두 assign문을 사용해서 작성했다. AND연산과 OR연산은 그대로 표현해 주었다. 그리고 가감산 연산의 경우 b_invert신호를 입력으로 받아 연산을 진행하기 때문에 2의 보수연산으로 작성했다. b_invert신호로 1이 입력되면 감산을 진행하는데, 우선 b와 xor 연산을 진행해 1의 보수를 취한 값을 choice_b wire에 저장한다. 그리고 ALU_TOP모듈에서 c_in과 b_invert에 동일한 값을 할당해 주기 때문에 연산 구문 assign {c_out,out_adder} = a+choice_b+c_in 을 통해 감산연산이 진행된다(xor 후 + 1 = 2의 보수). b_invert로 0이 입력되면 choice_b는 그대로 b가 되고 c_in도 0이 입력되므로 가산연산이 진행된다. 이렇게 가감산 연산을 구현했다. less신호의 경우 입력된 a, b의 대소 비교를 위한 신호인데, TOP모듈에서 최하위 ALU를 제외하고는 모두 0이 입력된다. 최하위 ALU에는 최상위 ALU의 가감산 연산 값 (1 or 0)이 입력된다. 최상위 비트는 데이터의 부호를 나타내는데 0일 경우 양수, 1일 경우 음수를 나타낸다.
참고 자료
없음