Voorbeelden van boolese minimalisatie

Hallo allemaal,
In verband met de ontwikkeling van een programma voor boolese minimalisatie, denk hierbij b.v. aan Quine-McCluskey, heb ik voorbeelden nodig en hun correcte oplossing, zodat ik mijn programma kan controleren op correcte werking. Het aantal variabelen mag hierbij niet groter zijn dan 20, en bij voorkeur tussen 4 en 10. De voorbeelden mogen in deze vorm worden weergegeven (zie de waarheidstabel hieronder): X{A,B,C,D}= Σ{2,4,5,6,9,10,13,14}, met als oplossing: CD'+A'BC'+AC'D (C AND (NOT D) OR (NOT A) AND B AND (NOT C) OR A AND (NOT C) AND D). Graag zie ik een reactie van jullie tegemoet. Met vriendelijke groet, Karel.

code:


 i  A B C D  X
 0  0 0 0 0  0
 1  0 0 0 1  0
 2  0 0 1 0  1
 3  0 0 1 1  0
 4  0 1 0 0  1
 5  0 1 0 1  1
 6  0 1 1 0  1
 7  0 1 1 1  0
 8  1 0 0 0  0
 9  1 0 0 1  1
10  1 0 1 0  1
11  1 0 1 1  0
12  1 1 0 0  0
13  1 1 0 1  1
14  1 1 1 0  1
15  1 1 1 1  0
Met vriendelijke groet, Karel.

Voor zoiets zou ik gewoon verschillende logische formules scripten en de uitvoer aan het programma voeren om te testen.

Als je een programma kunt schrijven wat de boel oplost en minimaliseert dan kun je ook wel een programma schrijven wat de benodigde output produceert.

Met vier ingangen kan je een Karnaugh diagram toepassen, daarin is eenvoudig de minimale formule te bepalen.

In hoeverre is het toegestaan om een bestaand pakket te gebruiken voor de minimalisatie en het resultaat te vergelijken met je eigen resultaat? Dan kan je eventueel met gerandomiseerde tabellen werken

[Bericht gewijzigd door roadrunner84 op vrijdag 18 september 2020 11:33:05 (49%)

Meep! Meep!
maartenbakker

Golden Member

Als je test, doe zeker ook de randgevallen. Dus "bij voorkeur 4 tot 10 variabelen" mag, maar doe er ook een paar met 0, 1 en 20 variabelen bij.

www.elba-elektro.nl | "The mind is a funny thing. Sometimes it needs a good whack on the side of the head to jar things loose."

Geachte Roadrunner84,
Als ik een bestaand pakket gebruik, hoe kan ik dan gerandomiseerde tabellen maken? Welk programma heb ik daarvoor nodig, en hoe maak ik daarmee de tabellen? Met vriendelijke groet, Karel.

Met vriendelijke groet, Karel.

Snap ik nou goed wat je vraagt? Je wilt voorbeelden van logische functies die jij met je software kunt optimaliseren, en waar je de antwoorden al hebt om te controleren? Hmm.

Zo'n voorbeeld is toch elke willekeurige set van inputs met een willekeurige output, in de vorm die je zelf al neerzet, een tabel. Daar staat je antwoord wat het moet zijn al.
Nu, jouw software genereert hier een compacte logische functie bij in AND en OR poorten. Dat kun je simuleren in een digitale simulator zoals Modelsim. Die kun je laten testen tegen die gewenste output die je zelf gedefinieerd had. Hier zijn natuurlijk meerdere oplossingen mogelijk, maar eigenlijk is alles wat de juiste outputs oplevert al goed.

"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein
High met Henk

Special Member

3e vraag over boolean algebra.

Uitkomst hier:

y = CD' + A'BC' + AC'D

Methode van karnaugh gebruikt, maar wel digitaal.
http://www.32x8.com/sop4_____A-B-C-D_____m_2-4-5-6-9-10-13-14_________…

E = MC^2, dus de magnetische compatibiliteit doet kwadratisch mee???

Geachte Flipflop,
Waar kan ik dat Modelsim vinden? Mvg. Karel.

Met vriendelijke groet, Karel.

Met het online programma falstad kan je ook digitale schakelingen simuleren.

https://www.falstad.com/circuit/circuitjs.html

Op 20 september 2020 03:20:29 schreef CAH Lucas:
..Waar kan ik dat Modelsim vinden?..

Die kun je voor veel geld kopen mij Mentor Graphics :-)

Nou ja, er zit ook een versie bij de ontwikkelomgevingen van Intel (ex Altera) en Xilinx (bij ISE, niet Vivado). En er zijn wellicht wat minder bekende digitale simulatoren. VHDL/Verilog simulatoren dus.
Nou is dat wel heel erg overkill om simpelweg een paar AND en OR poorten te simuleren. Wellicht kun je dat beter zelf met een scriptje maken (wordt hierboven al ergens genoemd).

PS, wat is eigenlijk het nut van deze hele actie? voor de lol?

"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein

Zoveel oefenfuncties als je maar wilt.

c code:


#include <stdio.h>
#include <stdlib.h>
#include <time.h>


int main (int argc, char **argv)
{
  int nbits;
  int i,j;

  srand (time (NULL));
  if (argc > 1) nbits = atoi (argv[1]);
  else          nbits = 4+ (rand () %17); // 4-20

  printf ("numvariables = %d.\n", nbits);
  printf ("     i  ");
  for (i=0;i<nbits;i++) printf ("%c ", 'A' + i);
  printf (" X\n");
  for (j=0;j<(1<<nbits);j++) {
    printf ("%6d  ",j);
    for (i=0;i<nbits;i++)
      printf ("%d ", (j >> (nbits-i-1)) &1);
    printf  (" %d\n", rand () & 1);
  }
  exit (0);

}
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Geachte Flipflop,
Toch maar geen Modelsim, veel te duur. Waar het eigenlijk allemaal om draait is dat ik een goed werkend programma krijg waarmee ik poortschakelingen mee kan minimaliseren. Het nut hiervan is dat ik voor mijn hobby dit kan gebruiken als ik met digitale schakelingen bezig ben. En zoal ik al in het begin heb vermeld, heb ik eigenlijk geen simulator nodig, alleen maar een aantal voorbeelden, het maakt niet uit waar het vandaan komt, met de correcte antwoorden, zodat ik mijn programma op de juiste werking kan controlleren. Tevens zou ik graag willen weten wat het C programma van Rew doet. Kun je dit programma ook compileren onder MAC OS X en linux? Met vriendelijke groet, Karel.

Met vriendelijke groet, Karel.
benleentje

Golden Member

Tevens zou ik graag willen weten wat het C programma van Rew doet. Kun je dit programma ook compileren onder MAC OS X en linux?

Het is eigenlijk C++. Maar C++ kan werkelijk op elke computer of besturingssysteem worden uitgevoerd als deze maar een C++ compiler heeft geïnstalleerd.

Wat het doet weet ik ook niet precies maar ik heb het idee dat het een willekeurige waarheidstabel maakt met het opgegeven aantal ingangen of een willekeurig aantal ingangscombinaties variërend van 4 t/m 20 ingangen.

@REW hij doet bij mij niets, geen compiler errors maar ook geen output op het scherm. Ik het er even dit van gemaakt.

c code:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>


int tabel (int argc, char **argv)
{
  int nbits;
  int i,j;

  srand (time (NULL));
  if (argc > 1) nbits = atoi (argv[1]);
  else          nbits = 4+ (rand () %17); // 4-20

  printf ("numvariables = %d.\n", nbits);
  printf ("     i  ");
  for (i=0;i<nbits;i++) printf ("%c ", 'A' + i);
  printf (" X\n");
  for (j=0;j<(1<<nbits);j++) {
    printf ("%6d  ",j);
    for (i=0;i<nbits;i++)
      printf ("%d ", (j >> (nbits-i-1)) &1);
    printf  (" %d\n", rand () & 1);
  }
  exit (0);

}
int main(){
    tabel(3,0);
    return 0;
}
Mensen zijn soms net als een gelijkrichter, ze willen graag hun gelijk hebben.

Op 20 september 2020 20:18:22 schreef CAH Lucas:
Geachte Flipflop,

De aanspreektitel voor ing. is tegenwoordig gewoon heer/mevrouw hoor :-) Hoeft echt niet zo officieel hier.

...dat ik een goed werkend programma krijg waarmee ik poortschakelingen mee kan minimaliseren. Het nut hiervan is dat ik voor mijn hobby dit kan gebruiken...

Nou, welkom in de 21e eeuw :-) Voor die paar keer hoef je toch niet een heel programma te schrijven?! Gewoon even met de hand kan toch ook!

"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein