1) Napraviti demultiplekser 1-8 (jedan ulaz, 8 izlaza) pomocu demultipleksera 1-2 i 1-4.
2) Napraviti demultiplekser 1-4 pomocu dekodera 2-4 (dekoder sa dva selekciona ulaza i 4 izlaza).
3) Napraviti paralelni 8-bitni multiplekser 4-1.
4) Pomocu multipleksera napraviti kolo za pomeranje u desno 8-bitnog podatka. Pomocu ulaza s_2,s_1,s_0
bira se broj pozicija za koliko se pomera, a pomocu ulaza A bira se da li je pomeranje aritmeticko (A=1)
ili logicko (A=0).
5) Pomocu multipleksera napraviti kolo koje na ulazu ima tri 4-bitna cela broja
x, y, z, a na izlazu takodje tri cetvorobitna broja x', y' i z' koji su
permutacija ulaznih brojeva (npr. ako je ulaz x = 3, y = 4, z = 5, tada izlaz
(x', y', z') moze biti neka od sledecih trojki: (3,4,5), (3,5,4), (4,3,5),
(4,5,3), (5,3,4), (5,4,3). Koja ce se od 6 mogucih permutacija naci na izlazu
zavisi od trobitnog selekcionog ulaza S (njegove vrednosti od 0 do 5 odredjuju
jednu od gore datih permutacija u datom redosledu, dok vrednosti 6 i 7
pretpostavljamo da se nece javiti na selekcionom ulazu). UPUTSTVO: koristiti
tri 4bitna multipleksera 8-1, za svaki izlaz po jedan.
6) Napraviti ciklicni 4-bitni registar koji u svakom taktu sata ciklicno
pomera svoj sadrzaj za jedno mesto u levo (u pitanju je standardno pomeranje
u levo, s tim sto se istisnuti najvisi bit prebacuje na poziciju najnizeg
bita). Registar treba da omoguci i da se sadrzaj registra po zelji u nekom
trenutku postavi na proizvoljnu vrednost (tj. paralelno ucitavanje).
7) Nacrtati logicko kolo koje za cetvorobitni operand x i jednobitni 
kod operacije y implementira pomeracki registar koji radi sledece:
  a) Ako je kod operacije 0, siftuje operand x za jedno mesto u levo
  b) Ako je kod operacije 1, ciklicki siftuje operand x za jedno mesto u desno
8) Napraviti sledece sinhrone brojace:
  -- 0-2-4-6-5-3-1-0
  -- 0-1-3-4-5-6-8-9-10-11-12-0
  -- 0-5-4-2-3-1-7-0
  -- 0-6-1-2-3-4-5-0
  -- 0-15-14-1-2-13-12-3-4-11-10-5-6-9-8-7-0
9) Napraviti logicko kolo koje pomocu sabiraca implementira funkciju:
f(x,y,z) = (x + y)/2 + 2 * (z - 3)
Brojevi x, y i z su 4-bitni celi brojevi. 
10) Napraviti 4-bitnu ALU jedinicu koja podrzava operacije sabiranja,
pomeranja u levo, bitovskog komplementiranja i uvecanja za jedan.
Sva kola koja ucestvuju u izgradnji ALU jedinice prethodno zasebno
napraviti.
11) Pomocu 8-bitnih sabiraca napraviti kolo koje mnozi dva 4-bitna
cela neoznacena broja. UPUSTVO: pomocu 3 sabiraca i multipleksera
simulirati algoritam mnozenja neoznacenih brojeva sa UOR-a. Npr.
za prvi sabirac na niza 4 x-ulaza bi isao ili mnozenik (ako je najnizi
bit mnozioca 1) ili 4 nule (ako je najnizi bit mnozioca 0). Najnizi
bit mnozioca bi u stvari bio kontrolni bit za multiplekser koji
odredjuje sta ce biti na ulazu sabiraca. Visih 4 x-ulaza ce svakako
biti nule. Na y ulazima ce biti slicno, jedino sto ce najnizi y ulaz
uvek biti nula, a bitovi mnozenika ce se dovoditi na sledeca 4 y ulaza
(efekat pomeranja pri "potpisivanju"). Multiplekser za y ulaze ce biti
kontrolisan sledecim bitom mnozioca. Sledeci sabirac ce zbir
prethodnog sabiraca da sabira ponovo sa mnozenikom, ali sada za
dve pozicije pomerenim u levo, ili sa nulom (u zavisnosti od treceg
sa desna bita mnozioca) i td.

SIM procesor:

12) Napisati program koji izracunava izraz 7*(3*x + 5*y - z/2)
13) Napisati program koji izracunava sumu prvih n prirodnih brojeva.
14) Napisati program koji racuna x^y.
15) Napisati program koji izracunava sumu prvih n prostih brojeva.
16) Napisati program koja za dati niz koeficienata polinoma i dato x racuna
    vrednost polinoma u tacki x.
17) Napisati program koja za dati niz odredjuje dva najveca elementa u tom
    nizu.
18) Napisati program koja odredjuje dekadne cifre broja x i smesta ih u izlazni niz.
19) Napisati program koji za dato n ispituje koliko ima parova "blizanaca" manjih
    od n. Za par brojeva kazemo da su "blizanci" ako se razlikuju za 2 i oba su
    prosti (npr, (3,5), (5,7), (11, 13), (17,19), itd.). Na primer, za n = 20,
    broj parova "blizanaca" manjih od n je upravo 4. 
20) Napisati program koji u datom nizu zamenjuje susedne elemente, tj. a[0] sa a[1],
    a[2] sa a[3] i td.
21) Napisati program koji iz dekadnog zapisa datog neoznacenog celog broja izbacuje
sva pojavljivanja najvece cifre (za ulaz 187 vraca 17, a za ulaz 212 vraca 1).
22) Napisati program koji pronalazi najveci strogo rastuci uzastopni podniz datog
    celobrojnog niza. Program treba da izracuna indeks pocetka tog podniza kao i
    njegovu duzinu.
23) Napisati program koji proverava da li su u datom celobrojnom nizu svi prosti
    brojevi koji se u njemu javljaju u rastucem poretku. 
