Module Instantiation
Coddy Verilog 여정의 기초 섹션에 포함된 레슨. 90개 중 33번째.
모듈 인스턴스화는 다른 모듈 안에 모듈의 복사본을 만드는 과정입니다. 이는 더 작은 구성 요소들을 서로 연결하여 더 큰 설계를 구축하는 방법입니다.
모듈을 정의했다면 다른 모듈 안에서 사용할 수 있습니다. 이를 인스턴스화라고 합니다. 인스턴스화할 때마다 해당 모듈의 별도 인스턴스가 생성됩니다. 청사진을 사용해 동일한 구성 요소를 여러 개 만드는 것이라고 생각해 보세요.
기본 syntax
module_name instance_name (connections);| 부분 | 의미 |
|---|---|
module_name | 인스턴스화할 모듈의 이름 |
instance_name | 이 복사본의 고유한 이름 |
connections | 모듈의 포트에 연결된 신호 |
간단한 예제
1단계: module 정의
module and_gate (
input a,
input b,
output c
);
assign c = a & b;
endmodule2단계: 다른 module에서 Instantiate하기
module top (
input x,
input y,
output z
);
and_gate gate1 (x, y, z);
endmodule이 코드에서 다음과 같은 일이 일어납니다:
and_gate: 사용하려는 module의 이름(어딘가에 존재해야 함)gate1: 이 특정 인스턴스에 지정하는 고유한 이름(x, y, z): module의 port에 연결하는 signal(module 정의에 나타나는 순서와 동일한 순서)
첫 번째 신호 x는 첫 번째 포트 a에 연결됩니다. 두 번째 신호 y는 두 번째 포트 b에 연결됩니다. 세 번째 신호 z는 세 번째 포트 c에 연결됩니다.
module에 신호를 전달해야 합니다. 괄호는 비워 둘 수 없습니다. 신호의 수는 포트의 수와 일치해야 합니다.
여러 인스턴스
동일한 모듈의 복사본을 여러 개 만들 수 있습니다:
module top;
wire out1, out2;
wire sig1, sig2, sig3, sig4;
and_gate gate1 (sig1, sig2, out1);
and_gate gate2 (sig3, sig4, out2);
endmodule각 인스턴스에는 고유한 이름(gate1, gate2)과 고유한 연결이 있습니다. 이들은 독립적으로 작동합니다.
인스턴스화 중에 발생하는 일
- 하드웨어의 복사본이 생성됩니다
- 각 인스턴스에는 고유한 signals 집합이 있습니다
- 인스턴스는 병렬로(동시에) 실행됩니다
- 전달하는 신호는 인스턴스가 설계의 나머지 부분에 연결되는 방식을 결정합니다
인스턴스화 규칙
| 규칙 | 이유 |
|---|---|
| instance_name은 고유해야 함 | 복사본을 구분하기 위해 |
| module_name이 존재해야 함 | 다른 곳에서 정의되어 있어야 함 |
| connections의 수는 port의 수와 일치해야 함 | 그렇지 않으면 Verilog는 무엇이 어디에 연결되는지 알 수 없음 |
| connections의 순서는 port의 순서와 일치해야 함 | 첫 번째 signal은 첫 번째 port에 연결되고, 기타 |
챌린지
or_gate 모듈을 인스턴스화하여 코드를 완성하세요.
할 일:
or1인스턴스 이름으로or_gate를 인스턴스화하세요.- 신호를 올바른 순서로 전달하세요:
input_a,input_b,output_y
직접 해보기
module or_gate (
input in1,
input in2,
output result
);
assign result = in1 | in2;
endmodule
module top (
input input_a,
input input_b,
output output_y
);
// TODO: or_gate를 or1 이름으로 인스턴스화하세요
// 신호를 다음 순서로 전달하세요: input_a, input_b, output_y
// .port(signal) 구문을 사용하지 마세요
endmodule이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
기초의 모든 레슨
4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine Logic직접 연습해 보세요: 온라인 Verilog 컴파일러