Witam! Mam prosbe o wskazowki dotyczace projektu, ktory mecze od tygodnia... napisalem sobie taki detektor: SUBDESIGN detector ( i[7..0], zegar, reset :INPUT; o :OUTPUT; -- o=B"1" oznacza "sekwencja wykryta" ) VARIABLE us: MACHINE WITH STATES(s1,s2,s3,s4,s5,s6); BEGIN us.clk = zegar; us.reset = reset;
IF us == s1 THEN IF i[] == B"00011000" THEN us = s2; --wykrywam sobie jakies sekwencje ELSE us = s1; END IF; END IF;
[ciach - tutaj przejscia innych stanow]END;
i takie alu: INCLUDE "LPM_AND.INC"; CONSTANT N=8;
-- 8-bitowa szyna danych SUBDESIGN alu ( a[7..0], b[7..0] : Input; o[7..0] : Output; --wynik lpm_and ) VARIABLE dane : lpm_and WITH ( LPM_WIDTH = 8, LPM_SIZE = 2 ); BEGIN FOR i IN N-1 TO 0 GENERATE dane.data[0][i] = a[i]; dane.data[1][i] = b[i]; END GENERATE; o[]=dane.result[]; END;
No i tutaj proste rzeczy (jak dla mnie) sie skonczyly - glowie sie teraz, jak to polaczyc ze soba. Cel jest taki, ze jak detektor wykryje sekwencje to alu przetwarza dwa nastepne bajty pojawiajace sie na szynie danych. I wlasnie z tym mam najwiekszy problem - jak przechwycic dwie kolejne wartosci do alu (bo w tej mojej wersji mam 2 wejscia - a[] i b[]).
Szperanie w google przez caly dzien - nic, AHDL tutorial tez nic nie wniosl nowego.
Bede wdzieczny za jakies wskazowki. Pozdrawiam Michal
PS. Acha - automat _ma_ byc na IF..ELSE.. a w alu _ma_ byc LPM_AND (a nie tablica prawdy i zwykly AND)