-
Data: 2015-09-29 12:13:29
Temat: Re: podstawy Verilog ktoś podpowie co jest żle?
Od: Adam Górski <g...@w...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Cześć,
A teraz zastanów się co jest wejściem zegarowym a co sygnałem mówiącym o
kierunku zliczania. A może są dwa wejścia zegarowe ?
A może nie ma przerzutników z dwoma sygnałami zegarowymi w Twoim sprzęcie?
Typowy problem początkujących. Pamiętaj zawsze na końcu występują bramki
i przerzutniki ( fpga ) , koniec i kropka.
Pisząc w verilogu czy VHDL trzeba o tym pamiętać.
Poniżej tak jak to powinno wyglądać :
always @( jakiś_zegar)
if (pom_przy2==1)
licz_wysw <= licz_wysw - 1;
else
if (pom_przy1==1)
licz_wysw <= licz_wysw + 1;
Jakiś zegar taktuje przerzutniki a sygnały informujące o zliczaniu w
górę czy dół jedynie aktywują zmianę stanu ( lub nie )
Może trochę duże uproszczenie ale wydaje mi się że niedaleko odbiega.
Pomijam problem odbijania przycisków i synchronizacji sygnałów pom_przy1
i 2 do sygnału zegarowego jakiś_zegar.
Pzdr.
Adam
> 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
>
Następne wpisy z tego wątku
- 29.09.15 12:18 Grzegorz Kurczyk
- 29.09.15 12:35 ToTylkoJa
- 29.09.15 12:46 ToTylkoJa
- 29.09.15 12:50 Grzegorz Kurczyk
- 29.09.15 12:54 Grzegorz Kurczyk
- 29.09.15 13:12 Adam Górski
- 29.09.15 13:12 J.F.
Najnowsze wątki z tej grupy
- Szukam monitora HDMI ok. 4"
- Obcinaczki z łapaczem
- termostat do lodowki
- SEP 1 kV E
- Aku LiPo źródło dostaw - ktoś poleci ?
- starość nie radość
- Ataki hakerskie
- Akumulatorki Ni-MH AA i AAA Green Cell
- Dławik CM
- JDG i utylizacja sprzetu
- Identyfikacja układ SO8 w sterowniku migających światełek choinkowych
- DS1813-10 się psuje
- Taki tam szkolny problem...
- LIR2032 a ML2032
- SmartWatch Multimetr bezprzewodowy
Najnowsze wątki
- 2024-12-16 W telefonie brak szufladki na drugą kartę SIM
- 2024-12-16 Szukam monitora HDMI ok. 4"
- 2024-12-16 Poznań => Key Account Manager <=
- 2024-12-16 Akwarium w aucie
- 2024-12-16 Warszawa => Account Manager - Usługi rekrutacyjne <=
- 2024-12-16 Warszawa => Expert Recruiter 360 <=
- 2024-12-16 Gdańsk => System Architect (background deweloperski w Java) <=
- 2024-12-16 Warszawa => Key Account Manager <=
- 2024-12-16 Warszawa => Spedytor Międzynarodowy <=
- 2024-12-16 Białystok => Analityk w dziale Trade Development (doświadczenie z Po
- 2024-12-16 Warszawa => Programista Microsoft Dynamics 365 Business Central <=
- 2024-12-16 Wrocław => Konsultant wdrożeniowy Comarch XL/Optima (Księgowość i
- 2024-12-16 Szczecin => Key Account Manager (ERP) <=
- 2024-12-16 Lublin => Inżynier Serwisu Sprzętu Medycznego <=
- 2024-12-16 Gdańsk => Specjalista ds. Sprzedaży <=