Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Synchroniczny licznik mod 6, przerzutniki D - dodatkowe wejście RESET

Nestoo 10 Sty 2018 17:55 1179 2
  • #1 10 Sty 2018 17:55
    Nestoo
    Poziom 2  

    Witam, mam problem z zadaniem o następującej treści:
    "Zaprojektować licznik od 0 do 5 (modulo 6), z dodatkowym wejściem sterującym x, "przeskakujący" cyfrę 1 jeżeli x=1."
    I reszta warunków zadania:
    "Należy skonstruować sekwencyjny (Moore'a), w pełni synchroniczny układ logiczny, zawierający przerzutniki typu D. Należy na wyjściu użyć wyświetlacza segmentowego (jednocyfrowego). Należy przekodować wyjście układu na taki kod, żeby udało się wyświetlić odpowiednią cyfrę. Układ nie musi być minimalny.
    Zamiast cyfr 0 i maksymalnej dla danego zadania, należy wyświetlić inicjały studenta. (U mnie 0 reprezentuje B a 5 litera C)
    Stan licznika i fazę dzielnika należy wyświetlić również na binarnych wyświetlaczach LED (oprócz wyświetlacza segmentowego).
    Dodatkowe wejście "reset" powinno sprowadzać układ do stanu początkowego. "

    Szukałem w wielu źródłach odpowiedzi na moje wątpliwości, ale z racji na mój stopień zaawansowania (bliski zeru) wiele schematów było dla mnie niezrozumiałych. Przechodząc do rzeczy: dodaje to co udało mi się do tej pory zrobić samemu, od razu uprzedzam ze propozycja nie uwzględnia jednego z warunków a mianowicie dodatkowego wejścia sterującego przeskakującego cyfrę 1 oraz przepraszam za niską czytelność schematu, mam nadzieje ze udzielenie mi pomocy będzie możliwe bez dogłębnej analizy tego potwora :)
    Licznik działa poprawnie, tzn po podłączeniu zasilania wyświetla sekwencję B-1-2-3-4-C-B-1... itd.
    Jednak nie wiem jak doprowadzić dodatkowe wejście "RESET", to co sam "na logikę" próbowałem zrobić widnieje na schemacie [R], w zasadzie działa, czyli po podłączeniu go cały układ dostaje '0' i taką też wyświetla wartość, po czym po "odłączeniu" wejścia reset, zaczyna liczyć od nowa, jednak dostałem informację (nie od profesora), że to nie o to chodzi i tu moje pierwsze pytanie: dlaczego i jak zrobić to poprawnie ?

    A co do przeskakiwania: jeśli czas pozwoli zrobię i to, ale czy słusznie rozumiem, że jeśli chcę dodać te wejście (x), będę musiał wykonać nowy układ, w którym tablice Karnaugh'a zmienią się w ten sposób:
    Synchroniczny licznik mod 6, przerzutniki D - dodatkowe wejście RESET

    Synchroniczny licznik mod 6, przerzutniki D - dodatkowe wejście RESET

    0 2
  • Pomocny post
    #2 10 Sty 2018 20:26
    rb401
    Poziom 34  

    Nestoo napisał:
    czyli po podłączeniu go cały układ dostaje '0' i taką też wyświetla wartość, po czym po "odłączeniu" wejścia reset, zaczyna liczyć od nowa, jednak dostałem informację (nie od profesora), że to nie o to chodzi i tu moje pierwsze pytanie: dlaczego i jak zrobić to poprawnie ?


    Trochę jakby nie do końca jasne są warunki zadania, jak dla mnie.
    Zdanie "Dodatkowe wejście "reset" powinno sprowadzać układ do stanu początkowego." sugeruje że chodzi o bezwarunkowy reset, czyli asynchroniczny, niezależny od zegara.
    Ale fraza "w pełni synchroniczny" na początku może też sugerować że chodzi o wszystkie czynności układu, czyli i o reset synchroniczny, jaki zrobiłeś i jaki działa na pewno, bo to widać na pierwszy rzut oka. Tyle że tak naprawdę to warunkiem kiedy on zadziała nie jest tylko sam sygnał ale także obecność zbocza na sygnale zegara.
    Tak że ta sugestia która uzyskałeś może dotyczyć asynchroniczności resetu.

    Dorobienie resetu asynchronicznego licznika, jeśli można użyć przerzutników D z wejściami asynchronicznymi R i S, było by trywialne. Dużo gorzej było by gdyby musieć koniecznie się trzymać tych "czystych" D.

    Nestoo napisał:
    A co do przeskakiwania: jeśli czas pozwoli zrobię i to, ale czy słusznie rozumiem, że jeśli chcę dodać te wejście (x), będę musiał wykonać nowy układ, w którym tablice Karnaugh'a zmienią się w ten sposób:


    Co do tego przeskakiwania, to można to zrobić to metodą "siłową", dokładając do tego co jest dodatkowo bramkę NAND z wejściami: Q0,Q1,Q2,x ( z sygnałem na wyjściu, nazwijmy go y) czyli warunkiem "przeskoku"(stan licznika 000 i aktywny przeskok na 010).

    I ten sygnał y doprowadzić do zamienionej na trójwejściową bramki OR przed przerzutnikiem od bitu Q1. Wtedy po stanie 000 (i y=1) następnym będzie stan x1x.
    A równocześnie negację sygnału y doprowadzić do górnej bramki AND (rozszerzonej o jedno wejście) toru przerzutnika od Q0 (piąta AND od góry), co zablokuje normalne (bez przeskoku) ustawienie się w "1" tego przerzutnika po stanie 000. Bo za to przejście (000->001) właśnie normalnie odpowiada ta bramka.
    To będzie działać, ale uwzględniając specyfikę tego projektu, chyba lepiej jak sobie zbudujesz nowego Karnaugh'a z tym x. Ta tabelka którą wykombinowałeś wygląda mi ok.

    Dodano po 52 [minuty]:

    Tak już na marginesie. Jest jeszcze taki drobny "haczyk" w takich projektach. Nie wiem czy to uwzględniasz, ale tylko tak sygnalizuję na wszelki wypadek.
    Budując tablicę prawdy takiego licznika działającego w praktyce, nie można pomijać stanów, których w normalnej pracy brak (np. tutaj chodzi o stany 6-9).
    Wynika to z tego że tak właściwie stany przerzutników nie są wcale zdeterminowane jako "0" po włączeniu zasilania. I jeśli nie ma podjętych jakiś konkretnych działań typu wstępny reset, to trzeba uważać by licznik potrafił wyjść z każdego takiego "nietypowego" stanu początkowego do normalnej sekwencji liczenia np. do 000 a nie np. ugrzązł w jakieś dzikiej pętli czy stanął.

    0
  • #3 10 Sty 2018 21:01
    Nestoo
    Poziom 2  

    Dzięki wielkie za rozbudowaną odpowiedź :) "Haczyka" nie uwzględniałem, więc tym bardziej :D
    O to jak rozumieć zadanie, a zatem i synchroniczność/asynchroniczność resetu będę się musiał w takim razie dopytać (teraz już przynajmniej wiem o co chodzi). Niestety obawiam się, że do użytku przeznaczone mieliśmy tylko "czyste" D.
    Tematu jeszcze nie zamykam, zostawię do jutra (deadline) w razie pomniejszych wątpliwości.

    0