Jak wybrać FPGA?

17

Muszę wykonać cyfrowe przetwarzanie sygnału na 8 liniach analogowych przy 10 kHz. Jest to dość wymagające zadanie i myślałem, że FPGA może być właściwym podejściem. Obecnie patrzę na zestawy deweloperskie od Xilinx, a ponieważ nie mam doświadczenia z FPGA, bardzo trudno jest mi wybrać odpowiedni układ. Wyobraziłem sobie używanie zestawu deweloperskiego i rozszerzanie go za pomocą pinów I / O do połączenia z 8-kanałowym układem A / D i 8-kanałowym układem D / A.

Jakie są różnice między używaniem Spartan, Virtex, Altera itp.? Nie wiem nawet, jak oszacować, ile bram będę potrzebować. Czy są na to jakieś praktyczne zasady? Jak upewnić się, że szybkość zegara będzie wystarczająca (w zależności od liczby dodatków i mnożeń). Czy trudno jest przetwarzać zmiennoprzecinkowe na FPGA, czy powinienem trzymać się matematyki stałoprzecinkowej? Jak najlepiej zacząć?

Potrzebuję rozwiązania, które można zaprogramować za pomocą Linuksa. Xilinx zapewnia to, ale nie jestem pewien, jakie są ograniczenia.

fpganewbie
źródło
5
Bardzo pomogłoby wiedzieć, jakiego rodzaju algorytmy należy wdrożyć. Są szanse, że w ogóle nie potrzebujesz FPGA, co pozwoli ci zaoszczędzić dużo czasu na rozwój ;-)
geschema
Zgadzam się z geschema; możesz nie potrzebować FPGA. Może DSP jest lepszym rozwiązaniem. W każdym razie łatwiej jest zacząć, jeśli masz tylko doświadczenie w UC. FPGA są bardzo różne!
stevenvh

Odpowiedzi:

13

Nie użyłbym FPGA.

Wspominasz, że nie masz doświadczenia z układami FPGA, a jednak jesteś zainteresowany wykonywaniem cyfrowego przetwarzania sygnału na FPGA ... manipulacja numeryczna + przetwarzanie sygnału są wystarczająco trudne, aby uzyskać dostęp do komputera / DSP / mikroprocesora, gdzie narzędzia programistyczne są konwencjonalne programowanie. Wydaje mi się, że zastosowanie projektu cyfrowego przetwarzania sygnału w pierwszym projekcie FPGA jest prawdopodobnie receptą na frustrację.

Jeśli chcesz nauczyć się układów FPGA, spróbuj zrobić coś bardziej dostosowanego do narzędzi programistycznych, takich jak maszyny stanu lub przetwarzanie pakietów komunikacyjnych.

W przypadku projektu DSP, takiego jak opisany, polecam zamiast tego DSP lub Cypress PSOC lub mikrokonwerter urządzeń analogowych (= mikrokontroler z wbudowanym ADC + DAC).

(pełne ujawnienie, które stanowi kontekst dla mojej porady: sam nie używam układów FPGA. W rzadkich przypadkach używałem programowalnej logiki = PLD. Mój urzędnik często używa układów FPGA i widziałem wystarczająco dużo kodu VHDL / Verilog mam nadzieję, że dobrze nadaje się do manipulacji bitami. Jest doświadczonym inżynierem z dużym doświadczeniem w układach FPGA; w niedawnej rozmowie z nim, gdzie robił dość prostą matematykę na liczbach całkowitych o różnych szerokościach bitów, powiedziałem mu, że potrzebuje robić przedłużanie znaków na mniejszej liczbie bitów, aby odpowiednio je odjąć, a on dostał ten wyraz twarzy, na przykład: „o rany, nie chcę robić przedłużania znaku ...” Dodawanie i odejmowanie nie jest bardzo trudne w FPGA. Poza dodawaniem i odejmowaniem, naprawdę musisz znać narzędzia i biblioteki.I przetwarzanie zmiennoprzecinkowe ??!? !! ??!? !!?)

Jason S.
źródło
2
MyHDL próbuje rozwiązać niektóre z tych problemów.
Shawn J. Goff,
Nie sądzę, że FPGA są trudniejsze w użyciu niż mikroskopy, po prostu mają inny zestaw zastrzeżeń.
Connor Wolf,
10

Wszystkie są całkiem dobre. Nie będziesz potrzebował zbyt wiele z FPGA, aby zrobić coś tak prostego, więc każdy początkujący FPGA (jak linia Spartan-3) powinien wystarczyć.

Tylko słowo ostrzeżenia, programowanie FPGA jest LOOOOTTTTTT innym niż C ++, C, perl ... Sugeruję zacząć od verilog, ponieważ prawdopodobnie łatwiej jest przejść do ... VHDL jest bardzo COBOL, ale verilog jest bardziej podobny do współczesnych języków programowania.

O szybkości zegara: nie martw się o to. Zaletą korzystania z układów FPGA jest to, że są one masywnie równoległe, więc podczas gdy zegar 50 MHz może wydawać się absurdalnie powolny w dzisiejszych standardach, należy pamiętać, że mogą robić setki rzeczy naraz, podczas gdy „normalny” procesor 3GHz musi kolejkować rzeczy jeden na raz. Jest to zaleta korzystania z FPGA: równoległość. Więc w przypadku czegoś specjalistycznego nie musisz się tak bardzo martwić szybkością.

Ale podobnie jak inny komentarz, jest to zupełnie inny paradygmat. Krzywa uczenia się jest stroma, ale po opanowaniu języka wszystko ma sens (upewnij się, że rozumiesz elementy składowe).

Happy FPGA'ing :)

Vincent P.
źródło
2
VHDL jest oparty na Adzie! Leon
Leon Heller
2
Wybierając Verilog lub VHDL, weź pod uwagę język, ponieważ jest to inwestycja w twoją przyszłą zbywalność. W Stanach Zjednoczonych Verilog jest bardziej popularny w rozwoju układów scalonych / układów niż VHDL, więc znajomość Verilog (i jego ulepszonej wersji, System Verilog) prawdopodobnie będzie lepszą długoterminową inwestycją. Wydaje się również, że wszystkie duże firmy EDA inwestują w verilog i verilog systemowy, podczas gdy VHDL nie cieszy się dużym zainteresowaniem. (obserwuj różnice w symulacji VCS z vhdl vs VCS verilog na symulatorze). (que flaming) Tak, możesz nauczyć się obu, ale dlaczego nie nadać priorytetu.
Ross Rogers,
Możesz napisać w dowolnym języku. Myślę, że narzędzia Xilinx mogą pobierać Verilog i VHDL, nawet w tym samym projekcie. FWIW, jestem w USA i nigdy nie korzystałem z Verilog.
ajs410,
1
„VHDL jest bardzo podobny do COBOL”. Nie przez milion mil!
stevenvh
9

Jakiś czas temu przygotowałem tabelę porównawczą podstawowych kart FPGA od dwóch dostawców FPGA: Xilinx i Altera. Są to dwaj główni gracze w FPGA, coś w rodzaju PIC vs AVR lub Sony vs Nintendo. Zapewniają najlepszy huk za grosze. Są inni dostawcy, którzy zapewniają określone funkcje, ale zwykle kończy się to na tym, że płacisz więcej lub tracisz funkcje / moc przetwarzania.

Wiem, że nie odpowiada to bezpośrednio na Twoje pytanie, ale powinno być pomocne dla każdego, kto chce zacząć korzystać z karty FPGA.

davr
źródło
7

Tak dużo pytań; spróbujmy odpowiedzieć na nie w kolejności:

  1. Wymagania dotyczące zasobów do przetwarzania sygnałów: Aby określić, jakiego sprzętu należy użyć / zbudować, trzeba mieć wyobrażenie o ilości przetwarzania, które chcesz wykonać na danych sygnałach. 8 kanałów przy 10 kHz nie jest bardzo wysoką szybkością transmisji danych, więc chyba że twoje wymagania są wyjątkowe, większość układów FPGA i DSP powinna być w stanie przetwarzać dane.
  2. Jak wybrać odpowiednie urządzenie? W oparciu o wymagania dotyczące przetwarzania sygnału powinieneś być w stanie dowiedzieć się, które urządzenie jest wymagane dla twojej aplikacji. Kluczowymi punktami są wymagania dotyczące pamięci, wymagane są twarde mnożniki, specjalne uwagi dotyczące IO itp. Większość dostawców FPGA ma narzędzia (internetowe), które pozwalają przeszukiwać ich portfolio na podstawie takich czynników.
  3. Jak rozpocząć korzystanie z DSP? DSP to po prostu zwykłe komputery, które zwykle mają instrukcje SIMD [Single Instruction, Multiple Data] odpowiednie do przetwarzania sygnału. Aby rozpocząć, musisz zrozumieć ograniczenia „wbudowanego” sprzętu i kompilatora C, abyś mógł przetestować swój kod na zwykłym komputerze.
  4. Jak rozpocząć korzystanie z układów FPGA? Układy FPGA są programowane w języku opisu sprzętu. Różnią się one znacznie od języków sekwencyjnych, takich jak C lub Java. Aby opracować układ FPGA, musisz zrozumieć współbieżność prawdziwego sprzętu. Narzędzia potrzebne do rozpoczęcia pracy to symulator HDL, taki jak Simili (bezpłatny dla małych projektów) lub Modelsim. To pozwala symulować kod na komputerze. Następnie potrzebujesz specjalnego narzędzia do syntezy, które kompiluje Twój kod HDL do pliku bitowego, który służy do konfiguracji FPGA. Jeśli otrzymasz zestaw startowy od Altera, Actel lub Xilinx, wszystkie potrzebne narzędzia są częścią zestawu.
  5. Obsługa Linuksa: narzędzia FPGA większości dostawców działają na Linuksie, ale w dziedzinie DSP zazwyczaj jesteś zmuszony używać kompilacji tylko dla Windows, chyba że Twój DSP jest obsługiwany przez GCC (Blackfin z Analog i kilka modeli z Texas Instruments są).
trondd
źródło
+1 dla „8 kanałów @ 10 kHz nie jest zbyt dużą szybkością transmisji danych” - nie mogę uwierzyć, że nikt jeszcze tego nie powiedział.
Kevin Vermeer
Nie, jeśli robi 8-kanałowy FFT ...
ajs410
Procesory DSP są często jednowątkowymi równoległymi jednostkami przetwarzającymi, z których każda jest w stanie wykonać inną instrukcję (w przeciwieństwie do SIMD, gdzie wszystkie jednostki dzielą tę samą instrukcję).
Ben Voigt,
4

Facet o imieniu Anthony Burch opracował serię filmów o FPGA . Jeden z bezpłatnych zawiera informacje o tym, jak wybrać FPGA.

Shawn J. Goff
źródło
4

Zrobi to prawie każdy dostawca FPGA. To jest jak Intel vs AMD ... istnieją różnice między Xilinx i Altera, ale są one niezwykle podobne pod względem funkcjonalności. Kup dowolny zestaw deweloperski w swoim przedziale cenowym - osobiście lubiłem Spartan 3 od Xilinx - i biegam z nim.

Jeśli chodzi o liczbę bramek, zestaw deweloperów będzie zazwyczaj bardzo duży, miejmy nadzieję, że będzie większy niż potrzebujesz. Gdy przygotujesz się do przejścia na własną płytkę drukowaną, narzędzia do syntezy oszacują, ile bram wymaga Twój projekt. Możesz użyć tego, aby wybrać mniejszy FPGA, choć możesz się dowiedzieć, że ograniczenia pakietów (QFP vs BGA) również odgrywają ważną rolę.

Przy odpowiednich technikach projektowania prędkość zegara nie będzie problemem. W rzeczywistości można zwykle użyć stosunkowo wolnego kryształu, takiego jak 12 MHz, a układ FPGA może zsyntetyzować znacznie szybszy zegar (lub wiele szybszych zegarów!) Jeśli naprawdę martwisz się o wielokrotne dodawanie, wiem, że seria Virtex4 ma dedykowane wycinki DSP, które mogą przyspieszyć te obliczenia. Ale układy FPGA są masowo równoległe, więc nie potrzebujesz zbyt wielu MHz, aby wykonać mnóstwo pracy.

Zdecydowanie trzymałbym się stałego punktu, jeśli możesz. Możliwe jest wykonywanie zmiennoprzecinkowe, a Xilinx ma nawet Generator rdzenia, który zapewni ci rdzeń zmiennoprzecinkowy, ale ustalony punkt będzie znacznie szybszy i będzie wymagał znacznie mniej bram. Kolejną zaletą jest to, że możesz zrobić jakiś dziwny stały punkt; możesz użyć tyle bitów, ile chcesz, nie musi to być moc 2 bitów i / lub możesz użyć większych stałych punktów dla etapów pośrednich.

Najlepszy sposób na rozpoczęcie korzystania z układów FPGA? Znajdź klasę, seminarium lub coś takiego. Jeśli nie znasz technologii, narzędzia programistyczne będą bardzo mylące, ponieważ wiele rzeczy może się nie udać. Narzędzia do MCU są znacznie bardziej wybaczające i wymagają mniej intymności z podstawową architekturą.

Och, i powinieneś przeczytać arkusz danych FPGA, od przodu do tyłu.

ajs410
źródło
0

Spójrz na XMOS

Mogą być używane do zastępowania układów FPGA w wielu aplikacjach.

Leon Heller
źródło
0

Jeśli chcesz oszacować liczbę bramek, nie musisz jeszcze kupować sprzętu - główni producenci FPGA mają darmowe oprogramowanie, a wielu będzie miało przypisy dotyczące robienia dsp. Możesz projektować i symulować rzeczy bez sprzętu, a oprogramowanie powie ci, jakie zasoby są używane. Jednak w przypadku przetwarzania sygnału dsp byłby zwykle pierwszym krokiem, a FPGA tylko, jeśli zabraknie mocy przetwarzania.

mikeselectricstuff
źródło