VHDL - hloupe otazky

Marek Peca marek na duch.cz
Čtvrtek Leden 2 08:54:18 CET 2014


>> Ako pisal kolega David, klucove slovo je stavovy automat, alebo anglicky
>> state machine.
>
> Coz je presne to, co kolega sam navrhoval (akorat nevedl, jak se tomu spravne
> nadava), viz:
>
> "Napada me udelat si process s citacem do 19 a pomoci CASE a WHEN pro
> jednotlive byte vzdy udelat spravnou udalost (povolit prijem, zapsat do
> registru, zvysit citac o 1)"

Coz NENI obecny, a casto ani spravne udelany, stavovy automat ve VHDL.
Jak znamo, synteza HDL->makra zatim jeste neni na urovni soudobych 
optimalizujicich kompilatoru, spise je na urovni Fortranu pro Cray -- kdy 
se neco optimalizuje a neco je ponechano konstrukterovi. Volbou jazykovych 
struktur se voli, co zhruba synteza vyprodukuje. Muzeme se hadat o tom, 
zda je to filosoficky dobre, nebo blbe... ale to bych nerad.

Nuze, stavovy automat ve sve obecnosti muze mit spoustu konkretnich 
implementaci, lisicich se v synchronnim svete vlastne pouze volbou 
kodovani stavoveho slova. Co je uvedeno vyse, je kodovani v celych cislech 
0..N-1. Coz je ovsem ve spouste pripadu krute nevyhodne, napr. kdyz jde o 
rychlost. Casto je lepsi mit treba kodovani "one-hot": 1000, 0100, 0010, 
0001 atd., tedy misto citace delky ceil(log2(N)) s dekoderem je pak pouzit 
vlastne posuvny registr delky N.

Proto doporucuji v techto pripadech neprasit a napsat automat jako 
automat, a ne jako citac. Tedy pouzit abstraktni vyctovy typ misto celeho 
cisla. A pak treba v Synplify zadat nestandardni atribut, ktery zajisti 
one-hot kodovani.

Samozrejme mnohem slozitejsi oblasti je, kdyz pocty stavu jsou do stovek 
az miliard a koncept stavoveho automatu uz tak nejak splyva bud s CPU, 
nebo s obecne intuitivne popropojovanou mnozinou podobvodu.

Jeste stoji za zminku pouziti hierarchickych stavovych automatu, kdy 
stav nadrazeneho automatu povoluje (enable) krokovani vnorenych masin.
To je dost uzitecna vec, zejmena pro slozitejsi sekvencery.


ZdraviM.


Další informace o konferenci Hw-list