4 Şubat 2013 Pazartesi

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.


Hiç yorum yok:

Yorum Gönder