Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Asynchroniczny licznik za pomocą tabeli przejść

szary123 11 Lis 2009 22:08 4133 8
  • #1 11 Lis 2009 22:08
    szary123
    Poziom 8  

    Mam do zaprojektowania licznik asynchroniczny modulo 9 za pomocą przerzutników JK, ale ma on powstać przez ustalenie tabeli przejść a nie przez proste łączenie dwójek liczących. Jak zrobić licznik synchroniczny za pomocą tabeli przejść wiem i jak asynchroniczny przez proste łączenie dwójek liczących też wiem.
    W "Układy Scalone TTL w systemach cyfrowych", J. Pienkos, J. Turczyński jest tylko o licznikach asynchronicznych budowanych przez łączenie dwójek liczących. Na googlach też tylko takie znalazłem.

    Stworzyłem tabelę przejść, wyznaczyłem funkcje i zbudowałem licznik dokładnie na tej samej zasadzie co synchroniczny tylko podłączyłem inaczej zegar. Efekt:
    Asynchroniczny licznik za pomocą tabeli przejść
    Jednakże:
    Asynchroniczny licznik za pomocą tabeli przejść
    Wydaje się, przerzutnik oznaczony jako inst3 zmienia stan z 0 na 1, po kolejnym takcie z 1 na 0, jednak inst2 "nie zdąży załapać się" na sygnał 1, tylko gdy zadziała trafia już na 0. Brakuje jakiegoś opóźnienia?
    Funkcje wyznaczone z tabeli przejść są prawidłowe, gdyż dla synchronicznego podłączenia zegara układ działa.
    Czy tak powinno budować się liczniki asynchroniczne za pomocą tabeli przejść?

  • #2 13 Lis 2009 04:56
    Adrian1995
    Poziom 14  

    Ten układ nie ma prawa poprawnie działać. Powstają "hazardy" na skutek czasów propagacji a co najważniejsze po doliczeniu do 8 zatrzyma się i bez resetowania nie będzie dalej liczył. Poniżej schemat w którym są elementy opóźniające. Aby ich ilość zmniejszyć zastosowany jest układ szeregowy przeniesień. Robienie takich liczników mija się z celem. Albo skracamy tradycyjnie zakres liczenia albo stosujemy licznik synchroniczny który ma dwie podstawowe zalety. Nie doprowadza do "hazardów" z powodu opóźnień i co najważniejsze ma wyższą częstotliwość pracy. Poza tym przy niedużym zakresie jest bardzo prosty.:cry:
    Asynchroniczny licznik za pomocą tabeli przejść Asynchroniczny licznik za pomocą tabeli przejść

  • #3 14 Lis 2009 14:02
    szary123
    Poziom 8  

    Dziękuję za odpowiedź.
    Wykonałem podany przez Ciebie układ w Quartusie jednak wciąż drugi przerzutnik nie reaguje.

    Asynchroniczny licznik za pomocą tabeli przejść Asynchroniczny licznik za pomocą tabeli przejść

  • #4 14 Lis 2009 14:40
    Paweł Es.
    Pomocny dla użytkowników

    Przy drugim przerzutniku wejścia J i K muszą być ustawione na stałe na stan jeden a nie taktowane zegarem poprzedniego stopnia.

  • #5 14 Lis 2009 15:06
    szary123
    Poziom 8  

    Cytat:
    Przy drugim przerzutniku wejścia J i K muszą być ustawione na stałe na stan jeden a nie taktowane zegarem poprzedniego stopnia.

    Asynchroniczny licznik za pomocą tabeli przejść Asynchroniczny licznik za pomocą tabeli przejść
    Zrobiłem tak, to z kolei 3 przerzutnik dobrze nie działa... Oczywiście J i K w 3-im mogę również dać na stałe na stan jeden, ale wtedy licznik będzie oparty już o dwójki liczące a nie o tabelę przejść...

  • #6 14 Lis 2009 16:04
    Paweł Es.
    Pomocny dla użytkowników

    Dodaj opóźnienia na wejściach zegarowych tak by zbocze taktujące pojawiało się PO ustaleniu się stanów wejść J i K, bo innaczej to nie będzie poprawnie działało. Na razie to masz sygnały do J i K opóźnione o jedną propagację bramki w stosunku do zegara a przecież przerzutniki wymagają odpowiedniego czasu wyprzedzenia ustalenia się sygnałów J i K przed zboczem zegara !!!! tylko pamiętaj o fazie zegara by nie dać inwersji (odpowiednia ilość inwerterów)

  • #7 14 Lis 2009 23:45
    Adrian1995
    Poziom 14  

    Paweł Es. Tak czy inaczej to "hazard". A to co proponujesz to nie spełnia warunków asynchronizmu w założeniu autora postu. Asynchroniczny do końca albo ten "hazard" :D. Myslę, że autor postu nie do końca rozumie synchronizm i asynchronizm. Też tak robiłem jak mówisz i działa to, ale nie tak jak sobie to wyobrażamy. Po prostu tak też myślę jak Ty, ale chyba coś nie pasuje z tym wszystkim. :D. Po co takie kombinacje ? Synchroniczny to proste, asynchroniczny tak samo. Proponuję aby autor się zastanowił po co takie kombinacje skoro to w literaturze jest ślicznie opisane (Pieńkos, Turczyński). Zgodzisz się z tym ?:D:D

  • #8 15 Lis 2009 00:02
    Quarz
    Poziom 43  

    Witam,

    szary123 napisał:
    Mam do zaprojektowania licznik asynchroniczny modulo 9 za pomocą przerzutników JK, ale ma on powstać przez ustalenie tabeli przejść a nie przez proste łączenie dwójek liczących. Jak zrobić licznik synchroniczny za pomocą tabeli przejść wiem i jak asynchroniczny przez proste łączenie dwójek liczących też wiem.
    W "Układy Scalone TTL w systemach cyfrowych", J. Pienkos, J. Turczyński jest tylko o licznikach asynchronicznych budowanych przez łączenie dwójek liczących. Na googlach też tylko takie znalazłem.
    dotąd, kiedy nie zdefiniowałeś, lub też nie nazwałeś ogólnie znanego, kodu w jakim ten licznik ma liczyć do 9 - dziesiętnie - a tego tu jakoś nie widzę, to cała tu dyskusja upodabnia się do przysłowiowej 'dyskusji o rzyci Maryni' ... nie widzieli, nie wiedzą dokładnie o czym, ale dyskutują ... :idea: :D

    Pozdrawiam

  • #9 15 Lis 2009 05:35
    Paweł Es.
    Pomocny dla użytkowników

    Adrian1995 napisał:
    Paweł Es. Tak czy inaczej to "hazard". A to co proponujesz to nie spełnia warunków asynchronizmu w założeniu autora postu. Asynchroniczny do końca albo ten "hazard" :D. Myslę, że autor postu nie do końca rozumie synchronizm i asynchronizm. Też tak robiłem jak mówisz i działa to, ale nie tak jak sobie to wyobrażamy. Po prostu tak też myślę jak Ty, ale chyba coś nie pasuje z tym wszystkim. :D. Po co takie kombinacje ? Synchroniczny to proste, asynchroniczny tak samo. Proponuję aby autor się zastanowił po co takie kombinacje skoro to w literaturze jest ślicznie opisane (Pieńkos, Turczyński). Zgodzisz się z tym ?:D:D


    W układzie asynchronicznym kombinacje sygnałów wyjściowych poprzednich stopni taktują następne stopnie, więc nie bardzo rozumiem o jakie warunki asynchronizmu ci chodzi ? Wyrównywanie opóźnień nie powoduje, że układ przestaje być asynchroniczny a tylko zmienia zależności czasowe sygnałów wchodzących do następnego stopnia.

    W układzie synchronicznym wszystkie przerzutniki dostają ten sam sygnał zegarowy wyznaczający ewentualny moment zmiany ich stanu a tu tego nie ma.

    Poza tym autor tematu dostał polecenie użycia konkretnej metody projektowej co narzuca konkretne rozwiązanie zamiast zwykłego zerowania całego układu po wykryciu stanu 9.

    Prościej by było zrealizowaź ten układ jako dwa szeregowe bloki liczące każdy do 3, wtedy byłby mniejszy problem z opóźnieniami w układzie.

 
Black Friday do -15%
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
Ferguson