Altifigence Academy

4 / 36 · 개념

디코더와 인에이블

이진 주소를 한 개의 활성 출력으로 바꿉니다.

학습 목표

  • 2비트 주소로 네 출력을 선택합니다.
  • 비활성 상태의 출력을 명시합니다.

주소 하나가 출력 하나를 고릅니다.

2-to-4 디코더는 주소 00, 01, 10, 11을 각각 0001, 0010, 0100, 1000으로 바꿉니다. 벡터를 y[3:0]으로 쓰면 오른쪽 끝이 y[0]입니다.

en=0일 때는 0000으로 정의합니다. 따라서 항상 하나가 켜지는 것이 아니라 en=1일 때만 정확히 하나가 켜집니다. 이 조건까지 검증 규칙에 포함하세요.

RTL 코드 발췌
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입니다.

선택은 이 브라우저에만 적용됩니다. 언제든 푸터에서 변경할 수 있습니다.