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
3,576

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.

[php]
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;

[/php]

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.

 

Buna Benzer Yazılar Göster !
  • FPGA İle PWM RC Servo Motor

    19Merhabalar; Bu projemizde FPGA üzerinden servo motor sürmek için PWM sinyali oluşturacağ…
  • 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 Fazlasını Yükle - Ahmet Memeşil
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 İle PWM RC Servo Motor

19Merhabalar; Bu projemizde FPGA üzerinden servo motor sürmek için PWM sinyali oluşturacağ…