logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak zaprojektować krążącą jedynkę na przerzutniku D? Błąd w schemacie?

Druss21 09 Lut 2007 21:44 3450 25
REKLAMA
  • #1 3550154
    Druss21
    Poziom 18  
    Posty: 322
    Pomógł: 21
    Ocena: 2
    Tak jak zawsze projektuje sobie na przerzutniku D jakies grafy i mi wychodza tak krazaca jedynka nie chce. Otoz robie to tak :

    Q4(T)Q3(T)Q2(T)Q1(T)Q4(T+1)Q3(T+1)Q2(T+1)Q1(T+1)
    0 0 0 0 1 0 0 0
    1 0 0 0 0 1 0 0
    0 1 0 0 0 0 1 0
    0 0 1 0 0 0 0 1
    0 0 0 1 0 0 0 0

    D4=Q4!Q3!+Q2!Q1!
    D3=Q4
    D2=Q3
    D1=Q2

    Po polaczeniu wejsc D z tymi wyjsciami na wyjsciu kraza dwie jedynki a nie jedna. Leci cos takiego :
    Q4Q3Q2Q1
    0 0 0 0
    1 0 0 0
    1 1 0 0
    1 1 1 0
    0 1 1 1
    0 0 1 1
    1 0 0 1
    0 1 0 0
    1 0 1 0
    0 1 0 1
    0 0 1 0
    1 0 0 1 --> i od tego sie powtarza cykl caly czas juz w kolko.

    Co zle zrobilem ?? Prosze o pomoc.
  • REKLAMA
  • #2 3550506
    1004kw
    Poziom 15  
    Posty: 142
    Pomógł: 6
    Ocena: 11
    Witam... Moge sie mylic, ale z pobieznych wyliczen wychodzi cos takiego
    Dla wyjsc rozmieszczonych w nast. kolejnosci Q1, Q2, Q3, Q4

    St. poprzednie; St. nastepne
    q1 q2 q3 q4; Q1 Q2 Q3 Q4
    0 0 0 0 ; 1 0 0 0
    1 0 0 0 ; 0 1 0 0
    0 1 0 0 ; 0 0 1 0
    0 0 1 0 ; 0 0 0 1
    1 0 0 0 ; 0 0 0 0

    Funkcje wzbudzeń są następujące

    Q1=/q1*/q2*/q3*/q4
    Q2= q1*/q2*/q3* q4
    Q3=/q1* q2*/q3*/q4
    Q4=/q1*/q2* q3*/q4

    gdzie znak "/" oznacza negacje.

    Dodano po 1 [minuty]:

    Przepraszam, w opisie funkcji wzbudzen powinno byc: D1=/q1*/q2*/q3*/q4 itd.
  • #3 3550674
    Druss21
    Poziom 18  
    Posty: 322
    Pomógł: 21
    Ocena: 2
    Jak to obliczyles jesli moglbys powiedziec. Ja to minimalizowalem w tablicy karnaugha i wyszlo tak jak napisalem.

    Tak wyglada krazaca jedynka z ustawionym przelacznikiem w tej pozycji co jest. Druga pozycja robi krazace zero. Tylko nie wiem jak to zaprojektowac tak jak w pierwszym poscie.

    Jak zaprojektować krążącą jedynkę na przerzutniku D? Błąd w schemacie?
  • #4 3551338
    xaver23
    Poziom 17  
    Posty: 309
    Pomógł: 8
    Ocena: 9
    czy mógłbym Cię prosić o zamieszczenie tego schematu?? tzn pliku abym mógł sobie to zasymulować na komputerze...


    Wg mnie to nie zadbaliście o to aby rejestr był samokorekcyjny... Tzn że jeśli licznik wejdzie w jakiś nieporządany stan na początku to póżniej już cały czas mamy takie stany których nie chcemy otrzymać. U nas mamy po kolei stany 8 4 2 i 1....
  • REKLAMA
  • #5 3551356
    Druss21
    Poziom 18  
    Posty: 322
    Pomógł: 21
    Ocena: 2
    Jasne zamieszczam plik z workbencha. Czyli co proponujesz na tych niepozadanych stanach co ma byc na wyjsciu tak zeby ten projekt mial rece i nogi??
    Załączniki:
    • 4bitlicznikpierscieniowy.rar (9.28 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #6 3551557
    xaver23
    Poziom 17  
    Posty: 309
    Pomógł: 8
    Ocena: 9
    tylko mi powiedzcie/pwoiedz jak w workbenchu zrobić wielowejściową bramkę np NAND??
  • #7 3551599
    Druss21
    Poziom 18  
    Posty: 322
    Pomógł: 21
    Ocena: 2
    Klikasz dwa razy na bramke i w zakladce number of inputs zaznaczasz ile chcesz miec wejsc.
  • #8 3551624
    xaver23
    Poziom 17  
    Posty: 309
    Pomógł: 8
    Ocena: 9
    MYŚLĘ ŻE ZMIANA BĘDZIE DLA OSTATNIEJ SIATKI bo wtedy są problemy... tzn tam jest 12 stanów φ ja bym wszystkie te stany zamienił na stan 0001 czyli nasz początkowy.. wykopałbym stan 0000 z tej rozpiski ( bo masz krążącą jedynkę i przy piątym przejściu robią się cuda tzn jedynka ginie....... Siedzę w workbenchu ale ja nie jestemz tego dobry więc może Ty szybciej to zrobisz :D

    Dodano po 20 [minuty]:

    niew iem dlaczego ale mi nei wychodzi tzn mam ostatnią siatkę taką

    1 0 1 0
    1 1 1 1
    1 1 1 1
    1 1 1 1


    co mi daje q1+q2+~q3•~q4+q3•q4 i wychodzi mi przebiego 0000 1000 1100 1110 1110 po czym nic się już nie zmienia.....

    Może gdziew moim rozumowaniu jest błąd bo ja to widzę tak :

    Jeśli na samym początku mamy stan 1 2 4 lub 8 to jest okej bo rejestr sobie będzie fajnie krążył tzn tak jak chcemy. Jeśli jednak zaczniemy od jakiegoś nieporządanego stanu to musimy mu na sztwyno coś wepchać , wg mnie to coś to najlepiej nasz pierwszy stan czyli jedynkę tzn 0001 a skoro wszystko zależy od początku tj peirwszego przerzutnika to wystarczy tylko zrobić schemat bramkowy dla D1.... Niestety tak nie jest jak powinno... Czy zatem mającz zakreślania że Q3=~q1•~q2•~q3•q4 też mam to uwzględniać na schemacie ??? Czy mam dodać te bramki?? Co raczej nie byłoby dobrą rzeczą.. Bo skoro D przenosi to co dostał dalej....
  • #9 3551838
    Druss21
    Poziom 18  
    Posty: 322
    Pomógł: 21
    Ocena: 2
    Juz tyle nad tym siedze ze mnie to denerwuje, myslalem ze ktos juz mial z tym problem i go rozwiazal. Ale bede musial posiedziec nad tym i wykminic to a juz nie mam na to sil. Wszystkie wariacje ktore dotychczas robilem dzialaly bez problemu a ta jedynka krazaca to jest jakas pomylka w projektowaniu.
  • #10 3552209
    xaver23
    Poziom 17  
    Posty: 309
    Pomógł: 8
    Ocena: 9
    tak bym zobaczył co mam w materiałach... ale zostawiłem je w akademiku :/


    Na tej stronie są wykłady z Teorii Cyfrowej może tam coś będzie
    http://www.elektroda.net/nauka/cyfra/wyklady.html



    Trochę nad tym myślałem i ostatecznie moje rozwiązanie nie jest dobre bow tym momencie na 16 stanów 13 produkuje 1....

    A powinno być tak :

    Jeśli na Q1 2 3 są gdzieś jedynki to powinny one być zerowane , jeśli natomiast na tych pozycjach są 3 zera to Q4 powinno przenieść 1 na Q1. Tylko pytanie jak wepchnąć tzn zrobić aby tam były zera a tylko jedna jedynka??? Bo te rozwiązanie które masz zapycha przebieg wyjściowy jedynkami...

    Trzeba będzie nad tym przysiedzieć :D

    Pzdr
  • #11 3552312
    masterix
    Poziom 14  
    Posty: 51
    Pomógł: 8
    Ocena: 3
    JEżeli chesz zrobić bezpieczny przebieg tej "jedynki" to rozpisujesz wszystkie kombinacje dla stanów q(chwila przed), czyli amsz ich 16( od 0000 do 1111 ). Teraz wszystkie porządane sekwencje uzupełniasz. Dla nieporządanych robisz tak. Przepisujesz qa,qb,qc na odpowiednio Qb,Qc,Qd i dopisujesz Qa tak, aby układ w jak najmniejszej liczbie taktów wrócił na poprawną trajektorie. Skąd to przepisywanie? Stąd, że nie powinno się ingerować w układ, ingerujesz tylko w sprzężenie zwrotne idące do pierwszego przerzutnika. Dalej normalnie przeprowadzasz syntezę ;)
  • #12 3552777
    xaver23
    Poziom 17  
    Posty: 309
    Pomógł: 8
    Ocena: 9
    dobra uff jush mam .... pod spodem masz plik z workbencha.. sprawa jest prosta... :D jakby co to pisz :d

    pzdr
    Załączniki:
    • 4bitlicznikpierscieniowy.rar (8.69 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #13 3552940
    Druss21
    Poziom 18  
    Posty: 322
    Pomógł: 21
    Ocena: 2
    Jest zle. To co mam u gory juz dane jest dobrze. Uklad mam ale chodzi mi o zaprojektowanie. Suma rozwiazuje sprawe niepozadanych stanow. To co zrobiles wyglada tak :
    Jak zaprojektować krążącą jedynkę na przerzutniku D? Błąd w schemacie?

    I jak widzisz w jednym stanie sa dwie jedynki. Zmniejsz zegar do 5hz to zobaczysz to tez na lampkach. Potrzebuje samego projektu, rozpinych stanow zeby wyszla krazaca jedynka tak jak w zamieszczonym prze ze mnie schemacie i zamieszczonym pliku ewb , tam dziala to poprawnie.

    Tak to wyglada ze schematu ktory podalem :
    Załączniki:
    • Untitled-1.jpg (39.14 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #14 3553018
    xaver23
    Poziom 17  
    Posty: 309
    Pomógł: 8
    Ocena: 9
    mam schemat ale nie ma na nim przeniesień... wejście d2=q1•~q2•~q3•~q4 i wtedy mi to działa..... ale tak to nie.... przy rpzeniesieniu....

    Dodano po 6 [minuty]:

    no tak powinno to wyglądać tak jak w załączniku.... ale przy tych przeniesieniach mi nei wychodzi.......


    Sprawa komlikuje się w tym jednym momencie...
    z 1 0 0 0 iudzie do 1 1 0 0 a póżniej do 0 1 1 0 i nie mam pojęcia skąd to wynika.... gdy
  • #15 3553165
    1004kw
    Poziom 15  
    Posty: 142
    Pomógł: 6
    Ocena: 11
    Witam... Jesli chodzi o samokorekcje to nie bylo o tym mowy w poscie tematowym. Interesowaly mnie tylko funkcje wzbudzen (tak jak kolege, ktory mial z tym problem). Rzecz jasna mozna w prosty sposob wprowadzic samokorekcje... (wyliczenia na papierze zamuja mniej wiecej jedna strone A5). Pozdrawiam... I przepraszam za "barak precyzji" :-)
  • REKLAMA
  • #16 3553210
    Druss21
    Poziom 18  
    Posty: 322
    Pomógł: 21
    Ocena: 2
    I wlasnie o to mi chodzi jak ta samokorekcja ma wygladac na papierze. Musze to jakos rospisac bo sam schemat nie wystarczy w projekcie. Rozumiem ze tak jak wspomnial kolega masterix trzeba rozpisac wszystkie 16 stanow.
  • #17 3554510
    1004kw
    Poziom 15  
    Posty: 142
    Pomógł: 6
    Ocena: 11
    Witam ponownie. Uklad ten jest bardzo prosty. Niemniej jednak przyznaje, ze nie mam dostepu (obecnie) do wlasnych materialow na ten temat, nie wszystko pamietam. A teraz moje drugie przeoczenie - uklad ten jest samokorekcyjny (jesli analizowac wszystkie funkcje wzbudzen, ktore podalem w poscie 2). Niemniej jednak nie jestem w stanie udowodnic tego "na paptierze" w chwili obecnej - jedynie chyba poprzez analize wszystkich stanow zabronionych. W tym przypadku jest to mozliwe bo uklad jest bardzo prosty, inaczej bylby problem.
  • #18 3554837
    masterix
    Poziom 14  
    Posty: 51
    Pomógł: 8
    Ocena: 3
    Pisane od razu z głowy więc mogą być drobne błędy, ale ogólnie to jest to co napisałęm w poprzednim poście:

    qa, qb, qc, qd Qa, Qb, Qc, Qd

    0000 1000
    0001 1000
    0010 0001
    0011 0001
    0100 0010
    0101 0010
    0110 0011
    0111 0011
    1000 0100
    1001 0100
    1010 0101
    1011 0101
    1100 0110
    1101 0110
    1110 0111
    1111 0111

    Rozjedzie się trochę, ale sobie poradzicie :)
  • #19 3554974
    xaver23
    Poziom 17  
    Posty: 309
    Pomógł: 8
    Ocena: 9
    te sekwencje są dobre układ pracuje już dobrze.

    Chciałbym się zapytać tylko o jedno :d



    Skoro niew wolno zbyt ingerować to dlaczego mając wektor 1101 bierze się 01100??? bo te 0 to wedle tego co napisałeś dobrowadza do stanu takiego jak oczekujemy ale skąd ta reszta???
  • #20 3555528
    masterix
    Poziom 14  
    Posty: 51
    Pomógł: 8
    Ocena: 3
    z 1101 idziemy do 0110 bo:
    a) trzy ostatnie bity czyli 110 to są przepisane trzy pierwsze bity z qa, qb, qc. Dlatego, że podczas taktu zegara jest to naturalne przesunięcie.
    b) ingerujemy jak już pisalęm w sprzężenie zwrotne, które idzie do pierwszego przerzutnika czyli nieważne co było na ostatnim przerzutniku my i tak dopasowujemy sobie stan na pierwszym przerzutniku. I ustalamy go tak, aby w jak najmniejszej liczbie taktów dojść do prawidłowej trajektorii.

    W tym wypadku powrót będzie taki:
    1101 -> 0110 -> 0011 -> 0001
    Czyli po 4 taktach zegara układ będzie w swojej trajektorii stanów.

    Zrozumiale wytłumaczyłem? Jak nie to pytaj dalej :)

    pzdr.
  • #21 3556112
    xaver23
    Poziom 17  
    Posty: 309
    Pomógł: 8
    Ocena: 9
    tak zrozumiałem.

    Dziękuję bardzo za odpwoiedz

    pzdr 4 all
  • #22 3566419
    Druss21
    Poziom 18  
    Posty: 322
    Pomógł: 21
    Ocena: 2
    masterix napisał:
    Pisane od razu z głowy więc mogą być drobne błędy, ale ogólnie to jest to co napisałęm w poprzednim poście:

    qa, qb, qc, qd Qa, Qb, Qc, Qd

    0000 1000
    0001 1000
    0010 0001
    0011 0001
    0100 0010
    0101 0010
    0110 0011
    0111 0011
    1000 0100
    1001 0100
    1010 0101
    1011 0101
    1100 0110
    1101 0110
    1110 0111
    1111 0111

    Rozjedzie się trochę, ale sobie poradzicie :)


    Po zminimalizowaniu tego w tablicach wyszlo Da=q1!*q2!+q3! Db=qa Dc=qb Dd=qc. Po podlaczeniu tego w calosc w multisimie nie dziala.
  • #23 3567227
    xaver23
    Poziom 17  
    Posty: 309
    Pomógł: 8
    Ocena: 9
    mistrzu działa bo jeśli tak zakreślisz to wychodzi że jest to AND 3 wejściowy z podpiętymi wejściami ~q1 ~q2 i ~q3, sprawdziłem działa... na 100?%...
  • #24 3567573
    Druss21
    Poziom 18  
    Posty: 322
    Pomógł: 21
    Ocena: 2
    Rzeczywiscie sorry. Od przemeczenia widze ze partolilem od samego poczatku. Zle funkcje zminimalizowalem.
  • Pomocny post
    #25 3568367
    masterix
    Poziom 14  
    Posty: 51
    Pomógł: 8
    Ocena: 3
    Druss: "Da=q1!*q2!+q3! to jest zle. powinien byc iloczyn negacji
  • #26 3569875
    Druss21
    Poziom 18  
    Posty: 322
    Pomógł: 21
    Ocena: 2
    masterix napisał:
    Druss: "Da=q1!*q2!+q3! to jest zle. powinien byc iloczyn negacji


    Dokladnie dzieki, gdybym od poczatku nie robil tego bledu nie byloby tematu :)

Podsumowanie tematu

✨ Dyskusja dotyczy problemu projektowania krążącej jedynki (ang. circulating one) na przerzutnikach typu D. Autor przedstawia swoje wyliczenia funkcji wzbudzeń i schemat, w którym po podłączeniu wejść D pojawiają się dwa bity ustawione na 1 zamiast jednego, co powoduje nieprawidłowy przebieg stanów. Uczestnicy sugerują, że problem wynika z braku samokorekcji układu, czyli mechanizmu powrotu do poprawnej trajektorii stanów po wejściu w niepożądany stan. Proponują rozpisanie wszystkich 16 stanów (4-bitowy rejestr) i zaprojektowanie sprzężenia zwrotnego tak, aby układ w minimalnej liczbie taktów wracał do prawidłowego cyklu krążącej jedynki. Podkreślono, że ingerencja powinna dotyczyć tylko pierwszego przerzutnika, a pozostałe bity są przesuwane naturalnie. Wskazano błędy w minimalizacji funkcji wzbudzeń, szczególnie w wyrażeniu Da=q1!*q2!+q3!, które powinno być iloczynem negacji. Dyskusja zawiera także uwagi dotyczące symulacji w programach Workbench i Multisim oraz sposoby konfiguracji bramek logicznych. Ostatecznie potwierdzono, że prawidłowe podejście to pełna analiza stanów i odpowiednie zaprojektowanie samokorekcji, co pozwala uzyskać stabilny przebieg krążącej jedynki bez pojawiania się dwóch jedynek jednocześnie.
Wygenerowane przez model językowy.
REKLAMA