Menu
Coddy logo textTech

내장 게이트 프리미티브

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

Verilog에는 실제 게이트 심볼을 사용하여 논리 회로를 기술할 수 있는 내장된 게이트 프리미티브(gate primitives)가 있습니다. 이것을 구조적 모델링(structural modeling)이라고 하며, 마치 회로도를 그리는 것처럼 게이트를 연결하여 회로를 구성합니다.

게이트 프리미티브(Gate primitives)는 기본 논리 게이트를 모델링하는 미리 정의된 키워드입니다. assign out = a & b와 같은 표현식을 작성하는 대신, 게이트를 인스턴스화합니다:

and(out, a, b);   // 출력 out, 입력 a와 b를 가진 AND 게이트

일반 구문

gate_type (output, input1, input2, ...);
  • 첫 번째 인수는 항상 output입니다
  • 이어지는 인수들은 inputs입니다 (게이트에 따라 1개 이상)

사용 가능한 게이트 프리미티브

게이트 유형키워드입력 수
ANDand2개 이상
ORor2개 이상
NOTnot1
NANDnand2개 이상
NORnor2개 이상
XORxor2개 이상
XNORxnor2개 이상

게이트 프리미티브의 작동 방식

and(out, a, b)를 작성하면, Verilog은 a & b의 결과로 out을 지속적으로 구동하는 AND 게이트를 생성합니다. a 또는 b가 변경될 때마다 out은 실제 게이트처럼 즉시 업데이트됩니다.

게이트 프리미티브 vs 연속 할당

두 방법 모두 동일한 하드웨어를 생성합니다:

// 게이트 프리미티브
and(out, a, b);

// 연속 할당 (동일한 결과)
assign out = a & b;

게이트 프리미티브는 회로를 게이트의 집합(구조적 스타일)으로 설명하고자 할 때 유용합니다. 연속 할당은 동작 스타일(표현식)에 더 적합합니다.

challenge icon

챌린지

수행할 작업:

  1. 이 회로가 작동하도록 올바른 게이트 프리미티브(gate primitive)를 추가하세요. 모듈은 입력 ab의 AND 연산 결과를 출력해야 합니다. 출력 포트의 이름은 이미 c로 지정되어 있습니다.

치트 시트

Verilog의 게이트 프리미티브(Gate primitives)를 사용하면 논리 게이트를 직접 인스턴스화하여 구조적 모델링을 할 수 있습니다.

구문: 첫 번째 인수는 항상 출력이며, 그 뒤에 입력들이 옵니다:

gate_type(output, input1, input2, ...);

사용 가능한 프리미티브:

게이트키워드입력 수
ANDand2개 이상
ORor2개 이상
NOTnot1개
NANDnand2개 이상
NORnor2개 이상
XORxor2개 이상
XNORxnor2개 이상

게이트 프리미티브와 assign은 동일한 하드웨어를 생성합니다:

and(out, a, b);       // 구조적 모델링 (게이트 프리미티브)
assign out = a & b;   // 동작적 모델링 (연속 할당)

직접 해보기

module gate_challenge (
  input a,
  input b,
  output c
);
  
  // TODO: 올바른 게이트 프리미티브를 추가하세요
  // 출력 c는 a AND b여야 합니다

endmodule
quiz icon실력 점검

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

기초의 모든 레슨