Co się stanie, gdy układ FPGA zostanie włączony i pozostanie nieskonfigurowany?

10

Próbuję uzyskać ogólne zrozumienie tego, co się stanie, jeśli FPGA pozostanie niezaprogramowane na długi czas.

Załóżmy, że masz układ FPGA i pozostawiasz go niezaprogramowany przez długi czas (kilka minut do godzin po włączeniu zasilania), tj. Brak strumienia bitów, czy to źle wpływa na urządzenie? Czy zaleca się, aby przez cały czas mieć trochę strumienia na zasilanym układzie FPGA? Jaka jest ogólna opinia na ten temat?

Czy wyniki są różne dla różnych urządzeń lub producentów (Xilinx vs. Altera vs. inni)?


Dodatkowe informacje:

Mam niestandardową kartę SoC, która wykorzystuje układ FPGA Xilinx Virtex-6. Mam również Xilinx ML605, którego używam w celach informacyjnych.

Tablica niestandardowa: włączam tablicę. Zauważam, że mam krótki czas na zaprogramowanie go za pomocą XMD (Xilinx Microprocessor Debugger). Jeśli zgubię okno o długości 20–30 sekund, muszę wyłączyć i włączyć tablicę przed ponowną próbą. Nie dzieje się tak w przypadku ML605.

Kiedy próbuję zaprogramować niestandardową płytę za pomocą XMD, otrzymuję coś takiego:

Error: Device Reset by JPROGRAM command, failed. INIT_COMPLETE did not go high.

Powiedz mi co myślisz.

trumna
źródło
1
W swoim pytaniu i edycji podkreślasz „długi okres czasu”. Czy to naprawdę ważne, czy to kilka sekund, czy kilka godzin? Nie sądzę, żeby tak było ...
m.Alin
Widzę zjawisko na niestandardowej płycie FPGA, gdzie pojawia się okno programowania 20-30 sekund. Jeśli nie programuję w tym oknie, nie mogę programować z powodzeniem. Głównym tematem mojego pytania nie jest czas trwania, ale zrozumienie tego zjawiska.
boffin
Czy w ogóle możesz się połączyć z urządzeniem? A może po prostu się nie udaje, gdy próbujesz programować? Jaki błąd popełnia programista?
embedded.kyle
1
Czy programujesz FPGA bezpośrednio przez JTAG, czy najpierw ładujesz układ Flash, a potem pozwalasz FPGA na konfigurację?
ajs410
@fpga_boffin, czy mógłbyś dodać te szczegóły do ​​swojego pytania?
Jon L

Odpowiedzi:

7

To interesujące pytanie. Z własnego doświadczenia pozostawiłem zasilane przez kilka godzin układy FPGA w stanie niezaprogramowanym, jednocześnie sprawdzając resztę obwodów, gdy nowa płyta pojawi się w domu montażowym. Nie zauważyłem przy tym żadnych szkodliwych skutków. Ale szczerze mówiąc, nigdy o tym nie myślałem.

Rozejrzałem się, aby znaleźć zalecenie producenta FPGA, ale nie mogłem go znaleźć. Jedyne stwierdzenie, które znalazłem na temat tego stanu, pochodzi z białej księgi kratowej i dotyczy samego układu FPGA, a nie sposobu, w jaki powinien być używany:

Wstępnie zaprogramowane statyczne zużycie energii przez urządzenie spoczynkowe to ilość energii zużywanej przez układ FPGA przed zaprogramowaniem urządzenia. Dla poboru mocy urządzenia spoczynkowego układ FPGA jest w stanie nie zaprogramowanym, ale został zasilony. Ważne jest, aby urządzenie nie zużywało znacznej mocy w tym czasie, ponieważ koncepcyjnie urządzenie FPGA może pobierać nadmierną moc i potencjalnie wyłączać zasilacze, uniemożliwiając płytce pomyślne zainicjowanie się i systemu.
Dostawca FPGA musi zatem starannie zaprojektować tranzystory, które mają niską statyczność 3 Projektowanie pod kątem małej mocy Białej księgi półprzewodnika kratowego, bez kompromisów w obszarach, w których wymagana jest wyższa wydajność (np. I / O i SERDES)

Xilinx również wspomina, jaki jest prąd spoczynkowy, abyś mógł odpowiednio zaprojektować swój zasilacz. Ale nie wspomina o tym, jaki wpływ na urządzenie ma pozostawienie go w takim stanie:

Moc statyczna lub spoczynkowa jest zdominowana głównie przez prąd upływowy tranzystora. Gdy ten prąd jest wymieniony w arkuszach danych, jest wymieniony jako ICCINTQ i jest to prąd pobierany przez zasilacz VCCINT zasilający rdzeń FPGA.

Byłbym bardzo zainteresowany, aby usłyszeć, czy ktoś doświadczył uszkodzenia urządzenia w wyniku pozostawienia go w stanie spoczynku. Myślę jednak, że dopóki zasilacz jest odpowiednio dopasowany do urządzenia, nie powinno być problemu.

embedded.kyle
źródło
6

Mam odwołanie do Spartan 3 arkusz , ponieważ jest to FPGA Jestem najbardziej znane.

Jeśli spojrzysz na rozdział 2 (Opis działania), sekcja „Konfiguracja” zawiera kilka schematów przepływu. Rysunek 27 (strona 50) pokazuje schemat blokowy ładowania z Flasha. Rysunek 28 pokazuje schemat blokowy JTAG.

Oto krótkie podsumowanie.

1) Poczekaj, aż Vccint, Vccaux i Vcco osiągną wymagany poziom.

2) Wyczyść zatrzaski konfiguracji

3) Poczekaj, aż INIT_B osiągnie wartość wysoką. INIT_B to wyjście typu open-drain, które zewnętrzny master może utrzymywać na niskim poziomie w celu opóźnienia konfiguracji.

4) Piny w trybie próbkowania. Od tego zależy, czy będziesz ładować przez JTAG czy Flash, i czy Flash, czy FPGA czy Flash jest Master.

5) Załaduj ramki danych konfiguracji.

6) Sprawdź, czy CRC dla ramek danych jest poprawny. Jeśli NIE jest poprawny, układ FPGA doprowadzi INIT_B do stanu niskiego, aby wskazać błąd CRC i przerwie uruchamianie.

Krok 5 jest prawdopodobnie tam, gdzie jest twoje prawdziwe pytanie - co się stanie, jeśli nie będzie nic do załadowania? Cóż, nie powinieneś przejść do kroku 5, jeśli postępujesz właściwie. Układ Flash utrzyma INIT_B na niskim poziomie, dopóki nie będzie gotowy do podania danych do FPGA. Jeśli używasz JTAG, nie jestem pewien, czy twój programista JTAG utrzyma INIT_B na niskim poziomie, ale kiedy przejdzie do programowania FPGA, prawie na pewno zapewni PROG_B (poprzez obniżenie go), co spowoduje powrót FPGA do kroku 2.

Gdybym był tobą, zasięgałbym sygnału INIT_B podczas włączania, aby zobaczyć, co się dzieje. Jeśli zaczyna się na niskim poziomie, idzie na wysokim poziomie, a następnie ponownie spada na niskim poziomie, FPGA przerwał sekwencję uruchamiania i prawdopodobnie będziesz musiał potwierdzić PROG_B, aby zresetować FPGA.

ajs410
źródło
Twoja odpowiedź nie mówi nic o wewnętrznym stanie FPGA przed krokiem 5, o czym OP chce wiedzieć.
stevenvh
Krok 2. Wyczyść zatrzaski konfiguracji. Krok 3, czekam na INIT_B. Omawiam również, jaką decyzję może podjąć FPGA, ilekroć stwierdzi, że nie ma danych konfiguracyjnych do załadowania (INIT_B obniża się, aby wskazać błąd CRC).
ajs410
1
Przepraszam, arkusz danych, do którego się odnosiłem, był około 2005 r. I został zaktualizowany w 2009 r. Jednak gdyby dokładnie przeczytał mój komentarz, byłby w stanie go znaleźć. Rozdział 2, Opis działania, pod nagłówkiem Konfiguracja. Link został zaktualizowany, aby wskazywał najnowszy arkusz danych, a także nowe numery stron.
ajs410
0

Domyślna konfiguracja została zaprojektowana tak, aby była jak najbardziej pasywna, aby urządzenie było uniwersalnie użyteczne.

Dla serii Altera Cyclone (z którą mam największe doświadczenie) oznacza to

  • styki we / wy są słabo podciągnięte do VCCIO (aby utrzymać układy scalone z aktywnymi niskimi układami aktywacji linii poza magistralą),
  • wyjście CONF_DONE jest nisko wyciągnięte (możesz podłączyć to do styku resetowania innych układów scalonych, aby utrzymywać je w stanie resetowania do momentu załadowania konfiguracji, a także przywrócić je do znanego stanu podczas ponownej konfiguracji), i
  • wejścia zegara nie są przekazywane do sieci zegara.

Inne typy FPGA powinny być w podobny sposób spoczynkowe i zapewniać nieodwrócone i odwrócone wyjścia wskazujące status konfiguracji dla reszty płyty.

Pozostawienie urządzenia w tym stanie jest nieszkodliwe, ponieważ rdzeń jest dość odizolowany od świata zewnętrznego, a tylko podciągnięcia mogą mieć na nich niewielki prąd.

Simon Richter
źródło