eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaverilog początki co żle?Re: verilog początki co żle?
  • Data: 2011-05-03 18:36:57
    Temat: Re: verilog początki co żle?
    Od: Michoo <m...@v...pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    W dniu 03.05.2011 20:15, ToTylkoJa pisze:
    > Użytkownik Michoo napisał:
    > [ciach]
    >
    >>
    >>> input in,
    >>> output [3:0] out,
    >> Jesteś pewien, że in i out nie powinny mieć takiej samej szerokości?
    > Wstyd sie przyznac błąd przy przepisywaniu książki. Już poprawiłem in
    > oraz out mają tą samą szerokość ale błąd jest nadal generowany. Tym
    > razem tak jak w moim liczniku dla wszystkich wyjść od out<3> do out<0>
    > nadal jest:'Xst:528 - Multi-source in Unit <licz_ksiazka> on signal
    > <out<3>>; this signal is connected to multiple drivers.' i tak jeszcze 3
    > linijki dla out<2> ,... aż do out<0>
    >
    >> Powyżej masz dwa "procesy" w których przypisujesz out_data (a więc
    >> pośrednio out) - w pierwszym całe out(3 downto 0) a w drugim samo
    >> out(3). Coś takiego się nie syntetyzuje bo kompilator nie wie co zrobić
    > Już to poprawiłem. Wychodzi mi że kompilator nie chce przyjąć dwóch
    > procesów (always @). Zaremowanie linijek od resetu asynchronicznego lub
    > właściwego zlicznia pomaga.
    Jak już pisałem - albo robisz dodatkowe sygnały, albo musisz zrobić
    jeden proces i odpowiednio rozłożyć if-else:
    PSEUDOKOD:
    if(!reset asynchroniczny){
    if(zbocze)
    licz;
    }else{
    resetuj
    }


    > Poza tym ktoś w książce podał zły
    > (niekompilowalny) przykład?
    A co? książki piszą ludzie.

    > Zastanawiam się czy ten web ISE nie ma jakiś
    > ograniczeń, lub ja go źle skonfigurowałem.
    Z tego co wiem to po prostu sprzęt nie doczekał się ciągle porządnego
    języka do programowania. Mam teraz na studiach magisterskich na trzech
    przedmiotach VHDL i jak odkrywam (albo słyszę o) kolejne "ciekawe"
    zjawiska i niespójności pomiędzy symulacją a syntezą tego samego kodu to
    człowiek się może załamać.

    Najprostszy przykład:
    process(clk) begin
    out <= in;
    end process;
    NIE działa tak jak się człowiek spodziewa - mimo, że w symulacji ładnie
    kopiuje wejście na wyjście w takt zegara to w FPGA będzie zmieniać stan
    wyjść gdy tylko zmienią się wejścia.

    Trzeba więc napisać:
    process(clk) begin
    if rising_edge(clk) then
    out <= in;
    end if;
    end process;

    --
    Pozdrawiam
    Michoo

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: