VHDL i Verilog to HDL dnia. Jakie są zalety dla kogoś, kto w ogóle nie ma doświadczenia z HDL?
VHDL i Verilog to HDL dnia. Jakie są zalety dla kogoś, kto w ogóle nie ma doświadczenia z HDL?
Odpowiedzi:
Nie mogę ci powiedzieć, czego się uczyć, ale oto kilka kontrastujących punktów (od bardzo skoncentrowanego na VHDL użytkownika, ale starałem się być jak najbardziej sprawiedliwy!), Które mogą pomóc ci dokonać wyboru na podstawie własnych preferencji pod względem stylu rozwoju:
I pamiętaj o słynnym cytacie, który brzmi: „Wolę którykolwiek z tych, których obecnie nie używam” (przepraszam, nie pamiętam, kto tak naprawdę to napisał - być może Janick Bergeron?)
Wiele błędów kompilacji na początek, ale potem działa w większości zgodnie z oczekiwaniami. Może to prowadzić do bardzo stromej krzywej uczenia się (wraz z nieznaną składnią)
Błędy znajdują się później w symulacji - krzywa uczenia się do „poczucia, że coś się robi” jest płytsza, ale trwa dłużej (czy to właściwa metafora?)
Również na korzyść Verilog jest to, że wysokiej klasy weryfikacja coraz bardziej opiera się na SystemVerilog, który jest ogromnym rozszerzeniem Verilog. Ale zaawansowane narzędzia mogą również łączyć kod syntezy VHDL z kodem weryfikacyjnym SystemVerilog.
Całkowicie inne podejście: MyHDL - zyskujesz pełną moc Pythona jako języka weryfikacyjnego z zestawem rozszerzeń syntezy, z których możesz wygenerować VHDL lub Verilog.
Lub Cocotb - cała moc Pythona jako języka weryfikacyjnego, z syntetycznym kodem wciąż napisanym w dowolnym HDL, który postanowiłeś się nauczyć (tj. VHDL lub Verilog).
Nauczyłem się obu w tym samym tygodniu. VHDL jest jak ADA / Pascal, a Verilog jest jak C. VHDL jest bardziej gadatliwy i bardziej bolesny, aby uzyskać kompilację, ale kiedy kompilacja się pojawi, masz większe szanse na sukces. Przynajmniej to znalazłem. Verilog, podobnie jak C, jest całkiem zadowolony z możliwości strzelania sobie w stopę. Niektóre branże, takie jak lotnictwo / rząd, skłaniają się ku VHDL, inne skłaniają się ku Verilog. Problem, który znalazłem w obu przypadkach, to możliwości stanowiska testowego, a kiedy próbuję się uczyć i próbować przejść od symulacji do pisania w krzemie / FPGA, syntezowalny tylko kod jest kolejnym poziomem edukacji.
Język, który naprawdę lubię, nazywa się CDL . Jest ściśle syntezowalny, piszesz swoje stanowiska testowe na inne sposoby, generuje syntezowalny Verilog, który możesz wziąć do innych narzędzi. Niestety brakuje dokumentów CDL , mam nadzieję, że wydam kilka próbek na świecie, aby pokazać, o ile łatwiej jest używać niż Verilog lub VHDL, ale po prostu tego nie zrobię. Pochodzi z własnym środowiskiem SIM / testowym. Dzięki CDL i GTKWave możesz wykonać sporo pracy.
Inne narzędzie o nazwie Verilator jest dość sztywne w utrzymywaniu Verilog w czystości. Jest to darmowy symulator Verilog z bardzo łatwym sposobem na podłączenie do karty SIM lub stworzenie stanowisk testowych w C / C ++. Możesz także korzystać z Verilog, nie ogranicza Cię to. Jest też Icarus Verilog , który jest większy i bardziej znany, ale polecam Verilator, jeśli chcesz nauczyć się Verilog. W przypadku VHDL istnieje GHDL , moje doświadczenie z nim nie było tak dobre jak Verilator , ale przynajmniej jest darmowe narzędzie do próby zmoczenia stóp. Jeśli masz doświadczenie w programowaniu, prawdopodobnie będziesz mógł korzystać z Verilog szybciej niż VHDL.
Zdecydowanie zgadzam się z Leonem, spróbuj obu. fpga4fun i inne strony internetowe zawierają dobre informacje, a niektóre z nich podadzą zarówno odpowiedniki Verilog, jak i VHDL dla omawianego tematu. Uważam, że takie strony są najbardziej przydatne do porównywania dwóch języków. Jeśli korzystanie z HDL jest czymś, co chcesz robić w swojej karierze, zalecam posiadanie przynajmniej niektórych możliwości z oboma, być może naprawdę dobrze z jednym, ale nie bądź całkowicie niezdolny do korzystania z drugiego.
Walczyło o to wiele świętych wojen. Szczególną wadą Verilog jest jego niedeterministyczne zachowanie. http://www.sigasi.com/content/verilogs-major-flaw
Oba mają zalety i wady. VHDL jest bardziej akademicki, pełny i bardziej złożony. Musisz napisać więcej kodu, ale rygor oznacza, że jest bardziej prawdopodobne, że zadziała. Verilog jest prostszy w typowym projektowaniu cyfrowym, ale ułatwia tworzenie trudnych błędów. VHDL jest bardziej powszechny na uniwersytetach. Verilog występuje częściej w dużych firmach z półprzewodnikami.
Zazwyczaj wybór jednego lub drugiego zależy od używanych narzędzi. Niektóre popularne narzędzia FPGA radzą sobie lepiej z VHDL. Niektóre popularne narzędzia ASIC działają lepiej dzięki Verilog. Tak więc, co jest lepsze, zależy od tego, co chcesz z tym zrobić.
Powiedz, że chcesz budować małe projekty przy użyciu układów FPGA Altera, które są popularne w szkołach EE. Darmowe narzędzia obsługują oba HDL. Ale może się okazać, że społeczność użytkowników korzysta głównie z VHDL. Będzie więcej przykładów kodu, modułów wielokrotnego użytku itp., Jeśli zdecydujesz się na ten język.
I odwrotnie, jeśli zamierzasz pracować w dużej firmie wykonującej poważne prace projektowe, prawie wszystkie z nich korzystają obecnie z Verilog. Wytrzymałe narzędzia do syntezy, symulacji i weryfikacji są zoptymalizowane dla Verilog. A ostatnio SystemVerilog - rozszerzenia Verilog do obsługi projektowania i weryfikacji systemu na wysokim poziomie.
Więcej dyskusji tutaj i przydatne linki tutaj:
Dla początkujących / hobbystów najlepszą radą jest zdecydować, z którymi żetonami chcesz grać, i zobaczyć, jakie przykłady podaje dostawca. Użyć tego. Gdy jesteś doświadczonym projektantem cyfrowym, nauka drugiego języka zajmie tylko kilka dni.
Krótka odpowiedź : użyj SystemVerilog, ale ucz się także VHDL . Jeśli możesz, unikaj Verilog-2001.
Bardzo długa odpowiedź : w tej chwili zakładam, że przez Verilog masz na myśli Verilog-2001, co prawdopodobnie jest również tym, co zakłada większość innych odpowiedzi. Najlepszą sugestią byłoby prawdopodobnie nauczenie się obu, ale nie używaj żadnej (więcej na ten temat na końcu odpowiedzi). Główne różnice można wznowić w następujący sposób:
wire
Vs reg
)To powiedziawszy, najważniejsze pojęcia są wspólne dla obu języków, choć pod różnymi nazwami (np. always
Vs process
), a w każdym razie trudność w nauce HDL jest bardziej związana z koncepcjami (takimi jak współbieżność wszystkich procesów, HW konwencje itp.) niż do samego języka. Biorąc pod uwagę różnice, jeśli wybór dotyczy Verilog 2001 i VHDL, osobiście zwróciłbym się do każdego początkującego do VHDL.
Jednak, jak powiedziałem, moja propozycja nie polega na użyciu VHDL ani Verilog-2001, jeśli masz moc wyboru. W przeciwieństwie do tego, co wielu ludzi zakłada, SystemVerilog nie jest językiem wyższego poziomu przydatnym tylko do projektowania lub weryfikacji na poziomie systemu i ma niewiele wspólnego z językami, które można zasilać z narzędzia do syntezy wysokiego poziomu, takiego jak SystemC.
Zamiast tego SystemVerilog jest pełną aktualizacją języka Verilog (opartą na Verilog-2005, patrz http://en.wikipedia.org/wiki/SystemVerilog ), który ma w pełni syntezowalny podzbiór, który pasuje do zwięzłości Verilog z wyższą ekspresją niż oba Verilog-2001 i VHDL, zapewniające moim zdaniem to, co najlepsze z obu światów.
Przykłady bardzo znaczących konstrukcji / wyrażeń dostępnych w SystemVerilog, które nie są dostępne w Verilog-2001, VHDL lub obu obejmują:
always_ff
, always_latch
, always_comb
Bloki, które pomagają odróżnić projektant natychmiast między blokami realizujących różne rodzaje logiki, a także - dla always_comb
i always_latch
- (! Źródłem nieskończonych błędów w VHDL i Verilog, szczególnie dla początkujących) wnioskujemy automatycznie sygnały, które powinny iść na liście czułościlogic
typy, które zastępują mylące wire
i reg
typy Verilog-2001logic [N-1:0][M-1:0][P-1:0]
), podczas gdy Verilog-2001 obsługuje tylko dwuwymiarowe magistrale, a VHDL zmusza projektanta do zdefiniowania nowych typów do budowy podobnych strukturstruct
(podobne do VHDL record
), a nawet wyższe, interface
które można bardzo skutecznie wykorzystać do modelowania regularnych struktur (takich jak porty magistrali)Wszystkie te różnice przetestowałem „na skórze”, pracując nad dość złożonym systemem wielordzeniowym do celów badawczych. Jest teraz obsługiwany przez wiele narzędzi i wiem na pewno (z korzystania z nich prawie codziennie), że jest obsługiwany przez narzędzia Synopsys (zarówno dla przepływów syntezy ASIC, jak i FPGA), Xilinx Vivado (dla syntezy FPGA) oraz narzędzia symulacyjne, takie jak jako MentorGraphics Modelsim, Cadence NCsim i Synopsys VCS.
Aby być całkowicie kompletnym, istnieją dwa inne znaczące rodzaje języków w przyborniku projektanta sprzętu (chociaż jakość tych narzędzi może się bardzo różnić):
Moja kariera przez ostatnie 13 lat wynosiła 80% ASIC i 20% FPGA.
VHDL był używany przez pierwsze 3,5 roku, a resztą był Verilog. Przejście na Verilog nie było dla mnie trudne, a ze względu na lokalizację (Dolinę Krzemową) i szybkość koduję tylko dzisiaj w Verilog.
Ponadto wykonuję wiele interfejsów, zatrzasków i pół niestandardowych projektów Async dla wydajności, więc VHDL ma teraz bardzo małe zastosowanie w moim życiu. Zamiast tego znalazłem SystemVerilog i SystemC o wiele bardziej przydatne do zbierania i używania w dużych projektach inżynierskich.
Na jednym etapie narzędzia takie jak Verilator (za darmo! I szybko) pozwoliły mi zaoszczędzić sporo potrzebnego funduszu na krytyczne symulacje. Nie masz jeszcze tej opcji dla VHDL. I możesz go nigdy nie potrzebować, jeśli zawsze pływasz w bogatym basenie lub nie wykonujesz projektów bram o wielkości> 1M.
Jednak VHDL jest lepszy dla początkujących, zanim opracują solidne zasady projektowania sprzętu. Moja komunikacja z ludźmi z EDA sugeruje, że dokonali niewielkich zmian w VHDL przez ostatnie 10 lat, a za HLS stoi dziś duży dysk. Więc nie będzie wielu programistów narzędzi VHDL w pobliżu ...
Poszedłem do VHDL, głównie dlatego, że znam C bardzo dobrze i stwierdziłem, że próba pisania verilog zwykle powodowała, że pisałem tak, jakbym celował w procesor nie opisujący sprzętu.
Bardzo denerwujące było napisanie strony kodu i uświadomienie sobie, że to, co napisałeś, było w istocie programem sekwencyjnym, a nie projektowaniem sprzętowym, tak, syntezowałoby się, ale wynik był brzydki i powolny.
VHDL był na tyle inny, że znacznie łatwiej było mi myśleć w kategoriach logiki, a nie kontroli przepływu.
Ostatecznie język jest trudny, umiejętność polega na projektowaniu systemu, a nie na pisaniu.
Pozdrawiam, Dan.
W ubiegłym roku uniwersytet, który studiowałem, promował dwa kursy otwarte dla początkujących. Oba dotyczyły tej samej treści, ale jedna używa VHDL, a druga Verilog.
Oczywiście zapytałem obu profesorów o różnice w VHDL i Verilog. Obaj nie mogli wybrać najlepszego.
Musiałem więc zrobić oba kursy, aby przekonać się, który z nich może być dla mnie lepszy. Moje pierwsze wrażenie było VHDL jest bardziej Pascal-jak i Verilog jest bardziej C-like .
Po tym postanowiłem zrobić tylko VHDL, ponieważ wtedy pracowałem z Delphi.
Ale po kursie nigdy nie pracowałem z FPGA. Więc to jest najlepsze, w czym mogę pomóc.
Używam VHDL prawie całkowicie. Z mojego doświadczenia wynika, że VHDL jest bardziej powszechny w Europie, Verilog w Stanach Zjednoczonych, ale VHDL robi również stały postęp w Stanach Zjednoczonych. Silne pisanie VHDL nie przeszkadza mi, ponieważ używam go jak staromodnego języka projektowania sprzętu stosowanego w małej programowalnej logice, takiej jak PALASM lub AHDL Altera.
Dużym problemem dla większości osób używających VHDL są silne typy. Chcą dokonywać przypisań między std_logic_vector (co uważam za zbiór przewodów w celu) i „int” (co uważam za liczbę zapisaną na komputerze, który kompiluje projekt). Najbardziej irytująca konwersja typów, na jaką zazwyczaj wpadam, to między bit_vector (co uważam za opis zbioru przewodów w komputerze kompilującym projekt) i std_logic_vector. W rzeczywistości to, co wciągnęło mnie teraz do stackexchange, to poszukiwanie konwersji z char (zmienna znakowa przechowywana na komputerze kompilującym) na int.
Wcześniej najsłynniejszym konfliktem między VHDL i Verilog był konkurs projektowy zorganizowany przez magazyn ASIC i EDA. Google „Nieoczekiwane wyniki konkursu na projekt sprzętu: Verilog Won i VHDL Lost? - You Be The Judge!”, Na przykład: http://www.ee.ed.ac.uk/~gerard/Teach/Verilog/manual /Example/lrgeEx2/cooley.html
Konkurs polegał na wdrożeniu dość skomplikowanego 9-bitowego rejestru. Miał liczenie w górę / w dół, a także kilka innych rzeczy. W rezultacie 8 z 9 projektantów Verilog uruchomiło kod po 90 minutach. Zero z 5 facetów z VHDL działało.
Nie używam VHDL jak nikt inny. Sposób, w jaki go używam, typy nie przeszkadzają mi zbyt często. Zaimplementowałbym powyższy projekt w ten sam sposób, w jaki robię wszystko inne, całkowicie w std_logic i std_logic_vector, używając (z powrotem) biblioteki niepodpisanej IEEE. Zamiast tego wyobrażam sobie, że projektanci VHDL wykonali swoją pracę z int i zgubili się w konwersji typu.
Istnieją dwa miejsca, w których możesz zagubić się w konwersji typu: (a) projekt i (b) stanowisko testowe. Dla mnie łatwiej jest napisać stanowisko testowe (prawie) całkowicie w std_logic, więc samo stanowisko testowe jest (prawie) syntezowalne. Przez „prawie” rozumiem, że zdefiniuję zegar z opóźnionym przydziałem, którego nie można zsyntetyzować. Ale poza tym (i komentarzami) nie można odróżnić moich stanowisk testowych od zsyntetyzowanej logiki.
W każdym razie, zanim zdecydujesz się na pierwszy język do nauki (prawie wszyscy mają preferencje, ale prawie wszyscy używają obu), radziłbym sprawdzić ten konkurs i przeczytać komentarz na jego temat.
Jednym z problemów, które zaobserwowałem w VHDL, jest to, że ponieważ jest to bardzo szczegółowy język, wydaje się, że (w opinii projektantów) istnieje tendencja do przekonania, że nie wymaga on komentarzy. Nie jest to oczywiście prawda, powinieneś pisać komentarze przed kodem.
Zważę na dwa centy: sam jestem dużym użytkownikiem VHDL, ale Verilog z pewnością może wykonać tę pracę równie dobrze. Zawsze możesz owijać jeden w drugi (choć czas i koszt pisania).
Odkryłem, że surowy VHDL nie ma wielu przydatnych funkcji. (LUB lub AND: przychodzi mi na myśl całe std_logic_vector). Tak więc zbudowanie zestawu narzędzi z debugowanymi, syntezowalnymi funkcjami znacznie zwiększa wydajność podczas korzystania z VHDL.
Może ktoś mógłby odwołać się do dobrej biblioteki typu open source, która oferuje wszystkie te „dobre do posiadania” funkcje?
Poprzednie odpowiedzi w zasadzie obejmują kontrasty między dwoma językami, a ten artykuł całkiem dobrze omawia te kwestie: http://www.bitweenie.com/listings/verilog-vs-vhdl/
Chciałbym również dodać jeszcze kilka punktów, o których nie wspomniano.
Polecam najpierw naukę VHDL z kilku powodów. Silne pisanie pomaga uchwycić kompilatorowi kilka łatwych błędów początkujących. Słyszałem również, że VHDL jest trudniejszy do pobrania po pierwszym użyciu Verilog.
Szczerze mówiąc, nie można się pomylić z żadnym językiem; a jeśli pracujesz w tej branży bardzo długo, ostatecznie i tak będziesz uczyć się obu języków.