mekatronik Online 47
Postad: 16 okt 10:42

Vippor och sekvensnät

Hej,

 

Jag skall konstruera en räknare där utsignalen består av ett binärt tal x3x2x1x0men även kunna anta ett till tillstånd då så sekvensen blir exempelvis 1,2,3,4,5,1,2,3,4,5 osv

Det jag fastnar på är hur man skall göra detta med begränsat antal T vippor, alltså inte fler än 3. Man kan använda hur många NOR grindar som helst dock.

Min första tanke var att man kanske skulle konstruera en NOR grind som kan bete sig som en T vippa, men jag vet inte hur jag skall konstruera det eller ifall det ens är rätt väg att gå.

Tack!

Laguna Online 16914
Postad: 16 okt 11:23

Har du en bild på uppgiftstexten?

mekatronik Online 47
Postad: 16 okt 12:14 Redigerad: 16 okt 12:14
Laguna skrev:

Har du en bild på uppgiftstexten?

Det är ren text, men såhär följer den (kopierat):

Välj en rad nummer på 4 siffror (exempelvis 1998). En räknare med utsignal A skall konstrueras. Räknarsekvensen består av de fyra sista siffrorna (kontrollnumret) i ditt utvalda nummer. Ytterligare ett tillstånd skall ingå i sekvensen (tillstånd: 1510)
Om de fyra utvalda nummer sekvensen består av 1998 blir räknarens tillståndssekvens:

A: 1,9,9,8,15,1,9,9,8,15.... osv
Utsignalen (A) består av a3a2a1a0 (binärt tal)

Man kan bortse från hur räknaren startar, alltså vilket tillstånd.

Vi får max använda 3 T vippor för att konstruera räknaren, men frivilligt antal NOR grindar och inverterare.

Vi skall alltså bygga ett grindnät och sedan konstruera det till en display som visar de siffrorna jag nämnde där uppe.

Vi fick även ett tips om att låta q0,q1,q2 (utsignalerna från T vipporna) representera nummer istället för tillstånd och därefter lägga till en kodomvandlare, exempelvis:

A = 9,8,7,6,15

0 -> 9
1 -> 8
2 -> 7
3 -> 6
4 -> 15

 

 

Tycker tipset låter vettigt. Med dina tre vippor kan du ju representera 8 tillstånd och i din sekvens har du bara 5. Din räknare kan göra precis som du beskrivit, räkna 0, 1, 2, 3, 4, 0, 1, 2, 3, 4,... och avkodningen bli precis som du skrivit. Att tänka på är att det är god praxis att ta hand om de "överblivna" tillstånden så att om du skulle hamna t.ex. i tillståndet '5' bör du hoppa till något av de kända tillstånden, förslagsvis 0.

mekatronik Online 47
Postad: 17 okt 21:18
Matsmats skrev:

Tycker tipset låter vettigt. Med dina tre vippor kan du ju representera 8 tillstånd och i din sekvens har du bara 5. Din räknare kan göra precis som du beskrivit, räkna 0, 1, 2, 3, 4, 0, 1, 2, 3, 4,... och avkodningen bli precis som du skrivit. Att tänka på är att det är god praxis att ta hand om de "överblivna" tillstånden så att om du skulle hamna t.ex. i tillståndet '5' bör du hoppa till något av de kända tillstånden, förslagsvis 0.

Hej!

Jag har lite svårt för att förstå hur jag skall ställa upp det enligt deras tips, med tanke på att vi har nummer 15 som extra tillstånd får jag fram följande tillståndsgraf: 0100 -> 0111 -> 0011 -> 0101 -> 1111 -> 0100.... (binärt)

Har ställt upp en sanningstabell för att ta reda på q och q+ för att sedan ta reda på T för respektive övergång, men nu står det stilla. Jag testade med att skapa ett karnaugh diagram för att skapa grindnät för varje T signal med AND och OR grindar som jag sedan skulle korta ner, men det funkade inte i displayen (lyckades bara representera 2/5 nummer via den). 

Min tanke var att du skulle kunna ha tillstånden (t.ex). q2q1q0 = 000, 001, 010, 011, 100.

Sedan kan du ju avkoda 000 till '9', 001 till '8', 010 till '7', 011 till '6' och 100 till '15'. Sedan vet jag inte hur din display ser ut kodmässigt, det är ju inte säkert att koden '9' blir 1001. Avkodningen blir hur som helst en egen sanningstabell.

Du behöver ju inte avkoda de andra tillstånden till något vettigt; de kan bli vad de blir men som sagt skall tillståndsmaskinen väl gärna hoppa till 000 för ett ogiltigt tillstånd.

Tillståndsmaskinen går sedan (om du valt enligt ovan) 000->001->010->011->100->000

mekatronik Online 47
Postad: 18 okt 14:01 Redigerad: 18 okt 15:26
Matsmats skrev:

Min tanke var att du skulle kunna ha tillstånden (t.ex). q2q1q0 = 000, 001, 010, 011, 100.

Sedan kan du ju avkoda 000 till '9', 001 till '8', 010 till '7', 011 till '6' och 100 till '15'. Sedan vet jag inte hur din display ser ut kodmässigt, det är ju inte säkert att koden '9' blir 1001. Avkodningen blir hur som helst en egen sanningstabell.

Du behöver ju inte avkoda de andra tillstånden till något vettigt; de kan bli vad de blir men som sagt skall tillståndsmaskinen väl gärna hoppa till 000 för ett ogiltigt tillstånd.

Tillståndsmaskinen går sedan (om du valt enligt ovan) 000->001->010->011->100->000

Förstår hur du tänker nu, får fram följande sekvens:  100 (4, binärt) -> 111 (7, binärt) -> 011 (3, binärt) -> 101 (5, binärt) -> 110 (15, hexadecimalt) - > 100 (4, binärt)

Hur bör jag gå till väga med omkodare för att få 110 att representera talet 15?

Edit: Får följande funktioner för T

T2: q1*q0

T1: q1'*q2+q0'*q2+q2'*q1*q0

T0: q2*q1'

Vi får använda frivilligt antal inverterare och nor grindar, men inga and/nand grindar. Hur skall man gå till väga då?

1) Att avkoda ett tal till ett annat: Avkodaren borde du väl kunna ta fram med en sanningstabell

2) De Morgan's formler hjälper dig att omvandla mellan olika typer av grindar.

Svara Avbryt
Close