Logické obvody (Hardvérová časť)

Logické obvody (Hardvérová časť)

Boolová Algebra

Negácia

– Je najjednoduchšou boolovskou operáciou, pri negácií nadobúda premenná opačnú hodnotu.

– Pravdivostná tabuľka:

x

f (x)

0

1

1

0

– Negácia sa označuje rovnou vodorovnou čiarou nad premennou.

Logický súčet

– Je operácia disjunkcie (zjednotenie).

– Býva tiež označovaná

– Schematicky ju môžeme znázorniť takto:

A

B

y

 0

0

0

1

0

1

0

1

1

1

1

1

– Pre operáciu logického súčtu je charakteristická spojka alebo.

A OR B

A + B

A alebo B

A ∨ B

Logický súčet

– Je operácia konjunkcie alebo prieniku, označuje sa aj takýmto znakom ∧.

– Pre logický súčin sú typické spojky a, aj, i.

A ∧ B

A & B

A · B

A AND B

– Výsledná hodnota funkcie je jedna len vtedy, ak všetky nezávislé premenné majú hodnotu 1.

A

B

Y

0

0

0

1

0

0

0

1

0

1

1

1

Ďalšie Boolovské funkcie

NAND (Negovaný súčin)

– Funkcia NAND má hodnotu 1, ak aspoň 1 nezávislá premenná má hodnotu 0.

A

B

Y

0

0

1

1

0

1

0

1

1

1

1

0

NOR (Negovaný súčet)

– Funkcia NOR má hodnotu 1, ak všetky vstupy majú hodnotu 0.

A

B

Y

0

0

1

1

0

0

0

1

0

1

1

0

XOR (Exkluzívny súčet)

– Funkcia XOR má hodnotu 1, ak vstupy majú rozdielne hodnoty.

A

B

Y

0

0

0

1

0

1

0

1

1

1

1

0

Karnaughové mapy

  1. Karnaughová mapa má toľko políčok koľko má pravdivostná tabuľka riadkov (2n). n=počet vstupov
  2. V Karnaughovej mape musí existovať 1 bunka, v ktorej majú všetky nezávislé vstupy hodnotu 0.
  3. V Karnaughovej mape musí existovať 1 bunka, v ktorej majú všetky nezávislé vstupy hodnotu 1.
  4. Pre každý nezávislý vstup musí platiť ,že pre polovicu buniek Karnaughovej mapy má vstup hodnotu 0 a pre polovicu buniek Karnaughovej mapy má vstup hodnotu 1.

2 spôsoby zápisu Karnaughovej mapy

Preklápacie obvody

  1. Monostabilný

– Má stabilný iba jeden stav, ak mu dáme povel (impulz), preklopí sa do opačného stavu a po určitom čase sa vráti do svojho stabilného stavu.

– Napríklad: svetlá vchodoch bytovke sú v stabilnej 0, po stlačení vypínača sa dajú do stabilnej 1 a po určitom čase sa vrátia do stabilnej 0 (zhasnú) a infrasnímač.

  1. Bistabilný

– Má stabilné oba stavy, ak je v nule a dostane povel, preklopí sa do jednotky a na ďalší povel sa preklopí do nuly.

– Napríklad: mikrospínač na televízory.

  1. Astabilný

– Tento klopný obvod nemá stabilný ani jeden stav a preklápa sa z 0 do 1 alebo z 1 do 0.

– Napríklad: blikač na bicykli.

Hradlá

B) Programovanie (Softvérová časť)

Programovanie

Programovacie jazyky

  1. Programovacie jazyky nižšej úrovne
  1. Programovacie jazyky vyššej úrovne
  1. Interpretované programovacie jazyky
  1. Kompilované programovacie jazyky
  1. Štruktúrované programovacie jazyky
  1. Objektovo orientované programovacie jazyky

Programovacie jazyky C

Jazyk C

Základné pojmy a zásady v jazyku C

Dátové typy

Premenná

Konštanta

Dátové typy v jazyku C

  1. Int (integer)
  1. Float
  1. Double
  1. Long double
  2. Char

Deklarácia a definícia premennej

Deklarácia premennej

dátový typ názov premennej;

int vek; ← deklarácia

Definícia premennej

int vek = 18; ← deklarácia s definíciou

Operátor

Matematické operácie

Typy delenia:

int/int => int

celočíselné delenie

7 / 2 = 3 12 / 2 = 6

zvyšok => 7 % 2 = 1 12 % 2 = 0

float/float => float

7 / 2.0 = 3.5

float/int => float

7 / 2 = 3.5

rovná sa = =

Logické operátory

Inkrementácia

a = 6;

b = a;

b => 6

Dekrementácia

Formáty načítavania a výpisu premenných

%c => char => znak

%d => int => desiatková sústava

%x => int => šestnástková sústava, malé písmená

%X => int => šestnástková sústava, veľké písmená

%o => int => osmičková sústava

%s => reťazec => niekoľko znakov

%f => float => reálne čísla

Načítanie hodnoty premennej

Syntax:

Vetvenie

Jednoduché vetvenie

Syntax:

if (podmienka)

{príkaz(y);}

Úplné vetvenie

Zložené podmienky

Case switch

Názorný príklad na ukážku tejto funkcie:

switch-case

switch (premenná) {

case ’a‘: printf („Ahojn“); break;

case ’b‘: printf („Čavesn“); break;

case ’c‘: printf („Sewan“); break;

default: printf („Nezadal si žiadnu z možnostín“);

}

Praktický príklad na ukážku tejto funkcie:

switch (typ) {

case ’k‘: if (váha<=20) {printf („Spaľovňan“);}

else {if (váha<=200) {printf („Lokálne smetiskon“);}

else {printf („Centrálne smetiskon“);}}

break;

case ’s‘: if (váha<=10) {printf („Recyklácian“);}

else {printf („Triedenien“);}

break;

default: printf („Nezadali ste korektné údaje.n“);

}

Cykly

  1. Cyklus so známym počtom opakovaní (FOR)
  1. Cyklus s podmienkou na začiatku (WHILE)
  1. Cyklus s podmienkou na konci (DO-WHILE)

Cyklus so známym počtom opakovaní (FOR)

#include

int main () {

int cislo; int max = – 30 000;

int i;

for (i=1; i<4; i++) {

scanf („%d“, &cislo);

if (cislo>max) {max=cislo;}

}

printf („Najväčšie číslo je %dn“, max);

Syntax:

Generovanie náhodného čísla

Cyklus s podmienkou na začiatku (WHILE)

Syntax:

while (podmienka) {

telo cyklu (príkazy;)

}

while (a<10) {

b++;

a++;

}

Cyklus s podmienkou na konci (DO-WHILE)

Syntax:

do {

príkaz (y);

} while (podmienka);

do {

scanf („%d“, &x);

} while (x<10);

Polia

Praktický príklad na ukážku tejto funkcie:

#include

//Vytvorte program ,ktorý vygeneruje 30 náhodných čísel do 100 a uloží ich do poľa. Ďalej program načíta 10 čísel od užívateľa a tiež ich vloží do ďalšieho poľa. Program zistí či sú čísla ,ktoré sú v jednom aj druhom poli vypíše ich.

int main () {

srand (time(NULL));

int i, j=0;

int nacitane [10];

int gener [30];

int cisla [40];

printf ("Zadaj 10 nahodnych cisel.n");

for (i=0; i<10; i++) {

scanf ("%d", &nacitane[i]);

printf (" * %d * n", nacitane [i]);

}

printf ("nProgram vygeneruje 30 nahodnych cisel do 100.n");

for (j=1; j<31; j++) {

gener [j] = rand () %100; +1;

printf ("Hodnota %d premennej gener je: * %d *n", j, gener [j]);

}

for (j=0; j<30; j++) {

for (i=0; i<10; i++) {

if (nacitane [i]==gener [j]) {printf ("* %d * ", nacitane [i]);}

}}

system ("pause");

return 0;

}

Funkcie

Názorný príklad na ukážku tejto funkcie:

Funkcie s parametrom

Praktický príklad na ukážku tejto funkcie:

//Vytvorte program ,ktorý vypočíta priemer z dvoch načítaných známok.

#include

float priemer (float a, float b);

int main () {

float c1, c2;

float priemer1;

scanf ("%f", &c1);

scanf ("%f", &c2);

priemer1 = priemer (c1, c2);

printf ("Priemer známok je %0.02f.n", priemer1);

system ("pause");

return 0;

}

float priemer (float a, float b) {

return ((a+b)/2);

}

Zones.sk – Zóny pre každého študenta
https://www.zones.sk/studentske-prace/informatika/25038-logicke-obvody-hardverova-cast/