Re: FPGA, VHDL detekcja zbocza i problemy

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

Reply to
krzysztof.jakubczyk
Loading thread data ...

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.

Reply to
Jerry1111

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.