Skocz do zawartości

Kurs FPGA - #8 - automat skończony w VHDL


Komentator

Pomocna odpowiedź

html_mig_img
Dzięki automatom skończonym możliwe jest łatwe zrealizowanie nawet pozornie trudnych i zawiłych urządzeń elektronicznych. Tym razem sprawdzimy w praktyce jak przejść od grafu reprezentującego działanie układu do kodu w VHDL. Dzięki temu przejdziemy cały proces tworzenia automatu skończonego.

UWAGA, to tylko wstęp! Dalsza część artykułu dostępna jest na blogu.

Przeczytaj całość »

Poniżej znajdują się komentarze powiązane z tym wpisem.

Link do komentarza
Share on other sites

Przepraszam, że się czepiam ale od pierwszego zdania mam drobną uwagę - mówimy o skończonych stanach, czy skończonym automacie? Tytuł "automat stanów skończonych" sugeruje skończone stany, co jest nieco dziwne. O skończonych automatach słyszałem, o skończonych zbiorach stanów też, ale automat stanów skończonych wydaje mi się dziwnym pojęciem. Czym jest stan nieskończony?

Link do komentarza
Share on other sites

Faktycznie może nazewnictwo nie jest zbyt dobrze tutaj dobrane. Nazwa taka pojawia się w niektórych publikacjach, ale nie jest najpopularniejsza. Wrócę z tym zaraz do pierwotnej wersji i będzie o "automatach skończonych" 😉

Link do komentarza
Share on other sites

Tak się zastanawiam. Czy w przypadku każdego stanu konieczne jest ustawianie go na nowo jeżeli nie zostały spełnione warunku do przejścia do kolejnego stanu (instrukcja w blokach else)?

when S0 =>
	if(not DPSwitch(0)) = '1' then
		Stan <= S1;
	end if;

Przetestowałem coś takiego i działa ale czy są jakieś inne względy z powodu, których w każdym stanie powinien znaleźć się blok else z określeniem aktualnego stanu ponownie na ten sam stan w którym już i tak się znajduje?

Edytowano przez Rogal
  • Lubię! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Dnia 9.03.2020 o 20:31, Rogal napisał:

Przetestowałem coś takiego i działa ale czy są jakieś inne względy z powodu, których w każdym stanie powinien znaleźć się blok else z określeniem aktualnego stanu ponownie na ten sam stan w którym już i tak się znajduje?

Mnie też coś takiego od razu przyszło do głowy. Wywaliłem else ze wszystkich czterech warunków i wyszło mi, że wszystko działa ok. Tak więc podbijam pytanie: czy to else w ogóle czemuś służy?

Link do komentarza
Share on other sites

Zgodnie z zasadami języka VHDL, sygnał na początku procesu ma automatycznie poprzednią wartość, dlatego te instrukcje else są z tego punktu widzenia zupełnie niepotrzebne.
Autor pewnie miał na myśli zwiększenie czytelności kodu (może uważa definiowanie kompletnych instrukcji warunkowych za dobrą praktykę programistyczną) albo obawiał się podobnego zagadnienia, jak z klauzulą when others – żeby zawsze definiować wprost wszystkie przypadki, ale moim zdaniem niepotrzebnie w tym przykładzie automatu.

  • Lubię! 1
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...