Farklı karmaşıklığa sahip programlanabilir mantık IC'leri ne için kullanılır?


10

Programlanabilir mantık, ARM'nin PrimeCell GPIO'sundan veya diğer daha spesifik örneklerden bahsetmeden, birkaç kapıyı yakmaktan veya bir MUX kullanmaktan dahili mikrodenetleyici ve IO çevre birimleri ile en son FPGA'ya kadar birçok farklı spektrumda widget'ınıza uygulanabilir . Hangi uygulamalar için çeşitli seviyelerde programlanabilir mantık cihazı karmaşıklığı kullanılır? Gruplandırma , tanımlarının uç noktalarına yakın bir şekilde bir araya gelmiş gibi görünse de , bunun kabul edilebilir bir liste olduğunu düşünüyorum:

  1. PAL / PLA / GAL : Programlanabilir Mantık Dizisi; olarak sıralanabilir görünür- Saklı PLD 'kapsayan Digi-Key de asenkron 10/8 I / O (ATF16V8C) 50MHz, 192 makrosele, (üzereCY7C341B) ve çoğunlukla yeniden programlanabilir bulunmaktadır.
  2. CPLD : Karmaşık Programlanabilir Mantık Cihazı; Digikey bunları 7.5ns 10 I / O (ATF750C) ila 233 MHz, 428 I / O "FPGA Yoğunluklarında"CPLD"(CY39100V484B) olaraklisteler.
  3. FPGA : Sahada Programlanabilir Kapı Dizisi; 58 I / O (XC2064) ila 1023 I / O BGA hayvanlarda (EP1S80F1508C7N) mevcuttur.
  4. Sert MCU'lu FPGA : Bu, bir MCU'nun taklit edilmediği FPGA IC'de fiziksel olarak düzenlendiği zamandır.

Wikipedia teklifi:

FPGA'lar ve CPLD'ler arasındaki fark, FPGA'ların dahili olarak Look-up tablolarına (LUTs) dayanmasıdır, oysa CPLD'ler kapı deniziyle (örn. Ürün toplamı) mantık fonksiyonlarını oluşturur. CPLD'ler daha basit tasarımlar, FPGA'lar ise daha karmaşık tasarımlar içindir. Genel olarak, CPLD'ler geniş kombinasyonel mantık uygulamaları için iyi bir seçimdir, FPGA'lar ise büyük durum makineleri (yani mikroişlemciler) için daha uygundur.

Bu, 233 MHz, 400 I / O CPLD ve karşılaştırılabilir bir FPGA kullanımı arasındaki farkı açıklamaz ; veya bir 192 makrosel PLD ve karşılaştırılabilir bir CPLD arasında olabilir . Tasarım seçeneklerini daraltmak için güvenilir yönergeler oluşturamıyorum. Şu anda aklımda belirli bir uygulamam olmadığını, ancak sık sık "bunu yapmak için ne kullanacağımı" merak ettiğimi unutmayın.

Özel gereksinimler konusunda tesis dışında mükemmel tavsiyeler aldım , ancak yine de bu sorunun, bir diğerinin eşit veya daha uygun olduğu göründüğü zaman bir PLD ailesi üzerinde tercih gösteren bazı örneklerden faydalanabileceğini düşünüyorum.


XC2064 eski bir parçadır. CY7C341B ve CY39100V484B'nin hala yapılıp yapılmadığını bilmiyorum. Herhangi bir karşılaştırma / karar verirken bunu dikkate almalısınız.
Brian Carlton

2
FYI, bu parçalardan herhangi biriyle, üreticilerin literatürlerine koyduğu çeşitli teklifler ile gerçekten ellerinizi almayı bekleyebileceğiniz çok daha küçük kapı sayısı / paket / hız ve sıcaklık kombinasyonları arasında büyük bir fark var. yarım yıldan daha kısa sürede küçük miktarlar. Bu yüzden onlarla tasarım yaparken, önce gerçek kullanılabilirliği kontrol edin. Satın almanın dağıtımdan almak istediğini bilsem bile, daha prototip odaklı bir tedarikçinin gerektiğinde bana bir gecede el altında olduğunu bildiğim cihazları seçmeyi tercih ederim.
Chris Stratton

İyi tavsiye @ChrisStratton. Bu genellikle çoğu parça ile kontrol ettiğim ilk şeydir, ancak özellikle PLD'lerle özellikle sorunlu olduğunu bilmek hala iyidir.
tyblu

Yanıtlar:


7

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:

  1. 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.

  2. 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.

  3. 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.


cevabınızı biraz genişleterek, yapılandırma süresi olmadan anında başlatma nedeniyle PAL / PLA / GAL'ı PLD / CPLD ile aynı sepete gruplamaya meyilli olacağım ve satıcıların CPLD'leri PAL / PLA / GAL cihazları. Örneğin, bazı kafes cihazlarıyla çalışıyorum ve CPLD ailesi IC'si önemli ölçüde daha ucuz ve PAL / GAL / PLA kuzenlerinden daha fazla kapı sunuyor. İkincisinin maliyeti, öncekine kıyasla sundukları için engelleyicidir.
Aralık'ta

Çizgi kesinlikle biraz bulanık. Listelenen parçalara bakana kadar PAL / PLA / GAL'lerin depolama öğeleri olduğunu veya CLPD'lerin SRAM olduğunu düşünmedim. Görünüşe göre PAL / PLA / GAL'ler bir tasarımda ördek bandı gibi bir çekirdek parçası olmaktan çok daha fazla.
W5VO

3

İyi bir "genel kural" listesi şu şekilde olur:

  • PAL / PLA / GAL: PCB üzerindeki ayrık IC mantık kapılarının yerine kullanılır
  • CPLD: Karmaşık, DSP olmayan ve muhtemelen zaman açısından kritik görevlerin gerekli olduğu yerlerde kullanılır (önyükleme kodunu bellekten bir FPGA'ya yükleme, DAC için LUT sinüs dalgası jeneratörü, vb.)
  • FPGA: Kritik zaman, çarpma veya DSP özelliği gerektiğinde kullanılır (FIR Filtreleri, FFT'ler, vb.)
  • Sert MCU'lu FPGA: FPGA işlevselliği gerektiğinde ve FPGA üzerindeki çevre birimlerinin etkinleştirilmesi gerektiğinde (geçici sensörler) veya basitlik için VHDL yerine C'ye daha az zaman duyarlı bir görevin uygulanmasına izin vermek için kullanılır (UART / seri bağlantı noktası işlevselliği, PCB oda temizliği vb.)

Küçük miktarlarda bir paranın altında ucuz bir CPLD ile, PAL / PLA / GAL, eski uygulamalar dışında hemen hemen öldü.
Chris Stratton

Bunu tartışmayacağım. Sadece düşük (pil) güç / küçük boyutun bir CPDL'den daha avantajlı olabileceği için hala kullanılabilecekleri bir kısıtlama olduğunu düşünebilirim, ancak yine de benim en küçük / güç tasarruflu CPLD'yi tasarlamak.
Joel B

2

Basit bir cevap iki yol olabilir:

1. Önce sisteminizi yüksek soyutlama düzeyinde tasarlayın (HDL veya şemalar deyin). Sonra PAL / CPLD / FPGA içine sığdırmaya çalışın ve gereksinimlerinizi karşılayanları seçin (kapılar / mantık elemanları, performans, vb.) Ve sonra en ucuz olanı (geliştirme maliyeti vs üretim maliyeti, vb.).

2. Ama genellikle herhangi bir HDL kodlama veya şematik geliştirmeye başlamadan önce zaten sistemin karmaşıklığını tahmin edebilirsiniz (ne kadar kapıya ihtiyacınız var, eğer 8 bit MCU veya 32 bit MCU'ya ihtiyacınız varsa veya herşey). Buna bağlı olarak programlanabilir cihazınızı da seçebilirsiniz. Bu daha az hassas olacaktır, ancak programlanamayan analog ve dijital donanımınızı programlanabilir donanım ve yazılıma (varsa) paralel olarak tasarlamanıza izin verecektir.


2

Sert çekirdekli FPGA, ayrı bir mikrodenetleyiciden daha az alan ve yumuşak çekirdekli bir mikroişlemciden daha hızlı olduğu için kullanılır. Bununla birlikte, fiyat genellikle bir FPGA ve ayrı bir mikrodenetleyiciden daha kötüdür. Genel yazılım ve dolayısıyla bir mikrodenetleyici, parametrelerin yapılandırılması ve hata yönetimi gibi (nispeten) yavaş ve nadir durumlar için daha iyidir; mantık sürekli süreçler için daha iyidir. Örneğin paket işlemede, bir belleğe yazma mantık içinde olmalıdır; yaşam süresi zaman aşımı yönetimi yazılımda kalmalıdır.

FPGA alanı içinde ucuz / düşük güçlü parçalar ve pahalı / hızlı parçalar vardır. Genel olarak mikrodenetleyici sadece pahalı olandadır; bu, FPGA çözümü için ayrı bir MCU'ya karşı maliyet ticaretini daha da kötü hale getirir.

Hiç kimse PAL'leri en az 10+ yıl boyunca yeni tasarımlarda kullanmaz. CPLD'ler bu nişi devraldı.

Son 5? yıl CPLD'ler içeride FPGA benzeri, ancak konfigürasyonu çip üzerinde tutacak hafızaya sahip. FPGA'lar şu anda 100 MHz'lik olduğu için hız, CPLD'ye 10-15 yıl öncesine göre mantık koymak için çok daha az sebeptir. Bununla birlikte, FPGA'ların çarpanları, serileştiricileri ve bir tasarımı bu kadar mantığa sahip olmasa bile bir tasarımı zorlayabilen birçok anısı gibi başka özellikleri de vardır.


1
Bir CPLD'yi korumanın bir nedeni, mevcut düşük maliyetli CPLD'lerin hala tekli besleme voltajı teknolojilerinde üretilmesidir, ancak mevcut FPGA'lerin çoğu birkaç besleme voltajı gerektirir. Bu nedenle, tahtaya bir cpld koymak için çok daha ucuza ihtiyacınız yoksa - ancak büyük bir CPLD'den bahsediyorsanız, düşük uçlu bir fpga daha ucuz olabilir ve gelecekteki iyileştirmeler için size daha fazla alan verebilir, özellikle de başka bir nedenden dolayı zaten çekirdek voltaj kaynaklarına sahipsiniz.
Chris Stratton

Cevapladığınız için teşekkürler, @BrianCarlton ve yorumlar, @ChrisStratton. Verilen örnekler ve mevcut görüşler harika bilgilerdir.
tyblu
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.