저번 포스팅에서 우리는 Binary Multiplier과 Magnitude Comparator을 구현해보았습니다. 이번 포스팅에서는 Decoder/Encoder와 Multiplexer이 무엇인지 알아보고 구현해보도록 하겠습니다.

Decoder는 암호화된 것들을 해독하여 사람이 읽을 수 있게 바꾸는 것을 도와주는 회로입니다. Encoder는 반대로 사람이 읽을 수 있는 쉬운 신호를 암호화 해주는 회로입니다. Decoder은 n bit의 input을 넣으면 2n개의 신호가 output으로 나오게 됩니다.

3개의 신호를 input으로 넣으면 8개의 output이 나오고 이를 3 to 8 Decoder라고 합니다.

3 to 8 Decoder를 Gate로 구현하면 위와 같은 회로로 구현되는 것을 확인할 수 있습니다. 위 회로에서는 AND3 Gate를 사용하여 구현하였지만 이전 포스팅에서도 말했듯이 AND3는 NAND3에 비해 회로도 훨씬 크고 속도도 느리고 전력 소비 측면에서도 좋지 않습니다. 따라서 회로를 NAND3/NOR3로 만드는 것이 훨씬 좋습니다.

AND3 대신 위 회로에 표시한 것처럼 NOR3를 사용하여 회로를 구현하는 것이 좋습니다. NAND3로 Decoder을 구현하려면 output이 High Enable이 아닌 Low Enable이 되는 것을 사용하면 됩니다.

위 회로는 Enable 신호가 1일때 동작하는 2 to 4 Decoder입니다. 앞에서도 말했듯이 NAND3를 사용해 회로를 구현하기 위해 output이 Low Enable인 것을 알 수 있습니다. 그렇다면 2 to 4 Decoder을 이용해 3 to 8 Decoder을 구현해보겠습니다.

3 to 8 Decoder를 보면 B, C를 입력으로 하는 2 to 4 Decoder 2개로 구현할 수 있다는 것을 Truth Table을 보면 알 수 있습니다. 이때 Enable 신호로 A를 사용하면 회로를 구현할 수 있습니다.

2 to 4 Decoder 2개를 사용해 3 to 8 Decoder을 구현하면 위와 같이 나오게 됩니다. 그렇다면 4 to 16 Decoder은 어떻게 만들면 될까요?

3 to 8 Decoder 2개를 사용하여 구현하면 됩니다.

또한 위 회로와 같이 Decoder를 사용하여 앞에서 우리가 봤던 sum of product의 모든 Logic을 구현할 수 있습니다. 지금까지 Decoder에 대해 알아봤다면 Encoder에 대해서도 알아보도록 하겠습니다.