FPGA'lar ne zaman kullanılabilir ve Mikrodenetleyiciler / DSP'ler kullanılmaz?


28

Gelişmiş mikrodenetleyicilerle ilgili bir kurs ve gelişmiş FPGA'larla ilgili bir kurs arasında seçim yapmak zorundayım.

Her iki konuda da giriş kursları aldım ve şu an beni rahatsız eden şey şu ki, mikrodenetleyiciler için ürün yazılımı geliştirmede zaten oldukça iyi olduğumdan ve FPGA ile hangi ürünleri / projeleri yapıp mikrodenetleyici / DSP ile yapamadığımı göremiyorum .

Bir mikrodenetleyicinin veya DSP'nin yeterli olmayacağı bazı uygulamalar / ürünler / projeler bulabilir misiniz ve neden?

Kameralar? Yüksek hızlı kameralar? Yüksek hızlı görüntü işleme?


4
Başlıca nedenleri hemen hemen 1.% 100 deterministik reaksiyonlar, 2. paralellik için büyük potansiyel. Bununla birlikte, çoğu tasarım FPGA'da bir sıralama işlemcili işlemci içermektedir , çünkü bir işlemci için çılgın mantık programlamak donanımdan daha kolaydır.
Dzarda

Her cihazda neyin mümkün olduğu arasındaki fark çok açık değil. Her birinin avantajları vardır ve her iki taraftaki sorunlara da çözümler vardır. Her biri için tanıtım kursları aldım, bunu anlamanızı bekliyorum, bu yüzden tam olarak ne sorduğunuzu merak ettim.
Phil Frost

Çoğu durumda bir mikrodenetleyicinin yeterli olmayacağı ya da bir FPGA'nın bariz tercih olacağı uygulamaları arıyorum.
Jolle

4
Giriş kursunuzda hangisini daha kolay anladınız? Öyleyse diğerinden gelişmiş olanı seçin, çünkü (belki de) daha kolay olanı kendiniz inceleyebilirsiniz.
woliveirajr

Yanıtlar:


21

Ayrıca bakınız FPGA's vs Mikrodenetleyiciler

Yüksek hızlı görüntü veya video işleme iyi bir örnektir. Veya radar veya lazer tabanlı sistemler gibi basit optik görüntüler olmayan 'görüntüleri' işlemek.

Dikkate alınacak en önemli şey verimlilik ve gecikme gereksinimleridir. Bir mikrodenetleyici, her saniye başına bir defa bir kesmeye (çok kabaca) hizmet verebilir. Aynı anda sadece bir kesmeye hizmet edebilir. Ayrıntılı bir şekilde işlemeniz gerekirse, bu, belirli bir zamanda kaç kişiye hizmet verebileceğinizi sınırlar.

Bir FPGA ile genellikle bir giriş olayına hemen yanıt verebilirsiniz (bir sonraki saat döngüsünde). Paralel olarak birçok işlem biriminiz olabilir. Filtrenizin 20 devir sürdüğünü biliyorsanız, bu tamamen olup bitenlerden bağımsızdır.

Son derece paralel tamsayı yoğun hesaplama, özellikle karmaşık veri bağımlılıkları varsa FPGA'larda en iyi sonucu verir. Ancak, çok fazla dahili hafızaya sahip değiller; kenara bazı DRAM ekleyebilirsiniz ancak gecikme pahasına.

Ayrıca çevre birimleri için bir tane isteyebilir veya bazı yüksek hızlı dijital veri yollarını konuşabilirsiniz. HDMI'yı bir mikrodenetleyicinin içine ya da dışına çıkaramazsınız. Birine bir PCI kartı kuramazsınız.


16

HD-Videolarda gerçek zamanlı HD video işleme yapıyorum. Yaptıklarımdan bazıları bir GPU çipinde yapılabildi, ancak bir mikro denetleyicide ya da DSP'de yapılmadı. FPGA daha esnektir.

Birçok sistem, her iki dünyanın en iyisini elde etmek için FPGA'ları ve MCU'ları / DSP'leri birleştirir. Üzerinde çalıştığım bir proje yakında bir video akışında nesne tanımayı içeriyor. Ön adımlar (ses çıkarma, normalleştirme, kenar algılama vb.) En iyi şekilde FPGA'da yapılır, ancak hangi düşük seviye özelliklerin tanınan nesnelerin parçaları olduğuna karar veren üst düzey mantık bir CPU'da yapılır (ya FPGA'nın içinde veya dışında).

Sonuçta, her iki alanda da sohbet etmek isteyeceksiniz, bu yüzden gerçekten sadece hangisini ilk yaptığınızla ilgili bir soru.


14

Kısacası, FPGA'lar, birçok veride küçük bir işlem gerçekleştirmeniz gerektiğinde ve CPU'lar, küçük bir veri üzerinde çok işlem gerçekleştirmeniz gerektiğinde iyidir.

Bir HDMI video akışı çok fazla veridir. Genel video durumunda bir CPU, GPU veya ASIC tarafından yapılabilir, ancak üzerinde biraz çalışma yapmanız gerekiyorsa (örneğin bir bindirme ekleyin) bir FPGA seçebilirsiniz.

Bir ses akışı çok fazla veri değildir, ancak konuşma tanıma işlemi yapmanız gerekiyorsa, bir FPGA için bir CPU tercih edersiniz.

Bir CPU'da yazılım tanımlı radyoyu yapabiliyorken, FPGA ile spektrumun çok daha büyük bir kısmını bir CPU'dan daha kolay bir şekilde halledebilirsiniz.

Bir FPGA’dan klavye denetleyicisi yapabilmenize rağmen, bir mikrodenetleyici daha ucuz olacak, daha az güç tüketecek ve bir FPGA için gelişmiş klavye yazılımı (makrolar, oyun işlevleri, yeniden düzenleme) geliştirmek daha kolay olacak.

Tabii ki, herhangi biriyle, tradeoffyonlarla her şeyi yapabilirsiniz, ancak her ikisinde de yetkinseniz, tradeoffiyonları daha yetkin bir biçimde tartılabileceksiniz ve seçtiğiniz parçaların veya geliştirme süresinin maliyetinden kaçınacaksınız. Verilen bir sorunun yanlış çözümü.


12

Genellikle, işi yapabildiği bir mikrodenetleyici kullanırsınız. Bir mikrodenetleyici sıralı talimatları uygulayarak mantığı gerçekleştirir.

Bir FPGA mantığı gerçekleştirir, çünkü donanım kapıları bunu yapmak için mantıksal olarak bağlanmıştır. Bu, işleri çok daha hızlı yapabileceği ve aynı anda bir çok şeyi yapabileceği anlamına gelir. Bir FPGA'da aynı mantığı oluşturmak ve hata ayıklamak genellikle daha karmaşık ve zordur, bu yüzden ekstra hız ve düşük gecikme gerektiğinde bir FPGA kullanırsınız.


8

Henüz bahsetmediğim bir uygulama, mikroelektronik mühendisliği veya MCU / CPU / GPU / ASIC yongalarının kendileri tasarlanması. Bu yongalar genellikle HDL'de tasarlanarak prototiplenir ve daha sonra bir FPGA'da uygulanır. Bu, işlemcideki veya ASIC'deki asıl silikonun üretimi için gereken düzeni oluşturmak için HDL'yi kullanmadan önce test etmeyi ve değiştirmeyi daha kolay, daha ucuz ve daha hızlı hale getirir.

Bir yorumcu bunu yumuşak çekirdekli yongalar şeklinde bahsetti (bir yazım hatası olmasına rağmen buna sıralama çekirdeği yongaları dendi). Bir ARM / 8051 / etc alabilirsin. Yumuşak çekirdekli ve ihtiyacınız olan yumuşak çekirdekli çevre birimleri ve bir FPGA'da uygulanmış olan kendi özel mikrodenetleyicinizi tasarlayın. Ardından, kaynaklara sahip olduğunuzu varsayarak, kendi mikrokontrolcünüze bu ekin verilebilir.

Bu tür bir uygulama sizi ilgilendiren bir şeyse , neyin mümkün olduğunu görmek için OpenCores'a bakın.


6

Kapsamlı FPGA kullanan radar enstrümanları (çoğunlukla sentetik açıklık) üretiyoruz. Sıkı zamanlama gereksinimlerinin bir mikrodenetleyici tarafından kolayca karşılanabileceğini sanmıyorum. Birçok LIDAR cihazının FPGA kullandığını düşünüyorum.

Temel olarak zamanlama gereksinimlerinin nanosaniye cinsinden olduğu her şey için FPGA veya ASIC gerekir.


5

Bir mikrodenetleyici sadece bir seferde bir komut olmak üzere verileri sırayla işleyebilir, bu nedenle çok pahalı bir işleminiz varsa, hesaplamanızı bir şekilde paralel yapmak isteyebilirsiniz. Ses / video işleme buna iyi bir örnektir. Bu ihtiyacı karşılamak için, belirli görevleri paralel olarak yapabilen dijital sinyal işlemcileri geliştirilmiştir, ancak herhangi bir rastgele algoritmayı uygulayacak kadar genelleştirilmemiştir, bu nedenle bu işlemciler pek çok görev için çalışacaktır, ancak tüm görevler için çalışacaktır. Bir FPGA genelleştirilmiş bir donanımdır. Esasen, kendi donanım parçanızın tasarımını tanımlayabildiğiniz ve daha sonra FPGA'ya indirebileceğiniz için, bunu yapmak için yeterli kaynağa sahip olduğu düşünülebilecek herhangi bir algoritmayı uygulayabilir.

Somut bir örnek: Ken Perlin, simpleks gürültü algoritmasının donanım uygulamasını önerir. Geleneksel CPU veya mikrodenetleyici ile nispeten hızlı yapılabilir, ancak özel donanım ile süper hızlı yapılabilir. Bir DSP'nin bunun için çalışacağından şüphelendiğimden, en kolay şey FPGA olacaktır. Tabii ki zor yol, sizin için üretilmiş, inanılmaz derecede pahalı olan gerçek bir fiziksel çipe sahip olmak olacaktır. http://www.csee.umbc.edu/~olano/s2002c36/ch02.pdf


5

Burada olmayan bir cevap Veri Toplama. 200MHz'de bir sinyal (örneğin, bir RF sinyali) örneklemek ve bir ADC kullanmak ve bunu işlemek istiyorsanız, bir mikrodenetleyici verileri yeterince hızlı bir şekilde işleyemez. Tipik bir DAQ FPGA kartı bir DDC alacak, filtreleyecek, gerçekleştirecek ve RF verilerini çok daha düşük bir frekansta bir CPU'ya iletecektir. FPGA'lar ayrıca RF spektrumunda FFT'leri ve kanalizasyon işlemlerini gerçekleştirebilir.

Başka bir uygulama, örneğin her biri 10 Gb / s'de çalışan bir (veya daha fazla) XAUI ethernet arayüzünü yöneten bir cihaz olan paket yönlendirmesidir . Bu FPGA'lar farklı hedefler için paket sıralarını filtreler ve zamanlar. Bir mikrodenetleyici / geleneksel CPU bu arayüzlerin bant genişliğini idare edemez.


4

Mikroişlemciler ve mikrodenetleyicilerin nispeten küçük bir devre devresiyle çok şey yapabilmelerinin temel nedeni, eğer mikro sadece saniyede 1.000 kez karmaşık bir hesaplama yapmak zorunda kalırsa ve 20 mikrosaniye (yani mikro hesaplama 2) zamanın% 'si), bu hesaplama için kullanılacak olan donanımın çoğu, zamanın% 98'ini başka amaçlar için kullanabilir. Mikrodenetleyiciler böylece çok fazla sayıda farklı işlevi gerçekleştirmek için mütevazı miktarda bir donanım kullanabilirler; işlevler aynı anda gerekli olmadıkça.

Bir FPGA içerisindeki devre miktarı genellikle bir mikrodenetleyicininkiyle karşılaştırılabilir (FPGA'lar, mikrodenetleyicilerin yaptığı gibi, büyüklükler birkaç büyüklük sırasına göre değişir, ancak aralıklar üst üste gelir). Bununla birlikte, bir mikrodenetleyiciden farklı olarak, devre elemanları eşzamanlı olmayan birçok iş için kullanılmasını kolaylaştıracak şekilde bağlanacak olan bir FPGA, devresinin bölümlerini çeşitli görevlere "tam zamanlı" olarak adamak için tasarlanacaktır. Eğer bir mikro kontrolcünün 100 girişin her birinde meydana gelen darbe sayısını sayması istenirse, kontrolörün bunları sırayla ele alabilmesi için yeterince yavaş olan darbe sayısı sayma ile sınırlı olacaktır - eğer tüm girdiler darbe alabilirse Bağımsız bir şekilde, hızlı bir kontrol cihazı bile giriş başına saniyede birkaç binden fazla darbeyi saymakta güçlük çekecektir. Buna karşılık,


1

FPGA bir donanım mantık devreleri veya fonksiyonel blok uygular, teoride istediğiniz her şeyi uygulayabilir. Ve bu bloklar aynı anda çalışıyor, sıradan bir programlama satırında çalışan geleneksel bir MCU yok. Bu nedenle, FPGA'nın performansı MCU'dan çok daha iyidir, ancak programlama dilinden sözdizimi, stil ve kavram bakımından farklı olan HDL veya VHDL dilini bilmek gerekir.


Söylediğim gibi, her şeyi uygulayabilir, bu nedenle, yüksek performansla gelişiminizi kolaylaştırmak için bir fonksiyonel blok içeren bir MCU'yu uygulayabilmeniz şaşırtıcı değildir. Bu nedenle FPGA'da gömülü sistem programını da çalıştırabilirsiniz.


Örneğin, programlanabilir bir ses ekolayzır uygulamak istiyorsunuz ve FFT gibi en ağır hesaplama kısmı, yazılım hesaplaması yapmak yerine işlevsel blok tarafından gerçekleştirilebilir. Ancak LCD, I / O arayüzü gibi basit işlemlerden bazıları MCU tarafından yapılabilir. FPGA ayrıca MCU gömülü sistem ve donanım fonksiyonel bloklarına aynı anda sahip olmanızı sağlar.

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.