Witam serdecznie,
Jestem dość początkujący jeśli chodzi o układy programowalne i mam problem polegający na różnicy wyników działania symulacji oraz zaprogramowanego urządzenia. Zaczęło się od tego, że zmontowałem sobie płytkę z cpld xc9572xl, podłączyłem oscylator 40Mhz i zrobiłem dzielnik częstotliwości przez dwa. Układ działa prawidłowo, ale sygnał wyjściowy zmienia się nie na tym zboczu na którym robi to w symulacji. Z obawy, że układ CPLD może być uszkodzony (wymontowałem go ze starego Mikrotika), zrobiłem dokładnie to samo na FPGA (cyclone ii ep2c5t) no i działa to dokładnie tak samo jak na CPLD. Oto mój kod VHLD:
Symulację robiłem w ISE Webpack oraz za pomocą GHDL. W każdym przypadku wynik był taki sam. Patrząc na wykresy z symulacji rozumiem to tak, że przy narastającym zboczu 'in1' zmienia się aktualna wartość sygnału 'tmp', a sygnał wyjściowy 'out1' przejmuje starą wartość 'tmp' (jeszcze przed zmianą). Przy opadającym zboczu 'in1' do sygnału 'out1' zapisywana jest aktualna wartość 'tmp'. Z tego powodu sygnał wyjściowy zmienia się zawsze przy narastającym zboczu 'in1'.
Jednak w zaprogramowanym urządzeniu działa to tak, że sygnał wyjściowy zmienia się przy narastającym zboczu sygnału wejściowego.
Czy ktoś mógłby mi to wytłumaczyć? Czytałem, że procesy nie mogą modyfikować wartości sygnału na podstawie dwóch rodzajów zmian wartości sygnału który jest w liście czułości procesu. Tj. zmieniać wartości sygnału w procesie w odpowiedzi zarówno na zbocze narastające jak i opadające. Tylko to wytłumaczenie przychodzi mi do głowy, tj. że sygnał 'out1' dostaje wartość 'tmp' dopiero przy kolejnym narastającym zboczu ponieważ zmiana przy opadającym zboczu jest pomijana.
Czy ktoś mógłby mi wytłumaczyć czy mój tok rozumowania jest poprawny? a jeśli nie, to dlaczego działa to w ten sposób?
Z góry dziękuję za pomoc.
symulacja:
działanie urządzenia:

Jestem dość początkujący jeśli chodzi o układy programowalne i mam problem polegający na różnicy wyników działania symulacji oraz zaprogramowanego urządzenia. Zaczęło się od tego, że zmontowałem sobie płytkę z cpld xc9572xl, podłączyłem oscylator 40Mhz i zrobiłem dzielnik częstotliwości przez dwa. Układ działa prawidłowo, ale sygnał wyjściowy zmienia się nie na tym zboczu na którym robi to w symulacji. Z obawy, że układ CPLD może być uszkodzony (wymontowałem go ze starego Mikrotika), zrobiłem dokładnie to samo na FPGA (cyclone ii ep2c5t) no i działa to dokładnie tak samo jak na CPLD. Oto mój kod VHLD:
Code: vhdl
Symulację robiłem w ISE Webpack oraz za pomocą GHDL. W każdym przypadku wynik był taki sam. Patrząc na wykresy z symulacji rozumiem to tak, że przy narastającym zboczu 'in1' zmienia się aktualna wartość sygnału 'tmp', a sygnał wyjściowy 'out1' przejmuje starą wartość 'tmp' (jeszcze przed zmianą). Przy opadającym zboczu 'in1' do sygnału 'out1' zapisywana jest aktualna wartość 'tmp'. Z tego powodu sygnał wyjściowy zmienia się zawsze przy narastającym zboczu 'in1'.
Jednak w zaprogramowanym urządzeniu działa to tak, że sygnał wyjściowy zmienia się przy narastającym zboczu sygnału wejściowego.
Czy ktoś mógłby mi to wytłumaczyć? Czytałem, że procesy nie mogą modyfikować wartości sygnału na podstawie dwóch rodzajów zmian wartości sygnału który jest w liście czułości procesu. Tj. zmieniać wartości sygnału w procesie w odpowiedzi zarówno na zbocze narastające jak i opadające. Tylko to wytłumaczenie przychodzi mi do głowy, tj. że sygnał 'out1' dostaje wartość 'tmp' dopiero przy kolejnym narastającym zboczu ponieważ zmiana przy opadającym zboczu jest pomijana.
Czy ktoś mógłby mi wytłumaczyć czy mój tok rozumowania jest poprawny? a jeśli nie, to dlaczego działa to w ten sposób?
Z góry dziękuję za pomoc.
symulacja:

działanie urządzenia:
