Dijital tasarımın yazılım geliştirme ile pek bir ortak yönü yoktur (belki de Verilog sözdiziminin C diline biraz benzemesi ancak sadece görünmesi dışında). Dolayısıyla, bu tür bir soruyu yeterince cevaplamak çok zordur. Ancak, yazılım geliştirmeden donanım tasarımına giden bir yolda yürüyen bir adam olarak, ona bir şans vereceğim. Kendime bakarsak, işte şimdi nasıl bildiğimi bilsem, kendime nasıl tavsiyede bulunacağımı:
Sıfırdan başlamak
Yazılım geliştirme ile ilgili her şeyi unutun. Özellikle programlama dilleri. Bu ilkeler dijital tasarımda geçerli değildir. Bir cihaza montajcı veya hatta C programlamak için bir işlemci tasarlayan biri için kolay olurdu, ancak bir montajcı programcı bir CPU tasarlayamaz.
Öğrenme yolunuzda, mevcut yazılım bilginizle kolay olan bir sorunu çözme eğiliminde değilsiniz. Klasik örneklerden biri "döngü için" dir. Bir for döngüsü yazabilseniz bile, verilog, yani farklı amaçlara hizmet eder. Temel olarak kod üretimi için kullanılır. Yazılım geliştiricilerinin gördüğü gibi bir for döngüsü de olabilir, fakat simülasyon dışında hiçbir şey için iyi olmayacaktır (yani FPGA'yı bu şekilde programlayamazsınız).
Bu yüzden üstesinden gelmek istediğiniz her görev için nasıl yapılacağını bildiğinizi sanmayın, bunun yerine bir araştırma yapın - kitapları, örnekleri kontrol edin, daha deneyimli insanlara sorun.
Donanım ve HDL dilini öğrenin
En popüler HDL dilleri Verilog ve VHDL'dir. AHDL (Altera HDL) gibi üreticiye özel olanlar da vardır. Bu diller donanım bileşenlerini tanımlamak için kullanıldığından, hepsi aynı şeyi benzer bir şekilde ifade etmekte, ancak farklı bir sözdiziminde kullanılmaktadır.
Bazı insanlar Verilog'u öğrenmeyi tavsiye ediyorlar çünkü C'ye benziyorlar. Evet, söz dizimi bir C ve Ada karışımıdır, ancak bir yazılım geliştiricinin yaslanmasını kolaylaştırmaz. Aslında, bunun daha da kötüleşebileceğini düşünüyorum çünkü Verilog'da C yazmak için bir cazibe olacaktır. Çok kötü zaman geçirmenin güzel bir tarifi.
Bunu akılda tutarak, VHDL'den bakmayı tavsiye ederim. Her ne kadar Verilog, yukarıdakiler göz önüne alındığı sürece tamamdır.
Akılda tutulması gereken önemli bir şey, o dilde ne ifade ettiğinizi anlamanız gerektiğidir. Ne tür bir donanım tanımlanıyor ve nasıl çalışıyor?
Bu nedenle, genel olarak elektronik üzerine bir kitap ve bunun gibi iyi bir kitap edinmenizi tavsiye ederim - HDL Chip Design (mavi kitap gibi).
Bir simülatör al
Donanımda herhangi bir şey yapmaya başlamadan ve Satıcıya özgü özellikleri kullanmadan önce, kendinize bir simülatör edinin. Bir Verilog ile başlıyordum ve GTK Wave ile birlikte Icarus Verilog kullandım. Bunlar ücretsiz açık kaynaklı projeler. Kitaplarda gördüğünüz örnekleri çalıştırın, zevk almak için kendi devrelerinizi tasarlayarak pratik yapın.
Bir geliştirme kurulu edinin
İlerlemek istediğinizde bir geliştirme kurulu edinin. İşvereninizin Kafes ile gitmek istediğini biliyorsanız, Kafes tahtası edinin.
Programlama yöntemleri çok benzer, ancak farklı olan detaylar var. Örneğin, farklı araçlar, farklı seçenekler, farklı arayüzler. Genellikle, bir satıcıyla deneyiminiz varsa, geçiş yapmak zor değildir. Ama muhtemelen bu ekstra öğrenme eğrisinden kaçınmak istersiniz.
Tahtanın, kullanmayı planladığınız veya genişletilebilir bileşenlerle geldiğinden de emin olurdum. Örneğin, bir yönlendirici gibi bir ağ cihazı tasarlamak istiyorsanız, kartın Ethernet PHY'sine sahip olduğundan emin olun veya HSMC konektörü vb.
Kurullar genellikle iyi bir referans, kullanım kılavuzu ve tasarım örnekleri ile birlikte gelir. Onları çalış.
Kitapları oku
Kitap okumalısın. Benim durumumda dijital tasarımı bilen hiç arkadaşım yoktu ve bu site de basit bir şey yüzünden pek yardımcı olmadı - sorumu nasıl ifade edeceğimi bile bilmiyordum. Bulabildiğim tek şey "Uhm, millet, dcfifo bir şey var ve saat alanı geçme sorunları hakkında bir şeyler duydum, bu nedir ve tasarımımın neden işe yaramadığını" duydum.
Şahsen bunlarla başladım:
FPGA satıcılarının en iyi uygulamaları içeren çok sayıda yemek kitabı vardır. Bunları referans tasarımlarıyla birlikte inceleyin. İşte örneğin, Altera dan biridir.
Daha spesifik sorularla geri dön
Kitaplarınızı okurken, bir tasarımı simüle ederken, geliştirme panonuzdaki bazı LED'leri yakıp söndürürken, büyük olasılıkla, çok fazla sorunuz olacak. Burada sormadan önce kitabın bir sonraki sayfasında ya da çevrimiçi olarak (yani Kafese özgü forumda) gelenlere bir cevap görmediğinizden emin olun.