fpganedir.com'da ara

fpganedir mail

 

LABVIEW'DE CASE YAPISI İLE SAYICI TASARIMI

Bu örneğimizde Labview’de case yapısını kullanarak bir adet yukarı aşağı sayabilen bir sayıcı tasarlayacağız. Sayıcı tasarımını FSM yöntemini kullanarak oluşturacağım.

Sayıcı modulünde basla, dur, Yukari/Aşağı, Stop olmak üzere 4 adet anahtar kontrolü olacak. Bunların yanında sayıcı modülü, ilk değerinin kullanıcı tarafından girilebilmesi için bir numerik kontrol ile sayıcının değerinin gösterilmesi için bir adet numerik indikatör içerecek.


Sayıcı projesi 3 durumdan oluşacak.

Önekte durumları enumerated tür kullanarak belirteceğiz. Durum geçişleri için ise case yapısını kullanacağız. Bu örnek ile aşağıdaki konularından bahsetmiş olacağız.

Artık sayıcı modülümüzü oluşturmaya başlayabiliriz.

Labview programını açalım ve yeni bir VI oluşturalım.  Örneğimize enumerated tür tanımlayarak devam edelim. Bunun için blok diyagramı açalım. Ardından klavyeden ctrl + space tuşlarına basarak Quick drop diyalog kutusunu açalım. Quick drop diyalog kutusunun arama kısmına “enum” yazalım ve bulunana sonuçlardan enum constant’ı seçip, blok diyagrama yerleştirelim.


Örneğimize durumları belirleyerek devam edelim. Bunun için  enum bloğunun üzerine sağ tıklayalım. Açılan menüden Edit Items seçeneğini seçelim.

Açılan diyalog kutusunda “Edit items” bölümünde durumların isimlerini girelim. Ardından OK’e basıp, diyalog kutusunu kapatalım.

Örneğimize while döngüsü ekleyerek devam edelim. Bunun için için blok diyagram üzerinde sağ tıklayıp, Functions aracını açalım. Functions aracında Express  >> Execution Control >> While Loop seçelim ve blok diyagramına kutu olacak şekilde yerleştirelim

Örneğimize case yapısını ekleyerek devam edelim. Bunun için blok diyagram üzerinde sağ tıklayıp, Functions aracını açalım. Functions aracında Express  >> Execution Control >> Case Structure seçelim ve blok diyagramda while loop’un içerisine kutu olacak şekilde yerleştirelim.

Ardından while döngüsüne iki adet shift register ekleyelim. Bu registerlerin biri durum değişkeni  diğeri ise sayıcı için kullanılacak. While döngüsüne shift register eklemek için, while döngüsüne sağ tıklayıp, açılan menüden “Add Shift Register” ifadesini seçelim. Aynı işlemi bir kez daha yapalım ve while döngüsüne iki adet shift register ekleyelim.

Ardından enumerated blok ile case yapısının bağlantısını shift register üzerinden yapalım.

Case yapısının üzerine gelip sağ tıklayalım. Açılan menüden Add Case for Every Value ifadesini seçelim. Böylece enumerated türünde tanımlı olan bütün elemanlar için birer adet sayfa oluşturmuş oluruz.

Programa idle durumundaki detayları girerek başlayalım. Bunun için Case yapısının üstünde bulunan ve case yapısının o an ki sayfasını gösteren kısmına gelip , aşağı ok yardımıyla “idle”, Default seçelim.

İdle sayfasına bir başla butonu ekleyelim ve bu butona basıldığında programımız , programdaki diğer bir buton  olan yukarı/aşağı butonunun durumuna göre yukarı veya aşağı durumlarına girsin. Burada C de bulunan if yapısının muadili olan  select ifadesini kullanacağız. Blok diyagrama select ifadeni eklemek için Functions kutusundan Programming > Comparision > Select ifadesini seçelim ve case yapısının içerisine yerleştirelim.

Select bloğu hakkında kısa bir açıklama  için ctrl + H basıp, Context Help’i açabilirsiniz. Daha detaylı bilgi için  Context Help içerisinde Detailed Help tıklarsanız Labview Help ‘i açabilirsiniz.

Örneğimize basla, yukarı/aşağı ve dur adında üç buton ekleyerek devam edelim. Bunun için Front paneli açalım. Controls panelinde Button& Switches kısmında iki adet push bir adet toggle switch seçelim. Push butonlarını basla dur, toggle switchi ise yukarı/aşağı kontrolü için kullanacağız.

Sayıcının ilk değeri için front panele bir adet numerik kontrol ekleyelim. Numerik kontrol eklemek için Controls panelinde Silver > Numeric > Numeric Control (silver) bloğunu seçelim.

Sayıcı değerini Front panelden izleyebilmek için Controls panelinde Silver > Numeric > Numeric Indicator (silver) bloğunu seçelim ve front panele ekleyelim.

Ardından idle sayfası için bağlantıları aşağıdaki gibi yapalım ve sayfaya gecikme için bir zamanlayıcı ekleyelim.

Case yapısının yukarı sayfasını açalım ve bağlantıları aşağıdaki gibi yapalım.

Case yapısının aşağı sayfasını açalım ve bağlantıları aşağıdaki gibi yapalım.

Artık programı çalıştırabilir ve sonuçlarını gözlemleyebiliriz.

 

Anasayfa | Fpga | VHDL | VHDL Sözlüğü | Embedded Sistem | Android | Sayısal Tasarım | Simulasyon | PCB | Örnekler | Forum | İletişim
Copyright © 2010-2013 FPGAnedir. All Rights Reserved.