Archiwum pl.misc.elektronika na elektroda.pl



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści


end if;
end process;

Dout <= D;

END test_io_architecture;


Grzegorz Kępiński

JA


--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl

========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mail
From: "Pszemol" <Pszemol_at_nospam_PolBox.com>
Newsgroups: pl.misc.elektronika
Subject: =?iso-8859-2?Q?Re:_Quartus_5.1=2C_EPM7128_=28d=B3ugawe...=29?=
Date: Fri, 24 Feb 2006 12:22:45 -0600
Organization: Onet.pl
Lines: 56
Message-ID: <dtmtqq.r88.0_at_nospam_poczta.onet.pl>
References: <dtn2jp$8st$1_at_nospam_news.supermedia.pl> <0aa0.000001a3.43ff2d9d_at_nospam_newsgate.onet.pl>
Reply-To: "Pszemol" <Pszemol_at_nospam_BigFoot.com>
NNTP-Posting-Host: gw.petrovend.com
Mime-Version: 1.0
Content-Type: text/plain;
format=flowed;
charset="iso-8859-2";
reply-type=original
Content-Transfer-Encoding: 8bit
X-Trace: news.onet.pl 1140805375 3267 204.248.56.195 (24 Feb 2006 18:22:55 GMT)
X-Complaints-To: usenet_at_nospam_news.onet.pl
NNTP-Posting-Date: Fri, 24 Feb 2006 18:22:55 +0000 (UTC)
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180
X-Sender: w9IJAbCSghu+YInLEag08PM6uqEI3NtP
X-Newsreader: Microsoft Outlook Express 6.00.2900.2180
X-Priority: 3
X-MSMail-Priority: Normal
X-Posting-Agent: Hamster/1.3.13.0
Xref: news-archive.icm.edu.pl pl.misc.elektronika:444842

"JA" <j_andrWYTNIJTO_at_nospam_freenet.de> wrote in message news:0aa0.000001a3.43ff2d9d_at_nospam_newsgate.onet.pl...
> ARCHITECTURE Test_IO_architecture OF Test_IO IS
> TYPE t_state IS ( s0, s1, s2, s3 );
[..]
> PROCESS ( clk, rst )
> BEGIN
> IF rst = '0' THEN
> state <= s0; -- resetowanie ukladu / start maszyny
> ELSIF ( clk'EVENT and clk = '1' ) THEN
> state <= s

Poprzedni Następny
Wiadomość
Spis treści


Trzeba bardzo uważać na takie typy sygnałów...

Zmienna typu "t_state" realizowana jest po prostu jako
kolekcja sygnałów jednobitowych (drutów!) i stan s1
oznacza że jest jedynka na jednym drucie a zera
na innych... Jeśli teraz w procesie kombinatoryjnym
zmiana "state_nx" nastąpi bardzo blisko, tuż przed
użyciem jej w procesie synchronicznym (czyli tuż przed
lub w trakcie trwania rosnącego zbocza "clk") to będzie
bida, gdy poprzedni stan zniknie a nowy się jeszcze
nie pojawi - wszystkie bity stanu będą zero, i nam
maszynka stanów zgłupieje...

Miałem taki przypadek bardzo niedawno - zrobiłem
projekt UARTa w VHDL i tam odbiornik RX miał właśnie
taką maszynkę stanów w której przechodziłem ze stanu
czekania na bit startu asynchronicznie do stanu
synchronizacji trwającego 1/2 czasu trwania bitu tylko
na podstawie stanu wejścia RXDATA.
Umnkęło mojej uwadze to, że zmiana RXDATA nastąpi
całkowicie asynchronicznie do sygnału zegarowego
który taktuje moją maszynę stanów - no i mój UART
miał dziwną tendencję do "zakleszczania" się po
kilku dniach pracy... Długie i bolesne testy kończyły
się niemożnością powtórzenia problemu w labie
i dopiero podłączenie wejścia mojego UARTU do
wyjścia generatora fali prostokątnej i zmodulowania
tej fali FM dało gwarancję zakleszczenia się UARTA
za każdym razem :-))) Wtedy łatwo już było o diagnozę
i naprawę błędu: puściłem linię RXDATA przez zatrzask
sterowany przeciwnym zboczem zegara RXCLOCK (16x baud)
i UART pracuje jak ta lala...

W sumie trochę zawiodłem się na implementacji maszyny
stanów w VHDL... Synteza takiej zmiennej na luźnych
bitach to chyba nienajlepszy pomysł... To coś jakbyś
miał w kodzie w C maszynę stanów i zmienna stanów była
liczbą integer ale w pewnych okolicznościach przyjmowała
wartość dwa i siedem ósmych zamiast równych 2 lub 3 :-)))
Twój kod w C też by mocno zgłupiał z taką zmienną stanu.


========
Path: news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!fu-berlin.de!uni-berlin.de!not-for-mail
From: "JA" <j_andr_bezspamu_at_nospam_freenet.de>
Newsgroups: pl.misc.elektronika
Subject: Re: Quartus 5.1, EPM712