Witam
Mam taki oto problem stworzy³em sobie taki oto kod. Uk³ad ma tylko wej¶cie zegarowe i 3 wyj¶cia, zadeklarowalem sobie maszyne stanów 3 kolejno nastêpuj±ce po sobie od s1 do s3 i tak tak w ko³o z s3 przechodzi do s1 a ka¿demu ze stanów przypo¿±dkowane s± inne warto¶ci na wyj¶ciach, problem jaki napotka³em to to i¿ mimo ¿e zastosowa³em licznik licz który ma wp³ywaæ na czas trwania poszczególnych stanów maszyny jest on inkrementoany i po spe³nieniu warunku zerowany po przej¶ciu do kolejnego stanu jednak z tymi czasami co¶ siê nie zgadza bo po symulacji wychodzi na to ¿e stany trwaj± nastêpuj±co s1-3cykle zegara ,s2-15cykli zegara,s3-14cykli zegara co robie nie tak bo ju¿ niemam pojêcia ??? Dodam ¿e program pisze i symuluje w Quatrusie II Altery.
SUBDESIGN xyz (zeg:input; a,b,c:output; )
VARIABLE ster : machine with states (s1,s2,s3); licz[3..0]:dff; BEGIN ster.clk=zeg; licz[].clk=zeg; case ster is when s1=>
a=b"1"; b=b"0"; c=b"0"; if licz[].q==b"0100" then %stan ma trwaæ 5 impulsów zegarowych% licz[].d=b"0000"; ster=s2; end if; licz[].d=licz[].q+1; when s2=>
a=B"0"; b=b"1"; c=b"0"; if licz[].q==b"0011" then %stan ma trwaæ 4 impulsy zegarowe% licz[].d=b"0000"; ster=s3; end if; licz[].d=licz[].q+1; when s3=>
a=b"0"; b=b"0"; c=b"1"; if licz[].q==b"0001" then %stan ma trwaæ 2 impulsy zegarowe% licz[].d=b"0000"; ster=s1; end if; licz[].d=licz[].q+1; end case; END;