FPGA - programowanie DIY

9

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!

Blake Lucas
źródło
Przez „bitmapę” masz na myśli strumień bitów?
Eugene Sh.
To pytanie zostało zadane wcześniej w innym wcieleniu
skok napięcia
1
Przy pierwszym projekcie płytki FPGA sugeruję udostępnienie 2 metod programowania urządzeń (plus nagłówek JTAG dostawcy). Umieść lokalizacje zworek, aby umożliwić zmianę pinów MODE w razie potrzeby. Bardzo łatwo je zepsuć i dobrze jest mieć plany tworzenia kopii zapasowych. Upewnij się także, czy podano punkty testowe dla INIT i DONE (lub cokolwiek, co Krata używa do wskazania stanu programowania).
Photon
2
Kontrola procesu wymagana do montażu BGA, szczególnie tych o wysokiej liczbie pinów, jest bardziej rygorystyczna niż coś takiego jak QFP. Fakt, że jest więcej piłek oznacza, że ​​istnieje większe prawdopodobieństwo mostkowania lub złych połączeń, a ponieważ są one ukryte, nie będziesz w stanie wykryć problemów (chyba że masz zdjęcie rentgenowskie) przed uruchomieniem rzeczy, aby sprawdzić, czy masz wszelkie problemy. A jeśli ponownie zamontujesz komponent, musisz przerzucić go, co wymaga większego wyposażenia. FPGA to także drogie układy, których nie chcesz uszkodzić. Duże BGA to miejsca, w których niezbędne są podgrzewacze płytek drukowanych.
DKNguyen
1
Pracowałem w miejscu, w którym technicy przez cały dzień robili tylko przeróbki, a oni mieli stacje na gorące powietrze (ściślejsza kontrola temperatury i bardziej niezawodny niż opalarka) i nie byli w stanie niezawodnie wlutować BGA. Nie sądzę, żeby mieli podgrzewacz, więc jeśli masz zamiar go wypróbować, weź podgrzewacz i użyj taniego chipa (może nawet pakietu BGA manekina ze stokrotką, abyś mógł sprawdzić połączenia elektryczne, dopóki go nie przybędziesz przed wykonaniem prawdziwa rzecz).
DKNguyen

Odpowiedzi:

12

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.

Dave Tweed
źródło
1
Niektóre z nich, takie jak Lattice Mach X02, mają wbudowaną pamięć flash, więc wystarczy kilka rezystorów i nagłówek 5x2, aby połączyć się z modułem programowania krat.
Spehro Pefhany
Wiedziałem, że możesz zaprogramować flash bezpośrednio za pomocą JTAG z narzędzi takich jak Vivado / Quartus. Miałem nadzieję, że będę mógł to zrobić bez konieczności zakupu kabla specyficznego dla producenta - po prostu użyj FT2232H i napisz strumień bitów (nie bitmapa?) siebie. Nie sądzę, że ten układ jest obsługiwany przez Quartus i nie jest otwarty obsługiwany przez Vivado (nawet jeśli używają go na płytach Nexys i Basys).
Blake Lucas,
1
Tak, możesz zaprogramować flash z plikiem bitowym przy użyciu innych środków. Prawdopodobnie może to zrobić jeden z programistów dla MCU. Wiem, że mój Segger J-link z pewnością może.
DKNguyen
@Toor: Rzeczywiście, nie jest to kabel specyficzny dla dostawcy, ale nadal ma wbudowaną obsługę w narzędziach dostawcy, a Segger jest nieco droższy niż FT2232H.
Ben Voigt,
2
Prawie wszyscy główni dostawcy dostarczają dokumentację inżynieryjną, aby pozwolić określonym strumieniom przesyłania do swoich części (zarówno FPGA, jak i niestandardowych flashów konfiguracyjnych) za pomocą niestandardowych narzędzi, ponieważ czasami jest to pożądane w zintegrowanych systemach lub platformach testowych. Korzystanie ze sprzętu obsługiwanego przez dostawcę (szczególnie na początku) może być najprostsze, ale przez lata kilka razy wdrażałem zamienniki dla konkretnych projektów. Trudniejszą częścią oryginalnego projektu karty FPGA może być całe wsparcie, którego potrzebuje karta FPGA - wiele par mocy do pokonania i ominięcia, często dla kilku różnych napięć.
Chris Stratton,
3

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.

Ben Voigt
źródło
1

Czy funkcja FPGA działałaby, gdybym ... podłączyła pamięć flash do styków SPI FPGA (przy prawidłowo skonfigurowanej konfiguracji MODE)?

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.

Martin Rosenau
źródło
Oczywiście karta SD nie będzie działać, ponieważ żadna FPGA (o ile mi wiadomo) nie obsługuje SD / MMC jako protokołu konfiguracji. Większość układów FPGA jest zgodnych z AT24 / AT26 / AT45.
Dmitrij Grigoriew
1

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.

Dmitrij Grigoriew
źródło