eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikadrobny problem z prostym programem dla XC9536
Ilość wypowiedzi w tym wątku: 3

  • 1. Data: 2011-03-18 18:19:04
    Temat: drobny problem z prostym programem dla XC9536
    Od: SM <b...@k...com.pl>

    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


  • 2. Data: 2011-03-20 11:48:15
    Temat: Re: drobny problem z prostym programem dla XC9536
    Od: Michoo <m...@v...pl>

    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.


    --
    Pozdrawiam
    Michoo


  • 3. Data: 2011-03-24 05:14:10
    Temat: Re: drobny problem z prostym programem dla XC9536
    Od: SM <b...@k...com.pl>

    W dniu 2011-03-20 12:48, Michoo pisze:
    > 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

strony : [ 1 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: