2 bitlik 2 sayıyı çarpma




Merhaba arkadaşlar yeni bir yazıda daha birlikteyiz.Bu yazımda size 2 bitlik 2 sayının çarpımının kodlarını ve devre şemasını vereceğim ve kısaca sizlere bahsedeceğim.


Öncelikle Quartus Prime programımızı çalıştırıp yeni proje oluşturuyoruz ve adını da "ikibitlikikisayicarpimi" veriyoruz.

Sonra da aşağıdaki kodları yazıyoruz...

module ikibitlikikisayicarpimi (input[3:0]SW, output[3:0]LEDR);

half_adder h1((SW[1]&SW[2]),(SW[0]&SW[3]),s1,c1);
half_adder h2(c1,(SW[1] & SW[3]),s2,c2);
     
        assign  LEDR[0] = SW[0]  & SW[2];
assign  LEDR[1] = s1;
assign  LEDR[2] = s2;
assign  LEDR[3] = c2;

endmodule

module half_adder(input a,b,output s,c);

assign s = a^b;
assign c = a&b;

endmodule

Şimdi kodumuzu açıklayalayım :

 Öncelikle 2 bitlik sayının 4 adet girişi vardır. A0,A1,B0,B1 şeklinde. 1 bit bit sayıyı temsil ettiği için 2 bitlik sayı 2 sayısı temsil eder ve son durumda elimizde 4 adet sayı bulunur ve bizden işlemde bunların çarpımı istenmektedir.
 Ayrıca çıkış bitimizinde kaç bit olduğunu bulabilmek için 2 bitlik bitlik max sayı seçilir ve kendisiyle çarpılır bunun sebebini ise şöyle açıklayayım : mesela elimizde bir sayı olsun 01 bunun bilgisayar sistemindeki karşılığı '1' dir bunu kendisiyle çarparsak yine '1' elde etmiş oluruz yani max bit sayısı 2 bittir. Bizim işlemde ise 2 bitlik max elde edebileceğiniz sayı '11' 'dir 10 luk tabanda ise bunun karşılığı '3' tür. Yani bizde 3 * 3 = 9 ederden yola çıkarak kendimize şu soruyu soruyoruz. 9 kaç bitle ifade edilir? Bunun cevabıda takdir edersiniz ki çok basit. 4 bitle ifade edilir. Oda '1001' dir. Buradan elde ettiğimiz sonuç şu o zaman girişim 2 bitlik olacak çıkışım ise 4 bitlik olacak.Buradan bu sonuca vardığımıza göre artık inputlarımı ve outputlarımı tanımlayabilirim:

 input[3:0]SW  -> Bu 4 adet sayı olacak demektir yani 4 bit ediyor toplamda(A0,A1,B0,B1)
 output[3:0]LEDR -> Bunu zaten yukarıda ispatını yapmıştık neden 4 bitlik olduğunu.

  Bu tanımları yaptıktan sonra doğruluk tablosuna geçelim: 

  Doğruluk tablosu aşağıdaki görüldüğü gibidir. Burada 4.satırdan sonra iş değişiyor çünkü oraya kadar hep çarpma sonucu '0' olarak geliyor ve 4. satırdan sonra her iki bitte sıfırdan farklı olduğu için çarpma sonuçlarını tablonun en sağında 'Çarpma' sekmesinde veriyor bize. 




 Şimdi ise bunların Karnough Haritalarını elde edelim.



          Ç0= A0B0                                     Ç1= A1B1' B0 + A0B1B0' + A1'A0B1 + A1A0' B0


       Ç2= A1A0' B1 + A1B1B0'             Ç3= A1A0B1B0


Bundan sonrası ise kodumuzuda yazdığımıza göre programı derlemek ve çalıştırmak kalıyor.

Bu kodları yazdıktan sonra programımızı derliyoruz.



Programımızı düzgün bir şekilde derledikten sonra sağ altta 100% yazısını görüyorsak programımız
hatası bir şekilde çalışıyor demektir. Buradan sonra ise bu yazdığımız kodun devre şemasını elde etmek için Quartus bize çok yardımcı oluyor , normalde saatlerce uğraşarak belki düzgün belki de hatalı olarak çizebileceğiniz kompleks devreleri sadece birkaç saniye içerisinde kodunuzda hata yoksa şayet size hatasız bir devre şeması elde etme imkanı sunuyor.



 Resimde gösterdiğim şekilde yolu izlerseniz aaşğıdaki şemayı elde etmiş olacaksınız...





Bu devre yukarıda yazmış olduğumuz kodun çıktısıdır.







Yorumlar

Bu blogdaki popüler yayınlar

Data Annotation Nedir?

Asp.Net Mvc 5 Çoklu Dil Desteği