Co to znaczy „brama zegara”?

11

W notatkach z wykładów wciąż czytam „nie zamykaj zegara”. Próbowałem wyszukać w Internecie, ale nie jestem w stanie znaleźć dokładnego znaczenia tego wyrażenia.

użytkownik129048
źródło
3
@ user129048 istnieją inne pytania dotyczące tego tematu na tej stronie. Krótko mówiąc, jeśli zablokujesz zegar, opóźnienie będzie złe. Większość układów FPGA ma dedykowane linie zegarowe, a bramkowanie zegara nie wykorzystuje tych linii.
Skok napięcia
1
Tak jak używasz bramy, aby wpuścić i wyprowadzić psa / konia / itp., Mogą przejść, jeśli brama jest otwarta. Zegar i reset są tylko sygnałami przekazywanymi do modułu logicznego, podobnie jak inne sygnały. Możesz zezwolić lub zablokować kontynuowanie tego zegara, nie pozwalając mu przejść. Zapobieganie logice po drugiej stronie, aby ten sygnał był wejściowy.
old_timer

Odpowiedzi:

19

„Bramka zegara” oznacza postawienie bramki logicznej w linii zegara, aby ją włączyć lub wyłączyć.

schematyczny

zasymuluj ten obwód - Schemat utworzony przy użyciu CircuitLab

Powyższe diagramy pokazują oraz AND i OR używane do bramkowania zegara. Jeden zmusza zegar do niskiego, a drugi do wysokiego.

Aby zapobiec impulsom zegarowym, które są „zbyt krótkie”, zarówno wysokie, jak i niskie („impulsy rozruchowe”), musimy upewnić się, że:

  • Sygnał sterujący dla bramki AND powinien się zmieniać tylko wtedy, gdy zegar jest ustawiony niskim .
  • Sygnał sterujący dla bramki OR powinien się zmieniać tylko przy wysokim zegarze .

Bramkowane zegary są bardzo przydatne do zmniejszania mocy w CMOS, ponieważ logika pozostaje „cicha”, gdy zegar jest zatrzymany. Przekonasz się, że nowoczesne narzędzia do syntezy mają specjalną opcję automatycznego wstawiania bramkowania zegarowego.

schematyczny

zasymuluj ten obwód

Powyżej znajdują się dwa obwody, które bezpiecznie generują bramkowany zegar. Obwody opierają się na tym, że występuje niewielkie opóźnienie (od zegara do Q), aby sygnał sterujący wyszedł z rejestru. Zatem sygnał sterujący zmienia się na bramce, gdy zegar ma znaną polaryzację.

Oldfart
źródło
3
Bardzo miła odpowiedź. Po prostu rozwinę korzyści płynące z bramkowanych zegarów. Sieć zegara w układzie scalonym, szczególnie w złożonych, takich jak mikroprocesory, może być naprawdę ogromna. Tak duży, że wykazano (przepraszam, że nie mam pod ręką), że samo przełączanie sieci zegarowej może stanowić 30% całkowitego zużycia energii. Jest to zużywane, nawet jeśli taktowana przez niego logika nie ma nic do roboty, np. rejestry i wyjścia w ogóle się nie zmieniają. Bramkowanie zegara może całkowicie wyłączyć zegar w dotkniętych nim częściach sieci, co znacznie zmniejsza zużycie energii.
ultimA
4
@ Curd: Gdy OP brzmi „nie bramkuj zegara”, profesor oznacza „nie bramkuj zegara dosłownie jak w przypadku pojedynczej bramki logicznej”. To dobra rada. W praktyce jednak „bramkowanie zegara” oznacza „wyłączenie zegara” lub bycie w stanie to zrobić, i jest to bardzo zalecane ze względów energetycznych, o ile wiesz, jak to zrobić poprawnie (to znaczy nie z logiką) brama, ale z wystarczającą logiką, aby uniknąć runtów i błędów na linii zegara).
ultimA
8
Muszę zgadnąć, dlaczego profesor tak mówi: bramkowanie zegara, choć przedstawione tutaj jako proste, ma wiele pułapek. Dlatego jest to bardzo rozczarowane. W projektowaniu ASIC (skąd pochodzę) jest to wykonywane tylko przez narzędzia, którym należy ufać, lub przez głównych starszych inżynierów, którzy również ufają, że wiedzą, co robią.
Oldfart
4
@oldfart To bardzo prawdopodobne wytłumaczenie. Zwłaszcza, jeśli OP należy do klasy FPGA, jest mało prawdopodobne, że kiedykolwiek będą bramkować zegar.
mbrig
3
@MITURAJ, bramkowanie zegara z pewnością można zrobić we wpisie projektu. Myślę, że opisujesz, co należy zrobić, a nie to, co zwykle zrobiono. Wolność układów FPGA pozwala każdemu na wdrażanie złych pomysłów. Wiele złych wzorów.
TonyM
6

W tym kontekście bramkowanie oznacza przepuszczenie sygnału przez bramkę logiczną, aby go kontrolować.

Przepuszczenie go przez jedno wejście 2-wejściowej bramki AND pozwala bitowi sterującemu na drugim wejściu wymusić niski poziom wyjściowy bramki AND lub pozwolić sygnałowi przejść i wyjść. Podobną funkcję może pełnić bramka OR, której sygnał jest wymuszany na wysokim poziomie lub przepuszczany.

Tak więc bramkowanie zegara oznacza zmuszanie go do ustawiania niskiego / wysokiego poziomu lub przepuszczanie go.

Nie bramkowanie zegarów jest dobrą radą. Można to zrobić z ostrożnością i dogłębnym zrozumieniem możliwych konsekwencji. Obejmują one metastabilność przy pobieraniu taktowanych sygnałów do bramkowanej domeny zegarowej i gorsze wyniki syntezy / układu sterowanego taktowaniem.

Ale prawie zawsze istnieją inne sposoby osiągnięcia takiej samej kontroli nad obwodem, jak bramkowanie zegara, bez wszystkich takich ryzyk i kar.

TonyM
źródło
6

To znaczy:
Nie używaj bramki AND lub OR (lub jakiegokolwiek bardziej złożonego terminu kombinacyjnego) do uzyskania sygnału zegara z innego sygnału zegara.

Powodem tej reguły jest to, że warunki wyścigu wśród wielu danych wejściowych terminu kombinacyjnego mogą powodować wiele krawędzi zegara (usterki) tam, gdzie spodziewana jest tylko jedna krawędź zegara.

Twaróg
źródło
2
Byłoby miło, gdyby downvoter mógł wyjaśnić, co uważa za błędne w tej odpowiedzi.
Curd
4

W przypadku dużych prędkości oznacza to, że nie należy dodawać bramek logicznych, które zwiększają opóźnienie propagacji do zegara, ponieważ może to powodować warunki wyścigu przy pracy z danymi przy użyciu oryginalnego zegara.

Tony Stewart Sunnyskyguy EE75
źródło
Nigdy nie słyszałem, aby w ten sposób użyto terminu bramkowanie zegarowe, czy masz na to źródło?
BeB00,
@ BeB00: po prostu google dla „bezproblemowy zegar bramkowania”, a znajdziesz mnóstwo
Curd
1
google.ca/…
Tony Stewart Sunnyskyguy EE75
To była moja pierwsza myśl, że nie słyszałem wcześniej tego terminu, ale są chwile, że buforowanie będzie potrzebne i bramkowanie prawdopodobnie ma oznaczać więcej niż buforowanie w tym przypadku. Cechy obrotu i krawędzi mogą się zmieniać przy prostym buforowaniu i należy je w każdym przypadku wziąć pod uwagę.
KalleMP,