Hangi parçanın ölçütlerinize en uygun olduğuna karar vermenize yardımcı olan dijital bir projeyi değerlendirmek için kullanabileceğiniz iki ölçüt vardır. Birincisi, tasarım boyutu / karmaşıklığıdır - ne kadar mantık söz konusudur. İkincisi pin sayısı açısından giriş ve çıkış gerekleridir. En yavaş fonksiyonunuzun ne olacağını tahmin edebiliyorsanız hız hesaba katılabilir. Satıcı araçları (Altera Quartus II, Xilinx ISE, vb.) Doğru basketbol sahasına girdiğinizde size yardımcı olacaktır.
PAL / PLA / GAL: Bunlar, normalde LSI mantık çipleri (7400, 4000 serisi) olarak uygulayabileceğiniz küçük ila orta boyutlu devrelerin yerini almak üzere tasarlanmıştır. Bunlar, G / Ç yeniden eşleme ve daha birçok basit mantık işlevi nedeniyle daha iyi kart düzenleri sunabilir. Bu yongalar, kalıcı bellek (veya bir kez programlanabilir sigortalar) içerir ve açılış yapılandırma süresi gerektirmez. Veri depolama öğeleri içeremezler.
CPLD: Bunlar PLA'nın daha büyük kuzenleridir. Tasarımlar küçük durumlu makineler veya hatta çok basit bir mikroişlemci çekirdeği olabilir. Gördüğüm CPLD yongalarının çoğunda, bağladığınız büyük Cypress CPLD olmasına rağmen, herhangi bir yonga üzerinde SRAM yoktur. CPLD'lerin flash bellekle yeniden programlanabilir olma olasılığı daha yüksektir ve ayrıca açılışta yapılandırma süresi gerektirmezler.
FPGA: CPLD'den farklı olarak, mantık blokları flaş bellek yerine SRAM tabanlıdır ve bu da daha hızlı mantık işlemlerine neden olur. FPGA'ların en önemli tarafı, konfigürasyon SRAM'de saklandığından, cihaz her açıldığında FPGA'nın programlamasını bu SRAM'a yüklemesi gerektiğidir. Tasarımınızın boyutuna ve kalıcı depolama alanınızın hızına bağlı olarak, bu durum açılıştan tamamen çalışmaya kadar belirgin bir gecikmeye neden olabilir. Bazı FPGA'ların verilerini depolamak için çipli flaşları vardır, ancak çoğu ayrı bellek yongaları kullanır. FPGA'larda, bilgi işlem hızını artırmak için genellikle kablo bağlantılı çarpanlar, PLL'ler ve diğer mantık işlevleri bulunur. Büyük çip üstü RAM blokları da mevcuttur. LVDS, PCI ve PCI-Express gibi yüksek performanslı I / O özelliklerini de kullanabilirsiniz.
Mikroişlemci Sabit Çekirdekli FPGA: Bunlara aşina değilim, ancak tasarımınızın mikrodenetleyici programlama etrafında odaklanacağını ve FPGA'nın mikrodenetleyiciyi artıracağını hayal ediyorum. Tanımladığınız parçalar, tasarımınıza bir mikrodenetleyici ve bir FPGA ile başlayacağınızı ve ardından ikisini bir çip / pakette birleştireceğinizi gösteriyor.
Hangisinin sizin için doğru olduğuna nasıl karar verilir:
En iyi yol, kodunuzu (Verilog / VHDL) bitirmiş olmak ve daha sonra mümkün olan en küçük parçaya yerleştirmek için satıcının araçlarını kullanmaktır. Altera'nın aracının programlama hedeflerini kolayca değiştirmenize izin verdiğini biliyorum, böylece tasarım kullanımınız yaklaşık% 75'e yaklaşana kadar daha küçük FPGA'lar ve daha sonra daha küçük CPLD'ler seçmeye devam edebilirsiniz. Performansa ihtiyacınız varsa, mantığın hız gereksinimlerini azaltan özelliklere (hızlı çarpanlar) sahip cihazları seçmeyi deneyin. Yine, satıcı araçları yükseltmeniz gerekip gerekmediğini veya eski sürüme geçip geçemeyeceğinizi belirlemenize yardımcı olacaktır.
Kullanımının bir parçası olan başka bir faktör kullanım kolaylığıdır. PAL / PLA / GAL mantığını kullanmak, muhtemelen ayrık mantık kapıları (74HC *, 4000, vb.) Kullanarak fonksiyon oluşturmaktan daha fazla çaba gerektirir. CPLD'ler tipik olarak sadece tek bir besleme gerilimi gerektirir ve ek devre gerektirmez. Etkili bir şekilde bağımsızdırlar. FPGA'lar G / Ç ve mantık çekirdeği, karmaşık G / Ç standartları, ayrı program belleği, çok katmanlı (> 2) PCB'ler ve BGA paketleri için birden fazla güç kaynağı kullanmaya başlar.
Tasarım gereksinimlerinizi daraltmak için atılacak adımlar şunları içerir:
FPGA / CPLD'niz için tüm giriş ve çıkışları belirleyin. Bu genellikle tasarım aşamasının kolay bir parçasıdır. Bu şekilde hangi pakete baktığınızı ve bu kenar boşluğuna ne kadar yakın kesebileceğinizi bilirsiniz.
Dahili mantığın bir blok diyagramını çizin. Bloklarınız basit görünüyorsa (her bloğun bir mantık kapıları ve kayıtlarıyla dolu olması gerekir), muhtemelen bir CPLD kullanabilirsiniz. Bununla birlikte, bloklarınızda "Ethernet alıcısı", "PCI-Express x16 arayüzü", "DDR2 Denetleyici" veya "h264 Kodlama / Kod Çözme" gibi etiketler varsa, neredeyse kesinlikle bir FPGA'ya bakıp HDL kullanıyorsunuz demektir.
- Arabirimlerinizde özel voltajlar, LVDS, DDR veya yüksek hızlı SERDES gibi özel G / Ç gereksinimleri olup olmadığına bakın. Ek bir çevirmen yongası almaktan daha iyi bir yonga almak daha kolaydır.
Örnek CPLD Uygulamaları:
- SPI arayüzlü çok kanallı PWM
- G / Ç Genişletici
- CPU Adres Alanı Kod Çözme
- Saatler (Zaman tutma)
- Ekran Çoklayıcılar
- Basit DSP
- Bazı basit programlar CPLD tasarımına dönüştürülebilir
Hobiist FPGA Örnekleri:
- Küçük Çip Üzerinde Sistem (SoC) tasarımları
- Video
- Karmaşık protokol köprüleri
- Sinyal işleme
- Şifreleme / şifre çözme
- Eski sistem emülasyonu
- Mantık Analizörü / Örüntü Oluşturucu
Çoğu hobici çalışma için, BGA paketlerini lehimlemek istemediğiniz sürece nispeten küçük FPGA'larla sınırlı olacaksınız. Büyük bir CPLD veya ucuz bir FPGA arasında seçim yapardım ve boyut / hız gereksinimleri hangisine ihtiyacım olduğunu belirleyecekti.