Bir FPGA nasıl seçilir?


17

10 kHz'de 8 analog hatta dijital sinyal işleme ihtiyacım var. Bu oldukça zorlu bir görev ve bir FPGA'nın doğru yaklaşım olabileceğini düşünüyordum. Şu anda Xilinx'ten dev kitlerine bakıyorum ve FPGA ile ilgili hiçbir deneyimim olmadığından, doğru çipi nasıl seçeceğimizi bilmek gerçekten zor. Bir dev kit kullanarak hayal ettim ve 8 kanallı A / D yongasına ve 8 kanallı D / A yongasına bağlanmak için I / O pinlerini kullanarak genişlettim.

Spartan, Virtex, Altera, vb. Kullanma arasındaki farklar nelerdir? Kaç tane kapıya ihtiyacım olacağını nasıl tahmin edeceğimi bile bilmiyorum. Bunun için genel kurallar var mı? Saat hızının yeterli olduğundan nasıl emin olabilirim (ekleme ve çarpma sayısının bir fonksiyonu olarak). Bir FPGA üzerinde kayan nokta işleme yapmak zor mu, sabit nokta matematiğine bağlı kalmalı mıyım? Başlamanın en iyi yolu nedir?

Linux kullanarak programlanabilen bir çözüme ihtiyacım var. Xilinx bunu sağlar, ancak sınırlamaların ne olduğundan emin değilim.


5
Ne tür algoritmalar uygulamanız gerektiğini bilmek çok yardımcı olacaktır. Muhtemelen bir
FPGA'ya

Geschema ile aynı fikirdeyim; bir FPGA'ya ihtiyacınız olmayabilir. Belki bir DSP daha iyi bir çözümdür. Her durumda, yalnızca UC'lerde deneyiminiz varsa başlamak daha kolaydır. FPGA'lar çok farklı!
stevenvh

Yanıtlar:


13

FPGA kullanmam.

FPGA'larla ilgili hiçbir deneyiminiz olmadığını ve yine de bir FPGA üzerinde dijital sinyal işleme yapmakla ilgileniyorsunuz ... sayısal manipülasyon + sinyal işleme, programlama araçlarının geleneksel olduğu bir bilgisayarda / DSP / mikroişlemcide elde etmek için yeterince zor programlama. Bana göre, ilk FPGA projesi için dijital sinyal işleme projesi kullanmanın hayal kırıklığı için bir reçete olduğu anlaşılıyor.

FPGA'ları öğrenmek istiyorsanız, durum makineleri veya iletişim paketi işleme gibi geliştirme araçlarına daha uygun bir şey yapmayı deneyin.

Açıkladığınız gibi bir DSP projesi için bunun yerine bir DSP veya bir Cypress PSOC veya Analog Devices Mikrodenetleyici (= ADC + DAC yerleşik mikrodenetleyici) öneririm .

(tavsiyem için bir bağlam sağlayan tam açıklama: FPGA'ları kendim kullanmıyorum. Nadiren programlanabilir mantık = PLD'ler kullandım. Görevli arkadaşım FPGA'ları sık sık kullanıyor ve ona bakan yeterli VHDL / Verilog kodu gördüm Bit manipülasyonları için çok uygun olduğunu bilmek için omuz.PPGA'larla çok fazla deneyime sahip tecrübeli bir mühendis; Onunla son zamanlarda yaptığı konuşmada, farklı bit genişliklerine sahip tamsayılar üzerinde oldukça basit bir matematik yaptığı için ona ihtiyacı olduğunu söyledim düzgün bir şekilde çıkarmak için daha kısa bit genişliğinde numaraya işaret genişletme yapmak ve "oh adam, işaret uzatma yapmak istemiyorum ..." gibi yüzüne bu görünümü aldı ... Toplama ve çıkarma toplama ve çıkarma ötesinde, gerçekten araçları ve kütüphaneleri bilmeniz gerekir.Ve kayan nokta işleme ??!? !! ??!? !!?)


2
MyHDL bu sorunların bazılarını çözmeye çalışır.
Shawn J. Goff

FPGA'ların mikrolardan daha zor olduğunu sanmıyorum, sadece farklı uyarılar var.
Connor Wolf

10

Hepsi oldukça iyi. Böyle basit bir şey yapmak için FPGA'dan çok fazla ihtiyacınız olmayacak, bu yüzden yeni başlayan FPGA (Spartan-3 hattı gibi) yeterli olmalıdır.

Sadece bir uyarı kelimesi olsa da, bir FPGA programlamak C ++, C, perl gibi bir şeyden farklı bir LOOOOTTTTT ... verilog ile başlamayı öneririm çünkü muhtemelen geçiş yapmak daha kolay ... VHDL çok COBOL gibi ama verilog modern programlama dillerine daha çok benzemektedir.

Saat hızı hakkında: endişelenmeyin. FPGA'ları kullanmanın avantajı, büyük ölçüde paralel olmalarıdır, bu nedenle 50MHz saat günümüz standartlarına göre gülünç yavaş gibi görünse de, aynı anda yüzlerce şey yapabildiklerini, 3GHz'deki "normal" bir CPU'nun sıraya girmesi gerektiğini unutmayın birer birer yukarı. FPGA: paralellik kullanmanın avantajı budur. Bu yüzden özel bir şey için, hız hakkında çok fazla endişelenmenize gerek yok.

Ama diğer yorum gibi, bu tamamen farklı bir paradigma. Öğrenme eğrisi diktir, ancak dili kavradığınızda, her şey mantıklıdır (sadece yapı taşlarını anladığınızdan emin olun).

Mutlu FPGA'ing :)


2
VHDL aslında Ada! Leon
Leon Heller

2
Ayrıca, Verilog veya VHDL'yi seçerken, dili gelecekteki pazarlanabilirliğinize bir yatırım olarak düşünün. ABD'de Verilog, IC / çip geliştirmede VHDL'den daha popülerdir, bu nedenle Verilog'u (ve onun gelişmiş versiyonunu, Sistem Verilog'u) bilmek daha iyi bir uzun vadeli yatırım olacaktır. Ayrıca, tüm büyük EDA şirketlerinin verilog ve sistem verilog'a yatırım yaparken, VHDL fazla ilgi görmüyor. (vhdl ve VCS verilog simülatörü performans farkları arasındaki VCS karma simülasyonuna tanık olun). Evet, ikisini de öğrenebilirsin, ama neden öncelik veremiyorsun?
Ross Rogers

Her iki dilde de yazabilirsiniz. Xilinx araçlarının aynı projede bile Verilog ve VHDL alabileceğini düşünüyorum. FWIW, ABD'deyim ve Verilog'u hiç kullanmadım.
ajs410

1
"VHDL çok COBOL gibidir". Milyon mil kadar değil!
stevenvh

9

Bir süre önce , iki FPGA satıcısı Xilinx ve Altera'dan giriş seviyesi FPGA kartlarının bir karşılaştırma tablosunu bir araya getirdim . FPGA'lardaki iki büyük oyuncu, PIC vs AVR veya Sony vs Nintendo gibi. Onlar en iyi kova-bang sağlar. Belirli özellikler sağlayan başka satıcılar da vardır, ancak genellikle daha fazla ödeme yaparsınız veya özellikleri / işlem gücünü kaybedersiniz.

Bunun doğrudan sorunuza cevap vermediğini biliyorum, ancak bir FPGA panosuna başlamak isteyen herkes için yararlı olmalıdır.


7

Çok fazla soru; bunları sırayla cevaplamaya çalışalım:

  1. Sinyal işleme için kaynak gereksinimi: Hangi donanımı kullanmanız / derlemeniz gerektiğini belirlemek için, söz konusu sinyaller üzerinde yapmak istediğiniz işlem miktarı hakkında bir fikre ihtiyacınız vardır. 10 kHz'de 8 kanal çok yüksek bir veri hızı değildir, bu nedenle gereksinimleriniz çok özel olmadığı sürece çoğu FPGA ve DSP'nin verileri işleyebilmesi gerekir.
  2. Doğru cihazı nasıl seçerim? Sinyal işleme gereksinimlerinize bağlı olarak, uygulamanız için hangi cihazın gerekli olduğunu anlayabilmeniz gerekir. Anahtar noktalar bellek gereksinimidir, sert çarpanlar gereklidir, özel G / Ç faktörleri, vs.
  3. DSP'yi kullanmaya nasıl başlayabilirim? DSP'ler, genellikle sinyal işleme ile ilgili SIMD [Tek Talimat, Çoklu Veri] talimatları olan sıradan bilgisayarlardır. Başlamak için, kodunuzu sıradan bir bilgisayarda test edebilmeniz için "katıştırılmış" donanım ve bir C derleyicisinin sınırlamalarını anlamanız yeterlidir.
  4. FPGA'ları kullanmaya nasıl başlayabilirim? FPGA'lar bir Donanım Tanımlama Dili ile programlanmıştır. Bunlar C veya Java gibi sıralı dillerden önemli ölçüde farklıdır. FPGA için geliştirmek için gerçek donanımın eşzamanlı doğasını anlamanız gerekir. Başlamanız gereken araçlar Simili (küçük tasarımlar için ücretsiz) veya Modelsim gibi bir HDL simülatörüdür. Bu, kodunuzu PC'de simüle etmenizi sağlar. Bundan sonra, HDL kodunu FPGA'yi yapılandırmak için kullanılan bir bit dosyasına derleyen satıcıya özel bir sentez aracına ihtiyacınız vardır. Altera, Actel veya Xilinx'ten bir başlangıç ​​kiti alırsanız, ihtiyacınız olan tüm aletler kitin bir parçasıdır.
  5. Linux desteği: Çoğu satıcıdan gelen FPGA araçları Linux üzerinde çalışır, ancak DSP'niz GCC (Analog Blackfin ve Texas Instruments'ın birkaç modeli) tarafından desteklenmedikçe DSP alanında genellikle yalnızca Windows derleyicilerini kullanmak zorunda kalırsınız.

+1 için "8 kanal @ 10 kHz çok yüksek bir veri hızı değil" - Henüz kimsenin bunu söylemediğine inanamıyorum.
Kevin Vermeer

8 kanallı FFT yapıyorsa değil ...
ajs410

DSP'ler genellikle her biri farklı bir komut yürütebilen tek dişli paralel işlem birimleridir (tüm birimlerin aynı komutu paylaştığı SIMD'den farklı olarak).
Ben Voigt


4

Hemen hemen her FPGA satıcısı yapacak. Intel vs AMD gibi ... Xilinx ve Altera arasında farklılıklar var, ancak işlevsellik açısından oldukça benzerler. Fiyat aralığınızdaki geliştirme kitini satın alın - Spartan 3'leri Xilinx'ten şahsen beğendim - ve onunla çalıştırın.

Geçit sayısı ile ilgili olarak, dev kit genellikle çok büyük, umarım ihtiyacınız olandan çok daha büyük olacaktır. Kendi PCB'nize geçmeye hazır olduğunuzda, sentez araçları sizin için tasarımınızın kaç tane kapı gerektirdiğini tahmin edecektir. Daha küçük bir FPGA seçmek için bunu kullanabilirsiniz, ancak paket kısıtlamalarının (QFP ve BGA) da önemli bir rol oynadığını görebilirsiniz.

Uygun tasarım teknikleriyle, saat hızı sorun olmayacak. Aslında, tipik olarak 12 MHz gibi nispeten düşük hızlı bir kristal kullanabilirsiniz ve FPGA çok daha hızlı bir saat (veya daha hızlı saatler!) Sentezleyebilir. bu hesaplamaları hızlandırabilen özel DSP dilimleri. Ancak FPGA'lar büyük ölçüde paraleldir, bu nedenle bir ton iş yapmak için çok fazla MHz'e ihtiyacınız yoktur.

Mümkünse kesinlikle sabit nokta ile yapışırdım. Kayan nokta yapmak mümkündür ve Xilinx'in size bir kayan nokta çekirdeği sağlayacak bir Çekirdek Jeneratörü bile vardır, ancak sabit nokta çok daha hızlı olacak ve daha az kapı gerektirecektir. Diğer bir avantaj, bazı garip sabit noktalar yapabilmenizdir; istediğiniz kadar bit kullanabilir, 2 bitlik bir güç sayısı olması gerekmez ve / veya ara aşamalar için daha büyük sabit noktalar kullanabilirsiniz.

FPGA'ları kullanmaya başlamanın en iyi yolu? Bir sınıf veya seminer falan bulun. Teknolojiye aşina değilseniz, geliştirme araçları çok kafa karıştırıcı olacaktır, çünkü yanlış gidebilecek çok şey var. MCU'lar için araçlar çok daha bağışlayıcıdır ve altta yatan mimari ile daha az yakınlık gerektirir.

Oh, ve FPGA'nın veri sayfasını önden arkaya okumalısınız.



0

Kapı sayısını tahmin etmek istiyorsanız, henüz donanım satın almanıza gerek yok - ana FPGA üreticilerinin özgür yazılımı var ve birçoğunun dsp yapma konusunda uygulamaları olacak. Donanım olmadan bir şeyler tasarlayabilir ve simüle edebilirsiniz ve yazılım size hangi kaynakların kullanıldığını söyleyecektir. Ancak sinyal işleme için, bir dsp normalde ilk adım ve FPGA yalnızca işlem gücünüz tükenirse olacaktır.

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.