Port Mapping By Order
Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası. Ders 35 / 90.
Önceki derste, her bağlantıyı .port(signal) kullanarak açıkça etiketlediğiniz ada göre port eşleme yöntemini öğrendiniz. Şimdi alternatif yöntemi ele alacağız: sıraya göre port eşleme.
Sinyalleri, modül tanımında göründükleri order temelinde modülün bağlantı noktalarına bağlar. Sinyalleri parantez içinde listelemeniz yeterlidir; Verilog bunları birer birer eşleştirir.
Sözdizimi:
module_name instance_name (signal1, signal2, signal3);İlk sinyal ilk porta, ikincisi ikinci porta ve bu şekilde devam ederek bağlanır.
Örnek
Modül tanımı:
module or_gate (
input in1, // İlk port
input in2, // İkinci port
output result // Üçüncü port
);
assign result = in1 | in2;
endmoduleSıraya göre port eşlemesiyle örneklendirme:
or_gate or1 (input_a, input_b, output_y);Bu, şunları bağlar:
- First signal
input_a→ first portin1 - Second signal
input_b→ second portin2 - Third signal
output_y→ third portresult
Sıra Önemlidir
port eşlemesi sıraya göre yapıldığında sıra kritiktir:
// Doğru sıra
or_gate or1 (input_a, input_b, output_y);
// Yanlış sıra - sinyaller yanlış portlara bağlanmış!
or_gate or1 (input_b, input_a, output_y);
or_gate or1 (output_y, input_a, input_b);Sırayı karıştırırsan bağlantılar yanlış portlara gider. Kod ilk bakışta doğru göründüğü için bunun hatasını ayıklamak zor olabilir.
İsme Göre Port Eşleme ve Sıraya Göre Eşleme
| Özellik | İsme Göre | Sıraya Göre |
|---|---|---|
| syntax | .port(signal) | signal1, signal2 |
| Sıra önemli mi? | Hayır | Evet |
| Kendi kendini belgeliyor mu? | Evet | Hayır |
| Hata yapma riski | Düşük | Yüksek |
| Şunlar için önerilir | Çoğu tasarım | Yalnızca basit durumlar |
Portları Sıraya Göre Eşlemeyi Ne Zaman Kullanmalı?
Portları sıraya göre eşlemek şu durumlarda kabul edilebilir:
- Modülün çok az sayıda portu (2-3) varsa
- Port sırası açıksa ve değişme olasılığı düşükse
- Hızlı testbench'ler yazıyorsanız
Çoğu tasarım için ada göre port eşleme tercih edilir çünkü daha anlaşılırdır ve hataya daha az açıktır.
Görev
Bağlantı noktalarını sıralama yoluyla eşleyerek sinyalleri doğru sırada listeleyip örneklemeyi tamamlayın.
Yapılacaklar:
Modül bağlantı noktaları (bu sırada):
input en(etkinleştirme)input [7:0] d(veri girişi)output [7:0] q(veri çıkışı)
Bağlanacak sinyaller:
enable_signal→enile bağlayındata_input→dile bağlayındata_output→qile bağlayın
Kendin dene
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: register'ı reg1 adıyla ORDER mapping kullanarak örnekle
// Sinyalleri doğru sırada listele: enable_signal, data_input, data_output
// .port(signal) sözdizimini kullanma
endmoduleBu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Temeller bölümündeki tüm dersler
4Operators 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 LogicKendi başına pratik yap: Online Verilog derleyicisi