Vinnaren i pepparkakshustävlingen!
2012-11-20, 12:44
  #1
Medlem
Hej, tänkte se om någon kan hjälpa mig att "tänka rätt".


Sitter och jobbar med en labb här men har fastnat. Jag ska visa hur man kan göra en räknare som ska räkna enligt Gray-koden.¨

Den har 2 inputs, Q1 och Q2 och en styrsignal X då X = 1 ska den räkna uppåt och X = 0 ska den räkna nedåt.

Har gjort Karnaughdiagrammen för både Q1 och Q2 och gjort ihoptagningarna samt skrivit ut det i SP-form.

Q2+ = !(xQ2Q1) + xQ1(!Q2) + Q2(!x)
Q1+ = x(!Q2) + Q2(!x)

Men här fastnar jag, har ingen aning om hur jag ska använda bara XOR grindar för att förverkliga detta?

Om jag ej har fel så uttrycker man XOR med input A, B som A(!B) + B(!A).

Bild på hur kopplingen ser ut

Någon som kanske kan hjälpa mig på rätt spår? Skulle uppskattas enormt!
Citera
2012-11-20, 14:22
  #2
Medlem
2-bitars Gray-kod:

Kod:
Q2 Q1
-----
0  0
0  1
1  1
1  0

Kod:
Räkna ned (X = 0): Q1 = Q2
                   Q2 = NOT Q1
Räkna upp (X = 1): Q1 = NOT Q2
                   Q2 = Q1

Kod:
A XOR 0 = A
A XOR 1 = NOT A

Kod:
Q1 = Q2 XOR X
Q2 = Q1 XOR (NOT X) = Q1 XOR (X XOR 1)

Ordningen spelar ingen roll för 2-inputs XOR...

Kod:
A XOR (B XOR C) = (A XOR B) XOR C

...så för Q2 kan du t.ex. istället koppla ihop Q1 och X, och resultatet med 1.
__________________
Senast redigerad av 770310 2012-11-20 kl. 14:27.
Citera
2012-11-20, 15:55
  #3
Medlem
Citat:
Ursprungligen postat av 770310
2-bitars Gray-kod:

Kod:
Q2 Q1
-----
0  0
0  1
1  1
1  0

Kod:
Räkna ned (X = 0): Q1 = Q2
                   Q2 = NOT Q1
Räkna upp (X = 1): Q1 = NOT Q2
                   Q2 = Q1

Kod:
A XOR 0 = A
A XOR 1 = NOT A

Kod:
Q1 = Q2 XOR X
Q2 = Q1 XOR (NOT X) = Q1 XOR (X XOR 1)

Ordningen spelar ingen roll för 2-inputs XOR...

Kod:
A XOR (B XOR C) = (A XOR B) XOR C

...så för Q2 kan du t.ex. istället koppla ihop Q1 och X, och resultatet med 1.


Har du översatt
Q2+ = !(xQ2Q1) + xQ1(!Q2) + Q2(!x)
Q1+ = x(!Q2) + Q2(!x)

Till det där?
Citera
2012-11-20, 19:20
  #4
Medlem
Citat:
Ursprungligen postat av HarreBarre
Har du översatt
Q2+ = !(xQ2Q1) + xQ1(!Q2) + Q2(!x)
Q1+ = x(!Q2) + Q2(!x)

Till det där?

Nej, jag utläste det direkt från tabellen. Men...

Kod:
x(!Q2) + Q2(!x) = x ^ Q2

...ser ju annars t.o.m. jag. Ett tips för att få...

Kod:
!(xQ2Q1) + xQ1(!Q2) + Q2(!x)

...till ett uttryck med bara XOR-operationer, är väl annars att ett maximalt förkortat uttryck inte fungerar särskilt bra. Du måste förlänga för att få allt att passa i mallen a(!b) + (!a)b, som är XOR-logiken uttryckt i AND/OR, eller motsvarande i OR/AND.
Citera
2012-11-21, 01:05
  #5
Medlem
Citat:
Ursprungligen postat av 770310
Kod:
Q1+ = Q2 XOR X
Q2+ = Q1 XOR (NOT X) = Q1 XOR (X XOR 1)

Ordningen spelar ingen roll för 2-inputs XOR...

Kod:
A XOR (B XOR C) = (A XOR B) XOR C

...så för Q2+ kan du t.ex. istället koppla ihop Q1 och X, och resultatet med 1.

Jag missade att inverserna finns tillgängliga för återkoppling också. Då behövs väl bara 2 XOR-grindar, och 2 blir över?

Kod:
Q2+ = Q1 XOR (NOT X) = (NOT Q1) XOR X
Citera
2012-11-21, 21:12
  #6
Medlem
Citat:
Ursprungligen postat av 770310
Jag missade att inverserna finns tillgängliga för återkoppling också. Då behövs väl bara 2 XOR-grindar, och 2 blir över?

Kod:
Q2+ = Q1 XOR (NOT X) = (NOT Q1) XOR X


Hahah, japp, lyckades lösa det själv idag, hade gjort fel i Karnaughdiagrammet på Q2

Q2 = xq1 + !(XQ1)
Q1 = XQ2' + X'Q2

Behövs bara 2 XOR
1 XOR för Q1 som tar in X och Q2
1 XOR för Q2 som tar in X och !Q1

Tack ändå!
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback