Vippor i en krets
Hej!
Skulle behöva lite hjälp med förståelsen för denna krets.
I och med att det är NAND-grindar så kommer det ge följande:
De första fem NAND-grindar ger alla en etta.
Dessa ettor kommer vidare till nästa NAND-grindar och inverteras där till nollor.
Här tar det stop för jag inte riktigt förstår hur jag ska göra om det är 3 aktiverade vippor?
Jag kan logiken för vippor, men blir lite osäker när jag har med flera vippor att göra.
Titta på en vippa i taget. De är oberoende av varandra.
Laguna skrev:Titta på en vippa i taget. De är oberoende av varandra.
Det är för att alla vippor får var sin inkoppling va? Däremot fattar jag inte riktigt det där högst uppe i kretsen, med CLK och RESET.. Det här är hela uppgiften:
Jag är med på hur vippor fungerar och hur D-vippor fungerar osv. Men jag har svårt att se kopplingen i denna krets bara och hur en sån tabell skulle se ut
Jag använder ORCAD och har då gjort en sån här krets:
Den är kopplad som på bilden men det är sista biten jag inte fattar
Gör en tabell med åtta rader, en för varje möjligt val av insignaler. Skriv på varje rad vad utsignalerna blir.
Jag vet inte riktigt vad du är osäker på. CLK är en periodisk puls. När pulsen sker så får utsignalen från en vippa insignalens värde. Den utsignalen blir sedan insignal till vänster.
Laguna skrev:Gör en tabell med åtta rader, en för varje möjligt val av insignaler. Skriv på varje rad vad utsignalerna blir.
Jag vet inte riktigt vad du är osäker på. CLK är en periodisk puls. När pulsen sker så får utsignalen från en vippa insignalens värde. Den utsignalen blir sedan insignal till vänster.
Jo precis, och det har jag gjort men jag är inte riktigt med på det här med utsignalerna. Nu har jag ju tre olika insignaler, och den där Q2+ spökar lite i mitt huvud. Vad exakt innebär Q2+ ? Är det vilket läge vippan hamnar i?
Var står det Q2+?
Laguna skrev:Var står det Q2+?
Aha, där. De har väl gett namnet med plustecken åt nästa insignal, vilket är utsignal från en vippa, vilket är vippans förra insignal.
Laguna skrev:Aha, där. De har väl gett namnet med plustecken åt nästa insignal, vilket är utsignal från en vippa, vilket är vippans förra insignal.
Misstänkte att det var så. Men i själv tabellen jag ska göra, då är vipporna alltså inte beroende av varandra?
Q1+ är en funktion av Q1, Q2 och Q3.
Q2+ är en funktion av Q1, Q2 och Q3.
Q3+ är en funktion av Q1, Q2 och Q3.
Jag tittade på ditt ORCAD-schema och där är några saker som jag tycker inte stämmer överens med originalschemat.
(Ska du simulera i ORCAD?)
Det ser ut som du kallat tre likadana oscillatorer till Q0, Q1 och Q2 men det är utsignalerna från vipporna som ska kopplas hit. Varje vippa har ju en icke inverterad utsignal Q och en inverterad utsignal notQ
Sedan är en utsignal från grind U4A kopplad till klockingången på den översta vippan.
De tre utsignalerna från grindnätet ska kopplas till D-ingångarna på vipporna. En klocksignal från en oscillator ska kopplas till CLK-ingången på alla vipporna.
D-ingången bestämmer ju vad vippans tillstånd blir efter en positiv flank på CLK-ingången.
T.ex. om det är en 1:a på D så kommer Q att bli 1 och notQ att bli 0.
Det enklaste exemplet är den nedersta vippan. Den har sin egen notQ som insignal på D-ingången och det innebär att den kommer slå om vid varje positiv flank på CLK.
ThomasN skrev:Jag tittade på ditt ORCAD-schema och där är några saker som jag tycker inte stämmer överens med originalschemat.
(Ska du simulera i ORCAD?)
Det ser ut som du kallat tre likadana oscillatorer till Q0, Q1 och Q2 men det är utsignalerna från vipporna som ska kopplas hit. Varje vippa har ju en icke inverterad utsignal Q och en inverterad utsignal notQSedan är en utsignal från grind U4A kopplad till klockingången på den översta vippan.
De tre utsignalerna från grindnätet ska kopplas till D-ingångarna på vipporna. En klocksignal från en oscillator ska kopplas till CLK-ingången på alla vipporna.D-ingången bestämmer ju vad vippans tillstånd blir efter en positiv flank på CLK-ingången.
T.ex. om det är en 1:a på D så kommer Q att bli 1 och notQ att bli 0.
Det enklaste exemplet är den nedersta vippan. Den har sin egen notQ som insignal på D-ingången och det innebär att den kommer slå om vid varje positiv flank på CLK.
Hej, det stämmer!
Egentligen behöver jag inte göra denna krets i ORCAD eftersom jag bara ska analysera den, men jag vill helst sätta upp den i ORCAD för jag lär mig bäst så. Såhär är det kopplat just nu:
Om jag då förstår dig rätt så är det alltså notQ från vippan där nere t.ex. som ska kopplas runt och tillbaka såhär? Eller har jag missuppfattat?
Gällande U4A, kollade nu och vad jag kan se så är den inklopplad till D medans DSTM1 är inkopplad till respektive CLK i de oliak vipporna.
Jag har lite svårt att följa ditt schema. Jag tror att du kan ta bort oscillatorerna till vänster och även inverterarna. Du har ju tillgång till både Q och notQ från vipporna.
En av de fyra vipporna i originalschemat används ju inte. Vilken motsvarar det i ditt schema? Är det Q1, som inte har någon insignal på D-ingången?
notQ0 ska kopplas både till grindarna och till D-ingången på Q0.
ThomasN skrev:Jag har lite svårt att följa ditt schema. Jag tror att du kan ta bort oscillatorerna till vänster och även inverterarna. Du har ju tillgång till både Q och notQ från vipporna.
En av de fyra vipporna i originalschemat används ju inte. Vilken motsvarar det i ditt schema? Är det Q1, som inte har någon insignal på D-ingången?
notQ0 ska kopplas både till grindarna och till D-ingången på Q0.
Ber om ursäkt för det, att rita ett kretsschema är något jag jobbar på hehe. Det stämmer att det är Q1 där som inte har en insignal.
När du säger att notQ och Q kan kopplas till grindarna, menar du då att jag ska dra wires från t.ex. notQ i Q2-vippan och då dra den till en av NAND-grindarna?
Provade rita om utifrån hur jag tolkade som att du menade och fick fram detta:
Tjusigt!
Så vitt jag kan se så stämmer det. Tycker ORCAD ser också?
ThomasN skrev:Tjusigt!
Så vitt jag kan se så stämmer det. Tycker ORCAD ser också?
Tack! ORCAD verkar dock inte hålla med :(
Inget händer här, men jag undrar om det inte kan ha med min simulationsprofil att göra och klockfrekvensen?
Min run to time är satt till 3000ns, och i kretsen har DSTM1 offtime 0,5s , ontime 0,5s och delay 0,5s. Kan det vara problemet?
Oj, ja det är nog inte mycket man ser på 3000ns.
Sätt runtime till mer än cykeltiden för klockan. Ett antal gånger längre.
ThomasN skrev:Oj, ja det är nog inte mycket man ser på 3000ns.
Sätt runtime till mer än cykeltiden för klockan. Ett antal gånger längre.
Provade sätta run to time till 3sek och fick nu följande resultat. Känns ju lite bättre i alla fall.
Dock är ju lite konfundersam kring hur en tabell skulle se ut med denna?
filipsrbin skrev:Laguna skrev:Titta på en vippa i taget. De är oberoende av varandra.
Det är för att alla vippor får var sin inkoppling va? Däremot fattar jag inte riktigt det där högst uppe i kretsen, med CLK och RESET.. Det här är hela uppgiften:
Jag är med på hur vippor fungerar och hur D-vippor fungerar osv. Men jag har svårt att se kopplingen i denna krets bara och hur en sån tabell skulle se ut
Om jag fattat rätt så ska du göra en tabell för Q2+, Q1+ och Q0+ och därifrån rita ett tillståndsdiagram.
Q2+ är samma sak som D-ingången på Q-vippan och kallas för "nästa tillståndsvariabeln". (I alla fall när jag fick lära mig detta). Detta är ju "bara" Boolesk algebra". En tabell för Q2+ ser ut i stil med denna:
Jag var lat och fyllde bara i första raden :-)
Det blir alltså två tabeller, Q0+ är ju busenkel, den blir ju bara Q0+ = notQ0.
För att göra ett tillståndsdiagram så får man ta steg för steg och se vad nästa tillstånd blir. Börja med Q2, Q1, Q0 = 000, (dvs nollställning) och läs av alla Q+. Detta blir vad vipporna hamnar vid nästa klockflank.
En början på detta kan se ut så här ungefär:
Detta kan du jämföra med ORCAD-simuleringen.
Men ta och städa den lite först. Du har fyra klockor som är desamma men bara en vippa.
ThomasN skrev:filipsrbin skrev:Laguna skrev:Titta på en vippa i taget. De är oberoende av varandra.
Det är för att alla vippor får var sin inkoppling va? Däremot fattar jag inte riktigt det där högst uppe i kretsen, med CLK och RESET.. Det här är hela uppgiften:
Jag är med på hur vippor fungerar och hur D-vippor fungerar osv. Men jag har svårt att se kopplingen i denna krets bara och hur en sån tabell skulle se ut
Om jag fattat rätt så ska du göra en tabell för Q2+, Q1+ och Q0+ och därifrån rita ett tillståndsdiagram.
Q2+ är samma sak som D-ingången på Q-vippan och kallas för "nästa tillståndsvariabeln". (I alla fall när jag fick lära mig detta). Detta är ju "bara" Boolesk algebra". En tabell för Q2+ ser ut i stil med denna:Jag var lat och fyllde bara i första raden :-)
Det blir alltså två tabeller, Q0+ är ju busenkel, den blir ju bara Q0+ = notQ0.För att göra ett tillståndsdiagram så får man ta steg för steg och se vad nästa tillstånd blir. Börja med Q2, Q1, Q0 = 000, (dvs nollställning) och läs av alla Q+. Detta blir vad vipporna hamnar vid nästa klockflank.
En början på detta kan se ut så här ungefär:
Detta kan du jämföra med ORCAD-simuleringen.
Men ta och städa den lite först. Du har fyra klockor som är desamma men bara en vippa.
Tack för att du tar tiden för att svara så utförligt!
Vill verkligen att det här ska sitta ordentligt så har några följdfrågor.
Q2+ är då alltså det som färdas genom första NAND-grinden och sedan den andra NAND-grinden?
För i det fallet borde Q1+ vara not((notQ2 * notQ0) * (notQ1 * Q0)), kan det stämma?
Och sedan undrar jag bara över det sista du menade. Har jag inte bara en klocka i ORCAD och fyra vippor?
Ja Q2+ är resultatet av signalerna till de tre översta grindarna i vänstra kolumnen samt den övre grinden i högra kolumnen.
Q1+, stämmer bra.
Schemat är helt OK. Vad jag menade var att rensa lite i visning av signaler i tidsdiagrammet så det är lättare att se. Där finns fyra Q2A:clock. Det finns bara en utgång från vipporna (Q2bar) men man vill nog helst se Q2, Q1 och Q0.
ThomasN skrev:Ja Q2+ är resultatet av signalerna till de tre översta grindarna i vänstra kolumnen samt den övre grinden i högra kolumnen.
Q1+, stämmer bra.
Schemat är helt OK. Vad jag menade var att rensa lite i visning av signaler i tidsdiagrammet så det är lättare att se. Där finns fyra Q2A:clock. Det finns bara en utgång från vipporna (Q2bar) men man vill nog helst se Q2, Q1 och Q0.
Okej toppen!
Det jag dock inte är 100% med på är hur jag får till 1:an i sanningstabellen.
I schemat just nu så får jag ständigt bara 0 från Q och 1 från notQ (på alla, dvs. Q2, Q1 och Q0).
Tar jag den första du räknade ut där, när alla Q = 0 så får jag :
1((1*0*0) * (1*1) * (0 * 1)) = 0. Så där hänger jag inte riktigt med.
Rensade lite i schemat, hade satt ut lite för många voltage/level markers hehe.
I uttrycket för Q2+ så står not(......). Det innebär att resultatet för uttrycket inom parentesen ska inverteras. NAND-grinden som matar vippans D-ingång har ju inverterad utgång.
ThomasN skrev:I uttrycket för Q2+ så står not(......). Det innebär att resultatet för uttrycket inom parentesen ska inverteras. NAND-grinden som matar vippans D-ingång har ju inverterad utgång.
Dum miss av mig, tack för förtydligande!
Jag tror jag har koll på det mesta nu, men en sak som jag verkligen inte kan greppa riktigt är det där med tabellen.
I en krets jag gjorde förut så kunde jag sätta de olika ingångarna Q till 0 eller 1, och då kunde jag ju enkelt få reda på utgången för t.ex. 101.
Men i denna krets vet jag inte hur jag ska styra det riktigt?
Hur gör jag så kretsen ingångar är 101 t.ex?
Det finns ju 8 utfall då det är 3 stycken variabler. Hur ställer jag in kretsen till de andra 7? Detta är nog det jag har absolut svårast med att först när det kommer till D-vippor
Provade göra något nu så fick följande tabell för Q2+:
Vi konstaterade att Q2+ var not((notQ2*Q1*Q0)*(notQ1*notQ0)*(Q2*notQ1)).
Det jag försökte göra då var att, om jag t.ex. skulle kolla vad Q2+ blev när Q2Q1Q0 var 1 0 1, då stoppade jag in 1 där jag hade Q2 och 0 där jag hade notQ2 osv.
Så där Q2Q1Q0 var 1 0 1 fick jag följande:
not((0*0*1)*(1*0)*(1*1) = not(0) = 1.
Jag gjorde såhär för alla 8 varianter och alla fick att Q2+ = 1, oavsett värde på ingång.
Ahhh, jag tror jag har lurat dig!
Jag missade inverteringen på utgången av de vänstra NAND-grindarna. Q2+ ska bli något sånt här:
Bäst du kollar upp Q1+ också.
ThomasN skrev:Ahhh, jag tror jag har lurat dig!
Jag missade inverteringen på utgången av de vänstra NAND-grindarna. Q2+ ska bli något sånt här:
Bäst du kollar upp Q1+ också.
Ah, ja det känns mer rimligt nu haha! Inget du lurat mig för, jag borde ju kunnat uppmärksamma det med!
Men toppen, då är jag med på den.
För Q1+ har jag fått : not(not(notQ2*notQ0)*not(notQ1*Q0)). Kan det stämma?
Fick en sanningstabell för Q1+:
Sen är det Q0+ kvar. Skriv alla tre på samma rad så det är lätt att läsa av.
Tillägg: 2 jan 2022 19:33
011 borde också ge Q2+ = 1.
Laguna skrev:Sen är det Q0+ kvar. Skriv alla tre på samma rad så det är lätt att läsa av.
Sådär, hur ser detta ut?
Laguna skrev:Sen är det Q0+ kvar. Skriv alla tre på samma rad så det är lätt att läsa av.
Tillägg: 2 jan 2022 19:33
011 borde också ge Q2+ = 1.
Hur fick du till att 011 på Q2+ = 1?
Översta nand-grinden till vänster.
Laguna skrev:Översta nand-grinden till vänster.
Japp, stämmer, jag som räknade fel, tack!
Provar igen nu och denna gång skall jag ha räknat rätt:
Jag tyckte att de andra raderna för Q2+ var rätt.
Jag håller med Laguna, för insignalen 011 blir Q2+ = 1. Ännu en tabbe av mig.
Q1+ och Q0+ tycker jag stämmer. Vad nu min åsikt kan vara värd :-)
Tur det finns simulatorer. Öka på runtime på den så man kan se fler tillstånd.
Vet du vad ett tillståndsdiagram är? Du kan göra ett sådant nu, utgående från tabellen.
ThomasN skrev:Jag håller med Laguna, för insignalen 011 blir Q2+ = 1. Ännu en tabbe av mig.
Q1+ och Q0+ tycker jag stämmer. Vad nu min åsikt kan vara värd :-)
Tur det finns simulatorer. Öka på runtime på den så man kan se fler tillstånd.
Du har ju hjälp mig otroligt mycket så helt klart!
Här kommer en runtime på 6s:
Klockfrekvensen ligger ju på 0,5s. Om jag läser grafen rätt nu så innebär det att Q2Q1Q0 alla reagerar likadant.
Laguna skrev:Vet du vad ett tillståndsdiagram är? Du kan göra ett sådant nu, utgående från tabellen.
Jag vet vad det är, men ganska osäker på hur jag ska göra ett när jag har tre stycken ingångar :/. Såhär har jag ritat den i alla fall
Nu har du inte använt tabellen. Från 000 går vi till 011, t.ex.
Laguna skrev:Nu har du inte använt tabellen. Från 000 går vi till 011, t.ex.
Hänger inte riktigt med på det. Är det inte att man går från första tillståndet för Q2Q1Q0 till första tillståendet för Q2+Q1+Q0+ ?
Att Q2+Q1+Q0+ = 011 betyder att Q2Q1Q0 blir 011 i nästa steg.
Din senaste tabell för Q2+ får jag inte att stämma. Den förra var rätt så när som på att Q2Q1Q0 =011 ska ge Q2+Q1+Q0+ = 100.
Dvs på fjärde raden ska Q2+ bli en etta.
När du sedan ritar upp ditt tillståndsdiagram, börja med 000 och se vad nästa tillstånd (Q2+Q1+Q0+) blir, i detta fallet 111. När en positiv flank på klockan kommer så kommer vipporna att ställa sig så. Sen får man kolla på 111 och se vad nästa tillstånd blir här osv.
Det märkliga är, som din simulering också visar, att vipporna kommer bara att hoppa mellan 000 och 111. Jag satte upp en simulering i LTSPICE (jag har inte ORCAD) och det ger samma resultat.
ThomasN skrev:Din senaste tabell för Q2+ får jag inte att stämma. Den förra var rätt så när som på att Q2Q1Q0 =011 ska ge Q2+Q1+Q0+ = 100.
Dvs på fjärde raden ska Q2+ bli en etta.När du sedan ritar upp ditt tillståndsdiagram, börja med 000 och se vad nästa tillstånd (Q2+Q1+Q0+) blir, i detta fallet 111. När en positiv flank på klockan kommer så kommer vipporna att ställa sig så. Sen får man kolla på 111 och se vad nästa tillstånd blir här osv.
Det märkliga är, som din simulering också visar, att vipporna kommer bara att hoppa mellan 000 och 111. Jag satte upp en simulering i LTSPICE (jag har inte ORCAD) och det ger samma resultat.
Aej precis, den korrekta är denna:
Okej tack för förklaring.
Men innebär inte det då att jag endast har två olika tillstånd? Dvs. 000 och 111, i och med att mina vippor beter sig så?
Laguna skrev:Att Q2+Q1+Q0+ = 011 betyder att Q2Q1Q0 blir 011 i nästa steg.
Svarade i ett svar längre ner, men om du kikar på min bild jag la upp nyss så är det den korrekta tabellen.
Ah, nu ser jag mönstret.. Och när Q2+Q1+Q0+ är 100 kommer Q2Q1Q0 att vara 100 också, och då fortsätter det vidare.
Så egentligen, av att kolla på min tabell, så ligger Q2+Q1+Q0+ alltid "ett steg" före Q2Q1Q0, har jag förstått det rätt då?
Rita tillståndsdiagrammet.
Laguna skrev:Rita tillståndsdiagrammet.
Såhär har jag tolkat det. Jag har ju bara två olika tillstånd.
Det räcker att ha med varje tillstånd bara en gång. Du kan rita resten av tillstånden också, för fullständighetens skull, även om konstruktionen inte kan hamna i dem.
Laguna skrev:Det räcker att ha med varje tillstånd bara en gång. Du kan rita resten av tillstånden också, för fullständighetens skull, även om konstruktionen inte kan hamna i dem.
Okej! Men har jag förstått det rätt med att denna krets enbart har två tillstånd?
Ja, det stämmer. Det är en konstig maskin. Det hade räckt med den nedersta vippan, och inga grindar.
ThomasN skrev:Ja, det stämmer. Det är en konstig maskin. Det hade räckt med den nedersta vippan, och inga grindar.
Om jag säger såhär då:
"Konstruktionen är tänkt att fungera som en tärning (alltså räkna 1, 2, 3, 4, 5, 6, 1, 2, ...), men
innehåller ett allvarligt fel, vilket i en PLD med automatisk Power-on-reset (alltså där samtliga vippor
nollställs vid start) skulle ge felfunktion direkt".
Troligtvis därför den fungerar som den gör. Kan dock inte riktigt ge en förklaring varför det är så för att min kunskap fortfarande begränsar mig hehe
Om man nu orkar rita det där tillståndsdiagrammet så får man
000 -> 111 -> 000
001 -> 010 -> 011 -> 100 -> 101 -> 110 -> 001
Dvs. bara man börjar på 001 så funkar "tärningen", men vid reset så blir ju allt 0.