Menu
Coddy logo textTech

Estrutura de Módulo

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

Um `module` é o bloco de construção básico no Verilog. Todo projeto é construído a partir de módulos que se conectam para formar sistemas maiores.

Um módulo é um componente de hardware com:

  • Um nome
  • Entradas (sinais que entram)
  • Saídas (sinais que saem)
  • Lógica interna (o que o módulo faz)

Pense em um module como um chip com pinos e circuitos internos.

Estrutura Básica do Módulo

Todo módulo segue esta estrutura:

module module_name (
  input  signals,
  output signals
);
  
  // Declarações internas (wires, regs, etc.)
  // Lógica (assign statements, always blocks, etc.)
  
endmodule

Partes de um Módulo

PartePropósito
Palavra-chave moduleInicia a definição do módulo
module_nameNome do módulo
( )Lista de portas de entrada e saída
input / outputDeclaram a direção da porta
Corpo do móduloLógica interna e conexões
endmoduleTermina a definição do módulo

Exemplo Simples de Módulo

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

Este módulo:

  • É nomeado and_gate
  • Possui duas entradas (a, b)
  • Possui uma saída (c)
  • Contém uma instrução assign que define a lógica

Regras para Estrutura de Módulos

  1. Um módulo por arquivo é uma prática comum
  2. O module_name deve descrever sua função
  3. As portas (input/output) são listadas entre parênteses após o nome
  1. Inputs são sempre input (não podem receber atribuição interna)
  2. Outputs são output (podem ser reg ou wire)
  3. <strong>endmodule</strong> deve fechar o módulo
challenge icon

Desafio

Preencha as partes ausentes para completar este módulo.

O que fazer:

  1. Adicione o nome do módulo my_and
  2. Adicione input para x
  3. Adicione input para y
  4. Adicione output para z
  5. Adicione a lógica interna usando assign

Experimente você mesmo

module ______ (   // Adicione o nome do módulo
  input x,       // Adicione a entrada
  input y,       // Adicione a entrada
  output z       // Adicione a saída
);
  // Adicione a declaração assign aqui (z = x & y)
  
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