[]

FPGA, Arduino, PIC programlama

Merhabalar,

Şimdi sizlere Arduino ve FPGA hakkında birkaç soru sormam gerekecek çünkü kafama birşeyler takıldı.

Birazcık(anlayın mütevaziyim) PIC programlama biliyorum. Bunun üzerine birşeyler koymak, hobi olarak birşeyler yapmak, ilerde sektörün(elektronik) taze kanı, aranan elemanı, gol kralı olmak istiyorum. Çalıştığım firma benim yokluğumda "fenerde gökhan gönül şoku" başlıklı haber gibi olsun istiyorum.

Bu yüzden hangisini öğrenmeliyim ?

FPGA programlama çok zormuş diye duydum ve Türkiye'de fazla anlayan eleman yokmuş.
Arduino basit ve hobi olarak daha çok üzerinde durulacak bir konu gibi görünüyor.
Bu ikisi birbirlerine pek benzemeseler de gelişimim açısından ikisinden birini öğrenmem çok iyi olur.

Diyorum PIC'in üzerine birşeyler koyayım. Ama ne koyayım ?

 
arduino 8 bit olup, hobiden fazla oteye gitmez; ama kominitesi cok genistir, onlarca proje havada ucusur. fpga ise binlerce/milyonlarca entegre uretilirken kullanilir. PIC ise 8-32 bit arasinda bit sayisina sahip olup her turlu endustriyel sistemde kullanabilirsin. bence sen ne ogrenecegine firmanin ne kullandigina gore karar vermelisin. mesela, firman android kullanmiyor ise onu ogrenmenin ne onemi vardir onlarin gozunde?


  • comptrol  (06.04.11 19:11:30) 
Ekmeğini FPGA'den çıkaran (oy) bir kişi olarak yeni gördüğüm duyurunuza kendimce cevap vereyim:

FPGA ile uğraşmak zordur ya da kolaydır önermesi tamamen sizin altyapınıza bağlı bir şey. FPGA'e gömülecek tasarımlar için ağırlıklı olarak iki tane HDL kullanılır: Verilog ve VHDL. Bunların arasından yapılacak seçim bile zorluğu etkiler, ancak tabii ki sadece başlangıçta (Verilog C benzeri syntax'ı ile -bence- daha kullanıcı dostudur mesela, ama kişisel fikirler değişebilir.)

Bu ikisinden birinin yapıp diğerinin yapamayacağı şey pek yoktur çünkü aslında FPGA "programlamak" demek bir dijital devre dizaynını FPGA mimarisine uygun bir şekilde kod ile tanımlamak demektir (Yani aslında "programlama" değildir). O yüzden üst seviyede nasıl tanımlama yaptığınızın çok önemi yok bir süre sonra, çünkü önemli olan tasarladığınız şeyin bir dijital devre olduğunun farkında olmak, çalıştığınız FPGA ailesini tanıyıp özelliklerine az çok aşina olmak gibi şeyler.

Bu farkındalık kısmını biraz açayım: Örneğin daha önce FSM (finite state machine) nedir duyduysanız, alakalı dersler aldıysanız ya da konuyla ilgilendiyseniz, register / flip flop / FIFO vb. nedir, nasıl çalışır az çok biliyorsanız, sequential / combinational logic yenir mi içilir mi gibi konularda fikriniz varsa bunların yararını görürsünüz FPGA üzerinde çalışırken. Bunlarsız olmaz mı? Tabii ki olur ama eninde sonunda bunları kendi başınıza öğrenmek zorunda kalırsınız. Ben elektrik - elektronik mühendisliği okudum, ağırlıklı olarak da VLSI / dijital dizayn / bilgisayar mimarisi konularında dersler tercih ettim, faydasını da FPGA'ler ile uğraşırken çok zorlanmamak olarak misli misli gördüm.

Daha önce programlama (masaüstü bilgisayar ya da mikrokontrolcü) ile ilgilenen kişilerin FPGA dünyasına girdiklerinde en zorlandıkları konu yazılan kodu yorumlamak ve mantığını oturtmak oluyor. CPU ya da MCU'yu hedefleyen yazılımların aksine FPGA kodları paralel olarak çalışmak üzere yazılır işin doğası gereği. O yüzden aynı blok içerisinde (tam doğru bir tanım olmadı blok lafı ama terminolojiye çok girmeyelim) alt alta yazılmış satırların bir C kodunun aksine sırayla işletilmediklerini kavrayıp kafanızda oturtabildiğinizde ve yazılmış bir kodun genel çalışma mantığını tahayyül edebildiğinizde bu konudaki en büyük engellerden birini aşmış olursunuz.

Şunu da hatırlatayım: Masaüstü yazılım, microcontroller programlama ve FPGA dizaynlarının test metodolojileri birbirlerinden oldukça farklıdır. FPGA dizaynlarını buglardan arındırmanın, test etmenin ve doğruluğunu sınamanın ön koşulu düzgün testbenchler ile kapsamlı simülasyonlar yapmaktan geçer. Yani FPGA işine girecekseniz Verilog/VHDL gibi bir dil öğrenip seçtiğiniz FPGA'in üreticisinin tasarım aracını (Xilinx ISE, Actel Libero vs.) öğreneceksiniz ve bunu tamamlamak için de tercihen ModelSim gibi sektör standardı olmuş simülatörlerlere de aşina olacaksınız. Başlangıç için ISE yanında gelen ISim gibi daha basit simülatörler de uygundur ancak ileri düzey tasarımlarda kullanacağınız çevre elemanlarının simülasyon modelleri genellikle ModelSim gibi kapsamlı ve gelişmiş simülatörler için yazılmıştır.

Tabii ki simülasyonun yetersiz kaldığı, asla kapsayamadığı durumlar için de bol bol FPGA'in kendisi üzerinde çalışacaksınız ki bence asıl hikaye burada başlıyor. HDL öğrenmek, simülatörle uğraşmak falan hikaye, asıl sorun Türkiye'de üzerinde çalışma yapacağınız FPGA'i ve test ekipmanını edinmek. Takdir edersiniz ki bu aletler bir PIC gibi ucuza elde edilmiyor, kapsamlı test ortamını oluşturmak ise (osiloskop vs.) çok çok pahalıya geliyor. Başlangıç için ucuz kitler tercih edebilirsiniz, yeterli de olur ama eğer erişim şansınız varsa bir üniversitenin olanaklarını kullanmak gibi seçenekler çok daha faydalı olur.

Bu kadar şey yazınca şöyle bir dönüp baktım, ben olsam bunları okuyunca gözüm korkardı gibi geldi ama sizin korkmasın, bilmeyen birine hissettirdiği kadar zor şeyler değil. Üstelik microcontroller programlama ile çok uzak kavramlar değil FPGAler, hatta araştırma yaptıysanız "Embedded development kit" gibi isimler altında hem microcontroller hem FPGA'in beraber çalışması için dizayn edilmiş (sonuçta her ikisinin asıl kullanım amacı ve güçlü / zayıf olduğu noktalar farklı, birbirlerini tamamlayabiliyorlar) paketler, FPGA içine gömülebilen soft microcontroller çekirdekleri falan olduğunu görebilirsiniz. Yani bu iki dünya ile birlikte ilgilenmek de fena şey değildir :)

Bu arada FPGA ille de milyonlarca entegre üretilirken kullanılmaz. Bu söz dizaynların büyüklüğü / karmaşıklığı için söylendiyse görece doğrudur denebilir ama IGLOO nano gibi çok küçük, az güç tüketen, basit tasarımlar için hazırlanmış FPGAler de var: www.actel.com

Gecenin bir vakti çorba gibi yazmış olabilirim, kusura bakmayın.
  • marsec  (08.04.11 01:28:36) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.