24 Ağustos 2016 Çarşamba

VHDL : XDC File

     Merhaba Arkadaşlar;
    Bu yazıda VHDL'deki xdc dosyalarını hazırlamaktan bahsetmek istiyorum. Diyelim ki elinizde tüm kodları yazılmış bir VHDL projesi var. Bu projeyi elinizdeki FPGA board'una uygulamak istiyorsunuz. Bunun için ne yapmanız lazım? Mutlaka bir XDC dosyasına ihtiyacınız var. Bu dosyada board'unuzun hangi pinlerini hangi amaçla kullanacağınızı belirteceksiniz.
    Diyelim ki biz şu anda elimizde olan up_down_counter projesini fpga'e uygulamak istiyoruz. Benim elimde Nexys4 DDR var ve buna göre uygulayacağız. Bu projede port olarak ne kullandık? SEL, EN ve clk 1 bitlik girişleri ve 2 tane 8 bitlik çıkış. Clk'yı boardun kendi clk pinine bağlayacağız zaten. Hatta onun için bir clock_divider kodu yazmıştık. Geri kalan 2 giriş portu SEL ve EN'i de boardumuzun üzerindeki switchlerden elde edebiliriz. Ayrıca çıkışları da ledlere gönderebiliriz. Nexys4 DDR'da 16 led olduğu için bizim için yeterli.
    Şimdi bizim xdc dosyasının bir kısmını paylaşıyorum;


    Biraz bu dosyadan bahsedeyim. Buradaki set_property ile başlayan ve her port için tekrar eden iki satırlık kısımı sabit bir kod olarak düşünebiliriz. Bizim yapmamız gereken sadece bu sabit koda uygun bacak isimlerini söylemek. Çünkü bu kod sadece Nexys4 DDR için doğru olacaktır. Sizin kendi boardunuzun pacak isimleri farklı olabilir. 
    
    Bu kodda farklı boardlar için değiştirilmesi gereken yerleri söyleyeyim hemen. En üstteki clk girişi. Siz kendi boardunuzun datasheet'ini açın (internete board ismiyle birlikte datasheet yazarsanız çıkar)ve oradan sizin board'un clock girişinin ismini bulun. Sonra da E3 yerine sizin girişin ismini yazın. CLock için hepsi bu. 

    Gelelim switchlere. Buradaki SEL ve EN, benim Nexys4 DDR boardunun switch0 ve switch1 switchlerini temsil ediyor. Benim boardumun switch0 bacağını ismi J15. Sizin boardunuzun switch 0 bacağının ismiyle burayı değiştirmeniz gerekecek. Aynı şekilde benim boardumum switch 1 bacağını ismi L16. Burayı da uygun şekildee değiştirmelisiniz. 

    Alttakiler de ledler. Benim boardumun led0 bacağının ismi H17. Ve ben bu bacağa up_out çıkışının sıfırıncı bitini atamak istiyorum. O yüzden bu kod böyle. Siz burada bacak ismini veya çıkış değişkeninin ismini kendi boardunuza / kodunuza göre değiştirebilirsiniz. 

    Aşağıda da örnek olması açısından Nexys4 DDR boardunun bacak bağlantılarını gösteren şekli paylaşıyorum. Kafa karışıklığı olursa işe yaraması açısından.


    Şimdi diyelim xdc dosyasını oluşturduk bütün proje bitti. Board'a nasıl uygulayacağız. Kodu önce Run synthesis yapacaksınız. Daha sonra Synthesis Successfully Completed ekranı açılınca Generate Bit Stream'e tıklayacaksınız. Boardunuzu bilgisayara USBsi ile bağlayacaksınız ve oluşturduğunuz bu bit stream dosyasını Vivado'dan Open Hardware Manager'a tıklayarak seçeceksiniz. Hepsi bu. Şu an kodu boardda görüyor olmanız lazım. SEL ve EN switchleriyle oynayarak doğru çalışıp çalışmadığını görebilirisiniz. Umarım sorun yaşamazsınız ama bir sorun olursa veya full kodları isteyen olursa mail atabilirsiniz. Kolay gelsin.

 

VHDL : Kombinasyonel Devre

Merhaba Arkadaşlar;
Bugün sizlerlee kendim rastgele çizimini yaptığım bir tümleşik devrenin tüm kodlarını paylaşacağım. Devrede MUX (aslında DEMUX ama vhdl bunu iki MUX olarak algılıyor) ve D flip flop da kullandım. Kodun kısım kısım sizlere yardımcı olabileceğini düşünüyorum. Sorunlar yaşarsanız sorabilirsiniz. Önce size kodun blok diyagramını göstermek istiyorum. Bu diyagram benim bakarak kodladığım diyagram. Sonra kodun kendi şematiğiyle bu diyagramı da karşılaştırabiliriz.

Kodun top_level.vhd dosyasına geçelim. Bu dosyanın kodları aşağıdaki gibi;
Kodun dosyası bu şekilde. Kodun testbench dosyası ise aşağıdaki gibi;


    Tabii bu testbench kodunu siz daha da uzatabilirsiniz. End process'ten önce tSEL1<= '1'; vs. şeklinde her bir değişkenlere değer vere vere simülasyon sonucunu inceleyebilirsiniz.
    Şimdi de Vhdl'in kendi ürettiği Elaborate sonucu oluşan Şematik çıktısını paylaşmak istiyorum. Böylece başlangıçta benim kodu bakarak yazdığım blok diyagramı ile farklarını görebilirsiniz.


      Gördüğünüz gibi benim kodlarken Demux olarak düşündüğüm yapıyı, Vivado 2 Mux olarak algıladı. Kodu koşunca hatasız olarak çalıştığını göreceksiniz. Kolay gelsin.

23 Ağustos 2016 Salı

VHDL : clock divider

Merhaba arkadaşlar;

   Şu ana kadar paylaşmış olduğum kodlardan up_down_counter'ı ele alalım. Diyelim ki bu kodu FPGA board'una uygulamak istiyoruz. Board'a uygulayıp çıkışı da ledlere verirsek, devrenin saydığını görebiliriz. Ancak şöyle bir sıkıntı var. Boardların saat frekansı çok hızlı. Örneğin Nexys4 DDR boardunun saat frekansı 100 MHz. Bu hız insan gözünün algılaması için çok yüksek. Dolayısıyla bu hızdaki bir clock ile kodu FPGA'e gönderirsek ledlerdeki değişimi, ve sayma işlemini gözümüz göremeyecektir. Bu nedenle bu frekansı biraz yavaşlatmamız gerekecek. Bunun için aşağıda yazmış olduğum clock_divider (saat bölücü) kodunu kullanabilirsiniz.


   Bu kodu incelediğinizde frekansın artık 1Hz 'e düşürülmüş olduğunu göreceksiniz. Bu frekans insan gözünün algılaması için yeterli. Buradaki kodda clock_divider'ı component olarak tanımladım. Ama siz isterseniz bunu component olarak tanımlamayadabilirsiniz. Burdaki process i yazıp aşağısına yeni bir process koyabilirsiniz ve o process'e de  "if rising_edge(clock_out) then"  ile kodunuza bu yeni frekanstaki saati uygulamış olacaksınız. Kolay gelsin.

22 Ağustos 2016 Pazartesi

VHDL : up_down_counter - package

Merhaba arkadaşlar;
Şimdi de size aynı up_down_counter kodunun generic ifade, package yapısı, if-generate yapısı ve enumeration yapısı kullanılmış olarak kodlanmasını göstereceğim. Bu kod sayesinde bu 4 Vhdl özelliğinin de nerede ve nasıl kullanılabileceğini anlamış olacağınızı düşünüyorum. Kodları gene kendi yazdığım koddan aldığım ekran görüntülerim şeklinde paylaşacağım. Bir sorununuz olduğunda mutlaka sormanızı istiyorum. Bir gün içinde geri dönerim büyük bir aksilik yoksa. Kodların ilk kısmından başlayalım.


Yukarıdaki iki kod resmi ana kodu temsil ediyor. Aşağıda da package kodunu görebilirsiniz.

Sırada testbench kodu var;

Şimdi ise aşağıya bu kodu koştuğumda oluşan simülasyon görüntüsünü koyuyorum. 

Simülasyon sonucu da yukarıdaki gibi arkadaşlar. Burada dikkat etmeniz gereken şöyle bir nokta var; Sel değişkeni generic tanımlanmış. Ve ben bu değerin up_sel 'e eşit olduğunu söylemişim. O zaman bu kod sonucu yukarı doğru sayacaktır. Ve kodu koşarken tek bir anda tek bir değer alabilir. Yani bu kod şu an için her zaman yukarı doğru sayacaktır ve giriş değişkenlerine bağlı değildir. Aşağı doğru sayması için Sel = down_sel yazıp kodu yeniden koşmam gerekir. Bu da SEL girişini input olarak almak ile generic olarak tanımlamak arasındaki farkı gösteriyor. Kolay gelsin arkadaşlar.


VHDL : up_down_counter - component

Merhaba arkadaşlar,
Bu yazıda bir önceki up_down_counter kodunun componentli haline getirmiş olduğum formunu paylaşacağım. Component derken yani up_counter ile down_counter'ı iki ayrı kutu olacak şekile getirdim bu kod ile. İki kodun elaborate hallerini karşılaştırırsanız farkı göreceksiniz. Projenin kaynak kodu aşağıdaki gibi;
up_counter componentinin kodu aşağıdaki gibi;
down_counter componentinin kodu aşağıdaki gibi;

 Kodun testbench kodu da aşağıdaki gibi;


Kodun elaborate edince ortaya çıkan şematik görüntüsü de aşağıdaki gibi oldu. Bu görüntüyü VHDL : up_down_counter isimli kodum ile karşılaştırıp componentli yapının ne olduğunu görebilirsiniz.
Kod bu şekilde arkadaşlar. Merak ettiğiniz, Anlayamadığınız bir durum olursa , ya da kodu geliştirmek için bir fikriniz varsa yorum yazabilirsiniz veya mail atabilirsiniz. Kodu yazıp simülasyon sonuçlarınızı da bana gönderebilirsiniz. İyi çalışmalar.

VHDL : Up_Down_Counter

Merhaba Arkadaşlar;

Aşağıda 8 bitlik yukarı ve aşağı sayabilen VHDL kodu, şematik'i ve Testbench'i var Kod bana aittir. Vivado yazılımı kullanılarak yazılmıştır. // en üstte library tanımlamaları eksik. Dikkat edin. Kendiniz ekleyin. (library ieee;
                                        use ieee.std_logic_1164.all; )

Kaynak kodu aşağıdaki gibi;

Testbench kodu;

Elaborate edince oluşan şematik görüntüsü;

Kod bu kadar arkadaşlar. Dikkatle incelerseniz çok basit bir mantıkta yazılmış olduğunu göreceksiniz.

Vize Uğraşları 2

   Merhaba arkadaşlar. 

   Şu anda tüm belgeleri hazırladığınızı varsayıp devamında yapmanız gerekenlere geçeceğim. Bu arada bu belgeler dediğim kısım o kadar da zor değil gözünüz korkmasın. Bir günde bile halledebilirsiniz. Şimdi devamına gelelim. 
   
   İsveç Vizesine başvuru online olarak yapılıyor. Başvuru yapmanız gereken adres   http://www.migrationsverket.se/English/Private-individuals.html . Bu sayfadan sırasıyla Study in Sweden - How to apply ve altta Begin application butonlarını tıklayarak başvuruya başlayabilirsiniz. Tabi bu erasmus öğrencileri için. İsveçte çalışmak istiyorsanız Working in Sweden'a tıklamalısınız örneğin.

     Bu butonlara sırasıyla tıkladıktan sonra sizden üyelik isteyecekler. Üye olacaksınız sonra onlar size mail ile kullanıcı adınızı ve şifrenizi gönderecek. Aynı mailde giriş yapmak için gerekli link de olacak. Böylece önünüze başvuru formu gelecek. Bu formun ilk safaları kişisel bilgiler, ilk defa mı gidiyorsun, tek mi gidiyorsun vs vs. Asıl önemli kısım erasmus öğrencisiyseniz scholarship'i eu seçmeniz gerekiyor yoksa başvuru ücreti ödemek zorundasınız. Bir yerde gideceğiniz okulun bilgilerini istiyor. O kısımları da dolduracaksınız.




     Bir yerde de başvuru ücreti ödediniz mi diyecek. Oraya hayır deyip nedenini sorduğunda exchange student seçmelisiniz. Daha sonra bir sayfada hesabınızdaki parayı, bursunuzu ve seyahat sağlık sigortanızın süresini istiyor. Orayı da uygun doldurmalısınız. Banka miktarını doldurmak biraz karışık olabilir o yüzden benimkinin resmini koyuyorum. Bununla birlikte konsolosluk olarak en başta iki seçenek sunuyor Ankara mı İstanbul mu diye? Size en yakın olanı seçin. Çünkü ilerleyen dönemde iki kere konsolosluğa gitmeniz gerekecek. Ayrıca eklediğim belgelerin de ismi aşağıdaki gibidir. Sonraki yazım Vize Uğraşları 3 de devamından bahsedeceğim. Görüşmek üzere.


                

Vize Uğraşları

   Merhaba arkadaşlar.

   Gelelim vize alma olayına. Her ülke için farklı şartlar var tabii ki. Ben sadece İsveç için olayları bildiğim için onu anlatabilirim. Öncelikle İsveç vizesi almak bazen 2 aya kadar sürebiliyor. Dolayısıyla biraz erken başvurmakta fayda var. Benimki 1 ayda çıktı ama herkes bu kadar şanslı değil. Gerekli belgeler;

okuldan hibe yazısı(vize yazısı) -- bu belge 2 kere yükleniyor.
pasaport fotokopisi
banka dökümü
seyahat sağlık sigortası
karşı okuldan gelen kabul belgeniz(notification of selection)

     Bu belgeleri biraz açıklayayım. 

   Hibe yazısı her üniversitenin kendi formatında oluyor zaten. Onu doldurup okulunuzdaki ilgili kişilere imzalattığınızda işlem tamam. 

   Sonra pasaportun fotokopisi lazım. Burdan da anlıyoruz ki önce pasaport almak lazım. Bu arada aldığınız pasaportun orda kalmayı planladığınız süreden 3 ay daha fazla geçerli olması gerekiyor sanırım. Buna da dikkat edin.

   Geldik banka dökümüne ki bu kısım bende sorun çıkardı. İsveç'e ben yarım dönem gitmek için hesabımda toplam 40500 SEK olması gerekiyordu. Aylık 7500-8000 arası bir miktara denk geliyor. Bu paraya okuldan alacağınız bursu da ekleyebiliyorsunuz dolayısıyla bursunuzu sayıp geri kalan miktarda paranın olduğu bir banka hesap dökümü çıkarmalısınız ve bu döküm ingilizce olmalı. Banka hesap dökümünü İş Bankasından almanızı kesinlikle tavsiye ederim çünkü pek çok banka İngilizce hesap dökümü vermekte yetersiz. Mesela ben önce Türkiye Finans'tan çıkarmıştım. Sonra vize onay sistemi dökümü beğenmedi ve bende bir arkadaş tavsiyesiyle İş Bankasından çıkardım. Onlarınki kabul oldu. 
 
     Seyahat sağlık sigortasını ben garanti bankasının eureko ortaklığından 6 aylık yaptırdım ve 64 euro ödedim. O zamanlar 200 lira idi. Eureko yaptırmak için herhangi bir garanti şubesine gidebilirsiniz. Hızlıca yapıyorlar.


    Ve bi de kabul belgesi lazım tabii ki. Bu belgeyi Erasmus ile gideceğiniz üniversite size yolluyor gerekli şartları sağladığınızda. Belgenin ismi İsveç için Notification of Selection olarak geçiyor. 


   Şimdi bu belgeleri hazırladıktan sonra ne yapacağız? O aşamayıVize Uğraşları 2 adlı yazımda anlatacağım. Bay by.

Erasmus Başlangıcı ve Pasaport








Merhaba Arkadaşlar. 

   Şu an İsveç Vaxjö'den yazıyorum. İsveç'e erasmus programı ile geldim. Sadece ikinci dönem burada olacağım ve daha geleli 5 gün oldu. Bu yazıda sizlere buraya Erasmus ile nasıl geldiğimden bahsetmek istiyorum.
Gayet klasik bir şekilde öncelikle üniversitenizin yaptığı erasmus sınavına girip barajı geçmeniz gerekiyor. Bu aşamada her üniversite kendi çıkmış sınav sorularını paylaşıyor. Sınava hazırlık olarak o sorulara bakabilirsiniz. Bu sınav aşamasını geçtiğinizi varsayıyorum.

   Gayet klasik bir şekilde öncelikle üniversitenizin yaptığı erasmus sınavına girip kazanmanız gerekiyor. Bu aşamayı geçtiğinizi varsayıyorum. Kazandıktan sonra yapmanız gereken çok fazla adım var. Pek çok form doldurup belge hazırlamak, yurtdışındaki okulunuzda alacağınız dersleri belirlemek, bunların kendi üniversitenizdeki karşılıklarını bulmak bunların başında geliyor. Bütün bu belgeleri hazır etmeniz devletin verdiği bursu almak açısından önemli. Ve tabi bir de pasaport ve vize lazım.

   Pasaport almak kolay. 1 hafta gibi bir sürede pasaport alabiliyorsunuz. Gerekli belgeler nüfus cüzdanı, ve iki tane fotokopisi, kendi üniversitenizden aldığınız erasmus öğrencisi olduğnuzu kanıtlayan belge( ki bu belge sizi yaklaşık 240 lira olan defter ücretini ödemekten kurtarıyor), ve iki fotoğraf. Fotoğraflar biometrik olmalı. Bu belgelerle Emniyet müdürlüğüne gidip, 85 lira civarı olan ücreti ödediğiniz zaman 1 hafta içinde pasaportunuz ev adresine yollanacaktır.


   
     

    Bir sonraki yazımda vize alma olayından bahsedeceğim. İsveç vizesi ile ilgili herşeyi Vize uğraşları adlı yazımda bulabilirsiniz.