eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaverilog początki co żle?Re: verilog początki co żle?
  • Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!.PO
    STED!not-for-mail
    From: Michoo <m...@v...pl>
    Newsgroups: pl.misc.elektronika
    Subject: Re: verilog początki co żle?
    Date: Tue, 03 May 2011 20:36:57 +0200
    Organization: http://onet.pl
    Lines: 62
    Message-ID: <ippi0u$smi$1@news.onet.pl>
    References: <ippc9h$5bj$1@news.onet.pl> <ippdt6$bi0$1@news.onet.pl>
    <ippgno$ni7$1@news.onet.pl>
    NNTP-Posting-Host: 83.238.197.12
    Mime-Version: 1.0
    Content-Type: text/plain; charset=UTF-8; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Trace: news.onet.pl 1304447838 29394 83.238.197.12 (3 May 2011 18:37:18 GMT)
    X-Complaints-To: n...@o...pl
    NNTP-Posting-Date: Tue, 3 May 2011 18:37:18 +0000 (UTC)
    User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.16) Gecko/20110303
    Icedove/3.0.11
    In-Reply-To: <ippgno$ni7$1@news.onet.pl>
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:609554
    [ ukryj 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: