내장 게이트 프리미티브
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입니다 (gate에 따라 1개 이상)
사용 가능한 게이트 프리미티브(Gate Primitives)
| 게이트 유형 | 키워드 | 입력(Inputs) 개수 |
|---|---|---|
| AND | and | 2개 이상 |
| OR | or | 2개 이상 |
| NOT | not | 1 |
| NAND | nand | 2개 이상 |
| NOR | nor | 2개 이상 |
| XOR | xor | 2개 이상 |
| XNOR | xnor | 2개 이상 |
게이트 프리미티브(Gate Primitives)의 작동 방식
and(out, a, b)를 작성하면 Verilog는 a & b의 결과로 out을 지속적으로 구동하는 AND 게이트를 생성합니다. a 또는 b가 변경될 때마다 실제 게이트와 마찬가지로 out이 즉시 업데이트됩니다.
Gate Primitives vs Continuous Assignment
두 방법 모두 동일한 하드웨어를 생성합니다:
// 게이트 프리미티브
and(out, a, b);
// 연속 할당 (동일한 결과)
assign out = a & b;Gate primitives는 회로를 gates의 모음(structural 스타일)으로 기술하고 싶을 때 유용합니다. Continuous assignment는 behavioral 스타일(표현식)에 더 적합합니다.
챌린지
수행할 작업:
- 이 회로가 작동하도록 올바른
gateprimitive를 추가하세요.module은inputa와b의 AND 결과를output해야 합니다.output포트 이름은 이미c로 지정되어 있습니다.
직접 해보기
module gate_challenge (
input a,
input b,
output c
);
// TODO: 올바른 게이트 프리미티브를 추가하세요
// 출력 c는 a AND b여야 합니다
endmodule이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.