Module Instantiation
Parte da seção Fundamentos do Journey de Verilog da Coddy. Lição 33 de 90.
A instanciação de módulo é o processo de criar uma cópia de um módulo dentro de outro módulo. É assim que você cria 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);| Parte | Significado |
|---|---|
module_name | Nome do módulo a ser instanciado |
instance_name | Nome exclusivo para esta cópia |
connections | Sinais conectados às portas do módulo |
Exemplo simples
Etapa 1: Defina um módulo
module and_gate (
input a,
input b,
output c
);
assign c = a & b;
endmoduleEtapa 2: Instancie-o em outro módulo
module top (
input x,
input y,
output z
);
and_gate gate1 (x, y, z);
endmoduleVeja 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 conecta-se à primeira porta a. O segundo sinal y conecta-se à segunda porta b. O terceiro sinal z conecta-se à 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 várias 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);
endmoduleCada 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 são executadas em paralelo (simultaneamente)
- Os signals que você passa determinam como as instâncias se conectam ao restante do seu design
Regras para Instanciação
| Regra | Por quê |
|---|---|
| O nome da instância deve ser exclusivo | Para distinguir entre cópias |
| O nome do módulo deve existir | Deve ser definido em outro lugar |
| O número de connections deve corresponder ao número de port | Caso contrário, o Verilog não sabe o que se conecta aonde |
| A order das connections deve corresponder à order dos port | O primeiro signal se conecta ao primeiro port etc. |
Desafio
Complete o código instanciando o módulo or_gate.
O que fazer:
- Instancie
or_gatecom o nome da instânciaor1 - 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)
endmoduleEsta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
1Introdução
O que é VerilogHardware vs. SoftwareSeu primeiro móduloComentáriosNíveis de abstração de projeto4Operators 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 LogicPratique por conta própria: Compilador de Verilog online