Giriş ve Çıkış Portları
Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası — ders 31 / 90.
Giriş ve çıkış portları, bir modülün dış dünyayla iletişim kurmasını sağlayan bağlantılardır. Bir çip üzerindeki pinler gibidirler. Portlar, bir modül ile tasarımın geri kalanı arasındaki arayüzdür.
Her modül şunlara sahiptir:
- Giriş portları — modülün içine gelen sinyaller
- Çıkış portları — modülün dışına giden sinyaller
Giriş Portları
Giriş portları veriyi dışarıdan alır. Modül içerisinde değiştirilemezler; sadece okunabilirler.
input clk; // Tek bitlik giriş
input [7:0] data; // 8 bitlik giriş vektörü
input a, b; // Tek satırda birden fazla girişGirişler (inputs) için kurallar:
- Modül içinde bir değer atanamaz
regolarak tanımlanamaz- Her zaman
wiretipindedir (varsayılan olarak)
Çıkış Portları
Çıkış portları veriyi dışarıya gönderir. assign veya always blokları tarafından sürülebilirler.
output out; // Tek bitlik çıkış
output [3:0] result; // 4 bitlik çıkış
output reg busy; // Çıkış reg olabilir
output wire ready; // Çıkış wire olabilirÇıkışlar için kurallar:
wire(assignile) veyareg(alwaysile) olabilir- Modül içindeki bir şey tarafından sürülmelidir
Port Bildirim Sözdizimi
Port bildirim sözdizimi, bir modül içindeki giriş ve çıkış portlarını yazmanın belirli yoludur. Verilog'a her bir port hakkında üç şey söyler:
- Yön — input, output veya inout mu?
- Boyut — kaç bit genişliğinde?
- İsim — adı nedir?
module example (
input [7:0] data_in, // Giriş vektörü
input clk, // Tekli giriş
input enable, // Tekli giriş
output reg [7:0] out, // Çıkış reg
output busy // Çıkış wire
);Port Yönü Neden Önemlidir
Yön, Verilog'a şunları söyler:
- Modülün hangi sinyalleri okuyabileceği (girişler)
- Modülün hangi sinyalleri yazabileceği (çıkışlar)
- Ne tür bağlantılara izin verildiği
Yanlış yönün kullanılması derleme hatalarına yol açar.
Kod Örneği
module port_demo (
input [3:0] a, // Sadece okunabilir
input [3:0] b, // Sadece okunabilir
output reg [3:0] sum, // Yazılabilir (reg)
output [3:0] diff // Yazılabilir (wire)
);
always @(*) begin
sum = a + b; // Çıkış reg'ine yazma
end
assign diff = a - b; // Çıkış wire'ına yazma
endmoduleGörev
Port Bildirimlerini Tamamlayın
Ne yapmalı:
data_inadında 8-bitlik bir giriş ekleyinclkadında tek bitlik bir giriş ekleyinresultadında 4-bitlik bir çıkış ekleyin (reg kullanın — always bloğu içinde atanacaktır)validadında tek bitlik bir çıkış ekleyin (wire kullanın — assign ile atanacaktır)
Kopya kağıdı
Portlar, bir modül ile dış dünya arasındaki arayüzdür.
Giriş Portları (Input Ports)
Girişler her zaman wire tipindedir ve modül içinde salt okunurdur:
input clk; // Single-bit
input [7:0] data; // 8-bit vector
input a, b; // Multiple inputsÇıkış Portları (Output Ports)
Çıkışlar wire (assign ile sürülür) veya reg (always ile sürülür) olabilir:
output wire ready; // Use with assign
output reg busy; // Use with alwaysModül Başlığında Port Bildirimi
Her port bildirimi yön, boyut ve isim belirtir:
module example (
input [7:0] data_in, // 8-bit input
input clk, // single-bit input
output reg [3:0] sum, // 4-bit output reg
output diff // single-bit output wire
);
always @(*) sum = data_in[3:0] + 1;
assign diff = data_in[0];
endmoduleKendin dene
module port_challenge (
// Görev 1: data_in adında 8 bitlik bir giriş ekleyin
// Görev 2: clk adında tek bitlik bir giriş ekleyin
// Görev 3: result adında 4 bitlik bir çıkış ekleyin (reg kullanın)
// Görev 4: valid adında tek bitlik bir çıkış ekleyin (wire kullanın)
);
reg [3:0] counter;
always @(posedge clk) begin
counter <= counter + 1;
result <= counter;
end
assign valid = (counter > 8);
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
4Operatörler Bölüm 1
Aritmetik OperatörlerModül OperatörüKarşılaştırma OperatörleriÖzet - Basit MatematikBitsel Operatörler7Atama ve Kapılar
Sürekli AtamaOperatörlerle AtamaYerleşik Kapı PrimitifleriAND OR NOT KapılarıXOR XNOR KapılarıÖzet - Mantık Kapısı Devresi10Karar Yapıları
If İfadesiIf - ElseÖzet - Basit KarşılaştırıcıCase İfadesiCasex ve CasezÖzet - ALU Tasarımı5Operatörler Bölüm 2
Mantıksal Operatörlerİndirgeme OperatörleriKaydırma OperatörleriBirleştirme OperatörüKoşullu OperatörÖzet - Operatör Meydan Okuması11Döngüler
For DöngüsüWhile DöngüsüRepeat DöngüsüSonsuz DöngüDevre Dışı Bırakma İfadesiÖzet - Döngü Kalıpları3Sayı Sistemleri
İkilik GösterimBoyutlandırılmış SayılarBoyutlandırılmamış SayılarNegatif SayılarÖzel Değerler X ve ZÖzet - Sayı Formatları6Modüller
Modül YapısıGiriş ve Çıkış PortlarıInout PortlarıModül Örneklendirmeİsme Göre Port EşlemeSıraya Göre Port EşlemeÖzet - Bir Modül Oluşturun9Prosedürel Bloklar
Always BloğuInitial BloğuDuyarlılık ListesiEngelleyici AtamaEngelleyici Olmayan AtamaÖzet - Always vs Initial15Trafik Işığı Kontrolcüsü
Durumları TanımlamaDurum Makinesi Mantığı