본문 바로가기
Hardware/Verilog

인코더와 디코더(Encoder and Decoder)

by 리미와감자 2022. 7. 26.
  • 인코더(Encoder) : 신호를 특정 코드로 변환시키는 회로

 

2^n비트의 입력을 n비트의 출력으로 암호화한다.

 

2^n개의 입력 신호 중 1개만 1이 되면, 1에 대응되는 n비트를 가진 암호가 출력된다.

 

 

4 x 2 인코더를 구현해보자(n=2).

module encoder(
y0,
y1,
y2,
y3,
a0,
a1);

input y0, y1, y2, y3;
output a0, a1;

assign a1 = ~y0 & ~y1; // y0과 y1를 반전시키고 AND 연산을하면 a1가 된다.
assign a0 = ~y0 & ~y2; // y0과 y2를 반전시키고 AND 연산을하면 a0이 된다.

endmodule

 


  • 디코더(Decoder) : 특정 코드를 신호로 출력하는 회로

 

n비트의 입력을 2^n비트의 출력으로 해독한다.

 

n비트의 입력 신호에 대응되는, 하나의 출력 신호를 1로 가진다.

 

2 x 4 디코더를 구현해보자(n=2).

module decoder(
a,
b,
d0,
d1,
d2,
d3);

input a, b;
output d0, d1, d2, d3;

always @(a or b) begin
case({a,b})
2'b00 : {d0,d1,d2,d3} = 4'b1000;
2'b01 : {d0,d1,d2,d3} = 4'b0100;
2'b10 : {d0,d1,d2,d3} = 4'b0010;
2'b11 : {d0,d1,d2,d3} = 4'b0001;
endmodule

 


 

인코딩이 될 수 있는 코드는 2진, BCD, 10진, Gray, ASCII 코드 등이 있다.

 

 


  • 인코더와 디코더의 관계(n=3)

인코더에서 암호화한 신호를 디코더에서 복호화한다.

댓글