Vertical Counter’lar Kullanarak Digital Giriş Filtreleme

Vertical Counter

Yukarıdaki örnekte, az sayıda doğrudan örneklenebilen buton olan durumda buton okumasını uygulama kodundan bağımsız bir sistem servisi olarak gerçeklemenin basit bir yolunu paylaştım. Bu, basit gibi gözüken işlerde bile kullanmakta fayda olan bir yöntemdir.

Kullanıcı arayüzünün sistemin daha kritik bir bileşeni olduğu durumlarda, özellikle de buton sayısı fazla ise, şu giriş filtreleme işini biraz daha bitwise lojik kullanarak yapmayı bir seçenek olarak dikkate alabiliriz. Bu yöntemlerden biri, bana başta tuhaf gelen vertical counter yapısını kullanmaktır.

Vertical (düşey) counter dediğimiz şey, çok sayıda bir bitlik girişi paralel olarak filtrelemeye yarayan bir ardışık mantık sıralamasıdır.

Akla ilk gelen kullanım, buton girişlerini okumadır.

  var 
  inputs: word;
  outputs: word;
  delta: word;
  toggle: word;
  counters: array[0..3] of word;
// Periyodik olarak çalışan counter run kodu:
  delta:= inputs xor outputs;
  for i := 3 downto 1 do counters[i]:= counters[i] xor counters[i-1];
  counters[0]:= not(counters[0]);
  for i:= 0 to 3 do  counters[i]:= counters[i] and delta;
  toggle:= counters[0];
  for i := 1 to 3 do toggle:= toggle and counters[i];
  outputs:= outputs xor toggle;

Bu kodun nasıl çalıştığını görmek için şu küçük programı indirip çalıştırabilirsiniz:

Düşüncelerinizi yazın...

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.