eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika[VHDL] Pierwsze kroki, jaki symulator VHDL-2008 dla Linuksa (lub niekoniecznie)? › [VHDL] Pierwsze kroki, jaki symulator VHDL-2008 dla Linuksa (lub niekoniecznie)?
  • Data: 2018-03-07 23:46:24
    Temat: [VHDL] Pierwsze kroki, jaki symulator VHDL-2008 dla Linuksa (lub niekoniecznie)?
    Od: g...@s...invalid (Adam Wysocki) szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    Hej,

    Przymierzając się do zabawy z CPLD zacząłem uczyć się VHDLa z książki "The
    Designer's Guide To VHDL" (trzecia edycja).

    W ćwiczeniach na końcu pierwszego rozdziału każą napisać "entity
    declaration and a behavioral architecture body" (polskie tłumaczenie,
    które przychodzi mi na myśl, brzmi idiotycznie) prostego multipleksera.
    Dwa wejścia ('a' i 'b'), sygnał wybierający ('sel') i wyjście 'z'. Wyjście
    ma przyjąć wartość wejścia 'b' dla sel=1 lub 'a' dla sel=0.

    Napisałem:

    #v+
    entity mux2 is
    port (a, b, sel: in bit; z: out bit);
    end entity mux2;

    architecture mux2_behav of mux2 is begin
    mux2: process is begin
    if sel then
    z <= b after 5ns;
    else
    z <= a after 5ns;
    end if;
    end process mux2;
    end architecture mux2_behav;
    #v-

    i jest problem, bo teraz chcę to zasymulować.

    Debianowe apt-cache znajduje mi m.in.:

    fauhdlc - experimental VHDL compiler and interpreter
    freehdl - VHDL simulator for Linux

    gvhdl (frontend do freehdl) niestety twierdzi, że:

    #v+
    $ gvhdl ch1-10.vhdl
    gvhdl: FreeHDL root path is '/usr'.
    gvhdl: executing '/usr/bin/freehdl-v2cc -m ch1-10._main_.cc -L
    /usr/share/freehdl/lib -o ch1-10.cc ch1-10.vhdl'
    ch1-10.vhdl: in mux2(mux2_behav):
    ch1-10.vhdl:7: sel does not match required type BOOLEAN, its type could be:
    /usr/share/freehdl/lib/std/standard.vhdl:6: BIT
    v2cc: ch1-10.vhdl: 1 errors
    gvhdl: Compilation failed!
    Died at /usr/bin/gvhdl line 211.
    #v-

    fauhdlc nie rozpoznaje symbolu 5ns:

    #v+
    $ fauhdlc ch1-10.vhdl
    ERROR> ch1-10.vhdl:8: Symbol '5ns' undefined.
    ERROR> ch1-10.vhdl:10: Symbol '5ns' undefined.
    #v-

    a po wykomentowaniu go twierdzi mniej więcej to samo, co freehdl:

    #v+
    $ fauhdlc ch1-10.vhdl
    ERROR> ch1-10.vhdl:7: Type error for <sel>.
    #v-

    Rozumiem że nie pasuje im "if sel then", bo sel jest typu 'bit', a nie
    boolean.

    Stąd pytania:

    1. Czy robię coś nie tak? Czy nie można w ten sposób porównywać bitów, lub
    można tylko od określonej wersji języka (np. 2008)? Książka twierdzi, że
    można, zresztą przykłady z niej wykładają się w analogiczny sposób.

    2. Nie wiem, czy te dwa symulatory w ogóle obsługują VHDL-2008. Próbowałem
    zrobić komentarz /* ... */, a nie --, bo to podobno cecha VHDL-2008
    (poniżej można tylko --). Nie rozpoznały, wyłożyły się na tym. Nie widzę
    też nigdzie opcji wyboru wersji języka.

    3. Jaki symulator polecacie? Niekoniecznie dla Linuksa, choć to byłoby
    duże ułatwienie. Chodzi o naukę, ale ukierunkowaną na to, żeby prędzej czy
    później stworzyć model, który da się zsyntetyzować do postaci, którą da
    się wrzucić do CPLD.

    --
    [ Email: a@b a=grp b=chmurka.net ]
    [ Web: http://www.chmurka.net/ ]

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: