Önceki yazımda FPGA’den bahsettikten sonra artık,FPGA ile küçük projeler yapmaya başlayabiliriz.Bu yazımda Yarım toplayıcı(Half Adder) ve Full Adder(Tam Toplayıcı) VHDL dilini kullanarak nasıl yapılacağını anlatacağım.Öncelikle FPGA ile ilgili proje yapmamız için Aşağıdaki linkden ISE Design Suite – 14.7 Full Product Installation’u yükleniyiniz.Programın yüklenebilmesi için size mac adresini soracaktır.
Mac adresinizi öğrenmek için tıklayınız.
http://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/design-tools.html
Programınızı yükledikten sonra ISE Desing Suite logosuna tıklayınız.
Yeni proje oluşturmamız lazım bunun için new project’e tıklayınız.
Projemizin ismini yazacağız ve dosyanın nereye kaydedileceğini belirleyeceğiz.
Kullanacağımız FPGA’nin özelliklerini girmemiz gerekmektedir.Ben Virtex-6’yı tercih ettim.
Kullanacağımız dil VHDL olacağından VHDL Module seçin.
İlk yapacağımız proje Yarım Toplayıcı(Half Adder) olacaktır.İlk önce yarım toplayıcının sayısal elektronikte şemasını inceleyelim.
Yukarıdaki şemadanda gördüğümüz gibi yarım toplayıcının iki giriş ve çıkışı bulunmaktadır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity halfadder is Port ( a : in STD_LOGIC; b : in STD_LOGIC; sum : out STD_LOGIC; carry : out STD_LOGIC); end halfadder; architecture Behavioral of halfadder is begin sum <= a xor b; carry<= a and b; end Behavioral; |
Şimdi kodumuzun doğru olup olmadığını kontrol edeceğiz
Kodumuz doğru olduğuna göre ıse simulator(ISIM)’i kullanarak sonucu dalga olarak görmeliyiz.
Şimdi giriş a ve b ‘nin dalga şeklini belirlemeliyiz.
Giriş a ‘nın dalga şekli için konfigürasyon ayarları
Giriş b ‘nın dalga şekli için konfigürasyon ayarları
Şimdi simülasyonu yürüt diyoruz.
Giriş ve çıkış dalgaları tasarımımızın doğru olduğunu gösteriyor.
Yarım Toplayıcı(Half Adder) pojesini tamamladıktan sonra,Tam Toplayıcı(Full Adder) projesini oluşturma zamanı geldi.Aşağıda tam toplayıcının doğruluk tablosu ve elektronik devresi bulunmaktadır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity fulladder is Port ( a : in STD_LOGIC; b : in STD_LOGIC; cin : in STD_LOGIC; s : out STD_LOGIC; cout : out STD_LOGIC); end fulladder; architecture Behavioral of fulladder is begin s <= (a xor b) xor cin; cout <= ((a xor b)and cin) or (a and b); end Behavioral; |
Ve sonuç doğruluk tablosunuda inceleyerek sonucumuzun doğru olduğunu anlayabilirsiniz.