### 멀티플렉서 (MUX) 정의 - **개념**: 여러 개의 입력 신호 중 하나를 선택하여 단일 출력 라인으로 전달하는 조합 회로. - **다른 이름**: 데이터 선택기 (Data Selector). - **구성**: - **데이터 입력 (Data Inputs)**: $2^n$개의 입력 라인 ($I_0, I_1, ..., I_{2^n-1}$). - **선택 입력 (Select Inputs)**: $n$개의 선택 라인 ($S_0, S_1, ..., S_{n-1}$). 이 라인들의 조합에 따라 어떤 데이터 입력이 출력될지 결정됩니다. - **출력 (Output)**: 1개의 출력 라인 ($Y$). - **동작 원리**: 선택 입력의 이진 값에 해당하는 데이터 입력 라인이 출력으로 연결됩니다. - **예시 (2-to-1 MUX)**: - 선택 입력 $S_0$가 0이면 $I_0$가 출력 $Y$로 연결. - 선택 입력 $S_0$가 1이면 $I_1$가 출력 $Y$로 연결. - 불 대수 표현: $Y = \overline{S_0}I_0 + S_0I_1$ ### 멀티플렉서 응용 멀티플렉서는 디지털 시스템에서 다양한 용도로 활용됩니다. #### 1. Arbiter/Selector (아비터/선택기) - **개념**: 여러 장치 또는 프로세스가 공유 자원을 사용하려고 할 때, 어떤 장치에 자원을 할당할지 결정하는 회로. 멀티플렉서는 이 선택 과정의 핵심 구성 요소로 사용될 수 있습니다. - **동작**: - 각 장치의 요청 신호가 멀티플렉서의 데이터 입력으로 연결됩니다. - 아비터 로직은 우선순위나 다른 기준에 따라 어떤 요청을 승인할지 결정하고, 해당 장치에 해당하는 선택 신호를 멀티플렉서에 제공합니다. - 멀티플렉서는 선택된 장치의 데이터를 출력으로 전달하거나, 선택된 장치에 자원 사용 권한을 부여하는 신호를 생성합니다. - **예시**: 마이크로프로세서 시스템에서 여러 주변 장치(메모리, I/O)가 버스를 공유할 때, 버스 아비터는 멀티플렉서를 사용하여 어떤 장치가 버스를 사용할지 선택합니다. #### 2. Logic Implementation (논리 함수 구현) - **개념**: 주어진 불 대수 함수를 게이트 대신 멀티플렉서만을 사용하여 구현하는 방법. - **장점**: - 게이트 기반 구현보다 적은 칩 수로 복잡한 논리 함수를 구현할 수 있습니다. - 설계 유연성이 높습니다. - 회로를 변경하기 쉽습니다 (선택 입력과 데이터 입력의 연결만 변경). - **구현 방법**: 1. **변수 할당**: 불 함수 변수 중 $n$개를 멀티플렉서의 선택 입력으로 사용합니다. 2. **데이터 입력 결정**: 나머지 변수 또는 상수 (0, 1)를 멀티플렉서의 데이터 입력으로 연결합니다. - **예시 (3-변수 함수 $F(A, B, C) = \Sigma(1, 2, 6, 7)$ 구현)**: - **8-to-1 MUX 사용**: - $A, B, C$를 선택 입력으로 사용합니다. - 각 데이터 입력 $I_i$는 해당 민텀 ($m_i$)이 1인 경우 1, 0인 경우 0으로 연결합니다. - 즉, $I_1=1, I_2=1, I_6=1, I_7=1$ 이고 나머지는 0으로 연결합니다. - **4-to-1 MUX 사용 (선택 입력 $A, B$, 데이터 입력에 $C$ 또는 $\overline{C}$ 사용)**: - 진리표를 작성하고, $A, B$ 값에 따라 $C$와 $F$의 관계를 파악합니다. - $A=0, B=0$: $F = C$ ($I_0$에 $C$ 연결) - $A=0, B=1$: $F = \overline{C}$ ($I_1$에 $\overline{C}$ 연결 → $F(0,1,0)=1, F(0,1,1)=0$) - $A=1, B=0$: $F = 0$ ($I_2$에 0 연결) - $A=1, B=1$: $F = C$ ($I_3$에 $C$ 연결) - 이 방법은 멀티플렉서의 크기를 줄일 수 있습니다. #### 3. Data Routing (데이터 라우팅) - **개념**: 여러 소스에서 오는 데이터를 목적지로 보내는 데 사용됩니다. - **예시**: 컴퓨터의 CPU는 여러 레지스터나 메모리 위치에서 데이터를 가져와야 할 때 멀티플렉서를 사용하여 원하는 데이터를 선택합니다. #### 4. Parallel-to-Serial Conversion (병렬-직렬 변환) - **개념**: 여러 병렬 데이터 비트를 하나의 직렬 스트림으로 변환합니다. - **동작**: 선택 입력이 카운터에 의해 순차적으로 변경되면서 각 데이터 입력이 시간적으로 순서대로 출력됩니다.