Re: FPGA, VHDL detekcja zbocza i problemy

May 23, 2009 Last reply: 17 years ago 1 Replies

Wygląda na to, że zsynchronizowanie zewnętrznego sygnału poprzez przerzutnik D załatwiło sprawę:



signal dior_n:std_logic;



HDD_DIOR_N<=dior_n;



process(CLK) begin if clk'event and clk='1' then dior_n<=HOST_DIOR_N; end if; end process;



i teraz w kolejnym procesie licząc zbocza dior_n (tak jak w poprzednich postach), mam właściwą ilość.... Gdybym natomiast liczył bezpośrednio HOST_DIOR_N w procesie zależnym od CLK to dalej się krzaczy.



Może ktoś mi to z czystej ciekawości racjonalnie wyjaśni co dokładnie się dzieje, w którym miejscu hazard, że gubie zbocza gdy nie stosuje przerzutnika?



pozdrawiam i dziekuje za zainteresowanie tematem


Sygnal z pina idzie do wiecej niz jednej bramki/przerzutnika. Jesli wezmiesz pod uwage opoznienia propagacji (a moga byc mocno rozne dla dwoch roznych sciezek sygnalu), to czesto wychodzi ze jeden blok widzi zbocze Twojego sygnalu przed, a inny po zdarzeniu CLK. I cala logika glupieje, bo to jest stan 'zakazany'. Przez 'zakazany' tutaj rozumiem to, ze VHDL moze zachowac sie dowolnie - tego nic ani nikt nie sprawdza, na to nie ma optymizacji, nic absolutnie (nawet nie musi sie poprawnie zachowac w nastepnym okresie zegara). Wstaw se SignalTap i popatrz na wariant bez i z przerzutnikiem (moze byc problem - to nie zawsze idzie zobaczyc; a jak Signaltap zmodyfikuje uklad to moze nawet zaczac dzialac).

Jest to klasyczny przyklad przechodzenia miedzy dwoma domenami zegarowymi.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required