VHDL vs. Verilog

Aug 16, 2013 27 Replies

W dniu 2013-08-21 17:20, snipped-for-privacy@gmail.com pisze:

Jak pisałem możesz użyć rzutowania jawnego. A w VHDL masz do tego jakieś z d. wyjęte biblioteki które mogą być albo i nie być w konkretnej instalce.

Tia, tylko że w każdej książce autor podaje inne biblioteki. Każdą po kolei próbujesz, a taki np. Webpack ich nie ma. Jak już coś sobie sklecisz to nie masz pewności czy przy kolejnej wersji Webpacka zadziała prawidłowo konwersja projektu do nowszej wersji. I słusznie wspomniałeś o Fortranie. VHDL jest w tej chwili na etapie Fortranu z 77 r.

Kolega miał zapewne co innego na myśli pisząc o poziomie abstrakcji (ja zresztą też). Dajmy na to taki kod w języku C:

a=b+c; d=a+e;

A teraz te same 2 linijki w odwrotnej kolejności:

d=a+e; a=b+c;

Zgodzisz się, że wynik w zmiennej "d" w obu przypadkach może być różny. W VHDL'u nie ma znaczenia kolejność zapisu. Kolejne linijki kodu opisują operacje na sygnałach i "połączenia" między sygnałami. Stąd:

1) a<=b+c; d<=a+e;

2) d<=a+e; a<=b+c;

to jeden i ten sam pieron!

W dniu środa, 21 sierpnia 2013 17:32:29 UTC+2 użytkownik Mario napisał:

Podaj konkretny przykład, podyskutujemy..

Nie jest. Polemizuje z twoja opinią jakoby było to proste. W językach opisu sprzętu nic nie jest proste zaczynając od dodawania ...

... to pracujesz na architekturze i języku który doskonale definiuje co to jest dodawanie. W sprzęcie zazwyczaj nie definiujesz tego w sposób uniwersalny bo tam są czasem zagadnienia typu "jak dodać 3 druty w 2C do

4 drutów Unsigned, przy czym wiadomo że mam 3 cykle zegara a w dodaku na wyjściu może być mały hazard bo i tak mam zatrzask". Porownanie do języków typu Pascal jest zwodnicze. To nie dziala tak samo mimo podobnych składni.

Przesadzasz z upraszczaniem. Ma znaczenie i nie ma. To że sygnały są w rzeczywistości przypisywane na suspendzie procesu nijak nie oznacza że kolejność jest bez znaczenia - tam masz subtelne opóźnienie symulowane w postaci cyklów delta i nie da się go zapisać tak prostym zdaniem, szczególnie jeśli dotyczy ono np. dwóch procesów wzajemnie czułych na zmiany.

Nic gorszego nie może spotkać człowieka jak nadmierne upraszczanie HDLowych zapisów. Że wspomnę choćby Veriloga z jego zapisem "blokujacym" i "nieblokujacym" na którym nie jeden doktorat zrobiono.

W dniu 2013-08-21 17:40, snipped-for-privacy@gmail.com pisze:

Problem trochę stary więc szczegółów nie pamiętam. Walczyłem z konwersją vector > uint i w drugą stronę. Funkcje do konwersji siedzą w dwóch różnych bibliotekach: arith i numeric. I nie wiem czemu są to całkiem różne funkcje. Bibliotyeki nawzajem się wykluczają. Numeric jest zalecana jako nowsza. Jednak żaden książkowy przykład z numeric nie udało mi się skompilować w ISE. W końcu zrobiłem to jakoś na arith. Ale pozostało mi wrażenie, że jak robią taki sformalizowany język ze sztywnym typowaniem, to kretyństwem jest robić chaos w czymś tak podstawowym jak konwersja typów.

numeric jest zgodny ze standardem IEEE, arith to de-facto standard Synopsysa. Osobiście nie mialem problemu z używaniem numeric pod ISE.

A tak poza tym, ISE już jest teraz ledwo wspierane, Xilinx promuje Vivado.

Wielkie dzięki, o takie coś właśnie mi chodziło.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required