eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikapodstawy Verilog ktoś podpowie co jest żle?podstawy Verilog ktoś podpowie co jest żle?
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.interia.pl!not-for-mail
    From: ToTylkoJa <m...@n...chce.tego.poczta.fm>
    Newsgroups: pl.misc.elektronika
    Subject: podstawy Verilog ktoś podpowie co jest żle?
    Date: Tue, 29 Sep 2015 11:47:36 +0200
    Organization: INTERIA.PL S.A.
    Lines: 49
    Message-ID: <mudmj8$a1e$1@usenet.news.interia.pl>
    NNTP-Posting-Host: 114.120.225.195.static.bait.pl
    Mime-Version: 1.0
    Content-Type: text/plain; charset=utf-8
    Content-Transfer-Encoding: 8Bit
    X-Trace: usenet.news.interia.pl 1443519913 10286 195.225.120.114 (29 Sep 2015
    09:45:13 GMT)
    X-Complaints-To: u...@f...interia.pl
    NNTP-Posting-Date: Tue, 29 Sep 2015 09:45:13 +0000 (UTC)
    User-Agent: KNode/0.10.9
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:686634
    [ ukryj nagłówki ]

    Witam
    W ramach zapoznawania się z Verilogiem chciałem zrobić w FPGA prosty
    licznik. Przykłady które znalazłem działały w oparciu o jedno wejście
    zegarowe i wejście definiujące kierunek zliczania. Ja chcę zrobić coś jak
    74193 czyli dwa wejściami zegarowe odpowiednio 'clkup' i 'clkdown'.
    Wymyśliłem coś takiego:

    always @(posedge pom_przy1 or posedge pom_przy2)
    if (pom_przy2==1)
    licz_wysw <= licz_wysw - 1;
    else
    if (pom_przy1==1)
    licz_wysw <= licz_wysw + 1;

    Niestety licznik ten poprawnie liczy tylko 'w górę' a przy liczeniu 'w dół'
    przeskakuje po kilka stanów. Wydaje mi się że problem drgań przycisków
    można pominąć ponieważ oba przyciski są filtrowane w taki sam sposób. Na
    wszelki wypadek pokaże jak 'odkłócam' przyciski.

    prosty_przy przy1(.but(but0),.zegar(pom_clk),.wy(pom_przy1));
    prosty_przy przy2(.but(but1),.zegar(pom_clk),.wy(pom_przy2));

    Jeśli dobrze rozumuję to tworzę dwie instancje (tak się to chyba nazywa)
    modułu 'prosty_przy', czyli oba przyciski są traktowane tak samo. To może
    jeszcze na koniec moduł 'prosty_przy'

    module prosty_przy(
    input but,zegar,
    output wy
    );
    reg r0,r1,r2,r3,r4,r5;

    always @(posedge zegar)
    begin
    r5=r4;
    r4=r3;
    r3=r2;
    r2=r1;
    r1=r0;
    r0=but;
    end
    assign wy = r0 & r1 & r2 & r3 & r4 & r5;
    endmodule

    Nie jest to może najładniejszy przykład 'debouncera' ale chyba powinien
    działać. Całość jest napędzana zegarem około 760 Hz. Czekam na jakieś
    podpowiedzi.

    MArek

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: