Jak skutecznie eliminować drgania styku w VHDL przy użyciu kostki FPGA?
eliminacja drgan styku w VHDL'u
From: Ben Jonson <jonson_at_nospam_go2.pl>
Subject: eliminacja drgan styku w VHDL'u
Date: Wed, 24 Apr 2002 12:06:11 GMT
Problem jest nastepujacy. Jest sobie
styk na nim 1, a po wcisnieciu 0,
podpiety bezposrednio do kostki. W
vhdl'u trzeba natomiast napisac cos
co wyeliminuje drgania tego styku. Jak
szanowni panowie widza ten problem.
Z gory dziekuje za pomoc.
From: "irek" <irek_wo_at_nospam_yahoo.com>
Subject: Re: eliminacja drgan styku w VHDL'u
Date: Wed, 24 Apr 2002 16:09:38 +0200
"Ben Jonson" <jonson_at_nospam_go2.pl> schrieb im Newsbeitrag
news:1103_1019649971_at_nospam_news.polsl.gliwice.pl...
Problem jest nastepujacy. Jest sobie
styk na nim 1, a po wcisnieciu 0,
podpiety bezposrednio do kostki. W
vhdl'u trzeba natomiast napisac cos
co wyeliminuje drgania tego styku. Jak
szanowni panowie widza ten problem.
Z gory dziekuje za pomoc.
Problem podobny :
http://www.hamster-ams.com/index2.htm
irek
From: "RobertS" <szumu_at_nospam_poczta.onet.pl>
Subject: Re: eliminacja drgan styku w VHDL'u
Date: Wed, 24 Apr 2002 16:57:28 +0100
przestac probkowac sygnal na jakis czas po wykryciu aktywnego wejscia
signal counter: INTEGER range 0 to 50;
begin
process (CLK, RESET)
begin
if RESET='1' then
Nactive<='1';
elsif CLK='1' and CLK'event then
if Nactive='1' then
if SWITCH='0' then
Nactive <='0';
end if;
else
if counter = 50 then
if SWITCH='1' then
Nactive <='1';
counter <= 0;
end if;
else
counter <= counter +1;
end if;
end if;
end if;
end process;
"Ben Jonson" <jonson_at_nospam_go2.pl> wrote in message
news:1103_1019649971_at_nospam_news.polsl.gliwice.pl...
Problem jest nastepujacy. Jest sobie
styk na nim 1, a po wcisnieciu 0,
podpiety bezposrednio do kostki. W
vhdl'u trzeba natomiast napisac cos
co wyeliminuje drgania tego styku. Jak
szanowni panowie widza ten problem.
Z gory dziekuje za pomoc.
From: Wojciech Szewczyk <wojt_at_nospam_zeus.polsl.gliwice.pl>
Subject: Re: eliminacja drgan styku w VHDL'u
Date: Wed, 24 Apr 2002 20:13:07 GMT
Tylko ze problem polega na tym, ze ten styk ma byc wlasnie
zegarem i taktowac ten ukladzik. Nie ma wiec kto okreslic tego
"jakiegos czasu" opoznienia.
On Wed, 24 Apr 2002 16:57:28 +0100, "RobertS"
<szumu_at_nospam_poczta.onet.pl> wrote:
przestac probkowac sygnal na jakis czas po wykryciu aktywnego
wejscia
From: "Marek Dzwonnik" <mdz_at_nospam_message.pl>
Subject: Re: eliminacja drgan styku w VHDL'u
Date: Wed, 24 Apr 2002 22:29:36 +0200
Uzytkownik "Wojciech Szewczyk" <wojt_at_nospam_zeus.polsl.gliwice.pl> napisal w
wiadomosci news:1103_1019679187_at_nospam_news.polsl.gliwice.pl...
Tylko ze problem polega na tym, ze ten styk ma byc wlasnie
zegarem i taktowac ten ukladzik. Nie ma wiec kto okreslic tego
"jakiegos czasu" opoznienia.
Jak na mój gust, to odbicia styków od stanu stabilnego da sie odróznic
wylacznie na podstawie czasu trwania. Czyli musisz miec jakies zródlo czasu
odniesienia, niezalezne od tego przelacznika.
A czy nie moze to byc prostu styk przelaczny zamiast zwiernego? Wtedy
wystarczylby RS na dwóch bramkach :-)
MDz
From: "Juliusz" <jul_at_nospam_fom.pl>
Subject: Re: eliminacja drgan styku w VHDL'u
Date: Thu, 25 Apr 2002 16:23:24 +0200
"Wojciech Szewczyk" <wojt_at_nospam_zeus.polsl.gliwice.pl> wrote in message
news:1103_1019679187_at_nospam_news.polsl.gliwice.pl...
Tylko ze problem polega na tym, ze ten styk ma byc wlasnie
zegarem i taktowac ten ukladzik. Nie ma wiec kto okreslic tego
"jakiegos czasu" opoznienia.
Po wyfiltrowaniu czasowym mozesz pozniej uzyc signal'a jako kolejnego clocka
w procesie clk'event o ile ci kostka na to pozwala.
A jak nie pozwala to zamiast signal'a uzyj sobie pinu jako buffer, wyprowadz
go na zewnatrz i podlacz go do dedykowanego wejscia CLK i zrob osobny
proces.
Juliusz
From: jfox_at_nospam_poczta.onet.pl (J.F.)
Subject: Re: eliminacja drgan styku w VHDL'u
Date: Wed, 24 Apr 2002 20:15:56 GMT
On Wed, 24 Apr 2002 12:06:11 GMT, Ben Jonson wrote:
Problem jest nastepujacy. Jest sobie
styk na nim 1, a po wcisnieciu 0,
podpiety bezposrednio do kostki. W
vhdl'u trzeba natomiast napisac cos
co wyeliminuje drgania tego styku. Jak
szanowni panowie widza ten problem.
Jak pozwolic VHDL'owi rozwinac wyobraznie czy jak to ukladowo
to rozwiazac ? Jeden z prostszych pomyslow - rejestr probkujacy
taktowany ~50Hz, albo wrecz cale urzenie jako automat wolnym zegarem
karmiony.
Inny - monoimpulsator RC typu np 123. Trudny do zrealizowania opisania
w VHDL.
Jeszcze inny - kilkubitowy rejestr przesuwajacy, takt rzedu kHz,
przerzutnik RS ustawiany i zerowany jak w rejestrze sa same zera
lub same jedynki.
Podobnie j/w - ale nie rejestr przesuwajacy, tylko licznik, np 4 bit.
Jak pryzcisk wcisniety to sie powieksza, jak puszczony to zmniejsza co
takt o 1. Na stanach 0 i 15 sie zatrzymuje [tzn nie przekreca sie] i
te stany sa dekodowane dalej.
J.