Programuję mikrokontrolery od kilku lat i właśnie odkryłem układy FPGA po zajęciach z projektowania cyfrowego. Po przeprowadzeniu badań dotyczących różnych układów FPGA, płyt programistycznych itp. Nadal waham się przed ich zakupem, ponieważ nie wiedziałbym, jak stworzyć własną wersję końcowego „produktu”. Umieściłem PIC, SAM, AVR itp. Na niestandardowych płytkach drukowanych bez problemu, więc nie martwię się o to - moim głównym zmartwieniem jest programowanie FPGA bez płyty producenta.
Moje konkretne pytanie: czy funkcja FPGA, gdybym wziął plik bitmapy wygenerowany przez Quartus, Vivado, iCEcube itp., Zapisałby go w układzie pamięci flash SPI rozpoczynającym się pod adresem 0 (powiedzmy przez FT2232H) i podłączyłbym pamięć flash do styki SPI FPGA (z prawidłowo ustawioną konfiguracją MODE)?
Przepraszam za częściową hipotetyczność; Jestem całkiem pewien, że to wszystko, co robi programista diamentowy Lattice, ale zastanawiałem się, czy takie podejście zadziała w przypadku układów FPGA różnych producentów, czy też, powiedzmy, Quartus dodał do pamięci dodatkowe „wykończenie okna” lub nagłówki podczas pisania.
Daj mi znać, czy mogę coś zrobić, aby poprawić / wyjaśnić pytanie, lub jeśli brakuje mi istotnego punktu w procesie programowania FPGA. Dzięki!
źródło
Odpowiedzi:
Tak, działałoby dobrze.
W rzeczywistości narzędzia programistyczne dla większości układów FPGA pozwalają programować zewnętrzną pamięć flash bezpośrednio przez własne złącze JTAG FPGA, eliminując potrzebę oddzielnego interfejsu programowania dla pamięci flash.
źródło
Gdy mówisz „plik bitmapy [sic] [sic] wygenerowany przez”, odpowiedź brzmi tak, dopóki wybierzesz właściwy - popełniłeś niewielki błąd, używając określonego artykułu, ponieważ nie wygenerowano tylko jednego pliku .
Na przykład Quartus może tworzyć pliki SOF, POF i JIC. Ten ostatni służy do programowania pośredniego przez FPGA JTAG. Zapisywanie tego w pamięci flash SPI nie byłoby przydatne. SOF służy do ładowania JTAG, aby przejściowo uruchomić projekt w FPGA. POF jest tym, co musisz załadować do układu flash.
Zobacz FPGA: Bitstream vs. SRAM Object File, aby uzyskać wiele przydatnych informacji o tym, co oznaczają różne pliki od każdego z różnych dostawców.
źródło
Jeśli dobrze rozumiem twoje pytanie, chcesz zapisać konfigurację FPGA (np. Skompilowany model HDL) do SPI EEPROM lub SPI Flash i chcesz, aby FPGA programowała się sama z wykorzystaniem danych na SPI IC.
(Jeśli dobrze rozumiem odpowiedź Dave'a Tweeda, zrozumiał twoje pytanie w inny sposób.)
Co najmniej wiele urządzeń pamięci SPI Flash NIE działałoby, ponieważ układy pamięci SPI Flash wymagają wysłania określonego kształtu fali (np. Adresu do odczytania), aby dane zostały odczytane z układu scalonego.
Ten przebieg nie jest taki sam dla wszystkich urządzeń pamięci Flash. Nawet jeśli patrzymy tylko na karty pamięci SD (które mogą być również używane jako pamięć SPI Flash), widzimy dwa warianty wymagające innego kształtu fali, aby zostać przesłanym na kartę, zanim karta odczyta dane.
Po prawidłowym ustawieniu pinów trybu FPGA, FPGA wyśle przebieg, który instruuje jakieś urządzenie pamięci szeregowej, aby wysłało dane. Ponieważ jednak różne układy scalone wymagają różnych przebiegów, przebieg nie będzie zrozumiały dla wszystkich układów Flash, ale tylko dla niektórych typów.
Wiem, że Altera produkuje specjalne układy Flash lub EEPROM, które są kompatybilne z ich układami FPGA.
źródło
Jeśli chcesz zapisać strumień bitów FPGA we Flashu bez oficjalnych narzędzi programistycznych FPGA, najprawdopodobniej zechcesz przekonwertować ten plik strumienia bitów na otwarty format binarny, który możesz łatwo odczytać, np. Surowy plik binarny, Intel HEX lub Motorola SREC ( przykład ). Spowoduje to usunięcie wszelkich zastrzeżonych nagłówków, które może zawierać strumień bitów FPGA.
W ten sposób będziesz mógł zaprogramować lampę błyskową za pomocą narzędzi producenta lampy błyskowej (lub własnych narzędzi), a nawet zamówić układy flash wstępnie zaprogramowane za pomocą strumienia bitów FPGA.
źródło