Neden FPGA'da mikrodenetleyici kullanılır?


16

Şu anda FPGA'ları, neler yapabileceklerini, nasıl yaptıklarını "araştırıyorum".

Birden fazla yerde ( örneğin burada ) FPGA ile basit bir mikrodenetleyici uygulayan projeler gördüm.

Yani sorum:
Bilmek istiyorum, bu tür uygulamaları yapmanın amacı nedir? Uçakta mikro bulundurmak yerine neden FPGA'da uygulanan bir mikro denetleyici kullanmalıyım? Avantajları nelerdir? Ve belki de olumsuz yanları nelerdir?


Bunların birçoğu konserve IP çekirdeklerini kullanır, ancak kendi rulolarınızı almak harika bir öğrenme deneyimi olabilir.
Chris Stratton

1
@ChrisStratton - Daha fazla bilgi verebilir veya hazır IP çekirdekleri hakkında bir bağlantı gönderebilir misiniz? Evet, eminim harika bir öğrenme deneyimi olabilir. Ama bu soruyu sormamın nedenlerinden biri de bu. Bunun bir öğrenme deneyiminden başka bir şey olup olmadığını merak ediyorum.
James C

1
Bunu yapan çoğu insan Microblaze, Picobloze, Nios II, vb. Kontrast, belki de tipik CS101 dersinizde sunulan blok diyagramdan, HDL kaynağında kendinizi geliştirmektir. Ders çiziminin çalışma donanımına dönüştürülmesinde dikkat edilmesi gereken bazı ilginç pratikler vardır.
Chris Stratton

1
Açık kaynaklı CPU çekirdeği örnekleri için bkz. Açık Çekirdekler .
RBerteig

3
Bir örneğim var. Eski bir ürün için kullanılmayan bir mikrodenetleyicimiz vardı. Doğru çevre birimleri karışımına sahip uygun bir yedek mikrodenetleyici bulamadık. Gömülü işlemcili bir FPGA kullanmak, ideal çevre birimi karışımımızı FPGA üzerinde uygulamamıza izin verdi.
kkrambo

Yanıtlar:


24

Yararları:

  • mikrodenetleyici ve herhangi bir özel arayüz veya çip üzerinde I / O mantığı arasında inanılmaz derecede hızlı arayüz.
  • özelleştirilebilir işlemci ve hata ayıklama arabirimleri
  • ayrıca, örneğin VHDL ile kontrol kodunu yazmaktan daha kolay kontrol mantığı

Downsides:

  • Hem mikro denetleyiciye hem de özel mantığa uyması için muhtemelen daha pahalı FPGA gereklidir, sadece FPGA üzerinde özel mantığa sahip olmak
  • Özellikle anılarla ve çekirdek karmaşıksa, ayrı bir çip üzerinde hazır bir mikrodenetleyiciden daha kolay uygulanması daha zordur.

3
Ek fayda: daha basit tasarım, bir daha az çip.
DoxyLover

4
Ek Dezavantaj: daha fazla IP lisansı
Mikhail

Bir dezavantaj olarak güç tüketimine ne dersiniz?
Craig McQueen

@CraigMcQueen Teorik olarak bir FPGA'da henüz bağımsız bir donanım olarak üretilmemiş bir mikrodenetleyici üretmek mümkündür. Bu durumda, karşılaştırılacak güç tüketimi yoktur. Her durumda, genel bir yukarı / aşağı yönde olmayacak kadar cihaza özel.
Mast

Hepsi çok iyi yorumlar. Ve genel olarak FPGA'ların büyük bir güç tüketimine sahip olduğunu söyleyebilirim, çünkü mantık kullanımı genellikle bir makrosel içinde% 100'den çok uzaktır. Bu, FPGA'ların gelişmiş güç minimizasyon tekniklerini kullanabilmeleriyle biraz dengelenmiştir. Üretim süreçleri (teknolojileri) bir FPGA ve aynı döneme ait bir işlemci arasında oldukça benzer olabilir. İşlemcilerde özel bellek blokları ve FPGA'lar bulunur. Bunların ihtiyaçlarınızı karşılayıp karşılamadığı, ihtiyaçlarınızla tam olarak eşleşen bir FPGA bulma şansınıza bağlıdır.
PkP

26

Projeniz homurtu iş için bir FPGA kullanacak ve yedek kapasiteye sahipse, neden olurdu fazladan bir çip pahasına giderken sadece FPGA bunu uygulayabilirsiniz?

Birçok prosedürel kontrol ortamı için gerekli kurulumu C gibi bir dilde uygulamak, VHDL veya Verilog'da yapmaya çalışmaktan çok daha kolay olabilir. Mikrodenetleyiciyi FPGA'ya ekleyerek, mantık ve arabirim sistemleri için VHDL / Verilog'un gücü ve çekirdek kontrol ve yönetim sistemleri için prosedürel bir dilin basitliği gibi her iki dünyanın da en iyisini elde edersiniz.


10
Bu cevabın ilk cümlesi ana nedendir. Bu, esasen tahtada bir miktar yedek kapasiteye sahip bir FPGA'nız varsa yapılır. (En azından) bir daha az yonga ve daha az tahta karmaşıklığı. Bir FPGA'yı sadece bir mikro denetleyici uygulamak için bir panoya koymazsınız, ancak zaten bir FPGA'nız varsa, parça maliyetini ve pano karmaşıklığını azaltmanın güzel bir yoludur. En azından bu yüzden yapıyoruz.
reirab

13

Majenko ve PkP'nin cevaplarına ek olarak:

Bir CPU'yu FPGA tasarımına gömme eğilimi, aşağıdakiler gibi çeşitli heterojen sistemlere yol açmıştır:

  • Xilinx 'Zynq-7000 ailesi
  • Altera Arria / Siklon / Stratix SoC FPGA'ları
  • MicroSemi'nin SmartFusion FPGA'ları

Piyasada ayrıca bir Intel Atom + Altera FPGA yongası var: http://www.altera.com/devices/processor/intel/e6xx/proc-e6x5c.html

FPGA için çoğu ücretsiz mikro denetleyici, kötü bir takım zinciri desteğinden muzdariptir. Gömülü ARM CPU'lar izleme / hata ayıklama desteği, derleyiciler (gcc takım zinciri) ve tam linux desteği ile birlikte gelir. İşte FPL 2014'te sunulan bir anket: http://dx.doi.org/10.1109/FPL.2014.6927482

Düzenleme 1:
Cypress'ten PSoC (Chip üzerinde Programlanabilir Sistem) cihazları sınıfı da var. Bu cihazlar arasında bir mikro denetleyici (M8C, 8051, ARM Cortex M0 veya Cortex M3) ve klasik SoC entegre I / O denetleyicileri veya cihazları (I²C, SPI, Zamanlayıcı, CAN, DAC, ADC, OpAmp, ...) ve programlanabilir Bölüm. Bu bölüm, klasik FPGA'lar kadar programlanabilir ince taneli değildir, ancak ilave G / Ç denetleyicileri veya yerleşik donanım hızlandırıcıları uygulamak için kullanılabilir. PSoC, tasarımınızda analog bileşenler kullanmanıza olanak tanır.
http://www.cypress.com/psoc/?source=CY-ENG-HEADER

PSoC'ye genel bakış: PSoC


10

Sadece bir mikro denetleyiciye ihtiyacınız varsa ve bir FPGA'nız yoksa, mikro denetleyici ürün yazılımı ile bir FPGA kullanmak olağandışı olurdu. Ancak, tüm projeler bu yönde büyümez. Birçok görevin açıkça bir FPGA'ya ihtiyacı vardır, ancak sonunda bir VHDL çözümü için gerçekten uygun olmayan bir göreve rastlar. Bazen bir sorun en iyi şekilde genel amaçlı bir CPU tarafından halledilir. Veya bazen başka bir yol budur: bazı görevler genel amaçlı bir CPU için uygun değildir - paralelliğe ihtiyaçları vardır.

O zaman, bir seçeneğin var. Cihazınıza ek bir yonga ekleyebilir veya kullanmadığınız FPGA'da bir sürü yedek kapınızın olduğunu fark edebilirsiniz. Biraz IP lisansı alın ve kısa sürede çalışan bir genel amaçlı CPU'nuz olabilir!

Bir başka ilginç detay, bazı mikrodenetleyici yazılımlarını özelleştirebilmenizdir. Bir Power PC'yi gömen, ancak kayan nokta desteği için gerekli tüm kapıları ve şube tahmininin iyi bir kısmını çıkaran projeleri biliyorum. Bu, VHDL tabanlı ürün yazılımı ile yan yana sığacak kadar küçük hale getirdi.


9

Bir FPGA'da mikroişlemci veya mikrodenetleyici oluşturmanın birkaç geçerli nedeni vardır. İşte üç:

  1. Sadece bir işlemcinin çalışması hakkında bilgi edinmek istiyorsunuz. FPGA'lar, kod yürütürken işlemcinin içinde olup bitenleri araştırmak için size sonsuz yollar sunar. Bu sadece öğrenmek içindir.

  2. Bir FPGA'nın donanım düzeyinde hızlarını gerektiren büyük bir sistem uyguluyorsunuz (bir mikroişlemcide çalışan yazılımdan daha hızlı), ancak tasarımınız Xilinx PicoBlaze gibi basit bir işlemcide çalışan yazılım kullanılarak daha kolay uygulanabilen karmaşık bir durum makinesi gerektiriyor bir donanım FSM'sinden daha. Bir PicoBlaze'nin en son FPGA işlem teknolojilerinde 240MHz kadar hızlı çalışabileceğini ve PicoBlaze işlemcinin her iki saatte bir bir komut yürüttüğünü ve böylece yazılımda kolayca programlanan hızlı, tutarlı bir durum makinesi elde edeceğinizi unutmayın.

  3. (2) 'ye genişleyerek, kesintileri kaldırabilecek bir durum makinesine ihtiyacınız vardır. İşlemciler bunun için gerçekten çok iyi çünkü kesintiye hizmet vermeden önce ve sonra durumu nasıl güvenli bir şekilde kaydedip geri yükleyeceklerini zaten biliyorlar.

İşte bir uyarı: Standart bir talimat seti ve büyük bir geliştirme ekosistemine sahip hızlı bir işlemci istiyorsanız, bir Xilinx Zynq SoC'de iki ARM Cortex-A9 gibi hızlı, sert çekirdekli bir işlemci istiyorsunuz. Zynq SoC'deki FPGA yapısı, programlanabilir mantıkta daha fazla işlemci çekirdeği oluşturmanıza izin verir, ancak ARM Cortex-A9'lar Linux gibi standart işletim sistemlerini ve Android gibi standart IDE'leri çalıştırabilir.

ARM Cortex-A9 ve PicoBlaze arasında, birçok kaynaktan kullanılabilen programlanabilir mantıkla uygulayabileceğiniz birçok yumuşak işlemci vardır. Bazı insanlar kendi işlemcilerini yuvarlamayı severler ve bu harika bir eğitim faaliyetidir. Ancak, mikroişlemciler yazılım geliştirme araçlarına ihtiyaç duyarlar ve bu araçların oluşturulması / hatalarının ayıklanması işlemcinin kendisini oluşturmaktan çok daha fazla çaba gerektirir. İşlemci çekirdeğini ve araçlarını oluşturmak / hatalarını ayıklamak için gereken zaman ve çabaya karşı her zaman özel bir mikroişlemcinin olası avantajlarından yararlanmalısınız.

Tam açıklama: Xilinx için çalışıyorum ama FPGA'ların her zaman çözüm olduğunu belirtmediğimden eminim. 50 centlik bir mikrodenetleyici işi yapabilirse, bunu kullanmanız daha iyi olur. FPGA'lar ve Zynq SoC'ler, mikro denetleyicilerin yeteneklerinin ötesinde ağır kaldırma gerektiren projeler içindir.


Hoş geldiniz Steven!
PkP

1
İyi cevap, ama kim kesimleri işleyebilecek bir devlet makinesine ihtiyaç duyar? Kesmeler, getirme-kod çözme-yürütme işlemcileri için gerekli bir kötülüktür, çünkü harici uyaranın işlenmesi, ISR'yi çalıştırmak için işlemcinin özel olarak kullanılmasını gerektirir. Bir FPGA'da, harici uyarıcı ayrı bir mantık bloğunda işlenirken durum makinesi de çalışmaya devam eder; durumu kaydetmeye ve geri yüklemeye gerek yok. Temel olarak, kesintiler HDL'nin ilk başta sahip olmadığı bir soruna kusurlu bir çözümdür.
Ben Voigt

Donanımı uygulanmış durum makineleri için elbette haklısın, Ben. "Kesme" pimini her zaman başka bir durum makinesi girişi olarak bağlayabilirsiniz. Bununla birlikte, birçok karmaşık durum makinesi, C çalıştıran bir işlemci ile uygulandığında daha anlaşılır veya bazı geliştiriciler için en azından daha anlaşılırdır. O zaman bir kesintiye ihtiyacınız var.
Steven Leibson

2

Bazen bir FPGA kullanabilirsiniz, çünkü diriltmek istediğiniz uzun ve kullanılmayan bir fiziksel işlemcide çalışan bir yazılımınız vardır. Pim uyumlu olmasa da (DIP tarzı bağlantılar görülmesine rağmen) bu, döngüde doğru olmanızı sağlar. Bir meta mikroişlemcide saf bir yazılım öykünmesinin böyle olması muhtemel değildir. Örneğin apple2fpga

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.