디코더는 인코더와 정반대 기능을 수행하며, n비트의 2진 코드 입력에 의해 최대 2n개의 출력이 나오므로 가능한 한 2진 입력의 조합만큼 출력을 가집니다.
이 디코더는 세 개의 입력선을 가지며, 출력은 2의 3승개로, 즉 여덞 개의 출력으로 해독되며, 각 출력은 세 개 입력변수 중의 어느
하나를 나타냅니다.
위의 그림과 같이 3x8 Decoder를 3개의 INV게이트와 8개의 AND게이트로 구성할 수 있습니다.
Verilog 소스
//decoder
module decoder(in, out);
input [2:0] in;
output [7:0] out;
reg [7:0] out;
always@(in)
begin
case(in)
3'b000 : out <= 8'b00000001;
3'b001 : out <= 8'b00000010;
3'b010 : out <= 8'b00000100;
3'b011 : out <= 8'b00001000;
3'b100 : out <= 8'b00010000;
3'b101 : out <= 8'b00100000;
3'b110 : out <= 8'b01000000;
default : out <= 8'b10000000;
endcase
end
endmodule