Çift Yönlü Portlar
Coddy'nin Verilog Journey'sinin Temel Bilgiler bölümünün bir parçası. Ders 32 / 90.
inout portu, sinyalleri hem gönderebilen hem de alabilen çift yönlü bir porttur. Farklı zamanlarda giriş veya çıkış olarak görev yapabilir. Portların çoğu ya input (veri içeri akar) ya da output (veri dışarı akar) olur. inout portu her ikisini de yapabilir. Duruma bağlı olarak veriyi dışarı sürebilir veya içeri alabilir.
Bunu tek yönlü bir yol yerine çift yönlü bir cadde gibi düşün.
Giriş/çıkış portları şunlar için kullanılır:
- Paylaşılan veri yolları: aynı kablolara bağlı birden fazla cihaz
- Bellek veri yolları: veriler okunabilir veya yazılabilir
- Çift yönlü iletişim: I2C, SPI vb.
Bir seferde yalnızca bir cihaz bus'ı sürer. Diğer cihazlar yüksek empedans durumunda (Z) olmalıdır.
Bir Inout Portu Tanımlama
inout [7:0] data_bus; // 8-bit çift yönlü bus
inout ready; // Tek bitlik çift yönlü sinyalInout Nasıl Çalışır
Bir inout portu, giriş veya çıkış olarak çalışıp çalışmadığına karar vermek için bir kontrol sinyali gerektirir:
module bidir (
inout [7:0] bus,
input [7:0] data_out,
input enable,
output [7:0] data_in
);
assign bus = (enable) ? data_out : 8'bZ; // Drive bus when enabled, else Z
assign data_in = bus; // Always read the bus
endmoduleenable = 1olduğunda modül veri yolunu sürer (çıkış modu)enable = 0olduğunda modül veri yolunu serbest bırakır (giriş modu, high-Z)
Inout için Önemli Kurallar
| Kural | Neden |
|---|---|
wire olarak bildirilmelidir | reg olamaz |
| Aynı anda okunamaz ve yazılamaz | Çakışmaya (X) neden olur |
| Diğer cihazların sürmesini sağlar | |
| Aynı anda yalnızca bir sürücü | Veri yolu çekişmesini önler |
Inout ve Input ve Output
| Port Türü | Yön | Sürebilir | Okuyabilir |
|---|---|---|---|
input | Tek yönlü (yalnızca giriş) | Hayır | Evet |
output | Tek yönlü (yalnızca çıkış) | Evet | Hayır |
inout | Çift yönlü (her ikisi) | Evet (etkinleştirildiğinde) | Evet (her zaman) |
Yaygın Hata
// WRONG: always bloğu içinde inout'a atama yapılamaz
always @(posedge clk) begin
data_bus <= something; // Hata! Koşul ile assign kullanın
end
// CORRECT: enable koşulu ile assign kullanın
assign data_bus = (enable) ? something : 8'bZ;Görev
Bu çift yönlü arabelleğin çalışmasını sağlamak için eksik inout portunu ve assign ifadelerini ekleyin.
Yapılacaklar:
-
io_busadlı 8 bitlik birinoutportu ekleyin send_enable1 olduğundaio_bus'usend_valueile süren, aksi takdirdeZkullanan birassignifadesi ekleyinio_busdeğerinireceive_valueiçine okuyan birassignifadesi ekleyin
Kendin dene
module bidir_buffer (
// Görev 1: Buraya io_bus adında 8-bit bir inout port ekle
input [7:0] send_value,
input send_enable,
output [7:0] receive_value
);
// Görev 2: send_enable 1 olduğunda io_bus'u send_value ile süren, aksi halde Z olan bir assign ifadesi ekle
// Görev 3: io_bus'u receive_value'ya okuyan bir assign ifadesi ekle
endmoduleBu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Temel Bilgiler bölümündeki tüm dersler
4Operatörler Bölüm 1
Aritmetik OperatörlerMod Alma OperatörüKarşılaştırma OperatörleriTekrar - Basit MatematikBit Düzeyi Operatörleri7Atama ve Kapılar
Sürekli AtamaOperatörlerle AtamaYerleşik Kapı PrimitifleriAND, OR ve NOT KapılarıXOR ve XNOR KapılarıÖzet - Mantık Kapısı Devresi10Karar Verme
If İfadesiIf - ElseTekrar - Basit KarşılaştırıcıCase İfadesiCasex ve CasezTekrar - ALU Tasarımı2Veri Türleri
Wire TürüReg TürüTamsayı ve GerçelVektörlerDizilerParametrelerÖzet - Sinyalleri Tanımlama5Operatörler Bölüm 2
Mantıksal Operatörlerİndirgeme OperatörleriKaydırma OperatörleriBirleştirme OperatörüKoşullu OperatörTekrar - Operatör Meydan Okuması11Döngüler
For DöngüsüWhile DöngüsüTekrar DöngüsüSonsuz DöngüDevre Dışı Bırakma İfadesiTekrar - Döngü Kalıpları3Sayı Sistemi
İkili GösterimBoyutlu SayılarBoyutsuz SayılarNegatif SayılarÖzel X ve Z DeğerleriTekrar - Sayı Biçimleri6Modüller
Modül YapısıGiriş ve Çıkış PortlarıÇift Yönlü PortlarModül ÖrneklendirmeAda Göre Port EşlemeSıraya Göre Port EşlemeTekrar - Bir Modül Oluşturma9Prosedürel Bloklar
Always BloğuInitial BloğuDuyarlılık ListesiBloklayıcı AtamaBloklamayan AtamaTekrar - Always ve Initial Karşılaştırması15Trafik Işığı Denetleyicisi
Durumları TanımlamaDurum Makinesi MantığıKendi başına pratik yap: Online Verilog derleyicisi