임베디드 스터디 - 조합논리회로 - 2
이번 글 참고자료:
한빛아카데미, 디지털 논리회로4판
ElectronicsTutorials
디코더
디코더는 $n$개의 입력으로 $2^{n}$개의 출력으로 변환하는 조합논리회로이다.
1X2 디코더
1개의 입력으로 2개의 출력을 발생시킨다.
불 대수 함수
$Y_{0}=\overline{A}$
$Y_{1}=A$진리표
입력($A$) 출력($Y_{0}$) 출력($Y_{1}$) 0 1 0 1 0 1
2X4 디코더
2개의 입력으로 4개의 출력을 발생시킨다.
불 대수 함수
$Y_{0}=\overline{A} \cdot \overline{B}$
$Y_{1}=\overline{A} \cdot B$
$Y_{2}=A \cdot \overline{B}$
$Y_{3}=A \cdot B$진리표
입력($A$) 입력($B$) 출력($Y_{0}$) 출력($Y_{1}$) 출력($Y_{2}$) 출력($Y_{3}$) 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 1 1 0 0 0 1
3X8 디코더, 4X16 디코더
3X8은 3개의 입력으로 8개의 출력을, 4X16은 4개의 입력으로 16개의 출력을 발생시킨다. 3X8 디코더은 대표적으로 74138 IC칩이 있다.
74138의 회로를 보면 ENABLE 입력이 있는데, 이 입력을 통해 디코더 활성화 여부를 제어할 수 있다.
디코더 활성화 제어는 메모리 주소 디코딩에서 주로 사용된다.
4X16 디코더는 3X8 디코더 2개, 혹은 2X4 디코더 5개를 활용하여 구현할 수 있다.
2X4 NAND 디코더
디코더의 입력 수가 많아질 수록 출력이 기하급수적으로 늘어나는 만큼, IC칩 개발에 집적도를 올려야한다. 이를 위해서 BJT 공정보다 CMOS 공정을 사용하게 되는데, CMOS IC의 설계 시 MOSFET의 동작 효율성에 있어 AND보다 NAND가 더 효율적이기에 보통의 IC칩에서 NAND 기반 IC칩이 많이 보인다.
불 대수 함수
$\overline{Y_{0}}=\overline{A} \cdot \overline{B}$
$\overline{Y_{1}}=\overline{A} \cdot B$
$\overline{Y_{2}}=A \cdot \overline{B}$
$\overline{Y_{3}}=A \cdot B$진리표
입력($A$) 입력($B$) 출력($Y_{0}$) 출력($Y_{1}$) 출력($Y_{2}$) 출력($Y_{3}$) 0 0 0 1 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 0
메모리 주소 디코딩
프로세서에 요구되는 메모리가 급증함에 따라 이를 해결하기 위해 여러 개의 메모리 칩을 같이 묶고 메모리 버스를 통해 데이터를 읽는 형태로 기술이 발전했다. 이 때, 특정 메모리 영역에 접근하기 위해 하나의 메모리를 선택하는 주소 디코딩(Address Decoding) 방식을 사용한다.
주소 버스에서 메모리 칩 정보와 메모리 주소 정보를 입력하여 특정한 메모리 칩에서 특정한 데이터를 불러올 수 있는 것이 특징이다.
디스플레이 디코더
디스플레이 디코더의 대표적인 예로 7-세그먼트 디코더가 있다. 7-세그먼트가 0~9의 숫자를 표현하기에 BCD 코드를 통해 데이터를 출력한다. 7-세그먼트 디코더는 크게 2가지로 구분할 수 있다.
캐소드 공통 디스플레이(Cathode Common Display) : 로직 LOW를 디스플레이의 캐소드에 모두 공통으로 처리하고, 각각의 애노드에 대해 로직 HIGH를 입력하여 LED를 점등한다.
애노드 공통 디스플레이(Anode Common Display) : 로직 HIGH를 디스플레이의 애노드에 모두 공통으로 처리하고, 각각의 캐소드에 대해 로직 LOW를 입력하여 LED를 점등한다.
인코더
인코더는 디코더와 반대로 $2^{n}$개의 입력으로 $n$개의 출력으로 변환하는 조합논리회로이다. 디코더에서 AND 게이트를 바탕으로 회로가 구현됐다면, 인코더에서는 OR 게이트를 바탕으로 구현된다.
기본 인코더 IC칩으로는 8X3 인코더 74157/8 IC가 있다. 74157은 비반전 출력, 74158은 반전 출력 회로이다. 기본 인코더의 경우 입력에 2개 이상의 신호가 발생한다면 출력도 2개 이상의 신호가 발생할 수 있다는 점이다. 또한, $D_{0}$의 입력이 0인 경우와 1인 경우의 출력 신호 구분이 안된다.
이를 해결하기 위해 우선순위 인코더(Priority Encoder)라는 회로가 나온다.
8X3 우선순위 인코더
인코더 입력의 우선순위는 일반적으로 입력값이 높은 쪽이 가진다. 74148 IC가 8X3 우선순위 인코더이다.
불 대수 함수
$Q_{0}=D_{7} + \overline{D_{6}} \cdot D_{5} + \overline{D_{6}} \cdot \overline{D_{4}} \cdot D_{3} + \overline{D_{6}} \cdot \overline{D_{4}} \cdot \overline{D_{2}} \cdot D_{1}$
$Q_{1}=D_{7} + D_{6} + \overline{D_{5}} \cdot \overline{D_{4}} \cdot D_{3} + \overline{D_{5}} \cdot \overline{D_{4}} \cdot D_{2}$
$Q_{2}=D_{7} + D_{6} + D_{5} + D_{4}$이 때, 인코더 입력이 없는 경우, 즉 입력이 0인 신호를 무시할 경우, 더욱 간단하게 불 대수 함수를 표현할 수 있다.
$Q_{0}=D_{7} + D_{5} + D_{3} + D_{1}$
$Q_{1}=D_{7} + D_{6} + D_{3} + D_{2}$
$Q_{2}=D_{7} + D_{6} + D_{5} + D_{4}$진리표
입력($D_{7}$) 입력($D_{6}$) 입력($D_{5}$) 입력($D_{4}$) 입력($D_{3}$) 입력($D_{2}$) 입력($D_{1}$) 입력($D_{0}$) 출력($Q_{2}$) 출력($Q_{1}$) 출력($Q_{0}$) 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 X 0 0 1 0 0 0 0 0 1 X X 0 1 0 0 0 0 0 1 X X X 0 1 1 0 0 0 1 X X X X 1 0 0 0 0 1 X X X X X 1 0 1 0 1 X X X X X X 1 1 0 1 X X X X X X X 1 1 1
우선순위 인코더의 활용
인코더는 다음과 같이 활용된다.
키보드 인코더 : QWERTY 키보드의 104개의 입력을 표준 ASCII 코드의 형태로 인코딩하면 7bit로도 모든 입력을 구현할 수 있다.
위치 인코더 : 모터의 회전이나 방위각 항법요소에서 각 회전 변위각에 대응하는 입력에 대해 인코딩을 통해 데이터를 압축할 수 있다.
IRQ(Interrupt Request) : 마이크로프로세서에서 각 주변장치(Peripheral)와 통신하기 위해 사용한다. 마이크로프로세서에 연결되는 주변장치는 여러 개인 반면에, 한 번에 한 장치와만 통신할 수 있다. 그렇기 때문에 각 주변장치에 IRQ 코드를 부여하여 우선순위를 지정하고, 우선순위를 따라 주변장치와 통신을 수행한다.






