Seçici

Seçici veriyi bir kaç kaynaktan alıp ortak bir yola aktaran aygıttır.

Seçici doğruluk tablosu

Seçici veriyi bir kaç kaynaktan alıp ortak bir yola aktaran aygıttır. Hangi girişin çıkışa aktarılacağını veri seçme hattı belirler.

Seçici doğruluk tablosu

Bazı kitaplarda seçici yukarıdaki simge ile gösteriliyor.

Doğruluk tablosundan da görülebileceği üzere seç 0 ise giriş0 seçilir. Seç 1 ise giriş1 seçilir.

İki girişli seçici devre şeması

Doğruluk tablosunu kullanarak iki girişli seçicinin devre şemasını çıkarabiliriz.

İki girişli seçici devre şeması

İki girişli seçici benzetim

Dört girişli seçici devre şeması

Dört girişli seçicinin devre şemasını aşağıda bulabilirsiniz.

Dört girişli seçici devre şeması

Bir kaç tane iki girişli seçici birleştirilerek dört girişli seçici oluşturulabilir.

Seç0 girişinin her iki seçicide ortak kullanıldığına dikkat ediniz.

İki girişli seçicilerden dört girişli seçici oluşturma

Dört girişli seçici benzetim

Aşağıdaki benzetimde üç tane iki girişli seçici kullanılarak dört girişli seçici oluşturulmuştur.

Okunabilirlik açısından veri seçme hattı, küçüğü sağda olacak şekilde dizilmiştir.

Bu örnek ise VE, VEYA ve DEĞİL kapıları kullanılarak oluşturulmuştur.

Dört girişli seçici

module dortgirislisecici(giris, sec, cikis);
   input [3:0] giris;
   input [1:0] sec;
   output reg cikis;

   always @ (*) begin
      case (sec)
        2'b00: cikis = giris[0];
        2'b01: cikis = giris[1];
        2'b10: cikis = giris[2];
        2'b11: cikis = giris[3];
      endcase
   end

endmodule // dortgirislisecici

Seçiciyi yazdıktan sonra dortgirislisecici.v olarak kaydedelim.

Dört girişli seçici açıklama

always @ (*) begin ifadesinde içerideki yıldız her şeyi seçiyor. Bir başka ifade ile girişlerin herhangi biri değiştiğinde always bloğunun içerisindeki ifadenin yürütüleceğini belirtiyor.

Tek tek yazmak yerine, input [3:0] giris; ifadesi ile giris3, giris2, giris1, giris0 şeklinde dört girişi tek seferde tanımlayabiliyoruz.

input [1:0] sec; ifadesi ile de iki seçme hattını tek seferde tanımlıyoruz.

2'b00: cikis = giris[0]; kullanımında en baştaki 2'b ile ikilik sayı sisteminde 2 bit bir sayı tanımlamak istediğimizi belirtiyoruz.

Eğer seçme hattı 0 ise, sıfır numaralı girişi seçiyoruz. Eğer 1 ise, bir numaralı girişi seçiyoruz.

Sınama tezgahı

module dortgirislisecici_tezgah;

   // Girişler
   reg [3:0] giris;
   reg [1:0] sec;

   // Çıkışlar
   wire cikis;

   // Test edilecekler
   dortgirislisecici uut (
                 .giris (giris),
                 .sec (sec),
                 .cikis (cikis)
                 );
   initial begin
      $dumpfile("dortgirislisecici.vcd");
      $dumpvars(0,dortgirislisecici_tezgah);

      // Girişleri ilklendir
      giris = 0;
      sec = 0;

      // 100 ns bekle
      #100;

      giris = 4'b0010;
      sec = 2'b01;

      // 10 ns bekle
      #10;

      giris = 4'b0000;
      sec = 2'b01;

      // Giriş değerini 0 yapalım
      // 10 ns bekle
      #10;

   end

endmodule // dortgirislisecici_tezgah

Sınama tezgahını dortgirislisecici_tezgah.v ismi ile kaydediniz.

Sınama tezgahında 1 numaralı girişin değerini 1 yapıyoruz. Seç değerini 1 yapıyoruz. Böylece girişteki 1 çıkışa aktarılıyor.

Yaklaşık 10 s sonra, 1 numaralı girişin değerini 0 yapıyoruz. Bir numaralı giriş hala seçili olduğu için bu 0 değeri çıkışa aktarılıyor.

Dört girişli seçici benzetim sonuçları

Dört girişli seçici benzetim

İlk önce giris[3:0] kapısına 0010 vererek giris1 kapısını 1 yapıyoruz. sec[1:0] kapısına 01 vererek giris1 kapısının çıkışa aktarılacağını belirtiyoruz.

giris1'i tekrar 0 yaptığımızda çıkışın da sıfırlandığına dikkat ediniz.

Yorumlar

yorum yaz

Yorum yaz

Henüz yorum yok.