바이너리 디코더
바이너리 디코더는 개별 논리 게이트로 구성된 또 다른 조합 논리 회로이며 인코더와 정반대입니다.
"디코더"라는 용어는 코딩된 정보를 한 형식에서 다른 형식으로 변환하거나 디코딩하는 것을 의미하므로 이진 디코더는 "n"개의 이진 입력 신호를 2n개의 출력을 사용하여 동등한 코드로 변환 합니다 .
바이너리 디코더는 데이터 입력 라인 수에 따라 2비트, 3비트 또는 4비트 코드의 입력을 갖는 또 다른 유형의 디지털 논리 장치이므로 2비트 이상의 세트를 갖는 디코더는 다음과 같이 정의됩니다. n 비트 코드를 가지 므로 2n개의 가능한 값을 표현할 수 있습니다 . 따라서 디코더는 일반적으로 n 개의 출력 중 정확히 하나를 논리 "1"로 설정하여 이진 값을 이진이 아닌 값으로 디코딩합니다 .
이진 디코더가 n개의 입력(일반적으로 단일 이진수 또는 부울 숫자로 그룹화됨)을 수신하는 경우 해당 입력을 기반으로 2n개의 출력 중 하나만 활성화하고 다른 모든 출력은 비활성화 됩니다 .
예를 들어 인버터( NOT-gate )는 1-입력 및 2-출력(2 1 )이 가능하므로 1-2 이진 디코더로 분류될 수 있습니다. 입력 A를 사용하면 두 개의 출력 A 와 A를 생성할 수 있기 때문입니다. (-A가 아님) 그림과 같습니다.
그러면 우리는 표준 조합 논리 디코더가 n-to-m 디코더라고 말할 수 있습니다. 여기서 m ≤ 2n 이고 출력 Q 는 현재 입력 상태에만 의존합니다. 즉, 이진 디코더는 현재 입력을 살펴보고 입력에 어떤 이진 코드 또는 이진수가 있는지 확인하고 해당 이진 입력에 해당하는 적절한 출력을 선택합니다.
바이너리 디코더는 코딩된 입력을 코딩된 출력으로 변환합니다. 여기서 입력 및 출력 코드는 서로 다르며 디코더는 바이너리 또는 BCD(8421 코드) 입력 패턴을 일반적으로 10진수 출력 코드로 "디코딩"하는 데 사용할 수 있습니다. 일반적으로 사용 가능한 BCD-10진수 디코더에는 TTL 7442 또는 CMOS 4028이 포함됩니다. 일반적으로 디코더 출력 코드는 일반적으로 입력 코드보다 더 많은 비트를 가지며 실제 "이진 디코더" 회로에는 2-4, 3-8이 포함됩니다. 4~16라인 구성.
진리표와 함께 2-4 라인 디코더의 예는 다음과 같습니다.
A 2-4 바이너리 디코더
위의 2-4 라인 이진 디코더에 대한 이 간단한 예는 4개의 AND 게이트 배열로 구성됩니다. A 와 B 로 표시된 2개의 이진 입력은 4개의 출력 중 하나로 디코딩되므로 2-4 이진 디코더에 대한 설명입니다. 각 출력은 2개의 입력 변수의 미니항 중 하나를 나타냅니다(각 출력 = 미니항).
바이너리 입력 A 와 B는 Q0 에서 Q3 까지 의 어떤 출력 라인이 로직 레벨 "1"에서 "HIGH"인지 결정하고 나머지 출력은 로직 "0"에서 "LOW"로 유지되므로 언제든지 하나의 출력만 활성화(HIGH)할 수 있습니다. 한 번. 따라서 출력 라인이 "HIGH"이면 입력에 존재하는 이진 코드를 식별합니다. 즉, 이진 입력을 "디코딩"합니다.
일부 바이너리 디코더에는 장치의 출력을 제어하는 "Enable"이라고 표시된 추가 입력 핀이 있습니다. 이 추가 입력을 사용하면 디코더 출력을 필요에 따라 "ON" 또는 "OFF"로 설정할 수 있습니다. 이러한 유형의 이진 디코더는 일반적으로 마이크로프로세서 메모리 애플리케이션에서 "메모리 주소 디코더"로 사용됩니다.
74LS138 바이너리 디코더
바이너리 디코더는 디코더를 활성화하는 데 사용되는 추가 데이터 라인이 있는 디멀티플렉서라고 말할 수 있습니다. 디코더 회로를 보는 또 다른 방법은 입력 A , B 및 C 를 주소 신호로 간주하는 것입니다. A , B 또는 C 의 각 조합은 고유한 메모리 주소를 정의합니다.
우리는 2-4 라인 이진 디코더(TTL 74155)를 사용하여 2비트 이진 코드를 디코딩하여 가능한 각 입력 조합에 대해 하나씩 총 4개의 출력을 제공할 수 있음을 확인했습니다. 그러나 때로는 사용 가능한 것보다 더 많은 출력을 가진 이진 디코더 가 필요하므로 더 많은 입력을 추가하면 디코더가 잠재적으로 2n 더 많은 출력을 제공할 수 있습니다.
예를 들어, 3개의 이진 입력( n = 3 )이 있는 디코더는 3~8 라인 디코더(TTL 74138)를 생성하고 4개의 입력( n = 4 )은 4~16 라인 디코더(TTL 74138)를 생성합니다. 74154) 등이 있습니다. 그러나 디코더는 전체 16(2 4 ) 출력 대신 디스플레이를 구동하기 위해 4개의 입력과 7개의 활성 출력만 있는 BCD-7 세그먼트 디코더(TTL 7447)와 같이 2n 미만의 출력을 가질 수도 있습니다. 예상하다.
여기서는 훨씬 더 큰 4(3개의 데이터 + 1개의 활성화) - 16라인 바이너리 디코더가 두 개의 작은 3-8 디코더를 사용하여 구현되었습니다.
4-16 이진 디코더 구성
입력 A, B, C 는 디코더 중 어느 출력이 논리 "1"(HIGH)이 될지 선택하는 데 사용되며, 입력 D 는 활성화 입력과 함께 사용되어 첫 번째 또는 두 번째 인코더가 "1"을 출력할지 선택합니다.
그러나 하나의 특정 디코더에 사용할 수 있는 입력 수에는 제한이 있습니다. n이 증가함에 따라 출력을 생성하는 데 필요한 AND 게이트 의 수도 커지기 때문에 구동에 사용되는 게이트의 팬아웃이 발생하기 때문입니다. 점점 커지고 있어요.
이러한 유형의 활성 "HIGH" 디코더는 인버터 , ( 게이트 아님 ) 및 AND 게이트 만 사용하여 구현할 수 있습니다 . AND 게이트는 모든 입력이 논리 "1"일 때만 "HIGH" 또는 논리 "1" 출력을 생성하므로 출력의 기본 디코딩 요소로 AND 게이트 를 사용하는 것이 편리합니다 .
그러나 일부 바이너리 디코더는 디코딩된 출력을 위해 AND 게이트 대신 NAND 게이트를 사용하여 구성됩니다 . 왜냐하면 NAND 게이트는 설계 내에서 구현하는 데 더 적은 수의 트랜지스터가 필요하기 때문에 AND 게이트 보다 생산 비용이 저렴하기 때문 입니다.
NAND 게이트를 디코딩 요소로 사용하면 활성 "LOW" 출력이 발생하고 나머지는 "HIGH"가 됩니다. NAND 게이트가 반전된 출력으로 AND 연산을 생성 하므로 NAND 디코더는 반전된 진리표를 사용하여 다음과 같이 보입니다.
2-4 라인 NAND 바이너리 디코더
그런 다음 NAND 디코더의 경우 주어진 시간에 하나의 출력만 LOW가 될 수 있고 논리 "0"과 같으며 다른 모든 출력은 논리 "1"에서 HIGH입니다.
디코더는 또한 로직 "1" 또는 로직 "0"을 각각 적용하여 디코딩된 출력을 "ON" 또는 "OFF"로 설정할 수 있는 추가 "활성화" 입력 핀과 함께 사용할 수도 있습니다. 예를 들어 활성화 입력이 논리 레벨 "0"인 경우(EN = 0) 입력 A 및 B 의 상태에 관계없이 모든 출력은 논리 "0"(AND 게이트의 경우)에서 "OFF"입니다 .
일반적으로 이 활성화 기능을 구현하기 위해 2입력 AND 또는 NAND 게이트가 3입력 AND 또는 NAND 게이트 로 대체됩니다 . 추가 입력 핀은 활성화 기능을 나타냅니다.
메모리 주소 디코더
바이너리 디코더는 컴퓨팅 장치에서 생성된 "주소"를 기반으로 특정 메모리 위치에 액세스하기 위해 보다 복잡한 디지털 시스템에서 가장 자주 사용됩니다. 최신 마이크로프로세서 시스템에서 필요한 메모리 양은 상당히 높을 수 있으며 일반적으로 단일 메모리 칩 하나 이상입니다.
이 문제를 극복하는 한 가지 방법은 많은 개별 메모리 칩을 함께 연결하고 공통 "데이터 버스"에서 데이터를 읽는 것입니다. 각 메모리 칩에서 동시에 데이터가 "읽혀지는" 것을 방지하기 위해 각 메모리 칩은 한 번에 하나씩 개별적으로 선택되며 이 프로세스를 주소 디코딩 이라고 합니다 .
이러한 유형의 애플리케이션에서 주소는 코딩된 데이터 입력을 나타내고 출력은 특정 메모리 요소 선택 신호입니다. 각 메모리 칩 에는 필요할 때 적절한 메모리 칩을 선택하기 위해 MPU(마이크로 프로세서 장치)에서 사용되는 칩 선택 또는 CS 라는 입력이 있습니다 . 일반적으로 칩 선택( CS ) 입력 의 로직 "1"은 메모리 장치를 선택하고 입력의 로직 "0"은 메모리 장치를 선택 취소합니다.
따라서 각 칩을 한 번에 하나씩 선택하거나 선택 취소함으로써 특정 주소 위치에 대한 올바른 메모리 주소 장치를 선택할 수 있습니다. 주소 디코딩의 장점은 특정 메모리 주소를 지정할 때 해당 메모리 위치가 칩 중 하나에만 존재한다는 것입니다.
예를 들어, 단지 1Kb(1000바이트)의 RAM 메모리와 10개의 메모리 주소 라인을 사용할 수 있는 매우 간단한 마이크로프로세서 시스템이 있다고 가정해 보겠습니다. 메모리는 128×8비트(128×8 = 1024비트) 장치로 구성되며 1Kb의 경우 8개의 개별 메모리 칩이 필요하지만 올바른 메모리 칩을 선택하려면 3~8라인 바이너리 디코더도 필요합니다. 아래 그림과 같이.
메모리 주소 디코딩
이진 디코더에는 8개의 칩(주소의 하위 부분) 각각을 선택하는 데 3개의 주소 라인( A 0 ~ A 2 )만 필요하고 나머지 8개의 주소 라인( A 3 ~ A 10 )은 올바른 메모리를 선택합니다. 해당 칩의 위치(주소 상단)
주소 버스를 사용하여 메모리 위치를 선택하면 특정 내부 메모리 위치의 정보가 마이크로프로세서에서 사용할 수 있도록 공통 "데이터 버스"로 전송됩니다. 이는 물론 간단한 예이지만 모든 유형의 메모리 칩 또는 모듈에 대한 원칙은 동일하게 유지됩니다.
바이너리 디코더는 바이너리 또는 BCD 유형 데이터를 10진수 또는 8진수 등으로 변환하는 것과 같이 하나의 디지털 형식을 다른 디지털 형식으로 변환하는 데 매우 유용한 장치이며 일반적으로 사용 가능한 디코더 IC는 TTL 74LS138 3-to-8 라인 바이너리 디코더 또는 74ALS154 4-to- 16라인 디코더. 또한 다음 튜토리얼에서 살펴볼 TTL 74LS47과 같은 7세그먼트 디스플레이에 인터페이스하는 데 매우 유용합니다.