결과보고서 - NH800 을 위한 ALU Decoder
- 최초 등록일
- 2017.11.08
- 최종 저작일
- 2008.03
- 8페이지/
한컴오피스
- 가격 2,000원
![할인쿠폰받기](/images/v4/document/ico_det_coupon.gif)
목차
없음
본문내용
이번 실험은 코드는 작성하였지만, 세븐세그먼트 모듈과의 연동이 잘 안되어 HBE보드에 올려보지는 못하였으나 시뮬레이션을 해 본 결과 코드 자체에는 이상이 없는 것을 확인하였다.
전체 모듈을 만들기 위해서 먼저 하위 디코더들을 만들고, 그 다음 각각의 Type디코더를 만들었으며 이들을 포함하는 ALU디코더를 최종적으로 만들었다.
먼저 2-to-4 decoder를 만든다.
module decoder2_to_4(A,D);
// decoder2_to_4 모듈 선언, 변수는 A와 D
input [1:0] A; output [3:0] D;
// 입력은 2비트 A, 출력은 4비트 D
assign D[0]=~A[0]&~A[1];
assign D[1]=A[0]&~A[1];
assign D[2]=~A[0]&A[1];
assign D[3]=A[0]&A[1];
// 우측의 그림처럼 NOT게이트를 이용하여(비트연산
자~) 입력 신호와 묶어주면 디코더가 완성된다.
endmodule // 모듈 종료
다음은 3-to-8 decoder 이다. 앞에서 만든 2-to-4 decoder 두 개를 이용하여 만든다.
module decoder3_to_8(A, D);
// decoder3_to_8 모듈 선언, 변수는 A와 D
input [2:0] A; output [7:0] D;
// 입력은 3비트 A, 출력은 8비트 D
wire [3:0] w1, w2;
// 3비트 와이어 w1, w2 선언
decoder2_to_4 D2to4_1 (A, w1);
decoder2_to_4 D2to4_2 (A, w2);
// 2-to-4 디코더 두 개에서 나오는 출력을 각각 w1, w2와이어로 보내준 후
assign D[3:0]=w1&{4{~A[2]}};
assign D[7:4]=w2&{4{A[2]}};
// 각각 A2, ~A2와 AND연산을 하여 한쪽이 살면 다른 쪽이 죽도록 만든다. 와이어는 4비트이고 A2는 1비트이므로 {4{A[2]}}처럼 4비트로 복제해 주어야 한다.
endmodule // 모듈 종료
참고 자료
없음