Implementacja zamka szyfrowego w AHDL z jednoki taktowym potwierdzeniem

Zamek szyfrowy w AHDL, a potwierdzanie kodu





Poprzedni Następny
Wiadomość
Spis treści
From: "GieTeGie" <tomaszdemborNOSPAM_at_nospam_wp.pl>
Subject: Zamek szyfrowy w AHDL, a potwierdzanie kodu
Date: Wed, 2 Jun 2004 10:40:19 +0200


Witam,
Robie zamek szyfrowy z nastepujacymi zalozeniami (prosze nie proponowac
zadnych gotowych rozwiazan, bo to cos w rodzaju pracy domowej):
-podajemy kombinacje 5 cyfr (4 bity od 0 do f)
-kazda cyfre potwierdzamy przyciskiem SW1 (przycisniety daje stan 1)
-zagar automatu obnizyc do 1Hz zeby potwierdzenie nie bylo za dlugie (zegar
1-2Hz) (zegar ma czestotl. 200 kHz, ale to juz obnizylem dzielnikami do 1
Hz)

No wiec napisalem taki uklad automatu w AHDL:

subdesign ZAMEK_SZYF (
clk, res : INPUT;
kod[3..0] : INPUT;
potwierdz : INPUT;
otworz : OUTPUT;
)

variable
autom : machine with states (A, B, C, D, E, F);

begin
autom.clk = clk;
autom.reset = res;

case autom is
when A =>
if potwierdz == 1 then
if kod[] == b"1001" then
autom = B;
else
autom = A;
end if;
end if;
when B =>
if potwierdz == 1 then
if kod[] == b"1000" then
autom = C;
else
autom = A;
end if;
end if;
when C =>
if potwierdz == 1 then
if kod[] == b"0111" then
autom = D;
else
autom = A;
end if;
end if;
when D =>
if potwierdz == 1 then
if kod[] == b"0110" then
autom = E;
else
autom = A;
end if;
end if;
when E =>
if potwierdz == 1 then
if kod[] == b"0101" then
autom = F;
else
autom = A;
end if;
end if;
end case;

if autom == F then
otworz = b"1";
else
otworz = b"0";
end if;

end;

Wszystko działa pięknie, ale gdy przycisk zostanie przycisniety na dluzej
niz na jeden takt zegara - wtedy oczywiscie automat zczyta tą samą sekwencję
wejściową jako następną i układ zadziała nie tak jak chcę. Chodzi o to, aby
po wcisnieciu przycisku - bez wzgledu na to, jak dlugo bedzie wcisniety -
automat odczytał tylko jeden takt zegara - nie więcej ani mniej.
Myślałem, żeby usunac z ukladu automatu wejscie "potwierdz" i jakos z
zewnatrz wysylac na wejscie impuls zegarowy, gdy tylko przycisniemy przycisk
potwierdzenia. Ale każdy taki impuls musiałby trwać 1Hz - wiec prosta zmiana
stanu przelacznika nie rozwiąże problemu.

Proszę o jakieś wskazówki i sugestie
Dziekuje



========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.internetia.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "JarekC" <jarekc_at_nospam_alpha.net.pl>
Subject: Re: Zamek szyfrowy w AHDL, a potwierdzanie kodu
Date: Wed, 2 Jun 2004 11:18:47 +0200



Użytkownik "GieTeGie" <tomaszdemborNOSPAM_at_nospam_wp.pl> napisał w wiadomości
news:c9k4lu$viu$1_at_nospam_druid.ceti.pl...

[ciach]
Wszystko działa pięknie, ale gdy przycisk zostanie przycisniety na dluzej
niz na jeden takt zegara - wtedy oczywiscie automat zczyta tą samą
sekwencję
wejściową jako następną i układ zadziała nie tak jak chcę. Chodzi o to,
aby
po wcisnieciu przycisku - bez wzgledu na to, jak dlugo bedzie wcisniety -
automat odczytał tylko jeden takt zegara - nie więcej ani mniej.
Myślałem, żeby usunac z ukladu automatu wejscie "potwierdz" i jakos z
zewnatrz wysylac na wejscie impuls zegarowy, gdy tylko przycisniemy
przycisk
potwierdzenia. Ale każdy taki impuls musiałby trwać 1Hz - wiec prosta
zmiana
stanu przelacznika nie rozwiąże problemu.

Proszę o jakieś wskazówki i sugestie

Nie znam się za bardzo na AHDL, ale czy nie wystarczy wprowadzić dodatkowe
stany pośrednie
np. między A i B - mielibyśmy wtedy A A1 B

potwierdz==1 powoduje przejscie ze stanu A do stanu pośredniego A1,
a potwierdz==0 ze stanu A1 do stanu B.

when A =>
if potwierdz == 1 then
if kod[] == b"1001" then
autom = A1;
else
autom = A;
end if;
end if;
when A1 =>
if potwierdz == 0 then
autom = B;
else
autom = A1;
endif


I tak dla całej reszty. Wydaje mi się, że po takiej modyfikacji
częstotliwość sygnału zegarowego nie ma już znaczenia, gdyż przejście do
następnego stanu następuje wyłącznie po zmianie na wejściu "poziom".

Tymczasem
Jarek



========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!news.internetia.pl!newsfeed.tpinternet.pl!news.ceti.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "GieTeGie" <tomaszdemborNOSPAM_at_nospam_wp.pl>
Subject: Re: Zamek szyfrowy w AHDL, a potwierdzanie kodu
Date: Wed, 2 Jun 2004 11:32:23 +0200


Użytkownik "JarekC" <jarekc_at_nospam_alpha.net.pl> napisał w wiadomości
news:c9k6dh$7ld$1_at_nospam_213.241.113.72...
Nie znam się za bardzo na AHDL, ale czy nie wystarczy wprowadzić dodatkowe
stany pośrednie
np. między A i B - mielibyśmy wtedy A A1 B

Tak - to jedno z rozwiązań, ale układ automatu może mieć tylko 6 stanów. Na
zewnatrz moze byc wszystko.



========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!news.internetia.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "JarekC" <jarekc_at_nospam_alpha.net.pl>
Subject: Re: Zamek szyfrowy w AHDL, a potwierdzanie kodu
Date: Wed, 2 Jun 2004 11:54:00 +0200



Użytkownik "GieTeGie" <tomaszdemborNOSPAM_at_nospam_wp.pl> napisał w wiadomości
news:c9k7ji$ul$1_at_nospam_druid.ceti.pl...
Użytkownik "JarekC" <jarekc_at_nospam_alpha.net.pl> napisał w wiadomości
news:c9k6dh$7ld$1_at_nospam_213.241.113.72...
Nie znam się za bardzo na AHDL, ale czy nie wystarczy wprowadzić
dodatkowe
stany pośrednie
np. między A i B - mielibyśmy wtedy A A1 B

Tak - to jedno z rozwiązań, ale układ automatu może mieć tylko 6 stanów.
Na
zewnatrz moze byc wszystko.

A może wogóle zrezygnować w wejścia potwierdz, a przycisk dać na clk.
Przyciśnięcie i puszczenie przycisku to 1 cykl.

Tymczasem
Jarek



========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.internetia.pl!newsfeed.tpinternet.pl!news.ceti.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "GieTeGie" <tomaszdemborNOSPAM_at_nospam_wp.pl>
Subject: Re: Zamek szyfrowy w AHDL, a potwierdzanie kodu
Date: Wed, 2 Jun 2004 12:12:33 +0200


Użytkownik "JarekC" <jarekc_at_nospam_alpha.net.pl> napisał w wiadomości
news:c9k8fi$dmh$1_at_nospam_213.241.113.72...
A może wogóle zrezygnować w wejścia potwierdz, a przycisk dać na clk.
Przyciśnięcie i puszczenie przycisku to 1 cykl.

Tak - myślałem o tym (zwykle robi się takie coś dając jeszcze przerzutnik -
jeden sygnał z przycisku i na wyjściu przerzutnika 1 - następny 0 i tak na
zmiane). Tylko musiałbym zrobić układ, który z chwilą naciśnięcia przycisku
z zewnętrznego zegara o częstotliwości 1 Hz wytnie tylko jeden impuls i poda
go na wejście zegarowe automatu. Tylko takie rozwiązanie jest dozwolone. Nie
wiem jak zrobić taki układ? Demultiplekser byłby dobry - powatrzałby to co
ma na wejściu (czyli sygnał zew. zegara) i podawał na wejście automatu tylko
gdy przycisk byłby w stanie jeden. Ale jak zrobić, aby podał tylko jeden
impuls z tego sygnału?



========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.internetia.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "JarekC" <jarekc_at_nospam_alpha.net.pl>
Subject: Re: Zamek szyfrowy w AHDL, a potwierdzanie kodu
Date: Wed, 2 Jun 2004 13:21:08 +0200



Użytkownik "GieTeGie" <tomaszdemborNOSPAM_at_nospam_wp.pl> napisał w wiadomości
news:c9k9ut$1ub$1_at_nospam_druid.ceti.pl...
Użytkownik "JarekC" <jarekc_at_nospam_alpha.net.pl> napisał w wiadomości
news:c9k8fi$dmh$1_at_nospam_213.241.113.72...
A może wogóle zrezygnować w wejścia potwierdz, a przycisk dać na clk.
Przyciśnięcie i puszczenie przycisku to 1 cykl.

Tak - myślałem o tym (zwykle robi się takie coś dając jeszcze
przerzutnik -
jeden sygnał z przycisku i na wyjściu przerzutnika 1 - następny 0 i tak na
zmiane). Tylko musiałbym zrobić układ, który z chwilą naciśnięcia
przycisku
z zewnętrznego zegara o częstotliwości 1 Hz wytnie tylko jeden impuls i
poda
go na wejście zegarowe automatu. Tylko takie rozwiązanie jest dozwolone.
Nie
wiem jak zrobić taki układ? Demultiplekser byłby dobry - powatrzałby to co
ma na wejściu (czyli sygnał zew. zegara) i podawał na wejście automatu
tylko
gdy przycisk byłby w stanie jeden. Ale jak zrobić, aby podał tylko jeden
impuls z tego sygnału?

To może układ, który niezależnie od tego jak długo będzie przyciśniety
przycisk da na wyjściu impuls o stałym czasie trwania. Do tego wystarczy
zwykły przerzutnik monostabilny np. 74HCT121. Możesz go wyzwalać
narastającym lub opadającym zboczem, a czas trwania impulsu na wyjściu
regulujesz za pomocą dodatkowego rezystora i kondensatora.

Tymczasem
Jarek




========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Pszemol" <Pszemol_at_nospam_PolBox.com>
Subject: Re: Zamek szyfrowy w AHDL, a potwierdzanie kodu
Date: Wed, 2 Jun 2004 09:26:22 -0500


"GieTeGie" <tomaszdemborNOSPAM_at_nospam_wp.pl> wrote in message news:c9k9ut$1ub$1_at_nospam_druid.ceti.pl...
Tak - myślałem o tym (zwykle robi się takie coś dając jeszcze przerzutnik -
jeden sygnał z przycisku i na wyjściu przerzutnika 1 - następny 0 i tak na
zmiane). Tylko musiałbym zrobić układ, który z chwilą naciśnięcia przycisku
z zewnętrznego zegara o częstotliwości 1 Hz wytnie tylko jeden impuls i poda
go na wejście zegarowe automatu. Tylko takie rozwiązanie jest dozwolone. Nie
wiem jak zrobić taki układ?

Taki układ to dwa przerzutniki D połączone szeregowo (D drugiego = Q pierwszego)
sterowane zegarem w przeciwfazie (do jednego dajesz zegar a do drugiego zegar
zanegowany) i wyjścia /Q pierwszego i Q drugiego przemnożone bramką AND...
Na wyjściu masz jeden impuls niezalezny od czasu trwania wejścia, nieco opóźniony.


========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!agh.edu.pl!news.agh.edu.pl!news.ceti.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "GieTeGie" <tomaszdemborNOSPAM_at_nospam_wp.pl>
Subject: Re: Zamek szyfrowy w AHDL, a potwierdzanie kodu
Date: Wed, 2 Jun 2004 18:39:30 +0200


Użytkownik "Pszemol" <Pszemol_at_nospam_PolBox.com> napisał w wiadomości
news:c9k6g2.29o.0_at_nospam_poczta.onet.pl...
Taki układ to dwa przerzutniki D połączone szeregowo (D drugiego = Q
pierwszego)
sterowane zegarem w przeciwfazie (do jednego dajesz zegar a do drugiego
zegar
zanegowany) i wyjścia /Q pierwszego i Q drugiego przemnożone bramką AND...
Na wyjściu masz jeden impuls niezalezny od czasu trwania wejścia, nieco
opóźniony.

Dziękuję - pomogło. Dziękuję wszystkim, którzy udzielili się w wątku.



========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Andrzej" <dydelf02_at_nospam_op.pl>
Subject: Re: Zamek szyfrowy w AHDL, a potwierdzanie kodu
Date: Wed, 2 Jun 2004 11:20:30 +0200



Użytkownik "GieTeGie" <tomaszdemborNOSPAM_at_nospam_wp.pl> napisał w wiadomości
news:c9k4lu$viu$1_at_nospam_druid.ceti.pl...

-kazda cyfre potwierdzamy przyciskiem SW1 (przycisniety daje stan 1)
[ciach program]
Wszystko działa pięknie, ale gdy przycisk zostanie przycisniety na dluzej
Proszę o jakieś wskazówki i sugestie
Jak masz podłączony ten przycisk?
Z reguły przyciski (ze wzgledu np. na drgania styków) wyzwalają generator
monostabilny o określonym czasie, lub obsługiwane są programowo tzn. układ
nie reaguje na wciśnięcie dopóki wcześniej nie wykryje stanu puszczenia
przycisku i odczekaniu pewnego czasu.
Dziekuje
pzdr,
Andrzej




========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!opal.futuro.pl!newsfeed.tpinternet.pl!news.ceti.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "GieTeGie" <tomaszdemborNOSPAM_at_nospam_wp.pl>
Subject: Re: Zamek szyfrowy w AHDL, a potwierdzanie kodu
Date: Wed, 2 Jun 2004 11:37:36 +0200


Użytkownik "Andrzej" <dydelf02_at_nospam_op.pl> napisał w wiadomości
news:c9k670$s4f$1_at_nospam_news.onet.pl...
Jak masz podłączony ten przycisk?
Z reguły przyciski (ze wzgledu np. na drgania styków) wyzwalają generator
monostabilny o określonym czasie, lub obsługiwane są programowo tzn. układ
nie reaguje na wciśnięcie dopóki wcześniej nie wykryje stanu puszczenia
przycisku i odczekaniu pewnego czasu.

Ten przycisk to typowy przełącznik podający +5V jako stan wysoki lub
zwierający do masy. Z pewnością nie reaguje na puszczenie - sprawdzilem z
dioda LED na wyjsciu ukladu.



========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!news.internetia.pl!not-for-mai