Menu
Coddy logo textTech

XOR XNOR 게이트

Coddy Verilog 여정의 기초 섹션에 포함된 레슨 — 90개 중 41번째.

이 레슨에서는 두 가지 추가 논리 게이트인 XOR(배타적 논리합)과 XNOR(배타적 부정 논리합)을 다룹니다. 이 게이트들은 비트 비교 및 패리티 체크에 유용합니다.

XOR 게이트

XOR 게이트는 입력이 서로 다를1을 출력합니다.

진리표 (2-입력):

about
000
011
101
110

Verilog 게이트 프리미티브:

xor(out, a, b);

연속 할당문(Continuous assignment) 동등 표현:

assign out = a ^ b;

XNOR 게이트

XNOR 게이트는 입력이 서로 같을1을 출력합니다. 이것은 XOR의 반대입니다.

진리표 (2-입력):

about
001
010
100
111

Verilog 게이트 프리미티브:

xnor(out, a, b);

연속 할당문(Continuous assignment) 동등 표현:

assign out = a ~^ b;   // 또는 ~(a ^ b)

다중 입력

XOR 및 XNOR 게이트는 2개 이상의 입력을 가질 수 있습니다. 출력은 다음과 같습니다:

  • XOR: 입력 중 홀수 개가 1인 경우 1
  • XNOR: 입력 중 짝수 개가 1인 경우 1
xor(out, a, b, c);      // 3-입력 XOR
xnor(out, p, q, r, s);  // 4-입력 XNOR

예시 (3-입력 XOR):

abcout
0000
0011
0101
0110
1001
1010
1100
1111

일반적인 용도

용도예시
두 비트가 서로 다른지 비교xor(diff, a, b)
두 비트가 서로 같은지 비교xnor(same, a, b)
패리티 생성 (홀수 개의 1)xor(parity, data[0], data[1], data[2], data[3])
패리티 체크 (짝수 개의 1)xnor(parity, data[0], data[1], data[2], data[3])

코드 예제

module xor_xnor_demo (
  input a, b,
  output xor_out,
  output xnor_out
);
  xor(xor_out, a, b);
  xnor(xnor_out, a, b);
endmodule

요약 표

게이트출력이 1인 경우프리미티브연산자
XOR입력이 서로 다를 때xor(out, a, b)^
XNOR입력이 서로 같을 때xnor(out, a, b)~^
challenge icon

챌린지

작업 내용에 따라 누락된 게이트 프리미티브(gate primitives)를 추가하세요.

수행할 작업:

  1. 출력이 xor_result이고 입력이 xy인 XOR 게이트를 생성하세요.
  2. 출력이 xnor_result이고 입력이 xy인 XNOR 게이트를 생성하세요.

치트 시트

XOR는 입력이 다를1을 출력합니다. XNOR는 입력이 같을1을 출력합니다.

게이트출력이 1인 경우프리미티브(Primitive)연산자
XOR입력이 다를 때xor(out, a, b)^
XNOR입력이 같을 때xnor(out, a, b)~^

다중 입력의 경우: XOR1인 입력의 개수가 홀수일 때 1을 출력하며, XNOR1인 입력의 개수가 짝수일 때 1을 출력합니다.

xor(out, a, b, c);      // 3-입력 XOR
xnor(out, p, q, r, s);  // 4-입력 XNOR

직접 해보기

module xor_xnor_challenge (
  input x,
  input y,
  output xor_result,
  output xnor_result
);
  
  // TODO: XOR 게이트 추가 (xor_result = x ^ y)
  
  // TODO: XNOR 게이트 추가 (xnor_result = x ~^ y)

endmodule
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

기초의 모든 레슨