Förenkla logiska uttryck - hur? [Löst]

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
Användarvisningsbild
oJsan
EF Sponsor
Inlägg: 1541
Blev medlem: 11 november 2005, 21:36:51
Ort: Umeå
Kontakt:

Förenkla logiska uttryck - hur? [Löst]

Inlägg av oJsan »

Bakgrund: Har skrivit en mjukvaru-UART som klockas med 8 x BAUDRATE och samplar alltså varje inkommande bit 8ggr. För att vara säker på att varje bit ÄR 1 eller 0 så sparar jag de tre "mittersta" samplen för varje bit i motsvarande bit i variablerna a, b och c.
Skickar jag 0x53 borde det alltså se ut såhär:
a: 01010011 (sample 3)
b: 01010011 (sample 4)
c: 01010011 (sample 5)

Databehandling:
Om antalet nollor (kolumnvis) är 2 eller 3 blir motsvarande bit i result 0
Om antalet ettor (kolumnvis) är 2 eller 3 blir motsvarande bit i result 1.

Detta har jag löst med följande logiska uttryck, och det fungerar:

Kod: Markera allt

result = (~(a^b^c) & (a|b|c)) | (a&b&c);	//Majority voting process..
Men min fråga är; hur förenklar man detta uttryck?! Eller kan jag helt enkelt lita på att kompilatorn fixar det på effektivast sätt?
Senast redigerad av oJsan 7 juli 2006, 13:24:05, redigerad totalt 1 gång.
Användarvisningsbild
Schnegelwerfer
Inlägg: 1863
Blev medlem: 8 november 2004, 13:46:56

Inlägg av Schnegelwerfer »

Googla på "Karnaugh-diagram".

Det finns även färdiga kalkylatorer som förenklar uttrycken åt dig.
Användarvisningsbild
oJsan
EF Sponsor
Inlägg: 1541
Blev medlem: 11 november 2005, 21:36:51
Ort: Umeå
Kontakt:

Inlägg av oJsan »

Tack Schnegel! Karnaugh kändes väldigt bekant, men var ska man börja söka då man inte kommer på ordet! =D
Hittade denna sida, och förenklat så blev uttrycket:

Kod: Markera allt

result  = (a&b) | (b&c) | (a&c);

Samma resultat, men mer läsbart! =D
malbeat
Inlägg: 17
Blev medlem: 29 juni 2006, 09:46:06
Ort: Umeå

Inlägg av malbeat »

men Ojsan, karnaugh höll vi ju på med på digital 1'an :wink:
Användarvisningsbild
oJsan
EF Sponsor
Inlägg: 1541
Blev medlem: 11 november 2005, 21:36:51
Ort: Umeå
Kontakt:

Inlägg av oJsan »

:oops: Haha, ja jag vet, men vad hjälper det då man inte kommer ihåg namnet! =D Men jag kom ju iallafall ihåg en viktig sak: nämligen att det FINNS en metod för att förenkla logiska uttryck! :wink:
malbeat
Inlägg: 17
Blev medlem: 29 juni 2006, 09:46:06
Ort: Umeå

Inlägg av malbeat »

jo jag skojja bara.. är ju 4 år sen!
Skriv svar