Ana Sayfa FPGA FPGA ile 18 Bit’lik Aşağı – Yukarı Sayıcı

FPGA ile 18 Bit’lik Aşağı – Yukarı Sayıcı

6 min read
2
0
851

Merhaba arkadaşlar.

Çizgi market sponsorluğunda tarafımıza gönderilen FPGA ile çalışmalarımız devam ediyor.FPGA kitine buradan ulaşabilirsiniz.

Bugün sizlere FPGA boardumuz üzerinde bulunan 18 tane sıralı ledi kullanarak aşağı ve yukarı binary olarak sayan bir sayıcı tasarlayacağız. Haydi başlayalım.

Öncelikle tasarımımız donanımsal olarak nelerden oluşacak onu kararlaştıralım. Tasarımımızda istediğimiz belli bir süre sonunda sayıcının kendini arttırması veya azaltması bunun için FPGA’e bir sinyal girişi olması gerekir ki bu sinyal geldiğinde sayıcımızda değişiklik meydana gelsin. Bu işlemi gerçekleştirmek için board ta bulunan 50 MHz’lik kristali kullanacağız (50 MHz’lik sinyal 20 nano saniyede bir değişim meydana getirir bu değişikliği görebilmemiz için programa bir bekleme koymamız gerekir.) kristalin her yükselen kenar tetiklemesinde işlemlerimizi gerçekleştireceğiz.

Sayıcımızın aşağı ve yukarı saymasını istediğimiz için dışarıdan harici bir giriş ile sayıcının sayma yönünü belirtmemiz gerek, bunun için board üzerindeki herhangi bir switch veya butonu kullanabiliriz.

Buraya kadar bahsettiklerimiz sayıcıya giriş parametreleriydi. Sayıcının çıkışına ise 18 bitlik bir vektör (17 downto 0) tanımlayarak çıkışımızı tanımlayacağız. Bu çıkışlara düşük ve yüksek değerlikli bitler dikkate alınarak pin ataması yapılmalıdır.

Sistemimizin şeması aşağıda görüldüğü gibi tasarlamış olduk bu şema bize programımızın entity bölümünü göstermektedir.

sesesse

 

 

Entity kısmını tasarladıktan sonra programımıza geçebiliriz.

library ieee;                              --ieee ve stadart kütüphaneler
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
library altera;
use altera.altera_syn_attributes.all;

entity kapi is
port
(
CLOCK_50 : in std_logic;                   --giriş clock sinyali
KEY : in std_logic;                                --yön belirkeyici buton
LEDR : out std_logic_vector(17 downto 0)    --18 bitlik çıkış vektörümüz

);

end kapi;

architecture ppl_type of kapi is
signal prescaller : integer range 0 to 800000:=0;   --sinyal tanımlamaları
signal result : integer range 0 to 131071:=0;
begin
LEDR<=std_logic_vector(to_unsigned(result,18));  --sinyal değişkenini çıkışa atadık.
PROCESS(CLOCK_50)
BEGIN
if(CLOCK_50'EVENT AND CLOCK_50='1')THEN  --yükselen kenarı belirleyen satır

if(prescaller<800000)THEN         -- prescaller sinyalini saydırarak programa bekleme yaptırdık.
prescaller<=prescaller+1;
ELSE
prescaller<=0;
END IF;

if(prescaller=0)THEN
case KEY is                      --case yapısı burada key butonu kontrol edilerek sayma yönü belirlendi
when '1' =>                    -- key 1 ise yapılacak işlemler
if(result<131071)THEN --18 bitlik sayıcıda max 131071 e kadar sayacağından bu değere ulaşana kadar değer arttırıldı
result<=result+1;
ELSE
result<=0;
END IF;
when '0' =>           --key 0 ise yapılacak işlemler
if(result>0)THEN
result<=result-1;
ELSE
result<=131071;
END IF;
end case;

END IF;

END IF;
END PROCESS;   --process in sonu
end;

Programda kullanılan clock_50 , key ve ledr değişkenleri kullanılan fpga veya boarda göre uygun pin atamaları yapılarak tasarım gerçeklenebilir.

Evet arkadaşlar umarım faydalı olabilmişimdir, görüşmek üzere.

 

  • FPGA Nedir?

    Çizgi Market sponsorluğunda tarafımıza gönderilen FPGA Boardu ile çalışmalarımıza başlıyor…
Buna Benzer Yazılar Göster !
Daha Fazlasını Yükle - Ahmet Memeşil
  • VHDL Nedir?

    VHDL ,FPGA entegrelerinin donanım yapısını değiştirdiğimiz donanım tanımlama dilidir. Dili…
  • FPGA ile RS232 Haberleşmesi(Receiver)

    Merhaba arkadaşlar, Çizgi market sponsorluğunda tarafımıza gönderilen FPGA ile çalışmaları…
  • FPGA ile 7-Segment Sayıcı

    Merhaba arkadaşlar, Çizgi market sponsorluğunda tarafımıza gönderilen FPGA ile çalışmaları…
Daha Fazla Göster -  FPGA

2 Yorumlar

  1. furkan güneş

    20 Ekim 2015 at 23:19

    Ellerine sağlık çok güzel olmuş. FPGA videolarının, uygulamalarının devamını bekliyoruz özellikle Ahmet MEMEŞİL’ den.

    Reply

  2. faruk ali halay

    21 Ekim 2015 at 22:27

    başarılı bir çalışma olmuş. tebrik ederim.

    Reply

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bak Bakalım ?

FPGA ile RS232 Haberleşmesi(Receiver)

Merhaba arkadaşlar, Çizgi market sponsorluğunda tarafımıza gönderilen FPGA ile çalışmaları…