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