You are on page 1of 12

DIGITALNE STRUKTURE

Zapiski predavanj

Branko Šter, Ljubo Pipan

3 Prekodirniki

Direktna možnost prekodiranja je preslikovalna (“look-up”) tabela, ki jo


lahko realiziramo z bralnim pomnilnikom.

Običajno le 1 gradnik (kodirnik) (npr. BCD v 7seg, ASCII v kod igličnih


tiskalnikov)

V določenih primerih bi bil prekodirnik prevelik in ga je treba sestaviti iz


manjših, ki so navadno tudi bralni pomnilniki.

Npr. pri pretvorbi binarne kode v BCD (za 2 BCD mesti) bi potrebovali
ROM velikosti 100*8 (tj. slaba polovica bralnega pomnilnika 256*8).

Toda pri pretvorbi 32 bitov v BCD imamo 232 =4G ≈ 4 · 109 števil, s tem
tudi 10 BCD mest, tj. 40 bitov. Potrebovali bi ROM velikosti kar 4G*40 !

Varianta je seveda tudi sekvenčni algoritem (npr. z mikrokrmilnikom (“mi-


crocontroller”)), ki pa je počasnejši, pa še mikrokrmilnik rabimo.

Pretvorba med binarno in BCD kodo

Binarno v BCD:

Bin. št. lahko pišemo tudi takole:


n−1
X
B= bi 2i = ((bn−1 × 2 + bn−2 ) × 2 + bn−3 ) × 2... + b0 .
i=0

1
DIGITALNE STRUKTURE 2

Množenje z dva pomeni pomik v levo za 1 mesto.

bin → BCD
00000 → 00000
. .
. .
. .
01001 → 0 1001
01010 → 1 0000
01011 → 1 0001
01100 → 1 0010
01101 → 1 0011
01110 → 1 0100
01111 → 1 0101
10000 → 1 0110
10001 → 1 0111
10010 → 1 1000
10011 → 1 1001
10100∗ → 10 0000

* to pa je že pri 10, zato prekodiranja za 20 ne rabimo

Če gledamo samo gornje 4 bite (ker je zadnji enak), lahko zapišemo prekodirno
tabelo:

2i+4 2i+3 2i+2 2i+1 2i


0 0 0 0 X 0 0 0 0 X
0 0 0 1 X 0 0 0 1 X
0 0 1 0 X 0 0 1 0 X
0 0 1 1 X 0 0 1 1 X
0 1 0 0 X 0 1 0 0 X
0 1 0 1 X 1 0 0 0 X
0 1 1 0 X 1 0 0 1 X
0 1 1 1 X 1 0 1 0 X
1 0 0 0 X 1 0 1 1 X
1 0 0 1 X 1 1 0 0 X

Npr., (0)101X je treba prekodirati v 1 000X, kar pomeni (0)1010 v 1 0000


ter (0)1011 v 1 0001.
DIGITALNE STRUKTURE 3

4-bitni prekodirnik prišteje 3 k številom, ki so večja ali enaka 5.

če ≥5, +3

Vzemimo npr. 8-bitno število 10001100, kar je 14010 .

stotice desetice enice


(0) 1 0 0 0 1 1 0 0
(0) 1 0 0 0 1 1 0 0
(0) 1 0 0 0 1 1 0 0
(0)* 1* 0* 0* 0 1 1 0 0
1 0 0 0 1 1 0 0
+ 3
1 0 1 1 1 1 0 0
1 0 1 1 1 1 0 0
+ 3
1 1 0 1 0 1 0 0
1 1 0 1 0 1 0 0
+ 3
1 1 1 0 0 0 0 0
1 1 1 0 0 0 0 0
+ 3
1 0 1 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0
1 4 0
* tu je že prekodirnik

Vezje, ki realizira pretvorbo:


DIGITALNE STRUKTURE 4

To je primer iterativnega kombinacijskega vezja. Le-to izvaja iterativni algo-


ritem, vendar ne v času, kakor sekvenčna vezja, temveč v prostoru (pri vezjih
za aritmetiko je ta način pogost).

Prekodirnike 4/4 lahko združimo v večje

Npr. 5/5
DIGITALNE STRUKTURE 5

Kot vidimo na sliki, lahko shemo razrezujemo tudi na druge načine.

Komercialne izvedbe: 5/5

Temelj je bil ROM 256*8

Lahko bi imeli 8/8, vendar navadno prekodiramo binarna števila n < 12.

BCD v binarno:

Ta pretvorba je ravno obratna.

4-bitni prekodirnik odšteje 3 od števil, ki so večja ali enaka 8.

če ≥8, -3

Večje (ali enako) od binarne 8 v resnici pomeni večje (ali enako) od 10 v


BCD, tj. 1 000X.

1 0000 → 1010
1 0001 → 1011
1 0010 → 1100
1 0011 → 1101
1 0100 → 1110
1 0101 → 1111
————————–
1 0110 → 10000
1 0111 → 10001
1 1000 → 10010
1 1001 → 10011
10 0000 → 10100

Npr.:
DIGITALNE STRUKTURE 6

Lahko opazimo, da potrebuje pretvorba BCD v bin navadno kak prekodirnik


manj kot obratna pretvorba (na prvem nivoju nam zadostuje že eden).

Pretvorba med binarno in Gray-evo kodo

Gray-eva koda ima koristno lastnost, da se dve sosedni števili vedno razliku-
jeta le v enem bitu (Hamming-ova razdalja je 1). To je ugodno npr. pri
kodiranju odmikov oz. zasukov (pri binarnem kodiranju so problem prehodi,
pri katerih naj bi se spremenilo več bitov hkrati, npr. med 3 in 4, pa se zaradi
realnih senzorjev ne); ali pa npr. pri genetskih algoritmih, če želimo, da mu-
tacija bita le malo spremeni številsko vrednost parametra, zakodiranega v
kromosom.

Pretvornik iz binarne v Gray-evo kodo uporablja operatorje ekskluzivni ALI


(XOR), ki ga bomo označevali z ⊕ (2-vhodna XOR vrata: 7486).

Pretvorba n-bitne binarne kode v Gray-evo:

g0 = b0 ⊕ b1
g1 = b1 ⊕ b2
g2 = b2 ⊕ b3
...
gn−2 = bn−2 ⊕ bn−1
gn−1 = bn−1 ⊕ 0 = bn−1
DIGITALNE STRUKTURE 7

Pretvornik iz binarne v Gray-evo kodo za npr. n = 4:

V Tabeli so Gray-evi ekvivalenti 4-bitnih binarnih števil:

b3 b2 b1 b0 g3 g2 g1 g0
0 0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 1 1
0 0 1 0 0 0 1 1 2
0 0 1 1 0 0 1 0 3
0 1 0 0 0 1 1 0 4
0 1 0 1 0 1 1 1 5
0 1 1 0 0 1 0 1 6
0 1 1 1 0 1 0 0 7
1 0 0 0 1 1 0 0 8
1 0 0 1 1 1 0 1 9
1 0 1 0 1 1 1 1 10
1 0 1 1 1 1 1 0 11
1 1 0 0 1 0 1 0 12
1 1 0 1 1 0 1 1 13
1 1 1 0 1 0 0 1 14
1 1 1 1 1 0 0 0 15

Pretvorba iz Gray-eve v binarno kodo:


bn−1 = gn−1
bn−2 = gn−2 ⊕ bn−1 = gn−2 ⊕ gn−1
bn−3 = gn−3 ⊕ bn−2 = gn−3 ⊕ gn−2 ⊕ gn−1
...
b1 = g1 ⊕ b2 = g1 ⊕ g2 ⊕ ... ⊕ gn−1
b0 = g0 ⊕ b1 = g0 ⊕ g1 ⊕ g2 ⊕ ... ⊕ gn−1
DIGITALNE STRUKTURE 8

Ker so v diskretni izvedbi standardno na voljo le 2-vhodna XOR vrata, je


treba večvhodni XOR operator sestaviti iz le-teh. Za operacijo XOR velja
zakon o združevanju:

(x1 ⊕ x2 ) ⊕ x3 = x1 ⊕ (x2 ⊕ x3 ) = x1 ⊕ x2 ⊕ x3 .

Zato lahko večvhodni XOR operator sestavimo bodisi iterativno

x1 ⊕ x2 ⊕ x3 ⊕ x4 = ((x1 ⊕ x2 ) ⊕ x3 ) ⊕ x4 ,

kot v primeru pretvorbe Gray→binarno, ali pa z drevesno strukturo

x1 ⊕ x2 ⊕ x3 ⊕ x4 = (x1 ⊕ x2 ) ⊕ (x3 ⊕ x4 ) ,

ki ima v splošnem manj nivojev in torej manjšo zakasnitev. Na sliki sta


različni izvedbi 4-vhodne XOR operacije: iterativna (na sredini) in drevo (na
desni):

Seveda lahko tudi prekodirnik Gray-bin. realiziramo z ROM (naslov pred-


stavlja Gray-evo kodo, vsebina lokacije pa ustrezno binarno).

Kodirnik

Kodirnik (“encoder”) ima nasprotno funkcijo kot dekodirnik.

Npr., kodirnik 4/2 kodira kodo “1-od-N” v binarno:

b0 b1 b2 b3 y0 y1
1 0 0 0 0 0
0 1 0 0 0 1
0 0 1 0 1 0
0 0 0 1 1 1
DIGITALNE STRUKTURE 9

y0 = b2 ∨ b3
y1 = b1 ∨ b3

To bi delovalo, če bi bil aktiven vedno samo en vhod. V nasprotnem primeru


se lahko zgodi, da npr. pri b=0110 dobimo y=11, česar ne želimo. Zato imajo
kodirniki navadno mehanizem, imenovan prioriteta.

h3 = b3 (najvišja prioriteta)
h2 = b2 b03
h1 = b1 b02 b03
h0 = b0 b01 b02 b03

y0 = h2 ∨ h3 = b2 b03 ∨ b3
y1 = h1 ∨ h3 = b1 b02 b03 ∨ b3

V prejšnjem primeru je h2 aktiven, h1 pa ne, ker ima nižjo prioriteto.

Dva standardna kodirnika sta:

• 74147, kodirnik 10-4 (“1-od-10” v BCD) s prioriteto,

• 74148, kodirnik 8-3 (glej naslednjo Tabelo).

Kodirnik 74148:

Vhodi Izhodi
EI 0 1 2 3 4 5 6 7 A2 A1 A0 GS EO
1 X X X X X X X X 1 1 1 1 1
0 1 1 1 1 1 1 1 1 1 1 1 1 0
0 X X X X X X X 0 0 0 0 0 1
0 X X X X X X 0 1 0 0 1 0 1
0 X X X X X 0 1 1 0 1 0 0 1
0 X X X X 0 1 1 1 0 1 1 0 1
0 X X X 0 1 1 1 1 1 0 0 0 1
0 X X 0 1 1 1 1 1 1 0 1 0 1
0 X 0 1 1 1 1 1 1 1 1 0 0 1
0 0 1 1 1 1 1 1 1 1 1 1 0 1
DIGITALNE STRUKTURE 10

Generator paritete

XOR operacijo večih spremenljivk se uporablja tudi kot generator paritete.


Npr., 74280 je 9-bitni MSI generator paritete. Realizira XOR in XNOR
(negacija XOR; le pri dveh spremenljivkah je to tudi ekvivalenca) 9 spre-
menljivk. Funkcija XOR n spremenljivk vrne logično 1, če je št. enic liho,
sicer vrne logično 0.
f = x1 ⊕ x2 ⊕ ... ⊕ xn
Ker imajo vsi vhodi enako vlogo, je to simetrična funkcija f(1,3,5,...) (x1 , x2 , ..., xn ).
Funkcija XOR pa je tudi najneugodnejša funkcija n spremenljivk v smislu
minimizacije (se ne da minimizirati).

Pri 74280 so interno realizirane 3 XOR funkcije po treh vhodnih spremenljivk


dvonivojsko (DNO: PDNO seveda, ker se XOR ne da minimizirati), ter na
isti način še XOR teh treh funkcij.

Pomikalnik (shifter)

Pomikalnik je kombinacijsko vezje za pomikanje podatkov. S krmilnima


vhodoma S1 in S0 določimo tip pomika. Vhod E določa ”omogoči izhod”.

S1 S0 funkcija
0 0 ni pomika
0 1 pomik za 1 mesto
1 0 pomik za 2 mesti
1 1 pomik za 3 mesta
DIGITALNE STRUKTURE 11

Več pomikalnikov lahko vežemo v kaskado. Pomikanje vsebine pomeni v


aritmetiki množenje oz. deljenje z večkratniki števila 2.

Komparatorji

Komparator (primerjalnik) je kombinacijsko vezje, ki primerja dva večbitna


vektorja A in B in indicira enakost, pogosto pa tudi urejenost A > B, oz.
A < B. To vezje bi lahko šteli med vezja za aritmetiko. Najmanjši, enobitni
komparator je kar operator ekvivalence oz. XNOR. Že po imenu sodeč nam
le-ta pove, ali sta vhodna bita enaka. Prav tako lahko uporabimo XOR
operator, ki pove, ali sta bita različna, kar je dobro znano že iz Preklopnih
vezij.

Oglejmo si dve možnosti. Prva je vzporedni oz. paralelni komparator, ki


primerja istoležne bite z enobitnimi komparatorji in vse izhode združi z us-
treznimi vrati:

V primeru enakosti vektorjev gre izhod

f = (a0 ⊕ b0 ) ∨ (a1 ⊕ b1 )... ∨ (an ⊕ bn )

v logično ničlo.

Iterativni komparator:
DIGITALNE STRUKTURE 12

deluje na enakem principu, le da se informacija o enakosti širi serijsko in je


seveda počasnejši. Seveda bi lahko tudi tukaj imeli XOR in ALI operatorje,
kakor tudi v prejšnjem primeru XNOR in IN operatorje.

7485 je 4-bitni MSI komparator z vhodi a0 ..a3 , b0 ..b3 , IA<B , IA=B , IA>B , ter
izhodi OA<B , OA=B , OA>B , ki so

OA<B = (A < B) ∨ (A = B)IA<B


OA=B = (A = B)IA=B
OA>B = (A > B) ∨ (A = B)IA>B

Pri tem je

(A > B) = A3 .B30 ∨
(A3 ⊕ B3 )0 A2 .B20 ∨
(A3 ⊕ B3 )0 (A2 ⊕ B2 )0 A1 .B10 ∨
(A3 ⊕ B3 )0 (A2 ⊕ B2 )0 (A1 ⊕ B1 )0 A0 .B00

You might also like