Port Mapping By Order
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 order em que aparecem na definição do módulo. Você simplesmente lista os sinais entre parênteses, e o Verilog os associa um a um.
Sintaxe:
module_name instance_name (signal1, signal2, signal3);O primeiro signal se conecta à primeira porta, o segundo à segunda porta 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 |
|---|---|---|
| Syntax | .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 signals na ordem correct 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)
Signals a 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: 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 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