Właśnie wchodzę w układy FPGA i jeśli dobrze rozumiem, łączysz bramki logiczne za pomocą kodu. Więc jeśli zaprojektuję procesor w Verilog, powinien połączyć ze sobą niektóre bramki logiczne i działać, ale skąd mam wiedzieć, jak szybko może działać mój własny procesor? Od czego to zależy?
fpga
cpu
homebrew-cpu
Uwe Keim
źródło
źródło
Odpowiedzi:
Prędkość projektu jest ograniczona przez kilka rzeczy. Największym najprawdopodobniej będzie opóźnienie propagacji w logice kombinatorycznej w twoim projekcie, zwane ścieżką krytyczną . Jeśli używasz szybkiej FPGA i piszesz HDL bardzo ostrożnie, prawdopodobnie możesz trafić 700 MHz na coś w rodzaju Virtex Ultrascale +. W przypadku niższych układów FPGA, na przykład Spartan 6, rozsądna liczba to prawdopodobnie około 250 MHz. Wymaga to potokowania wszędzie, więc masz absolutną minimalną ilość logiki kombinatorycznej między stanowymi komponentami (minimalizacja poziomów logiki), niską liczbę rozrzutów (minimalizacja obciążenia elementów logicznych) i brak zatłoczonych gniazd szczurów (efektywne ścieżki trasowania).
Logika tkaninowa różnych układów FPGA będzie miała różne parametry czasowe. Szybsze, droższe układy FPGA będą miały mniejsze opóźnienia, w wyniku czego mogą osiągnąć wyższe częstotliwości taktowania z tym samym projektem lub uruchomić bardziej złożony projekt lub projekt z mniejszą liczbą potoków na tej samej częstotliwości. Wydajność w ramach określonego procesu może być podobna - na przykład Kintex Ultrascale i Virtex Ultrascale są tworzone w tym samym procesie i mają podobne opóźnienia komórek i routingu. Nie da się powiedzieć, jak szybko dany projekt będzie przebiegał bez przepuszczenia go przez łańcuch narzędzi i spojrzenia na raporty czasowe z analizy statycznej synchronizacji.
Robiąc łańcuch narzędzi w celu ustalenia maksymalnej prędkości zegara, należy pamiętać, że narzędzia są sterowane taktowaniem: będą próbować spełnić określone ograniczenia czasowe. Jeśli nie zostaną określone ograniczenia czasowe, wynik może być bardzo słaby, ponieważ narzędzia nie będą próbowały zoptymalizować projektu pod kątem szybkości. Zasadniczo narzędzia będą musiały być uruchamiane kilka razy z różnymi ograniczeniami okresu zegara, aby znaleźć maksymalną osiągalną częstotliwość zegara.
Jeśli możesz zoptymalizować swój projekt, aby ścieżka krytyczna nie była granicą, napotkasz ograniczenia w generowaniu i dystrybucji zegara (PLL, DCM, bufory zegara i globalne sieci zegarowe). Limity te można znaleźć w arkuszach danych części, ale zbliżanie się do nich za pomocą nietrywialnego projektu jest trudne. Pracowałem na Virtex Ultrascale przy 500 MHz, ale była to tylko garść liczników, które dostarczały sygnały wyzwalające do innych komponentów.
źródło
Syntetyzujesz swój projekt w technologii docelowej (konkretny FPGA) i pozwalasz statycznym narzędziom do analizy taktowania powiedzieć ci, jaki jest minimalny okres zegara.
Lub, w pierwszej kolejności, dodajesz ograniczenia do projektu, a następnie narzędzia dadzą ci znać, czy zostały spełnione.
źródło
Szybkość, z jaką Twój procesor będzie działał, będzie oparta na twoim najdłuższym opóźnieniu między flopami w twoim syntezowanym projekcie. Opóźnienie od flopa do flopa obejmie od zegara do Q, routing, logikę / LUT i czas konfiguracji flopa. Te dodane razem tworzą krytyczną ścieżkę pomiaru czasu, którą można sprawdzić w raporcie wyjściowym raportu czasu za pomocą narzędzia Place-and-Route.
Istnieją całe dyscypliny projektowe poświęcone tworzeniu architektur, które minimalizują to opóźnienie w celu maksymalnego wykorzystania danego procesu - tworzenie potoków, wykonywanie równoległe, wykonywanie spekulacyjne i tak dalej. To fascynujące, wymagające zadanie, wyciskanie ostatniej uncji wydajności z FPGA (lub, w tym przypadku, ASIC).
To powiedziawszy, dostawcy FPGA podadzą różne stopnie prędkości dla swoich części, które odpowiadają maksymalnej częstotliwości MHz. Na przykład Xilinx Artix -2 to z grubsza część „250 MHz”, chociaż jest zdolna do wyższych częstotliwości taktowania w przypadku projektów o dużej potokowości.
Kiedy wchodzisz w interakcję z narzędziami do syntezy FPGA i narzędziami do wyznaczania trasy, musisz dać ograniczenia dla swojego projektu. Informują one narzędzie o docelowym opóźnieniu między flopami, które próbujesz osiągnąć. W Quartus (Altera) i Vivado (Xilinx) ograniczenia te używają składni o nazwie SDC, co oznacza ograniczenia projektowe Synopsys. SDC pochodziła początkowo ze świata ASIC i została również przyjęta przez przemysł FPGA. Poznaj SDC - pomoże ci uzyskać pożądane wyniki.
Altera i Xilinx mają społeczności online, które pomagają w użyciu składni SDC i wielu innych tematów.
To powiedziawszy, jeśli zależy ci na szybkości, powinieneś rozważyć układ FPGA z twardym makrem procesora, takim jak Zynq.
źródło
Procesor nie będzie działał szybciej niż zegary globalne, więc ustaliłoby to górną granicę szybkości jego działania. Zazwyczaj informacje o maksymalnej częstotliwości taktowania są wymienione w arkuszach danych FGPA.
źródło