Wprowadzenie do przechodzenia przez domenę zegara: Podwójne Flopping
w tym artykule omówiono dobrze znaną technikę zwaną “podwójnym flopingiem” w celu przesyłania jednobitowego sygnału sterującego między dwiema domenami zegara.
często stosuje się kilka sygnałów zegara w systemie cyfrowym. Ponieważ sygnały zegarowe różnych domen zegarów są ogólnie niezależne, przesyłanie danych między różnymi domenami zegarów może być trudnym zadaniem. W tym artykule omówimy dobrze znaną technikę zwaną “podwójnym floppingiem” w celu przesyłania jednobitowego sygnału sterującego między dwiema domenami zegara.
Dlaczego Potrzebujemy Wielu Zegarów?
ogólna metodologia projektowania cyfrowego zaleca stosowanie jednego sygnału zegara dla całego systemu głównie dlatego, że upraszcza zarówno procedurę projektowania, jak i analizę czasu systemu. Jednak ta metodologia nie zawsze daje najbardziej wydajne rozwiązanie i czasami nie jest nawet możliwe posiadanie jednego zegara dla całego systemu. Weźmy na przykład projekt FPGA pracujący z częstotliwością 20 MHz, który komunikuje się z dwoma zewnętrznymi urządzeniami za pomocą interfejsów pracujących z częstotliwością 100 MHz i 150 MHz. Tutaj mamy do czynienia z trzema różnymi częstotliwościami zegara. Zauważ, że częstotliwość zegara interfejsów może być predefiniowana i możemy nie być w stanie wybrać jej na podstawie zegara wykorzystywanego wewnątrz FPGA.
czasami możemy być w stanie wybrać częstotliwość taktowania dla różnych części systemu, ale nawet w tym przypadku obsługa całego systemu przy danej częstotliwości taktowania może nie być dobrym pomysłem. Załóżmy na przykład, że cały system może pracować z częstotliwością 20 MHz, z wyjątkiem podsystemu, który potrzebuje zegara 100 MHz. Jeśli zdecydujemy się na użycie jednego sygnału zegara dla całego systemu, wtedy musielibyśmy obsługiwać system z częstotliwością 100 MHz, aby dostosować się do najwyższej częstotliwości zegara dostępnej w systemie. Oczywiście nie jest to rozsądne, ponieważ nie tylko przeprojektowaliśmy dużą część systemu (części, które mogłyby pracować z częstotliwością 20 MHz), ale także niepotrzebnie zwiększyliśmy dynamiczne zużycie energii w systemie. Jak widać, istnieje wiele okoliczności, w których musimy zastosować różne częstotliwości zegara dla różnych części systemu.
część konstrukcji, w której wszystkie elementy synchroniczne, takie jak klapki i barany, używają tego samego sygnału zegara, jest określana jako domena zegara. Posiadanie różnych domen zegara może być korzystne, ale nie jest tak proste, jak się wydaje. Następna sekcja omawia niektóre problemy, z którymi możemy się zmierzyć podczas korzystania z systemu wielogodzinnego.
Problem Metastabilności
Załóżmy, że mamy dwie sekcje logiki, A i B, które działają odpowiednio na częstotliwości 50 MHz i 100 MHz. Jest to pokazane na rysunku 1.
Rysunek 1
w naszym prostym przykładzie sekcja B ma wejście En_In, które jest połączone z wyjściem En_Out sekcji A. Połączenie to odpowiada sygnałowi Active-high enable, który inicjuje algorytm w B po wykonaniu określonej operacji przez A. Rysunek 1 pokazuje rejestr generujący sygnał enable w a i rejestr odbierający go w B.
Załóżmy, że przebiegi zegara są takie, jak pokazano na rysunku 2, a system jest wyzwalany krawędziowo. Ponieważ sygnał En_Out jest generowany przez domenę zegara a, jego przejście od niskiego do wysokiego może nastąpić po rosnącej krawędzi clk1, jak pokazano na rysunku. Opóźnienie pomiędzy rosnącą krawędzią clk1 a przejściem En_Out odpowiada opóźnieniu clock-to-Q ($$t_{clk-to-Q, DFF1}$$) flip-flopa w sekcji logiki A. Teraz spodziewamy się, że rejestr DFF2 w domenie B spróbuje sygnału enable na następnej rosnącej krawędzi clk2 w $$t=t_2$$. Próbkowanie zostanie pomyślnie wykonane pod warunkiem spełnienia wymagań czasowych dff2, tj. $$t_1+t_{clk-to-Q,\; DFF1} \leq t_2-T_{setup,\; DFF2}$$.
Rysunek 2
na rysunku 2 warunek $$t_1+t_{clk-to-Q,\; DFF1} \leq t_2-T_{setup,\; DFF2}$$ jest spełniony, ale nie zawsze tak jest. Należy pamiętać, że sygnały zegara różnych domen zegara są niezależne w ogóle. Nie znamy ich zależności fazowej, a przebiegi mogą być jak pokazano na rysunku 3. W tym przypadku przejście od niskiego do wysokiego sygnału enable jest tak blisko rosnącej krawędzi clk2, że warunek $$t_1+t_{clk-to-Q,\; DFF1} \leq t_2-t_{setup,\; DFF2}$$ nie jest spełniony.
Rysunek 3
ponieważ dane wejściowe DFF2 uległy zmianie w czasie konfiguracji, zachowanie rejestru będzie nieprzewidywalne. Ze względu na naruszenie czasu konfiguracji, napięcie wyjściowe rejestru może być wartością reprezentującą logikę wysoką, logikę niską lub jeszcze gorzej wartość między logiką wysoką i logiką niską napięciami. Te trzy przypadki są możliwe, podczas gdy dane wejściowe były w rzeczywistości logicznie wysokie na odpowiedniej krawędzi zegara. Podobnie, wartość wyjściowa rejestru będzie nieprzewidywalna, gdy czas zatrzymania rejestru zostanie naruszony, tzn. en_out zmieni się w oknie czasowym po aktywnej krawędzi zegara zdefiniowanej przez czas zatrzymania rejestru. Gdy wyjście rejestru zostaje zawieszone przy napięciu pomiędzy logicznym wysokim i logicznym niskim napięciem, mówimy, że klapka weszła w stan metastabilny.
zbadajmy trzy możliwe przypadki naruszenia czasu na rysunku 3 indywidualnie:
- w pierwszym przypadku Załóżmy, że wartość wyjściowa dff2 idzie do poziomu logicznego z rosnącą krawędzią clk2 w $$t=t_2$$. W tym przypadku nie ma błędu, a flip-flop zawiera poprawne dane, chociaż mieliśmy naruszenie czasu konfiguracji. Przejścia danych zgodnie z oczekiwaniami bez błędów.
- drugi przypadek: Załóżmy, że wyjście DFF2 idzie do poziomu logicznego low z rosnącą krawędzią clk2 przy $$t=t_2$$. W takim przypadku sygnał enable nie jest pomyślnie próbkowany w domenie zegara B. Jednak nie będzie to problemem, ponieważ En_Out pochodzi z domeny zegara a i będzie wysoki przez co najmniej jeden okres clk1, jak pokazano na rysunku 3. W związku z tym Następna rosnąca krawędź clk2 Przy $$t=t_3$$ spróbuje wartości En_Out poprawnie. Dla tej krawędzi zegara wymagania czasowe dff2 będą spełnione, ponieważ En_Out nie zmienił się przez więcej niż jeden okres clk2. W tym przypadku próbkujemy En_Out o jeden okres zegarowy później niż faktycznie przeszedł. Nie jest to jednak problemem, ponieważ Zegary dwóch domen zegarów były niezależne i nie przypuszczaliśmy, że czas nadejścia sygnału En_Out będzie dłuższy. W rzeczywistości obwód w domenie zegara B realizuje koniec obliczeń domeny zegara a z dodatkowym opóźnieniem o jeden okres clk2.
- następnie Załóżmy, że rejestr DFF2 wchodzi w stan metastabilny. W tym przypadku wyjście rejestru zostaje zawieszone pod napięciem pomiędzy logiką wysokiego i logicznego niskiego napięcia, ale będzie to tymczasowe. Flip-flop ostatecznie wyjdzie ze stanu metastabilnego i przejdzie do logic high lub logic low. Czas potrzebny do wyjścia ze stanu metastabilnego jest znany jako czas rozdzielczości $$T_r$$. Jest to pokazane na rysunku 4. Na tym rysunku nastąpiło naruszenie czasu konfiguracji i klapka weszła w stan metastabilny na przedział czasu $$T_r$$. Po $$T_r$$, wyjście flip flop przejdzie do logiki high ($$Q2_{meta-to-1}$$) lub logiki low ($$Q2_{meta-to-0}$$).
Rysunek 4
czas rozdzielczości nie jest deterministyczny i jest opisany jako funkcja rozkładu prawdopodobieństwa
$ $ p (T_r)=e^{\frac{-T_r}{\tau}}$$
gdzie $$\tau$ $ jest “stałą czasu rozpadu” i jest określona przez charakterystykę elektryczną klapki. Typowa wartość tego parametru będzie wynosić ułamek jednej nanosekundy.
powyższe równanie daje prawdopodobieństwo pozostania w stanie metastabilnym przez przedział czasu równy $$T_r$$ po krawędzi zegara próbkowania. Ze względu na wykładniczą charakterystykę równania, prawdopodobieństwo szybko spadnie, gdy zwiększymy wartość $$T_r$$. Na przykład dla $ $ \tau =0.5$ $ ns i $ $ T_r = 5$ $ ns, otrzymujemy prawdopodobieństwo $ $ \ approximately 4.5 \ razy 10^{-5}$$.
podsumowując, nie możemy zapobiec wystąpieniu przerzutności, ponieważ sygnały zegara dwóch domen zegara są niezależne od siebie. Jeśli jednak zapewnimy flip-flopowi wystarczająco duży czas rozdzielczości, z dużym prawdopodobieństwem dojdzie do stabilnego stanu. Dlatego, jeśli nasz projekt zawiera klapki, które mogą wejść w stan metastabilności, powinniśmy dać klapce wystarczająco dużo czasu, aby wyjść z metastabilności. Następnie możemy bezpiecznie propagować wartość flip-flop do dalszych komórek logicznych. Zauważ, że użycie wartości metastabilnej może doprowadzić cały system do nieznanego stanu. Może to prowadzić do wysokiego przepływu prądu, a nawet wypalenia Chipa w najgorszym przypadku. Dlatego powinniśmy unikać podawania niestabilnych danych do systemu.
Podwójne Flopowanie
zauważyliśmy, że wystarczająco długi czas wykonania klapki może znacznie zmniejszyć ryzyko pozostania w stanie metastabilnym. Zobaczmy, jak można to wykorzystać, aby uniknąć propagacji metastabilnych danych w systemie. Rozważ SCHEMAT BLOKOWY na fig. 5. Pokazuje to typową ścieżkę w domenie zegara B na rysunku 1, która odbiera i przetwarza sygnał En_In.
Rysunek 5
minimalny okres zegara, który może być użyty do obsługi tego obwodu, będzie wynosił
$$t_{clk,\; min} = t_{clk-to-Q} + T_{comb, \; max} + t_{setup}$$
gdzie $$t_{clk-to-Q}$$ i $$T_{setup}$ $ są zegarem do-Q i czasem konfiguracji klapek, a $$T_{comb, \; max}$$ jest maksymalnym opóźnieniem, które układ kombinacyjny, ” Comb.”, eksponaty. Równanie to otrzymuje się przy założeniu, że dane wyjściowe DFF2 są stabilne. Jeśli tak nie jest, musimy wziąć pod uwagę pewien czas rozdzielczości, jak w następującym równaniu:
$$t_{clk,\; min} = t_{clk-to-Q} + T_r + T_{comb, \; max} + t_{setup}$$
wartość czasu rozdzielczości określi prawdopodobieństwo wyjścia ze stanu metastabilnego. Załóżmy, że okres clk2 wynosi $$T_{clk2}$$. Następnie wartość dostępnego czasu rozdzielczości będzie wynosić
$$t_r = t_{clk2} – \big (T_{clk-to-Q} + T_{comb, \; max} + T_{setup} \ big )$$
aby zmniejszyć prawdopodobieństwo pozostania w stanie metastabilnym, powinniśmy zwiększyć $$T_r$$. Przy danym okresie zegara $$T_{clk2}$$, jedyną opcją projektowania będzie minimalizacja parametru $$t_{comb,\; max}$$. Dlatego lepiej umieścić ” grzebień.”blok po klapce DFF3, jak pokazano na rysunku 6. W ten sposób $$T_{comb, \; max}$$ będzie teoretycznie zerowe dla ścieżki między DFF2 i DFF3. W związku z tym, będziemy mieć maksymalny możliwy czas rozdzielczości.
Rysunek 6
technika ta nazywa się podwójnym floppingiem i jest szeroko stosowana podczas przesyłania sygnałów sterujących, takich jak powyższy sygnał włącz między dwiema domenami zegara. Należy pamiętać,że rejestr dodatkowy wprowadzi kolejne opóźnienie o jeden okres zegara do Sygnału włącz przechwytywanego przez domenę zegara B. Jednak opóźnienie to jest warte korzyści z unikania Stanów metastabilnych w systemie.
w tym artykule omówiono przekazywanie sygnału włącz z domeny wolnego zegara do domeny szybkiego zegara. Może być konieczne zapoznanie się z kilkoma innymi technikami, takimi jak przekazywanie sygnału sterującego z domeny szybkiego do wolnego zegara, technika drżenia ręki i transfer danych oparty na FIFO między domenami zegara. Szczegółowe informacje można znaleźć w rozdziale 16 projektu RTL Hardware Design Using VHDL: Coding for Efficiency, Portability, and Scalability oraz rozdziale 6 Advanced FPGA Design: Architektura, implementacja i optymalizacja.
podsumowanie
- istnieje wiele okoliczności, w których musimy zastosować różne częstotliwości zegara dla różnych części systemu.
- ponieważ sygnały zegara różnych domen zegarów są ogólnie niezależne, przesyłanie danych między różnymi domenami zegarów może być trudnym zadaniem.
- wartość wyjściowa rejestru będzie nieprzewidywalna, gdy wystąpi naruszenie czasu konfiguracji lub czasu wstrzymania. Może posiadać wartość reprezentującą logikę wysoką, logikę niską, lub jeszcze gorzej wartość między logiką wysoką i logiką niską napięciami.
- czas potrzebny do wyjścia ze stanu metastabilnego jest znany jako czas rozdzielczości $$T_r$$.
- jeśli nasz projekt zawiera klapki, które mogą wejść w stan metastabilności, powinniśmy dać klapce wystarczająco dużo czasu, aby wyjść z metastabilności.
- technika” podwójnego flopowania ” jest szeroko stosowana do przesyłania jednobitowych sygnałów sterujących między dwiema domenami zegara.
aby zobaczyć pełną listę moich artykułów, odwiedź tę stronę.