4 / 36 · 개념
디코더와 인에이블
이진 주소를 한 개의 활성 출력으로 바꿉니다.
내용은 무료로 볼 수 있습니다. 수강 신청하면 학습 기록을 저장할 수 있어요.
학습 목표
- 2비트 주소로 네 출력을 선택합니다.
- 비활성 상태의 출력을 명시합니다.
주소 하나가 출력 하나를 고릅니다.
2-to-4 디코더는 주소 00, 01, 10, 11을 각각 0001, 0010, 0100, 1000으로 바꿉니다. 벡터를 y[3:0]으로 쓰면 오른쪽 끝이 y[0]입니다.
en=0일 때는 0000으로 정의합니다. 따라서 항상 하나가 켜지는 것이 아니라 en=1일 때만 정확히 하나가 켜집니다. 이 조건까지 검증 규칙에 포함하세요.
always_comb begin
y = 4'b0000;
if (en) begin
case (address)
2'b00: y = 4'b0001;
2'b01: y = 4'b0010;
2'b10: y = 4'b0100;
2'b11: y = 4'b1000;
default: y = 4'b0000;
endcase
end
end모든 경로에 값을 대입하세요.
조합 회로의 출력은 현재 입력만으로 정해져야 합니다. 먼저 기본값 0000을 대입하면 en=0인 경로도 정의됩니다. 대입을 빠뜨리면 이전 값을 유지하는 래치가 의도치 않게 생길 수 있습니다.
이 코드는 논리 부분의 발췌이며 완전한 top 모듈은 아닙니다. 실습 프로젝트에 사용하려면 address, en, y의 포트와 폭을 선언해야 합니다.
직접 생각해 보기
en=1, address=10이면 y[3:0]은 무엇인가요? en=0이면요?
해설 보기
활성 상태에서는 y[2]만 1인 0100이며, 비활성 상태에서는 0000입니다.
✓ 학습 완료