Jestem nowy w FPGA i obecnie uczę się w klasie HDL (szczególnie Verilog). Mam wystarczającą wiedzę w zakresie projektowania cyfrowego, np. obwody kombinacyjne i sekwencyjne.
Chcę stworzyć projekt podobny do tego pokazanego w tym filmie na YouTube .
Wiem również, że Xilinx ISE może przetwarzać sygnały logiczne i symulować przebiegi. Czy ma dodatkowe możliwości, takie jak pobieranie sygnałów wejściowych przez USB, kamerę itp. I wysyłanie ich do komputera.
Czy można uruchomić ten projekt (jak symulacja w komputerze) bez kupowania rzeczywistej płyty FPGA? Chodzi mi o to, czy mogę zbudować, zakodować i uruchomić ten projekt na moim komputerze i po prostu podłączyć kamerę przez USB, a następnie pozwolić przychodzącym sygnałom wideo przetwarzane przez symulatory HDL, takie jak Xilinx ISE itp. (bez naprawdę kupowania płyty FPGA i syntezy tam twojego projektu, obecnie nie mam budżetu na to)
( Tak naprawdę mam na myśli połączenie projektu HDLl z rzeczywistymi źródłami, kodem C itp.)
Komentarze
- Nie ' Nie wiem, czy dasz radę to zrobić za pomocą symulatora Xilinx ', ale coś takiego jak Icarus Verilog pozwoli twojej symulacji połączyć się z kodem w języku źródła w świecie rzeczywistym; jednak prawdopodobnie będzie działał o rzędy wielkości wolniej niż w czasie rzeczywistym, więc przetwarzanie źródła wideo na żywo byłoby trudne.
- o, oto fraza, którą znajduję, łącząc się ze źródłami w świecie rzeczywistym.
- @vvavepacket zagłosuj za komentarze / posty, aby podziękować komentatorowi / plakatu.
- FPGA w filmie wygląda jak Altera DE2. W zależności od licencji i chipa, ' wynosi od 200 do 600 USD. Istnieją ' symulatorów w csc.kth.se/~emille/niisim
- Terasic DE0-nano kosztuje około 80 dolarów i może współpracować z aparatami i wyświetlaczami LCD; w rzeczywistości mają tego dema na swojej stronie internetowej. Nie jest z nimi powiązany, ale DE0-nano ' ma całkiem niezły układ FPGA na przyzwoitej płytce. ' zawsze nienawidziłem tego, jak drogie są większość forów programistycznych.
Odpowiedź
O ile wiem, narzędzia Xilinx nie mogą współpracować w czasie rzeczywistym, podobnie jak ModelSim (używane przez Libero IDE firmy Actel).
Nie wiem o symulatorach open source, są raczej egzotyczne projekty, więc możliwe, że jest coś, co mogłoby to zrobić.
Jednak może to być Twoja odpowiedź, o którą nie prosiłeś (usunę ją, jeśli nie będzie pomocna), ale rozważę zbudowanie własnej płyty FPGA, aby to zrobić lub przynajmniej zacząć na drodze do tego. Wytrawiłem swoją pierwszą płytkę FPGA i chociaż była bardzo prosta (płytka, a nie proces ;-)), bardzo szybko mnie to nauczyło.
Plusy:
- Tani
- Wskocz do szczegółów i dowiedz się wszystkiego, co musisz wiedzieć o zagadnieniach sprzętowych. Wymusza najpierw przeczytanie większości arkuszy danych i napisanie własnych kod startowy, który IMHO jest często lepszy niż podejście do nauki na tablicy deweloperskiej typu plug and play.
- Umieść na tablicy tylko to, czego potrzebujesz.
- Poprowadź siebie dalej w kierunku swojego celem prawdziwego projektu roboczego z możliwie takim samym wysiłkiem / badaniami, jak wymyślenie, jak symulować to wszystko w czasie rzeczywistym.
Wady:
- Nadal trzeba kupić programator, chociaż w serwisie eBay można znaleźć tanie wersje programistów Xilinx / Altera.
- Jeśli projekt i problemy dotyczące integralności PCB / sygnału nie są czymś, na czym chcesz się skupić, możesz nie być zainteresowany dużą ilością wiedzy, którą można zdobyć robiąc to w ten sposób.
Rozumiem, że wytrawianie własnej płytki jest prawdopodobnie niepotrzebne, zrobiłem to tylko dlatego, że miałem tam układy FPGA, byłem niecierpliwy i nie chciałem czekać 2 tygodnie na dostawę PCB. Istnieją bardzo tanie oferty na płyty 2-warstwowe, które wystarczyłyby przynajmniej do uruchomienia projektu (prawdopodobnie z mniejszą prędkością niż ostatecznie pożądane – zwykle minimalna liczba warstw dla szybkiego projektu FPGA wynosi 4, ale są to znacznie droższe)
W każdym razie Spirit Circuits oferuje całkowicie darmową ofertę na 2-warstwowe płytki PCB typu „bare bones” (jedna na miesiąc, jeden projekt, bez maski lub sitodruku), która przydaje się do jednorazowego projektu .
Ponadto, w przypadku odpowiednich dwu- i czterowarstwowych płyt prototypowych, ITead i Seed Studio kosztują zaledwie 10 USD za usługi 10 płyt (lub prawdopodobnie 5 w tej cenie).
Komentarze
- bardzo ciekawe podejście! i zachęcające
Odpowiedź
Standardowy pakiet Xilinx ISE Webpack (darmowa wersja, która można pobrać ze strony xilinx.com) zawiera symulator o nazwie iSim. To nie jest świetny symulator, ale jest w pełni funkcjonalny, a cena jest odpowiednia.
Chociaż nie korzystałem z narzędzi Altera, zdziwiłbym się, gdyby nie dołączono symulatora.
Ale … Musisz wiedzieć, co symulator może, a czego nie może zrobić . Na początek nie może symulować FPGA działającego z pełną prędkością. W rzeczywistości są one dość wolne. W zależności od złożoności symulowanego FPGA, nie zdziwiłbym się, gdyby symulacja 1 ms symulacji trwała 1 minutę Jeśli chcesz zasymulować godzinę „symulowanego czasu”, wymagałoby to 1000 godzin czasu rzeczywistego.
Ponadto symulowany układ FPGA nie może komunikować się bezpośrednio z takimi elementami, jak port USB. Symulowany układ FPGA nie komunikuje się z „testbenchem”. Testbench to fragment kodu VHDL lub Verilog, który zasila wejścia FPGA (lub części FPGA) i weryfikuje wyjście twojego FPGA. Możesz zrobić dość skomplikowane rzeczy w testbench , takie jak używanie liczb zmiennoprzecinkowych, odczytywanie i zapisywanie plików oraz uruchamianie logiki, której nie da się zsyntetyzować.
Komentarze
- A ltera ' s otrzymało bezpłatne wersje Quartusa, w tym ModelSim. Bezpłatna wersja ModelSim ogranicza szybkość symulacji, a bezpłatna wersja Quartus ogranicza liczbę rdzeni procesora używanych do syntezy, ale poza tym są w pełni funkcjonalne.
- Altera ModelSim nie obsługuje symulacji VHDL i Verilog w tym samym projekcie.
Odpowiedź
Nie znam żadnego symulatora, który będzie bezpośrednio do sygnałów przychodzących do portu USB (lub innego sprzętu).
Przynajmniej w teorii byłoby możliwe napisanie oprogramowania, które pobierałoby sygnały przychodzące do portu i tłumaczyło je na plik testbench, który symulator mógłby to przetworzyć. Niestety, nie znam żadnego istniejącego oprogramowania do tego, a napisanie go samemu byłoby zdecydowanie nietrywialne.
Komentarze
- to najlepszym sposobem jest uzyskanie podstawowej, niedrogiej płyty FPGA dla n00bs takich jak ja
- Nie ' nie musisz w rzeczywistości przechodzić przez plik testbench, jeśli masz symulator whic h obsługuje interfejs do niestandardowego kodu, takiego jak VPI, jednak biorąc pod uwagę, że symulator będzie działał o rzędy wielkości wolniej niż w czasie rzeczywistym, może być łatwiej poradzić sobie z danymi przechwyconymi w pliku, który można odczytać z prędkością symulacji.
- @ChrisStratton Interesuje mnie idea przechwyconych danych w pliku. Jakieś środki na to? Dzięki
- To będzie całkowicie zależało od urządzeń peryferyjnych, których chcesz używać jako źródeł danych.
Odpowiedź
Będziesz musiał użyć interfejsów współsymulacji (DPI, VPI, VHPI, FLI), które pozwolą ci napisać kod, który podpina się do symulatora, a tym samym tworzy pomost między RTL działającym w symulacji a rzeczywistym sprzętem na twojej maszynie .
Znaczące problemy, które napotkasz (poza słabo udokumentowanymi interfejsami) są związane z synchronizacją i synchronizacją. RTL działający w symulacji jest znacznie wolniejszy niż rzeczywisty sprzęt – będziesz musiał być w stanie przechodzić przez interakcje z zewnętrznym interfejsem, aby dopasować prędkość symulacji. Niektóre interfejsy sprzętowe nie będą tego lubić! Na przykład, jeśli używasz TCP, może być konieczne sfałszowanie liczników czasu w stosie jądra, aby uniknąć fałszywych retransmisji itp.
Icarus obsługuje VPI i jest bezpłatny, więc możesz eksperymentować bez wydawania pieniędzy na licencje. Możesz zajrzeć do istniejących frameworków, które wykonują część symulacji podnoszenia ciężkich przedmiotów i zapewniają czystszą abstrakcję dla symulatora. Jednym z takich frameworków jest Cocotb , biblioteka typu open source, która zapewnia interfejs Pythona do symulatora. ( Zastrzeżenie: jestem jednym z twórców cocotb.)
Przykład, który może być istotny: wczoraj uruchomiłem trochę RTL, aby odpowiedzieć na żądania ping i stworzyłem testbench który otwiera interfejs TUN. Możesz następnie pingować interfejs za pomocą polecenia ping
, a RTL działający w symulacji odbiera ping i odpowiada. Całe testbench to mniej niż 50 linii Pythona! Kod źródłowy tego przykładu znajduje się na Github i działa na Icarus pod Linuksem.
Odpowiedź
W większości przypadków wszystko, co robisz w symulacji, pozostaje w symulacji. Nie możesz uzyskać z niej dostępu do prawdziwego sprzętu – musisz mieć model symulacyjny prawdziwego sprzętu.
Jeśli jednak chcesz włożyć trochę wysiłku, większość symulatorów ma interfejs do dowolnego kodu. W Verilog jest to dość standardowy interfejs, jak rozumiem, więc strona Veriloga będzie przenosić się między symulatorami. W VHDL-land jest to standardowy sposób, ale przynajmniej jeden z dużych dostawców ma swój własny sposób
Pamiętaj również, że łączenie się w czasie rzeczywistym (tj. z szybkością, z jaką robi to FPGA) jest bardzo mało prawdopodobne – a reszta twojej symulacji (HDL) nie będzie działać w rzeczywistości -czas albo.Jak zauważono w komentarzach, symulowane przetwarzanie wideo w czasie rzeczywistym nie jest możliwe w ten sposób.
Osobiście nigdy nie musiałem tego próbować, uważam, że jestem bardziej produktywnym modelem pisania sprzęt i wszystko działa w VHDL.
Ale nie zapomnij o korzyściach płynących z wykonywania symulacji – jest to znacznie szybszy sposób na sprawdzenie, czy coś działa (kompilacja zajmuje kilka sekund), a następnie tworzenie strumieni bitowych (kompilacje zajmują dziesiątki minut do godzin) i wypróbowanie ich na sprzęcie.
Komentarze
- Nieprawda, zobacz komentarze do pytania.
- OK, powinienem ' był jaśniejszy – ograniczyłem się do ” I ' m nowy w FPGA ” poziom 🙂 Odpowiedź zaktualizowana