RTV forum PL | NewsGroups PL

Różnice w działaniu wersji A i B programu dla XC9536 w Xilinx ISE

drobny problem z prostym programem dla XC9536

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Różnice w działaniu wersji A i B programu dla XC9536 w Xilinx ISE

SM
Guest

Fri Mar 18, 2011 7:19 pm   



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

Michoo
Guest

Sun Mar 20, 2011 12:48 pm   



W dniu 18.03.2011 19:19, SM pisze:
Quote:
witam,

mam prosty program dla XC9536 napisany w Xilinx ISE:
[...]
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);

[...]
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.
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.


--
Pozdrawiam
Michoo

SM
Guest

Thu Mar 24, 2011 6:14 am   



W dniu 2011-03-20 12:48, Michoo pisze:
Quote:
W dniu 18.03.2011 19:19, SM pisze:
witam,

mam prosty program dla XC9536 napisany w Xilinx ISE:
[...]
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);

[...]
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.
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.


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

elektroda NewsGroups Forum Index - Elektronika Polska - Różnice w działaniu wersji A i B programu dla XC9536 w Xilinx ISE

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map