Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

VHDL - Błąd podczas kompilacji kodu licznika czasu

20 Sty 2013 20:13 3339 12
  • Poziom 7  
    Napisałem w VHDL program licznika odmierzającego czas w sekundach. Niestety kod nie chce się skompilować wyrzuca taki błąd:
    VHDL - Błąd podczas kompilacji kodu licznika czasu
    Program ten piszę w środowisku Max Plus II na układ Altera Max7000B. Podczas zapalania wyświetlaczy, nie używając CLK wszystko się kompilowało oraz wgrywało na układ, natomiast podczas użycia CLK wyskakuje cały czas ten sam błąd. Chciałbym zapytać czy to problem ze składniom? Jaki błąd popełniam?
  • Poziom 27  
    nie mam wprawy w vhdl - nie analizowalem kodu, komunikat wygenerowany
    przez maxplus mowi, ze usilujesz skorzystac z czegos, [clklock] co nie jest
    dostepne w ukladach max7000, nie jest to raczej blad kodu jako takiego;
    o ile to mozliwe, to zainstaluj quartus, znacznie lepsze narzedzie niz maxplus;
    j.a
    ---
    na pewno przeslany na elektrode kod odpowiada dolaczonemu do post obrazkowi ?
  • Poziom 7  
    Tak ten kod odpowiada temu błędowi, obrazek został zrobiony później podczas prób zmiany kodu, niestety dalej wyrzucało ten sam błąd.
  • Poziom 27  
    umiesc wersie, ktora nie zawiera bledow skladni, bo na razie
    proba syntezy 'timer.txt' wylatuje na syntax error
    j.a
  • Poziom 7  
    Zmieniłem składnie, jednak są jeszcze miejsca w których nie wiem co wpisać. Co tam powinno się znajdować? Moje pomysły okazały się błędne.
    Dodatkowo wyłączyłem w Max Plusie globalny zegar bo to blokowało przypisanie pinu zegarowego.
  • Poziom 27  
    quartus przy probie kompilacji raportuje:
    Error (10500): VHDL syntax error at timecounter.vhdl(24) near text "&"; expecting "(", or "'", or "."
    Error (10500): VHDL syntax error at timecounter.vhdl(30) near text "&"; expecting "(", or "'", or "."
    Error (10500): VHDL syntax error at timecounter.vhdl(46) near text ";"; expecting "then"
    Error (10500): VHDL syntax error at timecounter.vhdl(48) near text "&"; expecting "(", or "'", or "."
    Error (10500): VHDL syntax error at timecounter.vhdl(53) near text "if"; expecting "process"
    Error (10500): VHDL syntax error at timecounter.vhdl(62) near text "="; expecting "!", or "=>"

    j.a
  • Poziom 30  
    J.A napisał:
    quartus przy probie kompilacji raportuje:
    j.a

    To dlatego, że wredny html zamienia < na &lt; i itp..

    Tak to przejdzie syntax i syntezę. Ale mam kilka uwag:
    - jak robisz proces synchroniczny w liście czułości wystarczy sam zegar
    - z resetem synchronicznym używaj if rst then - else - end if
    - uzupełnij szerokość wektórw w display, używaj others albo conv_std_logic_vector albo coś podobnego, żeby uniezaleźnić się od szerokości wektora
    - ograniczaj zakres integer, nie wszystkie syntezery są tak cwane albo potraktują to dosłownie jako 32/64 bity
  • Poziom 27  
    tymon_x napisał:
    J.A napisał:
    quartus przy probie kompilacji raportuje:

    To dlatego, że wredny html zamienia < na &lt; i itp..


    faktycznie, nawet nie zajrzalem do kodu jak quartus poskarzyl sie na bledy;

    ale ostatnia wersja kompiluje sie bez problemow dla ukladu
    max7000B, a konkretnie sprobowalem: epm7128btc100;

    wez do serca uwagi tymona;
    j.a
  • Poziom 7  
    Ja mam układ EPM7256BQC208-7, którego Quartus nie wspiera. Dlatego próbuję zrobić to na programie Max Plus II. Nie wiem dlaczego cały czas przy próbie użycia clocka wyskakuje błąd, którego treść mówi, że rodzina tych układów nie wspiera clocka.
    Dla sprawdzenia poprawności układu wraz z oprogramowaniem napisałem program palący diodę wyświetlacza, niestety przypisując stan wysoki jak i niski dioda świeci się nieprzerwanie. Nie wiem dlaczego tak się dzieje.
    Przypisując odpowiednie piny przycisków w celu zapalenia i gaszenia diody układ nie działa.
    Jestem laikiem w tej dziedzinie, dopiero się uczę, może popełniam jakiś trywialny błąd, którego nie widzę. Jest mi ktoś w stanie pomóc?
  • Poziom 27  
    Cytat:
    Ja mam uklad EPM7256BQC208-7, którego Quartus nie wspiera

    quartus ma archiwum kolejnych wersji:
    https://www.altera.com/download/archives/arc-index.jsp
    sciagnalem wersje 3 - 'trojka' wsrod dostepnych ukladow
    ma rowniez EPM7256BQC208-7;
    skompilowalem twoj kod przeslany na elektrode, wlasnie na ten
    uklad: EPM7256BQC208-7,
    Code:
    -----------------------------------------------------------------
    
    ; Flow Summary                                                  ;
    -----------------------------------------------------------------
    ; Flow Status           ; Successful - Sat Feb 02 14:37:30 2013 ;
    ; Compiler Setting Name ; timecounter                           ;
    ; Top-level Entity Name ; timecounter                           ;
    ; Family                ; MAX7000B                              ;
    ; Device                ; EPM7256BQC208-7                       ;
    ; Total macrocells      ; 113                                   ;
    ; Total pins            ; 19                                    ;
    -----------------------------------------------------------------


    Cytat:
    przy próbie uzycia clocka wyskakuje blad, którego tresc mówi,
    ze rodzina tych ukladów nie wspiera clocka.

    niemozliwe, poszukaj log kompilacji i przeslij linijke/linijki
    z bledem i ostrzezeniami;
    najbardziej prawdopodobne wydaje mi sie, ze masz blad w przypisaniach
    pinow, ew. innych 'settings' [np. sygnal clock do pinu, ktory nie ma
    dostepu do magistrali zegarowej];
    usun wszelkie przypisania [procz samego ukladu oczywiscie], i skompiluj
    jeszcze raz;
    Cytat:
    Przypisujac odpowiednie piny przycisków w celu zapalenia i gaszenia
    diody uklad nie dziala

    to nie ma zadnego wplywu na kompilacje, ale moze swiadczyc o uszkodzeniu
    kostki;
    a programator tego max7000b dal jakis komunikat:
    download/programming/etc succesful ?
    ====================
    bez pelnego projektu [pliki rtl + assignments + settings] i komunikatow
    kompilacji mozna tylko zgadywac, gdzie jest blad;

    ------
    komunikat o bledzie nie mowi, ze uklad nie wspiera clock, ale ze nie
    wspiera clklock;

    j.a
  • Poziom 14  
    Witam

    nie jestem ekspertem w VHDLu ale według mię komunikat oznacza że:
    max7000B nie obsługuje złożonych funkcji zegara

    do twojego programu ma się to tak że napisałeś 5 procesów zależnych od zbocza narastającego jednego sygnału "clk"
    i np. w pierwszym procesie odczytujesz stan divclk_signal
    natomiast w kolejnym procesie chcesz zmienić wartość tego sygnału

    radził bym napisanie tego wszystkiego w jednym procesie uzależnionym od clk
  • Poziom 7  
    Udało się skompilować i nawet wgrać. Czas jest odmierzany. Działa jak stoper zlicza sekundy. Jednak żeby uruchomić zliczanie trzeba "trafić w odpowiedni moment".
    Jeśli jednak chce ustwić na płytce momęntelne załączanie się czasu i liczenie sekund to się wyświetla taki komunikat:
    error project requires too many (302/256) logic cells
    error : project requires too many (302/256) shereable expanders

    Wie ktoś dlaczego?
    Jak je ominąć?
    Może w ustawieniach coś trzeba zmienić?
  • Poziom 14  
    Projekt wymaga zbyt wiele (302/256) komórek logicznych

    oznacza to to że twój układ EPM7256 ma 256 macrcells a żeby wykonać ten program potrzeba co najmniej 302 komórki

    Pozdrawiam Dawid