drobny problem z prostym programem dla XC9536

witam,

mam prosty program dla XC9536 napisany w Xilinx ISE:

MODULE Firmware

" *** inputs ***

FREQ PIN 1;

" *** outputs ***

CON PIN 22 istype 'com'; COF PIN 23 istype 'com';

" *** work vars

PON NODE istype 'com'; POF NODE istype 'com';

EQUATIONS

" *** version A ***

"PON = FREQ & !(CON.PIN); "POF = !FREQ & !(COF.PIN); "CON = !(!(PON) & COF.PIN); "COF = !(!(POF) & CON.PIN);

" *** version B ***

CON = !(!(FREQ & !(CON.PIN)) & COF.PIN); COF = !(!(!FREQ & !(COF.PIN)) & CON.PIN);

END

mam wejście FREQ oraz dwa wyjścia CON (które jest identyczne jak FREQ) oraz COF (które jest zanegowanym FREQ). całość działa jako przerzutnik RS

problem jest taki że "version A" nie działa poprawnie, a "version B" działa poprawnie, mimo że "version A" ma jedynie "wyciągnięte" na wierzch część z równiania wersji B do zmiennych pomocniczych PON i POF.

czy mógłby ktoś podpowiedzieć skąd ta różnica w działaniu?

pozdrawiam, SM

Reply to
SM
Loading thread data ...

W dniu 18.03.2011 19:19, SM pisze:

[...]
[...]

Pewnie właśnie z tego wyciągnięcia. Wykonywanie operacje są przecież równoległe, więc w A) COF.PIN i CON.PIN mogą mieć nową wartość zanim PON i POF zostaną wyliczone, w B) kompilator dba o odpowiednią kolejność na etapie pojedynczej linii.

Reply to
Michoo

W dniu 2011-03-20 12:48, Michoo pisze:

czyli pewnie pomogło by wrzucenie pinów fizycznych CON.PIN i COF.PIN do zmiennych roboczych/pomocniczych, np

CON_PIN NODE istype 'com'; COF_PIN NODE istype 'com';

CON_PIN = CON.PIN COF_PIN = COF.PIN PON = FREQ & !(CON_PIN); POF = !FREQ & !(COF_PIN); CON = !(!(PON) & COF_PIN); COF = !(!(POF) & CON_PIN);

byłoby to trochę dziwne. sądziłem że kompilator potraktuje zmienne "NODE istype 'com';" jak coś w rodzaju #define w C i dla pinów wyjściowych CON i COF ułoży pełne równanie zależności logicznych (czyli sam "przerobi" postać programu z wersji A na B), zamiast specjalnie tworzyć fizycznie w strukturze dodatkowe węzły.

SM

Reply to
SM

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.