Kiedy lepiej używać zatrzasków niż klapki w FPGA, która obsługuje oba?

20

Pytanie:

Kiedy lepiej używać zatrzasków niż klapki w FPGA, która obsługuje oba?

Tło:

Jest dobrze znaną zasadą, że w układach FPGA należy unikać przezroczystych zatrzasków czułych na poziom, a klapek wrażliwych na krawędź należy używać wyłącznie. Większość architektur FPGA natywnie obsługuje zarówno zatrzaski, jak i klapki.

Ogólna rada - nawet od dostawców FPGA - polega na uważaniu na zatrzaski, lub nigdy nie używaj zatrzasków itp. Istnieją bardzo dobre powody dla tych porad, których szczegóły są dobrze znane. Jednak większość porad brzmi: „nie używaj zatrzasków, chyba że wiesz, że ich potrzebujesz”.

Jestem doświadczony projektant FPGA, a na przestrzeni lat za każdym razem myślałem, że ja wiedziałem , że muszę zatrzask, o szybko zdali sobie sprawę, że istnieje lepszy sposób to zrobić z flip-flop. Jestem zainteresowany słyszeniem przykładów, kiedy użycie zatrzasków jest jednoznacznie lepsze.

Ważna uwaga:

Zatrzaski kontra klapki często doprowadzają ludzi do szału. Interesuje mnie tylko odpowiedź na pytanie. Odpowiedzi wyjaśniające różnicę między zatrzaskami i klapkami, wyjaśniające powody ich używania NIE używają zatrzasków, wyszczególniające, dlaczego klapki są lepsze niż zatrzaski, mówiące o tym, w jaki sposób zatrzaski są lepsze w obiektach innych niż FPGA itp., Byłyby całkowicie nie na temat.

wjl
źródło
Kiedy używasz układu FPGA, aby dokładnie naśladować istniejący obwód, który używa zatrzasków?
Majenko,

Odpowiedzi:

11

Twoje pytanie brzmi: „kiedy wiesz, że potrzebujesz zatrzasków?” Co, jak sugerujesz, jest subiektywnym pytaniem. Oczekuj więcej opinii niż faktów jako odpowiedzi. Biorąc to pod uwagę, oto moja opinia:

Ja, podobnie jak ty, często znajduję lepsze sposoby używania klapek, dzięki czemu unikam zatrzasków. Wynikowa logika jest często bardziej elegancka i solidna. Ale są chwile, kiedy nie mam wystarczającej kontroli nad logiką, aby uniknąć zatrzasków. Na przykład mógłbym współpracować z magistralą procesora, która wymaga zatrzasków w celu spełnienia wymaganych specyfikacji. Ponieważ nie mogę przeprojektować procesora ani magistrali, utknąłem na zatrzasku.

W ciągu ostatnich 13 lat to był jedyny raz, kiedy potrzebowałem zatrzasków.

Shubham Mittal
źródło
2
Dziękuję za odpowiedź. W myślach składam twoją odpowiedź pod „obowiązkową kompatybilnością wsteczną”, co wydaje się całkowicie uzasadnione. =)
wjl
8

Klapki są często lepsze niż zatrzaski, ponieważ mają tylko cztery warunki / ograniczenia wyścigu:

  1. ustawić czas między zmianą wprowadzania danych a następną aktywną krawędzią zegara, oraz
  2. utrzymywać czas między zboczem zegara a następną zmianą wprowadzanych danych;
  3. minimalny czas trwania aktywnego impulsu zegarowego;
  4. minimalny czas trwania nieaktywnego impulsu zegarowego.

Jeśli te ograniczenia zostaną spełnione, wyjście flip-flopa będzie całkowicie „czyste” i wolne od wygranych. Ponadto, taktowanie flip-flopa jest w pewnym sensie „cyfrowe”: pod warunkiem spełnienia ograniczeń taktowania, wyjście zmieni się tylko w przewidywalnym oknie po aktywnym zboczu zegara, niezależnie od taktowania wejściowego. Efekt kaskadowych klapek jest zatem przewidywalny, niezależnie od głębokości. Natomiast czas wyjściowy zatrzasku jest znacznie bardziej „analogowy”. Opóźnienie sygnału wchodzącego w zatrzask może powodować opóźnienie w wychodzącym sygnale. Nawet jeśli spełnione są własne ograniczenia zatrzasku, opóźnienie to może powodować problemy w dalszym ciągu.

Polecam stosowanie zatrzasków w przypadkach, w których wymagane zachowanie wyjść układu może być najbardziej uzasadnione przez jeden. Na przykład sprzęt powinien zachowywać się jak konwerter szeregowo-równoległy, w którym między wznoszącymi się i opadającymi krawędziami pierwszego zegara po synchronizacji ramek pierwsze wyjście śledzi wejście; między wznoszącymi się i opadającymi krawędziami drugiego zegara, drugie wyjście śledzi dane wejściowe itp. Można zaprojektować obwód za pomocą klapek i logiki czysto kombinatorycznej, która dałaby takie zachowanie, pod warunkiem spełnienia ograniczeń czasowych, ale taki obwód byłby bardziej skomplikowane niż użycie zatrzasków i byłoby bardziej podatne na dziwne zachowanie, gdyby nie zostały spełnione ograniczenia czasowe.

supercat
źródło
3
„Odpowiedzi wyjaśniające różnicę między zatrzaskami i klapkami, wyjaśniające powody ich używania NIE używają zatrzasków, szczegółowo wyjaśniające, dlaczego klapki są lepsze niż zatrzaski, mówiące o tym, jak lepsze zatrzaski są lepsze w obiektach innych niż FPGA itp., Byłyby całkowicie nie na temat . ”
Majenko,
@ superuper Cóż, przynajmniej druga część twojej odpowiedzi zawiera odpowiednią odpowiedź na pytanie. =) Dziękuję
wjl
1
@Majenko: Być może powinienem powiedzieć „łatwiejszy w użyciu” niż „preferowany”; nie miałem na myśli argumentowania, że ​​należy unikać zatrzasków, gdy tylko jest to możliwe, ale raczej sugerowania, że ​​ktoś korzystający z zatrzasków musi być świadomy złożoności.
supercat,
@ superupat, czy możesz wyjaśnić swój przykład krótką falą?
Philippe,
1

W mojej pracy czasami musiałem implementować zatrzaski w FPGA, ale zawsze było to rozwiązanie „ostateczne”. Typowe zastosowania obejmowały połączenia z interfejsami asynchronicznymi lub magistralami, jeśli nie mogłem zapewnić zegara z prędkością wystarczającą do zapewnienia właściwego próbkowania i synchronizacji magistrali i sygnałów sterujących.

Głównym problemem jest to, że zatrzask jest blokiem asynchronicznym. Dlatego musisz upewnić się, że funkcje kombinacyjne, które generują sygnały wejściowe dla zatrzasku, są wolne od wyścigu . W przeciwnym razie mogą generować usterki , które mogą zostać zatrzaśnięte, powodując zagrożenia w systemie.

Aby uniknąć wyścigów, musisz zaimplementować te kombinacyjne funkcje w specjalny sposób. Niestety (w tym konkretnym przypadku ;-), w przeciwnym razie jest to bardzo dobra właściwość) narzędzia do syntezy FPGA optymalizują twój projekt, usuwając wszelką redundancję. Dlatego jeśli chcesz wdrożyć zatrzask w FPGA, musisz wdrożyć go „ręcznie” i zabezpieczyć przed optymalizacją (np. W VHDL może być konieczne ustawienie atrybutu „zachowaj” na „prawda” dla sygnałów używanych wewnętrznie w zatrzasku) .

wzab
źródło
-1 OP specjalnie zapytał o to, kiedy należy używać zatrzasków, a konkretnie poprosił czytelników, aby nie podawali więcej powodów, dla których zatrzaski nie powinny być używane.
Joe Hass
-1

Pod względem czasu:

Jeśli w projekcie używamy klapek, wydajność zależy od najdłuższych opóźnień ścieżki kombinacyjnej.

jeśli użyjemy zatrzasków zamiast klapek, możemy zrekompensować najdłuższe opóźnienia ścieżki kombinacji, pożyczając czas od krótszych opóźnień ścieżki w kolejnych etapach. Dzięki temu możemy zmniejszyć opóźnienia i zwiększyć wydajność projektu.

użytkownik43102
źródło
3
-1. Lepiej przeanalizować go poprawnie z ograniczeniem multicyklicznym i pozwolić, aby część „asynchroniczna” działała przez dwa cykle. Patrz np. Strona 7-30 altera.co.uk/literature/hb/qts/qts_qii53018.pdf
shuckc