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 port mapping por nome, onde você rotula explicitamente cada conexão usando .port(signal). Agora, abordaremos o método alternativo: port mapping por order.
Ele conecta sinais às portas de um módulo com base na ordem (order) em que aparecem na definição do módulo. Você simplesmente lista os sinais entre parênteses, e o Verilog os faz corresponder um a um.
Sintaxe:
module_name instance_name (signal1, signal2, signal3);O primeiro signal conecta ao primeiro port, o segundo ao segundo port, 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 é crítica:
// 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ê confundir a order, as conexões vão para as ports erradas. Isso pode ser difícil de depurar porque o código parece correct à 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 |
| Auto-documentável? | Sim | Não |
| Risco de erros | Baixo | Alto |
| Recomendado para | A maioria dos projetos | Apenas casos simples |
Quando Usar Mapeamento de Portas Por Ordem
O mapeamento de portas por ordem é aceitável quando:
- O módulo possui pouquíssimas portas (2-3)
- A ordem das portas é óbvia e improvável de mudar
- Você está escrevendo testbenches rápidos
Para a maioria dos projetos, o mapeamento de portas por nome é preferido 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(enable)input [7:0] d(entrada de dados)output [7:0] q(saída de dados)
Sinais para conectar:
enable_signal→ conectar aendata_input→ conectar addata_output→ conectar 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: Instancie o register com o nome reg1 usando mapeamento ORDER
// 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 SoftwareNíveis de Abstração de ProjetoSeu Primeiro MóduloComentários4Operadores Parte 1
Operadores AritméticosOperador de MóduloOperadores de ComparaçãoRecapitulação - Matemática SimplesOperadores Bitwise7Atribuição e Portas Lógicas
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ão
Instrução IfIf - ElseRecapitulação - Comparador SimplesInstrução CaseCasex e CasezRecapitulação - Projeto de ALU2Tipos de Dados
Tipo WireTipo RegInteger e RealVetoresArraysParâmetrosRecapitulação - Declarar Sinais5Operadores Parte 2
Operadores LógicosOperadores de ReduçãoOperadores de DeslocamentoOperador de ConcatenaçãoOperador CondicionalRecapitulação - Desafio de Operadores3Sistemas de Numeração
Representação BináriaNúmeros com Tamanho DefinidoNúmeros sem Tamanho DefinidoNúmeros NegativosValores Especiais X e ZRecapitulação - Formatos de Números6Módulos
Estrutura de MóduloPortas de Entrada e SaídaPortas InoutInstanciação de MóduloMapeamento de Portas por NomeMapeamento de Portas por OrdemRecapitulação - Construa um Módulo