Menu
Coddy logo textTech

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;
endmodule

2단계: 다른 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에 연결되고, 기타
challenge icon

챌린지

or_gate 모듈을 인스턴스화하여 코드를 완성하세요.

할 일:

  1. or1 인스턴스 이름으로 or_gate를 인스턴스화하세요.
  2. 신호를 올바른 순서로 전달하세요: 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
quiz icon실력 점검

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

기초의 모든 레슨

직접 연습해 보세요: 온라인 Verilog 컴파일러