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.
źródło
Odpowiedzi:
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 ??!? !! ??!? !!?)
źródło
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 :)
źródło
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.
źródło
Tak dużo pytań; spróbujmy odpowiedzieć na nie w kolejności:
źródło
Facet o imieniu Anthony Burch opracował serię filmów o FPGA . Jeden z bezpłatnych zawiera informacje o tym, jak wybrać FPGA.
źródło
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.
źródło
Spójrz na XMOS
Mogą być używane do zastępowania układów FPGA w wielu aplikacjach.
źródło
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.
źródło