Automat Mealy'ego -problem

Jan 13, 2010 11 Replies

Witam Muszê zaprojektowaæ uk³ad licznika synchronicznego na przerzutnikach typu D z automatu Mealy'ego. Zadanie jest nastêpuj±cej tra¶ci:



Wypisz nazwisko i imiê. Kolejnym literom przypisz warto¶ci liczbowe, z kodu cyfrowego wykre¶l powtarzaj±ce siê cyfry, na koñcu uzupe³nij brakuj±ce. Zbuduj licznik na przerzutnikach typu D licz±cy w uzyskanym kodzie. A,B,C - 0 D,E,F - 7 G,H,I - 1 J,K,L - 6 £,M,N - 2 O,P,R - 5 S,T,U - 3 w - ¬ - 4 Powiedzmy ¿e mi wysz³o: 50472136



jak narysowaæ tablicê przej¶æ? Dowiedzia³em siê co¶ takiego, nie wiem czy dobrze:



dziele ten mój kod na pó³ czyli 5047 | 2136 pierwsza czê¶æ odpowiada x=0 a druga x=1 Czy to tak siê robi? chodzi mi g³ównie o ten stan X czy to siê tak przypisuje czy w inny sposób bo s³ysza³em od kilku osób ró¿ne wersje :/



Q1 Q2 Q3 - wej¶cia D1 D2 D3 - nastêpne stany



- to stany dowolne x | Q1 | Q2 | Q3 || D1 | D2 | D3



--------------------------------



0 | 0 | 0 | 0 || 1 | 0 | 0
0 | 0 | 0 | 1 || - | - | -
0 | 0 | 1 | 0 || - | - | -
0 | 0 | 1 | 1 || - | - | -
0 | 1 | 0 | 0 || 1 | 1 | 1
0 | 1 | 0 | 1 || 0 | 0 | 0
0 | 1 | 1 | 0 || 1 | 0 | 1
0 | 1 | 1 | 1 || - | - | -

-------------------------------



1 | 0 | 0 | 0 || - | - | -
1 | 0 | 0 | 1 || 0 | 1 | 1
1 | 0 | 1 | 0 || 0 | 0 | 1
1 | 0 | 1 | 1 || 1 | 1 | 0
1 | 1 | 0 | 0 || - | - | -
1 | 1 | 0 | 1 || - | - | -
1 | 1 | 1 | 0 || 0 | 1 | 0
1 | 1 | 1 | 1 || - | - | -

Potem robiê tablice Karnougha dobieraj±c te stany niewiadone "-" tak abym mia³ jak najlepsz± mo¿liwo¶æ minimalizacji funkcji.



I dodatkowe pytanie: czy je¿eli brakuje mi w moim kodzie danych do wstawienia do tabeli tam gdzie mam stany niewiadome to czy mo¿na przypisaæ sobie pierwsz± cyfre z mojego kodu 5047 | 2136 czyli 5 dla czê¶ci gdzie mam x=0 i 2 dla x=1 ? Bo i taki pomys³ s³ysza³em :)


Ale co to za X i po co ? Masz zrobic prosty cykliczny automat - trzy bity stanu. Mealy czy Moore - bez roznicy.

No chyba ze ma miec wejscie blokowania, czy rewersyjny ma byc.

P.S. przyjelo sie raczej przez Q1 oznaczac najmlodszy [najmniej znaczacy] bit, a nawet przez Q0.

J.

Z tym X to nie wiem do koñca jak jest. o ile sie nie mylie to w automacie marleya stan wyj¶æ zale¿y równie¿ od wej¶cia i niby ten X jest tym wej¶ciem. Widzia³em w ten sposób rozwi±zane zadanie i nie wiadomo czy one jest dobrze t± Moore'a to wiem jak robiæ to kumam :)

No tak sie definiuje

Tylko ze powinno byc jednak jakies zdefiniowane wejscie. A nie ma.

J.

No nie wiem, skąd ten pomysł z x. Z doświadczenia wiem, że na studiach to się robi czasem zadania "od tyłu"... może w jakimś zadaniu był taki podział, ktoś nie wiedział dlaczego, ale teraz tak robi ;)... a co u Ciebie oznacza x ?? Jak będziesz sterował tym x?? Jesteś pewny, że podałeś pełną treść?? To nie ma być licznik rewersyjny albo chociaż z sygnałem Enable, Load albo coś??

No byłoby OK, tylko co tu robi ten x ?? Skąd on się bierze? Jak nim będziesz sterować? Zauważ, co sięstanie, gdy przy stanie 7 na wejściu x dalej będzie "0"?? Nie wiadomo! Jeśli w treści zadania nie ma słowa na temat wejścia x, to je wywal!! Potem "przebuduj" tablicę. Według tego, co Ty narysowałeś, to układ chodzi w dwóch cyklach: a) 5047 b) 2136 Wyboru cyklu dokonuje się pinem x. Co najgorsze, ze względu na stany - może się zdarzyć, że po przełączeniu z cyklu 1 na cykl 2 w innym momencie niż na końcu danego cyklu, licznik może utknąć w "złej pętli"...

Co do przeróbki.... Jeśli na przykład miałbyś Twój licznik z wejściem Enable, to tablica wyglądałaby faktycznie podobnie (byłaby przedzielona na pół) i miała by taką postać (zapis dziesiętny dla ułatwienia ;)): Enable Q D

0 0 0 0 1 1 0 2 2 0 3 3 0 4 4 0 5 5 0 6 6 0 7 7

-------------------------

1 0 4 1 1 3 1 2 1 1 3 6 1 4 7 1 5 0 1 6 5 1 7 2

Dziwi mnie tylko sposób zapisu Q1 Q2 Q3... ja bym dał Q3 Q2 Q1, albo nawet Q2 Q1 Q0. Podobnie z D. Przyjęło się oznaczać bity od najstarszego do najmłodszego malejącymi numerami, gdzie najmłodszy bit to x0. Wychodzi to stąd, że waga bitu oznaczonego numerem n jest wówczas równa 2^n.

U nas się tych stanów nie dobierało jawnie, tylko przy zakreślaniu się je zaznaczało, jeśli to minimalizowało funkcję, lub się ich nie zaznazcało, gdyby to miało funkcję skomplikować ;)...

Taki pomysł oznaczałby, że licznik jest samokorekcyjny po jednym takcie zegarowym! Wówczas, gdy na skutek jakiegoś błędu licznik wyskoczy poza ustaloną sekwencję, to po jednym takcie wracał by do 5. Jeśli w zadaniu nie pisze, że masz mieć samokorekcyjny po 1 takcie, to tego nie rób, bo Ci wydją bardziej złożone funkcje, a to oznacza większą szansę na pomyłkę....

Pozdrawiam Konop

PS Nie przejmuj się, u mnie na studiach za niektórymi ten przedmiot ciągnął się po 2..3 lata ;)....

Dzieki Konop trochê mi rozja¶ni³o siê g³owie.:) Ale mam dalej pytanie: W takim razie to automat Moore'a stosowany jest dla uk³adów gdzie nie mamy podanego sygna³u wejsciowego ( tak jak mówi definicja). A je¶li jest podany sygna³ wej¶ciowy dodatkowo to wtedy Meal'ygo?

Wracaj±c do mojego zadanka: Wypisz nazwisko i imiê. Kolejnym literom przypisz warto¶ci liczbowe, z kodu cyfrowego wykre¶l powtarzaj±ce siê cyfry, na koñcu uzupe³nij brakuj±ce. Zbuduj licznik na przerzutnikach typu D licz±cy w uzyskanym kodzie. A,B,C - 0 D,E,F - 7 G,H,I - 1 J,K,L - 6 £,M,N - 2 O,P,R - 5 S,T,U - 3

to jak wykresle te cyfry co siê powtarzaj± mi to czym mam uzupe³niæ brakuj±ce warto¶ci ? tymi cyframi których nie mam ? w jakiej kolejno¶ci ? Czy kto¶ jest wstanie podaæ na przyk³adzie? :)

U¿ytkownik "Adam" <adam snipped-for-privacy@poczta.onet.pl> napisa³

Nie!

Oba automaty maja rejestr stanu, ktory zalezy od sygnalow wejsciowych.

Tylko ze wyjscie u Moora zalezy tylko od rejestru stanu, a u Mealego od rejestru stanu i sygnalow wejsciowych. Jesli sygnalow wejsciowych nie ma, to oba M sa rowne :-)

Taki przyklad - mamy np klawiature, ona jest z wlasnym koderem, i teraz trzeba opoznic pojawienie sie kodu klawisza o np trzy cykle. Robimy licznik ktory jest zerowany jesli nic nie jest nacisniete [zalozmy ze jest wtedy kod 00000], a jak cos nacisniemy to licznik powoli narasta do 3, i to jego 3 otwiera bramki wyjsciowe przepuszczajace kod dalej. To to jest wlasnie Mealy.

Jesli bysmy np chcieli te klawiature odklocic, i przepuszczac kod o ile od 3 cykli jest taki sam, to potrzebujemy bardziej rozbudowany rejestr stanu, do pamietania poprzedniego klawisza, ale na koncu mozemy podac kod z rejestru - i to jest Moore.

W praktyce Mealego sie nie robi, bo mamy kiepsko okreslone momenty zmiany sygnalow. No chyba ze zrobimy bufor zatrzaskujacy je w tym samym momencie - a wtedy to znow sie nie rozni od Moora ..

J.

Przepraszam, że zadam głupie pytanie. Czy obcnie korzysta ktoś z tablic przejścia oraz automaty Mealy czy Moore. Czy też skończyło się to wraz z dominacją w układach automatyki układów TTL.

Zbyszek

To sie skonczylo wraz z dominacja pecetow i programow do projektowania :-)

Teraz czlowiek pisze w VHDL i nawet nie wie ze automat projektuje :-)

J.

Tak/Nie. :) O ile mało kto rzeźbi teraz cokolwiek na piechotę, to przy projektowaniu układów, które mają naprawdę szybko pracować, trzeba wiedzieć, jak to potem się implementuje. Poza tym, ktoś te CPLD i FPGA jak i narzędzia do syntezy VHDL robi. Gdzieś na samym dole są pojedyncze elementy, z których się potem te VHDLem opisane układy składa. Do tego potrzebne są metody opisywania maszyn cyfrowych, w tym również tablice przejść i.t.p.

Marek

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required