eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaProblemy z implementacją w CPLD
Ilość wypowiedzi w tym wątku: 23

  • 1. Data: 2009-01-22 16:53:14
    Temat: Problemy z implementacją w CPLD
    Od: "Sludig" <...@...pl>

    Witam

    Realizuje dość duży projekt na CPLD CoolRunner2 Xilinxa w VHDLu. Całość
    działa na 50 MHz. Układ został zaprojektowany przy pomocy behavioral
    simulator przed zaprojektowaniem i zamówieniem pcb. Pomijając standardowe,
    wstępne trudności można powiedzieć, że układ od razu działał dobrze.
    Jednak po zmianie Optimization goal z Area na Speed sygnały wyjściowe były
    bardzo przekłamane, a maszyna stanu nie przechodziła pełnego cyklu.
    Podobnie, ale nie identycznie, działo się, gdy zmieniałem Optimization
    effort z normal na high lub FSM Encoding Algorithm z compact na Gray lub
    hot-one.
    Po poprawieniu fragmentu kodu, który myślałem, że może sprawiać problemy
    jest dużo lepiej. Teraz tylko zmiana FSM Encoding Algorithm na hot-one
    powoduje problemy (na razie nie określiłem, w którym miejscu i dlaczego).

    Skąd biorą się takie problemy, jak szukać ich przyczyn i najważniejsze - jak
    pisać, żeby one nie występowały?

    Można by powiedzieć "zostań przy konfiguracji, która działa", ale te
    problemy prawie na pewno są wynikiem hazardów sygnałów wewnętrznych CPLD i
    zostawienie tego, tak jak jest byłoby ryzykowne, a już na pewno nie
    eleganckie.

    pozdrawiam
    sludig


  • 2. Data: 2009-01-22 21:16:46
    Temat: Re: Problemy z implementacją w CPLD
    Od: Jerry1111 <j...@w...pl.pl.wp>

    Sludig wrote:

    > Jednak po zmianie Optimization goal z Area na Speed sygnały wyjściowe były
    > bardzo przekłamane, a maszyna stanu nie przechodziła pełnego cyklu.

    Czy zachowanie jest takie same na plytce _i_ w symulatorze?

    > Podobnie, ale nie identycznie, działo się, gdy zmieniałem Optimization
    > effort z normal na high lub FSM Encoding Algorithm z compact na Gray lub
    > hot-one.
    > Po poprawieniu fragmentu kodu, który myślałem, że może sprawiać problemy
    > jest dużo lepiej. Teraz tylko zmiana FSM Encoding Algorithm na hot-one
    > powoduje problemy (na razie nie określiłem, w którym miejscu i dlaczego).
    >
    > Skąd biorą się takie problemy, jak szukać ich przyczyn i najważniejsze -
    > jak
    > pisać, żeby one nie występowały?

    Te same pytanie: Czy zachowanie jest takie same na plytce _i_ w
    symulatorze (symulator na poziomie bramek, nie vhdl!)?

    --
    Jerry1111


  • 3. Data: 2009-01-23 10:59:05
    Temat: Re: Problemy z implementacją w CPLD
    Od: Adam Górski <t...@m...pl>

    Sludig pisze:
    > Witam
    >
    > Realizuje dość duży projekt na CPLD CoolRunner2 Xilinxa w VHDLu. Całość
    > działa na 50 MHz. Układ został zaprojektowany przy pomocy behavioral
    > simulator przed zaprojektowaniem i zamówieniem pcb. Pomijając
    > standardowe, wstępne trudności można powiedzieć, że układ od razu
    > działał dobrze.
    > Jednak po zmianie Optimization goal z Area na Speed sygnały wyjściowe były
    > bardzo przekłamane, a maszyna stanu nie przechodziła pełnego cyklu.
    > Podobnie, ale nie identycznie, działo się, gdy zmieniałem Optimization
    > effort z normal na high lub FSM Encoding Algorithm z compact na Gray lub
    > hot-one.
    > Po poprawieniu fragmentu kodu, który myślałem, że może sprawiać problemy
    > jest dużo lepiej. Teraz tylko zmiana FSM Encoding Algorithm na hot-one
    > powoduje problemy (na razie nie określiłem, w którym miejscu i dlaczego).
    >
    > Skąd biorą się takie problemy, jak szukać ich przyczyn i najważniejsze -
    > jak
    > pisać, żeby one nie występowały?
    >
    > Można by powiedzieć "zostań przy konfiguracji, która działa", ale te
    > problemy prawie na pewno są wynikiem hazardów sygnałów wewnętrznych CPLD i
    > zostawienie tego, tak jak jest byłoby ryzykowne, a już na pewno nie
    > eleganckie.
    >
    > pozdrawiam
    > sludig
    >
    Witam,

    Jezeli to nie tajne to daj zrodla na grupie - > bedzie mozna cos wiecej
    powiedziec. Prawdopodobnie problemem jest :
    - brak synchronizacji sygnałów we wzgledem zegara automatu
    - wymieszanie logiki async z sync
    - dzielenie zegarów
    - brak syncronizacj sygnałów zew.

    a moze jeszcz kilka innych a moze nie :)

    Adam


  • 4. Data: 2009-01-23 11:00:08
    Temat: Re: Problemy z implementacją w CPLD
    Od: "Sludig" <...@...pl>



    >> Jednak po zmianie Optimization goal z Area na Speed sygnały wyjściowe
    >> były
    >> bardzo przekłamane, a maszyna stanu nie przechodziła pełnego cyklu.
    >
    > Czy zachowanie jest takie same na plytce _i_ w symulatorze?

    Nie udało mi się uruchomić jeszcze symulacji post-fix. Wyskakują jakieś
    errory i nie mam póki co czasu z nimi powalczyć.


    >> Skąd biorą się takie problemy, jak szukać ich przyczyn i najważniejsze -
    >> jak
    >> pisać, żeby one nie występowały?
    >
    > Te same pytanie: Czy zachowanie jest takie same na plytce _i_ w
    > symulatorze (symulator na poziomie bramek, nie vhdl!)?

    Ta sama odpowiedź. Chyba faktycznie bede musiał się zabrać za tą symulację
    post implementacyjną.

    A jeżeli wyjdą/ nie wyjdą jakieś błędy to co wtedy zrobić? jak wyeliminować
    potencjalne hazardy?

    pozdrawiam


  • 5. Data: 2009-01-23 11:15:47
    Temat: Re: Problemy z implementacją w CPLD
    Od: "Sludig" <...@...pl>

    > Jezeli to nie tajne to daj zrodla na grupie - > bedzie mozna cos wiecej
    > powiedziec.

    Niestety nie mogę, projekt komercyjny, szef by mnie zabił ;) Poza tym kod
    jest dosyć długi.

    >Prawdopodobnie problemem jest :
    > - brak synchronizacji sygnałów we wzgledem zegara automatu

    sygnały wejściowe zmieniaja się na zboczu narastającym zegara, a FSM zmienia
    stan na zboczu opadającym. Jest to wygodne bo łatwo udało mi się zrobić
    zapis do SRAMu.

    > - wymieszanie logiki async z sync

    większość układów jest taktowana z tego samego zegara, ale niektóre mają
    rozbudowane warunki clockEnable. Tylko moduł UART ma inny zegar.

    > - dzielenie zegarów

    UART ma własny zegar z drugiego wejścia zegarowego i on jest dzielony na 16.

    > - brak syncronizacj sygnałów zew.

    to jest niemożliwe. Tylko, że te sygnały pięknie nie wyglądają. Spore over i
    under shooty. I poziom masy tak jakby się skokami zmienia od, ale to chyba
    mnie oscyloskop okłamuje.

    pozdrawiam


  • 6. Data: 2009-01-23 16:03:52
    Temat: Re: Problemy z implementacją w CPLD
    Od: Adam Górski <t...@m...pl>

    Sludig pisze:
    >> Jezeli to nie tajne to daj zrodla na grupie - > bedzie mozna cos
    >> wiecej powiedziec.
    >
    > Niestety nie mogę, projekt komercyjny, szef by mnie zabił ;) Poza tym
    > kod jest dosyć długi.
    >
    >> Prawdopodobnie problemem jest :
    >> - brak synchronizacji sygnałów we wzgledem zegara automatu
    >
    > sygnały wejściowe zmieniaja się na zboczu narastającym zegara, a FSM
    > zmienia stan na zboczu opadającym. Jest to wygodne bo łatwo udało mi się
    > zrobić zapis do SRAMu.

    Napisz jeszcze jaka częstotliwość zegara.
    Nie jest zalecane mieszanie układów sync. działając na różnych zboczach.

    >
    >> - wymieszanie logiki async z sync
    >
    > większość układów jest taktowana z tego samego zegara, ale niektóre mają
    > rozbudowane warunki clockEnable. Tylko moduł UART ma inny zegar.

    Rozbudowane warunki clockEnable raczej nie szkodzą. No w sumie zależy
    jak rozbudowane :)

    >
    >> - dzielenie zegarów
    >
    > UART ma własny zegar z drugiego wejścia zegarowego i on jest dzielony na
    > 16.

    To powinno tez byc robione przez ClockEnable co 16 cykl

    >
    >> - brak syncronizacj sygnałów zew.
    >
    > to jest niemożliwe. Tylko, że te sygnały pięknie nie wyglądają. Spore
    > over i under shooty. I poziom masy tak jakby się skokami zmienia od, ale
    > to chyba mnie oscyloskop okłamuje.

    Co jest niemożliwe ?
    Tak overshoot i undershoot czesto pochodzą od oscyloskopu choć nie
    zawsze ( mam na mysli doprowadzenia)

    Nie znam Twojego układu ale wyobraź sobie że jeżeli sygnał zew nie jest
    synchronizowany z zegarem automatu i występuję jako sygnał wpływający na
    pracę automatu to może to spowodować trudne do przewidzenia jego działanie.

    Pozdrawiam

    Adam

    >
    > pozdrawiam


  • 7. Data: 2009-01-24 13:01:35
    Temat: Re: Problemy z implementacją w CPLD
    Od: Jerry1111 <j...@w...pl.pl.wp>

    Sludig wrote:
    >> Jezeli to nie tajne to daj zrodla na grupie - > bedzie mozna cos
    >> wiecej powiedziec.
    >
    > Niestety nie mogę, projekt komercyjny, szef by mnie zabił ;) Poza tym
    > kod jest dosyć długi.

    Zawsze mozemy NDA podpisac - ale to juz offline ;-)

    >> Prawdopodobnie problemem jest :
    >> - brak synchronizacji sygnałów we wzgledem zegara automatu
    >
    > sygnały wejściowe zmieniaja się na zboczu narastającym zegara,

    _gwarantujesz_ to? Czy tylko 'powinny sie zmieniac'?

    > a FSM
    > zmienia stan na zboczu opadającym. Jest to wygodne bo łatwo udało mi się
    > zrobić zapis do SRAMu.
    >
    >> - wymieszanie logiki async z sync
    >
    > większość układów jest taktowana z tego samego zegara, ale niektóre mają
    > rozbudowane warunki clockEnable. Tylko moduł UART ma inny zegar.

    Wiekszosc, czyli nie wszystkie. Trzeba uwazac przy przechodzeniu miedzy
    domenami.

    >
    >> - dzielenie zegarów

    Nigdy (nie ma po co). Jak Adam Gorski napisal - uzywac enable.

    > UART ma własny zegar z drugiego wejścia zegarowego i on jest dzielony na
    > 16.
    >
    >> - brak syncronizacj sygnałów zew.
    >
    > to jest niemożliwe.

    OK.

    > Tylko, że te sygnały pięknie nie wyglądają.

    Mozesz miec false-trigger. Wtedy _moze_ (ale tylko moze) jedna
    kompilacja byc na to bardziej czula niz druga - zwlaszcza gdy polegasz
    na zewnetrznej synchronizacji sygnalow, bo wtedy zamiast zlej wartosci
    sygnalu widzianego przez Twoj uklad, zaczynaja sie dziac cuda.

    > Spore
    > over i under shooty. I poziom masy tak jakby się skokami zmienia od, ale
    > to chyba mnie oscyloskop okłamuje.

    A plytke ktos sprawdzal pod katem SI?

    --
    Jerry1111


  • 8. Data: 2009-01-24 19:27:16
    Temat: Re: Problemy z implementacją w CPLD
    Od: "Sludig" <...@...pl>

    Witam

    >>> Prawdopodobnie problemem jest :
    >>> - brak synchronizacji sygnałów we wzgledem zegara automatu
    >> sygnały wejściowe zmieniaja się na zboczu narastającym zegara,
    > _gwarantujesz_ to? Czy tylko 'powinny sie zmieniac'?

    tak mówi datasheet układu, który te dane wypluwa i tak widziałem na
    oscyloskopie.

    >> większość układów jest taktowana z tego samego zegara, ale niektóre mają
    >> rozbudowane warunki clockEnable. Tylko moduł UART ma inny zegar.
    > Wiekszosc, czyli nie wszystkie. Trzeba uwazac przy przechodzeniu miedzy
    > domenami.

    FSM czeka na potwierdzenie odebrania danych przez UART w określonym stanie.
    FSM zrealizowałem jako automal Mealy'ego. Może tu jest problem, ale narazie
    go nie widze. Musze w pracy zobaczyć jak symulacja post-fix wygląda.

    >>> - dzielenie zegarów
    > Nigdy (nie ma po co). Jak Adam Gorski napisal - uzywac enable.

    To będzie pierwsza rzecz jaką zrobie w poniedziałek rano ;)

    >> Tylko, że te sygnały pięknie nie wyglądają.
    > Mozesz miec false-trigger. Wtedy _moze_ (ale tylko moze) jedna kompilacja
    > byc na to bardziej czula niz druga - zwlaszcza gdy polegasz na zewnetrznej
    > synchronizacji sygnalow, bo wtedy zamiast zlej wartosci sygnalu widzianego
    > przez Twoj uklad, zaczynaja sie dziac cuda.

    Mam tylko syganły, które próbkuje na określonym zboczu zegara. Od trzech
    linii zależy stan automatu, reszta to linie danych, które teoretycznie
    wpływu nie mają na stan automatu i działanie układu.

    >> Spore over i under shooty. I poziom masy tak jakby się skokami zmienia
    >> od, ale to chyba mnie oscyloskop okłamuje.
    > A plytke ktos sprawdzal pod katem SI?

    Nie. Wiem, że niektóre programy udostępniają takie symulacje, ale nie
    wiedziałbym jak się do tego zabrać.


  • 9. Data: 2009-01-24 21:31:21
    Temat: Re: Problemy z implementacją w CPLD
    Od: Jerry1111 <j...@w...pl.pl.wp>

    Sludig wrote:
    > Witam
    >
    >>> większość układów jest taktowana z tego samego zegara, ale niektóre
    >>> mają rozbudowane warunki clockEnable. Tylko moduł UART ma inny zegar.
    >> Wiekszosc, czyli nie wszystkie. Trzeba uwazac przy przechodzeniu
    >> miedzy domenami.
    >
    > FSM czeka na potwierdzenie odebrania danych przez UART w określonym
    > stanie.

    Ale masz DFFy miedzy uartem i fsm? Bo jak nie, to masz problem (wtedy,
    gdy sygnal idzie do wiecej niz jednego wejscia fsm - rozne domeny
    zegarowe, wiec kazde wejscie moze widziec inny sygnal, gdy masz pecha).
    Czasem da sie to 'namierzyc' zmieniajac jakis pin w 'when others =>'
    (jesli tam nie powinno sie trafic).

    > FSM zrealizowałem jako automal Mealy'ego. Może tu jest problem,
    > ale narazie go nie widze. Musze w pracy zobaczyć jak symulacja post-fix
    > wygląda.

    W post-fit moze byc ciezko to uchwycic, bo ciezko porobic jest 'realne'
    przebiegi. Najlepszy bylby signal-tap, no ale Ty cpld uzywasz.

    >>>> - dzielenie zegarów
    >> Nigdy (nie ma po co). Jak Adam Gorski napisal - uzywac enable.
    >
    > To będzie pierwsza rzecz jaką zrobie w poniedziałek rano ;)
    >
    >>> Tylko, że te sygnały pięknie nie wyglądają.
    >> Mozesz miec false-trigger. Wtedy _moze_ (ale tylko moze) jedna
    >> kompilacja byc na to bardziej czula niz druga - zwlaszcza gdy polegasz
    >> na zewnetrznej synchronizacji sygnalow, bo wtedy zamiast zlej wartosci
    >> sygnalu widzianego przez Twoj uklad, zaczynaja sie dziac cuda.
    >
    > Mam tylko syganły, które próbkuje na określonym zboczu zegara. Od trzech
    > linii zależy stan automatu,

    Daj po rejestrze na wszystkie linie wejsciowe. Jak problem zniknie, to
    wiesz gdzie szukac.

    > reszta to linie danych, które teoretycznie
    > wpływu nie mają na stan automatu i działanie układu.
    >
    >>> Spore over i under shooty. I poziom masy tak jakby się skokami
    >>> zmienia od, ale to chyba mnie oscyloskop okłamuje.
    >> A plytke ktos sprawdzal pod katem SI?
    >
    > Nie. Wiem, że niektóre programy udostępniają takie symulacje, ale nie
    > wiedziałbym jak się do tego zabrać.


    --
    Jerry1111


  • 10. Data: 2009-01-26 16:08:53
    Temat: Re: Problemy z implementacją w CPLD
    Od: "Sludig" <...@...pl>

    Witam

    Po przeczytaniu waszych uwag zrobiłem co następuje:
    - Zamiast dzielić clocka dla UARTu użyłem w jego strukturze ClkEnable
    - Wszystkie sygnały wejściowe przechodzą przez rejestry wejściowe DFF (w
    celach testowych)
    - dodałem stan w FSM, w którym układ się zatnie jeżeli przejdzie do others
    =>

    Jednak nadal jest tak, że po zmianie numeracji stanów na Hot-one układ
    przestaje działać, ale najwyraźniej nie wchodzi do others (albo kompilator
    zoptymalizował ten stan). Na wykonanie symulacji post-fix nie miałem czasu
    niestety.

    pozdrawiam
    sludig

strony : [ 1 ] . 2 . 3


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: