Seçici veriyi bir kaç kaynaktan alıp ortak bir yola aktaran aygıttır.
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.

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.
Doğruluk tablosunu kullanarak iki girişli seçicinin devre şemasını çıkarabiliriz.

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

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.

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.
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.
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.
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.

İ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