Menu
Coddy logo textTech

Instanciação de Módulo

Parte da seção Fundamentos do Journey de Verilog da Coddy — lição 33 de 90.

A instanciação de módulos é o processo de criar uma cópia de um módulo dentro de outro módulo. É assim que você constrói projetos maiores conectando componentes menores.

Depois de definir um módulo, você pode usá-lo dentro de outro módulo. Isso é chamado de instanciação. Cada instanciação cria uma instância separada desse módulo. Pense nisso como usar uma planta para construir várias cópias do mesmo componente.

Sintaxe Básica

module_name instance_name (connections);
ParteSignificado
module_nameNome do módulo a ser instanciado
instance_nameNome exclusivo para esta cópia
connectionsSinais conectados às portas do módulo

Exemplo Simples

Passo 1: Definir um módulo

module and_gate (
  input a,
  input b,
  output c
);
  assign c = a & b;
endmodule

Passo 2: Instancie em outro módulo

module top (
  input x,
  input y,
  output z
);
  and_gate gate1 (x, y, z);
endmodule

Aqui está o que acontece neste código:

  • and_gate — o nome do módulo que queremos usar (deve existir em algum lugar)
  • gate1 — um nome exclusivo que damos a esta instância específica
  • (x, y, z) — os sinais que conectamos às portas do módulo (na mesma ordem em que aparecem na definição do módulo)

O primeiro sinal x se conecta à primeira porta a. O segundo sinal y se conecta à segunda porta b. O terceiro sinal z se conecta à terceira porta c.

Você deve passar sinais para o módulo. Os parênteses não podem estar vazios. O número de sinais deve corresponder ao número de portas.

Múltiplas Instâncias

Você pode criar múltiplas cópias do mesmo módulo:

module top;
  wire out1, out2;
  wire sig1, sig2, sig3, sig4;
  
  and_gate gate1 (sig1, sig2, out1);
  and_gate gate2 (sig3, sig4, out2);
endmodule

Cada instância tem seu próprio nome (gate1, gate2) e suas próprias conexões. Elas funcionam de forma independente.

O que acontece durante a instanciação

  • Uma cópia do hardware é criada
  • Cada instância tem seu próprio conjunto de sinais
  • As instâncias executam em paralelo (simultaneamente)
  • Os sinais que você passa determinam como as instâncias se conectam ao restante do seu projeto

Regras para Instanciação

RegraMotivo
Nome da instância deve ser únicoPara distinguir entre as cópias
Nome do módulo deve existirDeve ser definido em outro lugar
O número de conexões deve corresponder ao número de portasCaso contrário, o Verilog não sabe o que se conecta a quê
A ordem das conexões deve corresponder à ordem das portasO primeiro sinal se conecta à primeira porta, etc.
challenge icon

Desafio

Complete o código instanciando o módulo or_gate.

O que fazer:

  1. Instancie or_gate com o nome da instância or1
  2. Passe os sinais na ordem correta: input_a, input_b, output_y

Experimente você mesmo

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: Instancie or_gate com o nome or1
  // Passe os sinais na ordem: input_a, input_b, output_y
  // Não use a sintaxe .port(signal)
  

endmodule
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos