24 Şubat 2013 Pazar

Labview Türkçe Anlatım-2


Rastgele sayılar için:programming>numeric>random number
Stop butonu control olarak görev yapar.Function>programming>application.
Programming>timing>wait(yavaş çalışır program)

20 Şubat 2013 Çarşamba

Labview Türkçe Anlatım-1



Elimden geldiğince sizlere labview hakkında bildiklerimi aktaracağım.

NÜMERİK NESNELER(SAYISAL)
Sayısal veriler kullanıcıya control ve göstergeler ile sunulur.
*Termometre eklemekde control>>modern>>numeric
>Değerleri görmek için digital display kullanılır.
*properties>>ayarlar ile istediğimiz özellikle oynayabiliriz.

8 Şubat 2013 Cuma

Girilen 3 tamsayıdan maksimumunu bulan program


Girilen 3 tamsayıdan maksimumunu bulan C program kodu
#include <stdio.h>
#include <stdlib.h>

int main()

Girilen 10 tamsayının negatif ve pozitif olanlarının toplamını ve sayısını bulan C programı


Girilen 10 tamsayının negatif ve pozitif olanlarının toplamını ve sayısını bulan C programı

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>

int main()

Girilen tamsayının tek ya da çift olduğunu bulan program


C de girilen tamsayının tek ya da çift olduğunu bulan program

#include <stdio.h>
#include <stdlib.h>

int main()

Girilen tamsayının basamak sayısını bulma


C de girilen tamsayının basamak sayısını bulma

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>

Girilen 2 sayının obebini bulma

Girilen 2 sayının obebini bulan C programı.

#include <stdio.h>
main()

4 Şubat 2013 Pazartesi

Sayısal Tasarım Soru Çözümü


SORU : VEDEĞİL (NAND) kapıları kullanarak T flip flop tasarlayınız. (10p)


ÇÖZÜM : Bu soru pek fazla yorum gerekmeyen bir soru. Biraz ezber, T flip flopun şemasını bilmek gerekli. Gerisi zaten NAND olmayan kapıları uygun şekilde NAND’ler ile tasarlayarak çözülüyor.
Ben T flip flopun şemasını ezbere bilmediğimden, şema için Morris Mano’nun Digital Logic Design kitabına başvurdum. Kitaptan aşağıdaki şemayı buldum.

AND kapılarını NAND ile yapmak basit. Fakat NOR’ları nasıl dönüştüreceğimi bulamadım, ben de internette araştırdım. Bu sayfanın sonlarına doğru aşağıdaki tabloyu buldum.

Geriye sadece kapıları NAND’ler ile yapmak kaldı. Bu da 1. şemadaki her kapının yerine, üstteki tabloda verilen NAND eşdeğerini koyarak oluyor. Sonuç olarak aşağıdaki gibi bir devre ortaya çıkıyor.

                                                                                   




Sayısal Tasarım Soru Çözümü

         Sayısal Tasarım Final Soruları (II. Öğretim – Soru : 3)




SORU : Ötelemeli kaydedici (shift register) kullanarak 16 bit toplama işlemini 1 bit toplama devresi kullanarak gerçekleştirmek istiyoruz. Düzeneği tasarlayarak, çalışmasını kısaca açıklayınız. (20p)





saytas

 Sağda shift registerlar için doğruluk tablosu verdim. Tamamen kendim uydurdum bu tabloyu. Daha fazla kontrol biti ile daha farklı işlemler yapılabilir. (Örn: sola kaydır, durdur, temizle, vs.) Benim sadece iki duruma ihtiyacım olduğu için tek kontrol biti ile işi hallettim.
İlk etapta S = 0 vererek paralel yüklemeyi sağlıyorum. S, 0 olduğu sürece SR1 ve SR2′ye clock geldiği halde, paralel yükleme yapacağından herhangi bir kayma olmayacak. Alt tarafta ise işlemlerimi belirli sayılarda yapacağım için S 0 iken, yani paralel yükleme esnasında buraların çalışmasını istemiyorum. Bu yüzden A1 isimli and kapısını oraya koydum. S 0 olduğu sürece alt tarafa clock palsini geçirmeyecek. S’e 1 verdiğimde, yani kaydırarak toplama işlemini başlattığımda AND kapısının sonucu, aynen CLOCK palsi olacak.
Tamam, her pals geldiğinde sağa doğru kaydırarak basamak basamak toplayacağız. Elde girişi olarak da bir önceki basamağın elde çıkışını vereceğiz. Ancak ilk basamakta elde girişi olarak ’0′ vermeliyim. Bunun için de C1 sayıcısını ve 2×1 MUX’u kullandım. Amacım, ilk palste Cin girişine 0 vermek, ikinci pals ve daha sonraki palslerde bir önceki Cout’u vermek. C1 sayıcım 0′dan başlıyor, ilk pals geldi “0001″ oldu. Bu anda Q1 çıkışım ’0′. yani, MUX’tan A girişi seçilecek ki bu da ’0′.
C1′e ikinci pals geldiğinde Q çıkışı “0010″ olacak. Bu da MUX’ta B girişinin, yani bir önceki işlemden gelen Cout değerinin seçilmesini sağlayacak. MUX’un çıkışı da toplayıcıya elde girişi olarak gidiyor. C1′e ikinci pals geldiğinde Q1 çıkışı “1″ olacağından E girişine de ’1′ gidecek. Bu durumda yetkilendirme girişi ’0′ ile aktif olduğundan C1 sayıcısı artık saymayı bırakacak, çalışmayacak. Bu durumda Q1 çıkışı da sürekli ’1′ olarak kalacağından bundan sonraki adımlarda elde girişi olarak sürekli bir önceki adımın elde çıkışı gelecek.
Full adderin S çıkışı, SR3 registerının SI girişine verildi. Bu shift register her sağa kaydığında, toplamın basamakları oluşmaya başlayacak. Diğer sayıcılarda kaç kere kaydırdığımın bir önemi yoktu. Çünkü içi boşalsa bile artık bir işe yaramayacağından benim için hiçbir sorun olmayacak. Ancak SR3 registerında 16 kere kaydırmam lazım. Eğer 17. defa kayarsa, Çıkışımın en sağdaki basamağı, SO çıkışına verilir ve kaymaya devam ettikçe registerın içi boşalır, dolayısıyla sonucumu göremem.
Bunun için de aynı C1′de yaptığım yöntemi kullanıyorum. 16. kez pals geldiğinde, sayıcıyı durduracağım, ve SR3′e bir daha pals gitmeyecek, dolayısıyla kaymayacak. TC çıkışı, 0′dan 15′e kadar saydığında tekrar 0′dan başlarken bir pals üretir. Çok basamaklı sayıların displaylerde gösterilmesi gibi uygulamalarda kullanılır. (Örn: yaptığımız sayıcı ödevi.) Ben de tam 16. palste 1 veren bu çıkışı E girişine bağladım. Dolayısıyla 16′ya kadar sayıp C2 sayıcısı duracak.
SR3′e, C2 sayıcısı çalıştığı sürece pals gitmesini istiyorum. Bu sayıcı çalışırken TC çıkışı ’0′ olacağından, bunu invert ederek A2 kapısına verdim. Diğer ucuna da A1′den çıkan, ve alt tarafta kullandığım palsin girişini verdim. Bu durumda A1 kapısından pals gelmeye başlayınca, yani devredeki S girişime ’1′ verdiğim anda SR3 registerında kayma başlayacak, aynı zamanda C2 sayıcısı da saymaya başlayacak. C2′nin TC çıkışından ’1′ geldiğinde, yani 16 kez saydığında A2 kapısının bir girişi ’0′ olacağından SR3′e artık pals gitmeyecek ve kaymayacak. Dolayısıyla toplamda 16 kez kayarak sayımı kaybetmeden çıkışta gözlemleyebileceğim.
Bir diğer konu da piyasada 16 bitlik shift register olmadığından, devreyi 8 bitlik shift registerlarla yapmamız gerekiyor. Bu şema karışık olmasın diye 16 bitlik registerlarla çizdim. Ancak her bir register için altta verdiğim 8 bitlik shift registerlarla yapılmış halini kullanabiliriz.


Sayısal Tasarım Soru Çözümü


Soru:a,b,c,d,e,f,g gibi 7 adet girişe sahip devrede “1” olan girişlerin toplam sayısını bulan sayısal devreyi tasarlayınız. (20p)


saytas

Olay şöyle işliyor : girişleri multiplexerdan veriyoruz, yalnız 7 giriş dendiği için 8 to 1 mux’un 8. girişini toprağa bağlayacağız ki lojik 0 olarak işlem görsün ve 1′lerin toplamına dahil edilmesin. C-1 sayıcısına clock pals uyguluyorum. Yetkilendirme ucunu da Q0, Q1 ve Q2′nin ve’lenmesine bağladım. Bu şu işe yarayacak: bu üç çıkışın tamamı 1 olduğunda, yani decimal olarak 7 olduğunda yetkilendirme ucuna lojik 1 gidecek. Yetkilendirme ucu lojik 0 iken sayıcı sayar, lojik 1 iken saymaz. Bu durumda elimizde 0′dan 7′ye kadar bir defa sayan bir sayıcı oldu.
Üstte de belirttiğim gibi girişleri tek tek tarayacağız. C-1 sayıcısının görevi de; girişleri verdiğim mux’un adres girişlerini değiştirerek, çıkışa yansıyacak olan girişi değiştirmek.
Bu noktada her şey çok güzel. Girişimiz 1 ise 1, 0 ise 0 alıyoruz. Ancak henüz bunu C-2 sayıcısı için clock olarak kullanamayız. Sebebi ise arka arkaya iki tane lojik 1 gelirse, inen kenar olmayacağı için bu iki pals değil, 1 pals olarak işleyecek. Bunu gidermemiz gerek. Bunun için de şöyle bir şey düşündüm: bir flip flop ile, çıkışa sırayla bir girişi, bir de lojik 0 verirsem, girişe ardarda iki kez lojik 1 gelse bile, arada vereceğim lojik 0 sayesinde doğru sayıda, yani iki adet pals üretmiş olacağım.
Bunun için ISIS’in kütüphanesinde flip flop ararken hem D girişi, hem de R-S girişleri olan bir flip flopa denk geldim. Bu flip flop tam da yapmak istediğim şeyi karşılayacak türden. R-S girişlerinden 0-0 verirsem, çıkışa aynen D girişini veriyor, 1-0 verirsem çıkışa lojik 0 veriyor. Ben de bu flip flopu kullandım.
Mux’un çıkışını, flip flopun D girişine bağlıyorum. Flip flopun clock girişini devremin esas clock girişinden alıyorum. Flip flopun Q çıkışını da C-2 sayıcım için clock olarak bağlıyorum. Bu şekilde devre çalışıyor, fakat ardarda gelen lojik 1′ler, C-2 tarafından tek pals olarak ayarlanıyor. Bunu çözmek için aralarda lojik 0 vermem gerektiğini söylemiştim.
Bunu sağlamak için de esas clock sinyalimi NOT kapısına sokarak flip flopun R girişine bağlıyorum. Bu durumda clock sinyalimin çıkan kenarında R 0, düşen kenarında 1 olacak. R-S 0-0 olduğunda ki bu çıkan kenarda oluyor, flip flopun çıkışına, D girişindeki değer gidecek. Clock düşen kenarda iken R değeri 1 olacağından çıkışa lojik 0 gidecek. Böyle çalıştığı zaman da C-2 sayıcıma doğru palsi vermiş olacağım.
Flip flopun giriş ve çıkışlarında olabilecek durumlardan birine bakalım:
Giriş : 0-1-1-0-1-0-1   Çıkış : 0-0-1-0-1-0-0-0-1-0-0-0-1-0
Gördüğünüz gibi flip flopu hem çıkan hem de düşen kenarda çalıştırdığım için çıkışlar, girişin iki katı kadar. Ayrıca her düşen kenarda da çıkışa lojik 0 veriliyor. Kırmızı ile yazdığım 0′lar, bu düşen kenarda verilen 0′lar. Bu durumda C-2′ye 4 adet pals gelmiş oluyor, C-2 4′e kadar sayıyor ve ledlerde de bu değeri görüyoruz. İstenirse 7447 ve 7 segment displaylerle de gösterilebilir.