Skocz do zawartości

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


Pomocna odpowiedź

Napisano
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.

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?

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" 😉

  • 2 lat(a) później...
(edytowany)

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
  • 1 rok później...
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?

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

@adamnar @piotr96 z tego co pamiętam istotą tego elsa było przedstawienie stanu stabilnego. W układach asynchronicznych przedstawionych za pomocą grafu przejść jest to reprezentowane strzałką wychodzącą i wchodzącą do tego samego węzła.

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...