Mapeamento de Portas por Ordem
Parte da seção Fundamentos do Journey de Verilog da Coddy. Lição 35 de 90.
Na lição anterior, você aprendeu sobre o mapeamento de portas por nome, em que rotula explicitamente cada conexão usando .port(signal). Agora abordaremos o método alternativo: mapeamento de portas por ordem.
Ele conecta sinais às portas de um módulo com base na ordem em que aparecem na definição do módulo. Basta listar os sinais entre parênteses, e o Verilog faz a correspondência um a um.
Sintaxe:
module_name instance_name (signal1, signal2, signal3);O primeiro sinal se conecta à primeira porta, o segundo à segunda, e assim por diante.
Exemplo
Definição do módulo:
module or_gate (
input in1, // Primeira porta
input in2, // Segunda porta
output result // Terceira porta
);
assign result = in1 | in2;
endmoduleInstanciação com mapeamento de portas por ordem:
or_gate or1 (input_a, input_b, output_y);Isso conecta:
- Primeiro sinal
input_a→ primeira portain1 - Segundo sinal
input_b→ segunda portain2 - Terceiro sinal
output_y→ terceira portaresult
A Ordem Importa
Com o mapeamento de portas por ordem, a sequência é fundamental:
// Ordem correta
or_gate or1 (input_a, input_b, output_y);
// Ordem errada - sinais conectados às portas erradas!
or_gate or1 (input_b, input_a, output_y);
or_gate or1 (output_y, input_a, input_b);Se você misturar a ordem, as conexões irão para as portas erradas. Isso pode ser difícil de depurar, porque o código parece correto à primeira vista.
Mapeamento de Portas por Nome vs. por Ordem
| Recurso | Por Nome | Por Ordem |
|---|---|---|
| Sintaxe | .port(signal) | signal1, signal2 |
| A ordem importa? | Não | Sim |
| É autoexplicativo? | Sim | Não |
| Risco de erros | Baixo | Alto |
| Recomendado para | A maioria dos projetos | Apenas casos simples |
Quando Usar o Mapeamento de Portas por Ordem
O mapeamento de portas por ordem é aceitável quando:
- O módulo tem pouquíssimas portas (2-3)
- A ordem das portas é óbvia e provavelmente não mudará
- Você está escrevendo testbenches rápidos
Para a maioria dos projetos, o mapeamento de portas por nome é preferível porque é mais claro e menos propenso a erros.
Desafio
Conclua a instanciação listando os sinais na ordem correta usando o mapeamento de portas por ordem.
O que fazer:
Portas do módulo (nesta ordem):
input en(habilitação)input [7:0] d(entrada de dados)output [7:0] q(saída de dados)
Sinais a conectar:
enable_signal→ conecte aendata_input→ conecte addata_output→ conecte aq
Experimente você mesmo
module register (
input en,
input [7:0] d,
output [7:0] q
);
assign q = en ? d : q;
endmodule
module top (
input enable_signal,
input [7:0] data_input,
output [7:0] data_output
);
// TODO: Instanciar register com o nome reg1 usando mapeamento por ORDEM
// Liste os sinais na ordem correta: enable_signal, data_input, data_output
// 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 projeto4Operadores Parte 1
Operadores aritméticosOperador móduloOperadores de comparaçãoRecapitulação - Matemática simplesOperadores bit a bit7Atribuições e Portas
Atribuição ContínuaAtribuição com OperadoresPrimitivas de Portas IntegradasPortas AND, OR e NOTPortas XOR e XNORRecapitulação - Circuito de Portas Lógicas10Tomada de Decisões
Declaração IfIf - ElseRevisão - Comparador SimplesDeclaração CaseCasex e CasezRevisão - Projeto de ALU2Tipos de Dados
Tipo WireTipo RegInteiro e RealVetoresArraysParâmetrosRecapitulação - Declarar Sinais5Operadores - Parte 2
Operadores lógicosOperadores de reduçãoOperadores de deslocamentoOperador de concatenaçãoOperador condicionalRevisão - Desafio de operadores3Sistema Numérico
Representação BináriaNúmeros com Tamanho DefinidoNúmeros sem Tamanho DefinidoNúmeros NegativosValores Especiais X e ZRevisão - Formatos Numéricos6Módulos
Estrutura de MódulosPortas de Entrada e SaídaPortas InoutInstanciação de MódulosMapeamento de Portas por NomeMapeamento de Portas por OrdemRecapitulação — Construindo um MóduloPratique por conta própria: Compilador de Verilog online