View
217
Download
0
Category
Preview:
Citation preview
UKŁADY
MIKROPROCESOROWE
OPRACOWANIE KŁ
MALBORK
Kodowanie informacji i systemy liczbowe
WPROWADZENIE
1. Pojęcia podstawowe:
Czym zajmuje się elektronika ?
Informacja
Sygnał
Uproszczona klasyfikacja układów elektronicznych
Wzmacniacze
.
.
.
Układy liniowe
Modulatory
Prostowniki
Powielacze
...
Układy nieliniowe
Układy analogowe
Uklady kombinacyjne
Układy synchroniczne Układy asynchroniczne
Układy sekwencyjne
Układy cyfrowe
Układy elektroniczne
Układy kombinacyjne
(bez pamięci)
Układy sekwencyjne
(z pamięcią)
- Analogowe - nieprzerwane w czasie i dziedzinie amplitudy
- Próbkowane - przerywany na osi czasu; na osi amplitudy przyjmuje
każdą wartość
- Kwantowane - nieprzerwane w czasie; przyjmuje ściśle określone
poziomy amplitudowe
- Cyfrowe - dyskretne, czyli nieciągłe w czasie; nieciągłe w amplitudzie
KLASYFIKACJA SYGNAŁÓW
- cyfrowe: dyskretne, czyli nieciągłe w czasie; nieciągłe w amplitudzie np.
binarne (dwójkowe) czyli przyjmujące dwie określone wartości w określonych
momentach (chwilach) czasowych; sygnał cyfrowy może mieć wartość
amplitudy 0 [V] (niski potencjał), bądź +U [V] (wysoki potencjał), choć trzeba
zaznaczyć, że jest to sprawa konwencji, bowiem można też przyjąć - U [V].
Zazwyczaj sygnałowi 0 [V] zwykło się przypisywać cyfrę "0", natomiast
sygnałowi +U [V] cyfrę "1" (konwencja dodatnia, pozytywna).
Z powodu swoich zalet sygnały cyfrowe wykorzystuje się coraz
częściej również w dziedzinach elektroniki, gdzie dotychczas
stosowanie sygnałów analogowych wydawało się najbardziej
naturalne i oczywiste (np. technika PCM - modulacja kodowo-
impulsowa w teletransmisji).
Podstawowymi parametrami informacji cyfrowej jest liczba cyfr
tworzących przetwarzaną cyfrę oraz częstotliwość ich
przekazywania. Ponieważ naturalne jest dążenie do zwiększenia
ilości informacji przesyłanej w czasie, dlatego zrozumiała jest
tendencja do stosowania wąskich impulsów o dużej częstotliwości.
Widmo sygnału cyfrowego nie jest istotnym parametrem, dlatego
układy cyfrowe logiczne nie są badane częstotliwościowo, zaś
jedynie pod kątem zachowania standardowych wartości amplitudy
typowej dla "0" lub "1", odpowiedniego czasu narastania i opadania
zbocza impulsu.
TECHNIKA PCM
Układ logiczny - przetwornik informacji podanej w sposób
dyskretny, nieciągłej w czasie i wyróżniającej dwie wartości
amplitudy sygnału.
Układ logiczny a układ cyfrowy - układem logicznym (logic
circuits) zwykło się nazywać modele matematyczne
(abstrakcyjne) fizycznie istniejącego "układu cyfrowego" (digital
circiuts) zbudowanego z elementów cyfrowych. Spotyka się
również termin "układy przełączające" (switching circuits)
mające swoje pochodzenie w technice układów stykowych.
OKREŚLENIE UKŁADU LOGICZNEGO
POJĘCIE UKŁADU CYFROWEGO, POJĘCIE
UKŁADU LOGICZNEGO
UKŁAD
LOGICZNY
xm
x2
x1 y1
y2
yn
xi{0;1} i=1,2,...,m
yj {0;1} j=1,2,...,n
Programowalny układ logiczny
UKŁAD
LOGICZNY
xm
x2
x1 y1
y2
yn
sk s2 s1
SPOSOBY PRZEDSTAWIANIA INFORMACJI W UKŁADACH LOGICZNYCH
1. Kodowanie cyfrowe
2. Kody:
• NKB
• BCD (Binary Coded Decimal)
• „1 z n”
• Unitarny
• Kod wskaźnika 7- elementowego
• Gray’a
Kodowanie cyfrowe
INFORMACJA CIĄGI BINARNE
KODOWANIE
Kodowanie binarne - odwzorowanie przyporządkowujące każdej
informacji ze zbioru I (zbiór inf. określonego typu) jednego i tylko jednego
słowa binarnego ze zbioru X. Przez kod (I)=X wyrażone jest słowo binarne
reprezentujące informację I.
Jeśli słowo binarne X o długości (liczbie bitów) n reprezentuje formację
liczbową, to jest możliwe podanie wzoru określającego zależności pomię-
dzy wartościami poszczególnych bitów słowa a wartością reprezentowanej
przez to słowo liczby. Zaznaczyć trzeba, że jest to słuszne tylko dla tzw.
kodów wagowych - gdzie każdy bit słowa ma określoną wagę.
NKB w zakresie od 0 do 15
0 0 0 0 0
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
4 0 1 0 0
5 0 1 0 1
6 0 1 1 0
7 0 1 1 1
8 1 0 0 0
9 1 0 0 1
10 1 0 1 0
11 1 0 1 1
12 1 1 0 0
13 1 1 0 1
14 1 1 1 0
15 1 1 1 1
8 4 2 1
KOD DWÓJKOWY
Cyfra
dziesiętna Wektor informacji
cyfrowej
0
1
2
3
4
5
6
7
000
001
010
011
100
101
110
111
03
3
2
2
1
1
2
021
...222
1,0,...
aaaaX
aaaa
n
n
n
n
n
n
nn
10100111 2 1 2 0 2 1 2 0 2 0 2 1 2 1 2 1 1672
7 6 5 4 3 2 1 0
10
35
217 1
17
28 1
8
24 0
4
22 0
2
21 0
1
20 1
................
..................
...................
...................
...................
...................
ILORAZ RESZTA
1 0 0 0 1 1
Kod uzupełnieniowy
(ang. complement code)
– dwójkowa reprezentacja liczby, w której bit najbardziej
znaczący jest traktowany jako bit znaku. Zaletą tego kodu
jest prostota układów elektronicznych wykonujących
działania na przedstawionych w nim liczbach. Rozróżnia się
kody uzupełnień do jedności oraz do dwóch, różniące się
sposobem zapisu liczb ujemnych oraz – co za tym idzie –
algorytmami wykonywania działań arytmetycznych.
KOD U2
Kod uzupełnień do dwóch (w skrócie U2 lub ZU2) jest obecnie
najpopularniejszym sposobem zapisu liczb całkowitych oraz ułamkowych
przedstawionych w formacie stałoprzecinkowym na bitach. Jego
popularność wynika z faktu, że operacje dodawania i odejmowania są w nim
wykonywane tak samo jak dla liczb binarnych bez znaku. Z tego też powodu
oszczędza się na kodach rozkazów procesora.
Nazwa kodu wzięła się ze sposobu obliczania liczb przeciwnych. Dla
jednobitowej liczby wartość przeciwną obliczamy odejmując daną liczbę od 2
(uzupełniamy jej wartość do dwóch). Analogicznie, dla liczb n-bitowych
wartości przeciwne uzyskujemy odejmując liczbę od dwukrotnej wagi
najstarszego bitu (2·2n–1 = 2n). W analogiczny sposób można stworzyć np.
kod uzupełnień do jedności.
Zaletą tego kodu jest również istnienie tylko jednego zera. Przedział
kodowanych liczb nie będzie zatem symetryczny. W U2 na n bitach da się
zapisać liczby z zakresu:
Dla 8 bitów (bajta) są to liczby od –128 do 127. Liczba –2n–1 nie posiada
swojego przeciwieństwa w n-bitowej reprezentacji kodu U2.
KOD U2
Zapis liczb
W dwójkowym systemie liczbowym najstarszy bit liczby n-
cyfrowej ma wagę 2n–1. Jedyną różnicą, jaką wprowadza tu
kod U2, jest zmiana wagi tego bitu na przeciwną (–2n–1). Bit
ten jest nazywany bitem znaku, ponieważ świadczy o znaku
całej liczby – jeśli jest ustawiony (=1) cała liczba jest ujemna,
jeśli jest skasowany (=0) – liczba jest dodatnia lub równa 0.
Zwiększając obszar zajmowany przez liczbę w kodzie U2
(np. z jednego bajta na dwa), dodawany obszar wypełnia się
bitem znaku.
KOD U2
Zapis liczb Kod U2 może być połączony z kodem stałopozycyjnym w celu
umożliwienia zapisu liczb niecałkowitych. Wymagana jest wtedy umowa co do
miejsca położenia przecinka oddzielającego część całkowitą od ułamkowej
(może on również leżeć poza cyframi znaczącymi liczby). Liczby takie można
traktować jako liczby całkowite przy dodawaniu i odejmowaniu. Przy mnożeniu i
dzieleniu wymagane są korekty, jeśli wynik ma mieć w tym samym miejscu
przecinek.
Zapis dwójkowy liczb zmiennoprzecinkowych na ogół nie używa wcale kodu
U2, bądź używa go tylko dla wykładnika.
PRZYKŁAD:
11101101U2= 𝟏 ∙ − 𝟐𝟕 + 𝟏 ∙ 𝟐𝟔 + 𝟏 ∙ 𝟐𝟓 + 𝟎 ∙ 𝟐𝟒 + 𝟏 ∙ 𝟐𝟑 + 𝟏 ∙ 𝟐𝟐 + 𝟎 ∙ 𝟐𝟏 + 𝟏 ∙ 𝟐𝟎
KOD U2
Liczba przeciwna
Aby zamienić liczbę w U2 na przeciwną, należy wykonać
dwa kroki:
dokonać inwersji bitów, czyli pozamieniać 0 na 1 i odwrotnie;
zwiększyć wynik o 1.
Można też posłużyć się metodą podaną na wstępie, ale
powyższa metoda jest prostsza i działa również na
procesorach, które nie mają operacji odejmowania.
Przykład
Dana jest liczba:
01001010U2 = 0 ⋅ -(27) + 1 ⋅ 26 + 0 ⋅ 25 + 0 ⋅ 24 + 1 ⋅ 23 + 0 ⋅ 22 + 1 ⋅ 21 + 0 ⋅ 20 = 74D
Dokonujemy inwersji: 10110101 i zwiększamy o 1:
10110110U2 = 1 ⋅ -(27) + 0 ⋅ 26 + 1 ⋅ 25 + 1 ⋅ 24 + 0 ⋅ 23 + 1 ⋅ 22
+ 1 ⋅ 21 + 0 ⋅ 20 = -74D
KOD U2
Dodawanie i odejmowanie liczb
Dodawanie i odejmowanie w U2 odbywa się standardową
metodą – traktujemy liczby jako zwykłe liczby binarne
(dodatnie), dodajemy je lub odejmujemy, a wynik
otrzymujemy w zapisie U2. Dodawanie i odejmowanie
odbywa się łącznie z bitem znaku, a przeniesienia i pożyczki
poza najstarszy bit (bit znaku) ignorujemy. Jeśli jednak
przepełnienie (lub pożyczka) nie będzie występować
jednocześnie na bit znaku i poza niego, wówczas możemy
być pewni przekroczenia zakresu wyniku.
KOD U2
Przykład
Uwaga: przecinek oznacza odddzielenie części całkowitej
od ułamkowej, kropka znaku liczby od wartości w U2
Rezerwujemy odpowiednią ilość "bitów" uzupełniając z lewej
strony bitem znaku, a z prawej zerami zgodnie z zasadą
zapisu w U2.
KOD U2
Dodawanie
1.10100,010
+1.11000,011
------------
1.01100,101
KOD U2
Odejmowanie
Odejmowanie jest realizowane, podobnie jak dodawanie
1.10100,010
-1.11000,011
------------
1.11011,111
KOD U2
Odejmowanie może być zamienione na dodanie liczby przeciwnej,
dlatego w niektórych procesorach zrealizowano tylko operację
tworzenia liczby przeciwnej i dodawanie. Przykład odejmowania
przez zamianę liczby na liczbę przeciwną.
przeciwna do 1.11000,011 = 0.00111,101
1.10100,010
+0.00111,101
------------
1.11011,111
KOD U2
Mnożenie liczb
I wariant metody Bootha
Algorytm słowny:
Badamy kolejne pary bitów mnożnika.
Jeżeli badana para jest kombinacją 10 to od iloczynu
częściowego odejmujemy mnożną, wynik przesuwamy o
jedno miejsce w prawo.
Jeżeli jest to para 01 to dodajemy mnożną do iloczynu
częściowego, przesuwamy wynik o jedno miejsce w prawo
Jeżeli są to pary 00 lub 11 to nie wykonujemy żadnego
działania, tylko przesuwamy o jedno miejsce w prawo.
Gdy w skład pary wchodzi bit znaku to nie wykonujemy
przesunięcia.
Przykład
Uwaga: część całkowita w zapisie binarnym została pominięta -
zapis jest postaci bit_znaku.bity_ułamka
Analizuję bity liczby B (od prawej do lewej strony), dodaję i odejmuję liczbę A.
0.0000 (iloczyn częściowy)
-1.1011 (jest 10, odejmuje)
------
0.0101 0.00101 -> (i przesuwa)
+1.1011 (jest 01, dodaje)
-------
1.11011 1.111011 -> (i przesuwa)
1.1111011 -> (jest 00, tylko przesuwa)
-1.1011 (jest 1.0, ale jest bit znaku, to nie przesuwa )
---------
0.0100011
Wynik otrzymujemy w kodzie znak-moduł (ZM).
KOD U2
KOD U2
Sprawdzenie
Kod uzupełnień do jedności to sposób zapisu liczb całkowitych
oznaczany jako ZU1 lub U1. Liczby dodatnie zapisywane są jak w
naturalnym kodzie binarnym, przy czym najbardziej znaczący bit –
traktowany jako bit znaku – musi mieć wartość 0. Do reprezentowania
liczb ujemnych wykorzystywana jest bitowa negacja danej liczby, co
sprawia, że bit znaku ma wartość 1. Wynika z tego również
występowanie dwóch reprezentacji zera: +0 (00000000U1) i -0
(11111111U1). W związku z tym liczby zapisane w ZU1 na n bitach
pochodzą z zakresu:
co daje zakres identyczny jak w reprezentacji znak-moduł. Dla 8 bitów
(bajta) są to liczby od -127 do 127.
KOD UZUPEŁNIEŃ DO JEDNOŚCI ZU1
KOD UZUPEŁNIEŃ DO JEDNOŚCI ZU1
Dodawanie i odejmowanie
Dodawanie liczb w U1 jest podobne do dodawania liczb binarnych, z tą
różnicą że powstałe przeniesienie poza najstarszy bit należy dodać do
wynikowej sumy. Na przykład obliczając wartość wyrażenia 7 + (–3)
oczekujemy wyniku 4. Dodając binarnie te liczby zapisane w kodzie U1,
dostaniemy liczbę 3 oraz przeniesienie, które dodajemy do otrzymanej
liczby aby otrzymać ostateczny wynik 4:
111111 (przeniesienia na poszczególnych bitach)
00000111U1 7D
+ 11111100U1 -3D
----------
100000011
00000011U1 3D (wynik obcięty do zakresu liczby)
+ 00000001D 1D (dodajemy przeniesienie)
----------
00000100U1 4D (ostateczny wynik)
Aby wykonać odejmowanie wystarczy odwrócić bity drugiej liczby i tak
powstałe liczby dodać.
Kod znak-moduł
to sposób zapisu liczb całkowitych oznaczany
jako ZM (bądź SM). Wszystkie bity poza
najstarszym mają takie samo znaczenie jak w
naturalnym kodzie binarnym. Wyróżniony bit w
tym zapisie jest bitem znaku. Jeżeli ma on
wartość 0 to dana liczba jest dodatnia, jeżeli 1 to
liczba jest ujemna. W związku z tym występują
dwie reprezentacje zera: +0 (00000000ZM) i -0
(10000000ZM). Jednocześnie wpływa to na zakres
liczb jaki można przedstawić używając kodowania
ZM na n bitach:
Dla 8 bitów (bajta) są to liczby od -127 do 127.
Liczby zapisane w kodzie ZM na 4 bitach:
znak-moduł dziesiętnie
0000 +0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 -0
1001 -1
1010 -2
1011 -3
1100 -4
1101 -5
1110 -6
1111 -7
3 7 6 4 Cyfra
dziesiętna
Wektor informacji
cyfrowej
0
1
2
3
4
5
6
7
000
001
010
011
100
101
110
111
KOD ÓSEMKOWY
011 111 110 100
L8=an8n + an-18
n-1 +…+a1 81 + a08
0
3764(8)=3*83 + 7*82 + 6*81 + 4*80=1536+448+48+4=2036(10)
F A 4 Cyfra
szesnast.
Wektor informacji
cyfrowej
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
KOD SZESTNASTKOWY
1111 1010 0100
7 6 4 4
Lhex=an16n + an-116n-1 +…+a1 161 + a0160
FA4hex= 15*162 + 10*161 + 4*160 = 3840+160+4=4004(10)
BCD
(25)10 = ( 1 1 0 0 1 )NKB
16 8 4 2 1
(25)10 = ( 0 0 1 0 0 1 0 1 )BCD (Każda cyfra oddzielnie)
2 5
4 BITY BO CYFRY SĄ OD 0 DO 9
Unitarny
( 1 ) 1
( 2 ) 11
( 3 ) 111
( 4 ) 1111
Kod wskaźnika 7- elementowego
b g f
e
d
c
a
a b c d e f g
0 1 1 1 1 1 1 0
2 1 1 0 1 1 0 1
6 1 0 1 1 1 1 1
1 0 1 1 0 0 0 0
8 1 1 1 1 1 1 1
3 1 1 1 1 0 0 1
5 1 0 1 1 1 0 1 4 0 1 1 0 0 1 1
9 1 1 1 1 0 1 1
7 1 1 1 0 0 0 0
Kod Gray’a
2- bitowy 0 0 0 1 1 1 1 0
3- bitowy
0 000 1 001 2 011 3 010 4 110
5 111 6 101 7 100
1- bitowy n = 1 0 1
110 111
101
000 001
011 010
100
11
00 01
10
Kod Gray’a dla czterech zmiennych
0 0 0 0
0 0 0 1
0 0 1 1
0 0 1 0
0 1 1 0
0 1 1 1
0 1 0 1
0 1 0 0
1 1 0 0
1 1 0 1
1 1 1 1
1 1 1 0
1 0 1 0
1 0 1 1
1 0 0 1
1 0 0 0
1110 1111
1101
1000 1001
1011 1010
1100
0110 0111
0101
0000 0001
0011 0010
0100
Liczby stałopozycyjne
Liczby stałopozycyjne i zmiennopozycyjne
Przeprowadzanie obliczeń na liczbach całkowitych oraz
ułamkowych, o bardzo dużych oraz małych wartościach
wymaga stosowanie rożnych metod przedstawienia liczb.
Obecnie stosowane są dwa sposoby prezentacji liczb,
stałopozycyjne oraz zmienno pozycyjne.
Postać liczby stałopozycyjna może być wykorzystywana
zarówno do reprezentowania liczb całkowitych jak i
ułamkowych. W takiej postaci można przedstawić również
liczby składające się z części całkowitej oraz ułamkowej. W
przypadku takim pierwszy bit odpowiada za znak liczby, druga
część bitów przedstawia część liczby całkowitą, natomiast
część ułamkową przedstawia trzecia część bitów.
Liczby stałopozycyjne
Rys. 8. Format liczby stałopozycyjnej
Liczby stałopozycyjne
W większości komputerów przetwarzane są liczby
stałopozycyjne w których przecinek jest umieszczony
zaraz po najmłodszej cyfrze liczby, czyli przetwarzane są
liczby całkowite. Możliwe jest wtedy przeprowadzenie
obliczeń zarówno w systemie binarnym jak również liczb
dziesiętnych których pojedyncze cyfry zapisane są za
pomocą tetrad. Podczas gdy przecinek umieszczany jest
przed najstarszą z cyfr liczby, obliczenia wykonywane są
na liczbach ułamkowych. Najrzadziej spotyka się liczbę
stałopozycyjną w której przedstawiona jest część
całkowita i ułamkowa, ze względu na skomplikowane
przetwarzanie takich liczb.
Liczby stałopozycyjne
Może się zdarzyć iż liczba cyfr przed przecinkiem jest
większa od ilości odpowiednich bitów i mamy wtedy do
czynienia z nadmiarem w pozycjach cyfrowych, czego
efektem jest przekłamanie w wyniku operacji
arytmetycznych. Aby temu zapobiec wprowadza się
współczynnik skali. Są to liczby przez które mnoży się
liczbę stałopozycyjną aby nie doszło do nadmiaru.
Prostszym rozwiązaniem jest przedstawienie liczby jako
ułamka właściwego. Możliwy jest również przypadek
otrzymania w trakcie operacji arytmetycznych wyniku o
bardzo małej wartości, a wtedy liczba stałopozycyjna
może być zapisana za pomocą samych zer. Mamy wtedy
do czynienia z niedomiarem.
Rozwiązaniem problemów związanych z niedokładnością obliczeń
na liczbach stałopozycyjnych jest zastosowanie do reprezentacji liczb
postaci zmiennopozycyjnej. Liczbę w takiej postaci przedstawia wzór:
X = kp M gdzie: M - mantysa liczby X, p - cecha liczby X, k - podstawa
cechy.
Rys. 9. Format liczby zmiennopozycyjnej
Dla mantysy rezerwowana jest stała liczba cyfr o podstawie k tak, że
zakres zmian mantysy może być określony jako k-m < M < 1 – k-m. Dla
udogodnienia zapisu cechy p liczby mantysa podlega normalizacji, czyli
zakres jej zmian zostaje przedstawiony jako k-1 ≤ X ≤ 1 – k-m. W mantysie
po normalizacji pierwsza jej cyfra zawiera zawsze cyfrę różna od zera. W
systemie dwójkowym będzie to jedynka.
Cecha p liczby, przedstawiona jest poprzez liczbę stałopozycyjną i
może być zarówno dodatnia jak i ujemna. Dla cechy jest przeznaczone n
cyfr o podstawie k, wobec czego zakres zmian przedstawia się wzorem:
Tak więc przedział zmian wartości liczby prezentowanej
w postaci zmiennopozycyjnej możemy określić:
Po przekształceniu otrzymujemy równanie:
Liczby w obydwu formatach, stałopozycyjnym oraz
zmiennopozycyjnym są obarczone błędami względnymi i wynoszą
one:
i
Błąd względny w przypadku kiedy liczba jest
reprezentowana za pomocą formy zmiennopozycyjnej jest
równomiernie rozłożony w całym zakresie liczby. W
przypadku zastosowania formy stałopozycyjnej błąd
względny jest tym mniejszy im dłuższa jest mantysa w
związku z czym w tej postaci zapisuje się duże liczby,
podczas gdy w formie zmiennopozycyjnej liczby małe. Aby
uzyskać dużą dokładność obliczeń w komputerach stosuje
się kombinację obydwu form przedstawienia liczb.
Wykorzystując do obliczeń liczby stałopozycyjne
uzyskujemy możliwość użycia prostej jednostki
arytmetyczno-logicznej komputera, z drugiej strony
uzyskujemy mały zakres liczb jaki możemy przedstawić za
pomocą takiej jednostki.
Wady i zalety systemu stałopozycyjnego i
zmiennopozycyjnego
5.1 Dodawanie i odejmowanie
Algorytm sumy arytmetycznej bitów:
W sumowaniu liczb wielobitowych dodawaniu podlegają bity o
identycznych wagach np.
1001 + 0101 = 1110 C = 0, S = 1110
1101 + 1011 = 11000 C = 1, S = 1000
bity przeniesienie C suma S
0 + 0 0 0
0 + 1 0 1
1 + 0 0 1
1 + 1 1 0
W sumowaniu liczb wielobitowych dodawaniu podlegają bity o identycznych
wagach np.
1001 + 0101 = 1110 C = 0, S = 1110
1101 + 1011 = 11000 C = 1, S = 1000
Operacje arytmetycznie wygodnie jest wykonywać w kodzie U2.
Wykażemy , że -a = a' + 1
a = (1010)U2 = -8 + 2 = (-6)10
-a = (1010)'U2 + 1 = 0101 + 1 = (0110)U2 = 4 + 2 = (6)10
a - a = 0 , a + a' + 1 = 0 1010 + 0110 = 10000 C = 1 S = 0
Operacja odejmowania w kodzie U2 sprowadza się do dodawania :
a - b = a + (-b) = a + b' + 1
Przykład:
a = (36)10 b = (71)10 , oblicz a - b
a = (00100100)U2 b = (01000111)U2 -b = (01000111)? + 1 = 10111000 + 1 =
(10111001)U2
a - b = 00100100 + 10111001 = (11011101)U2 = -128 + 64 + 16 + 8 + 4 + 1 = (-
35)10
C = 0 , S = 11011101
Mnożenie i dzielenie przez dwa - przesunięcia arytmetyczne
Mnożenie przez dwa ( nazywane inaczej arytmetycznym przesunięciem
w lewo ) realizujemy zawsze przez przesunięcie liczby w lewo z
dopisaniem 0 na najmniej znaczącej pozycji. W razie przekroczenia
zakresu może pojawić się nadmiar.
Przykład: - przesunięcie w lewo
(2)10 = (0010)U2 ------(0100)U2 = (4)10
(-2)10 = (1110)U2 ------ (1100)U2 = - 4
Jeżeli w wyniku przesunięcia znak liczby (najbardziej znaczący bit ) nie
ulegnie zmianie to przesunięcie w lewo poprawnie realizuje mnożenie
przez dwa.
W poniższych przykładach znak liczby zmieni się:
(4)10= (0100)U2 -----(1000)U2 = (-8)10 ?
(-6)10= (1010)U2 ------ (0100)U2 = (4)10 ?
Wystąpił nadmiar i wynik jest błędny. Wynika on z faktu, że
zwiększyliśmy wartość liczby tak bardzo, że przekroczyła ona zakres
liczb możliwych do wyrażenia w ograniczonym słowie.
Dzielenie przez dwa (nazywane inaczej arytmetycznym przesunięciem w
prawo) realizujemy przez przesunięcie liczby w prawo z powielenia na
najbardziej znaczącej pozycji takiego bitu, jaki się tam znajdował przed
przesunięciem. Operacja jest zawsze możliwa do wykonania.
Przykład przesunięcia w prawo:
(6)10 = (0110)U2 ----- (0011)U2 = (3)10
Przesuwając liczbę ujemną w prawo musimy na najbardziej znaczącą
pozycję dopisywać 1, a nie 0:
(-6)10 = (1010)U2 ----- (1101)U2 = (-3)10
Przy przesuwaniu w prawo może nastąpić utrata dokładności np.
(7)10 = (0111)U2 ---- (0011)U2 = (3)10
Aby dokładnie wyznaczyć wynik dzielenia należy wartość gubionego
najmniej znaczącego bitu zapamiętać i traktować jako część ułamkową
liczby czyli (0011,1)U2 = (3,5)10
Działania na liczbach binarnych
Działania na liczbach binarnych
Podstawy algebry Boole’a
1. Założenia algebry Boole’a
2. Definicja działań „+” i „*”
3. Aksjomaty
4. Twierdzenia
5. Ilustracja dowodu twierdzenia a + a * b = a
6. Ilustracja praw pochłaniania w algebrze zbiorów
7. Funkcja boolowska
8. Tabela prawdy (logiczna)
9. Zapis numeryczny
10. Dekompresja Shannona
11. Minimalizacja funkcji
boolowskich
Założenia algebry Boole’a
Algebra Boole'a jest
"narzędziem" matematycznym służącym m.in. do opisu, analizy i syntezy układów logicznych. Stanowi ona uogólnienie rachunku zdań i algebry zbiorów uznając jedno i drugie tyko za szczególne przypadki ogólniejszej teorii. Również szczególnym przypadkiem algebry Boole'a jest binarna algebra Boole'a. Dla zdefiniowania każdej algebry potrzebne jest określenie pewnego zbioru, działań w tym zbiorze (operacji) , elementów wyróżnionych w tym zbiorze oraz zespołu aksjomatów i twierdzeń
Binarną algebrę Boole’a tworzą:
Zbiór dwuelementowy {0;1}
Wyróżnione elementy tego zbioru – 0 i 1 (czyli oba są wyróżnione )
Dwa działania (operacje, funktory) – suma logiczna (+) oraz iloczyn logiczny (*) zdefiniowane dalej zestawy aksjomatów 1- 5, 1’- 5’
Wynikający z aksjomatów zestaw twierdzeń 1- 7, 1’- 7’, 8
Definicja działań „+” i „*” w algebrze Boole’a
a b a+b a*b
0 0 0 0
0 1 1 0
1 0 1 0
1 1 1 1
a, b {0;1}
lub i
Aksjomaty według Huntingtona
Aksjomaty Określenia
1. a + b {0,1} 1’. a * b {0,1} Wynik sumy (iloczynu) należy do zbioru {0;1}
2. a + b = b + a 2’. a * b = b * a Przemienność sumy (iloczynu)
3. a * (b + c) = a * b + a *c
3’. a + b * c = (a + b) * (a + c)
Rozdzielność iloczynu (sumy) względem sumy (iloczynu)
4. a + 0 = a 4’. a * 1 = a Istnieje element neutralny pod względem sumy (iloczynu)
5. Istnieje taki element a, że
a + a = 1
5’. Istnieje taki element a, że
a * a = 0
Aksjomat ten stanowi właściwie definicję działania „-” zwanego negacją
Twierdzenia
Twierdzenia Określenia
1. a + (b + c) = (a + b) + c
1’. a * (b * c ) = (a * b) * c
Prawo łączności sumy (iloczynu)
2. a + a * b = a 2’. a * (a + b) = a Prawo absorbcji (pochłaniania)
3. a + a * b = a + b 3’. a * (a + b) = a * b
4. a + 1 = 1 4’. a * 0 = 0 Prawo dominacji elementu max (min)
5. a + a = a 5’. a * a = a Prawo idempotentności
6. a + b = a * b 6’. a * b = a + b Prawa de Morgana !
7. 0 = 1 7’. 1 = 0 Prawo istnienia elementu przeciwnego
8. a = a
Prawo podwójnej negacji
Ilustracja dowodu twierdzenia a + a * b = a metodą zero – jedynkową tabelkową
a
b
Lewa Prawa
a a * b a + a * b a
0 0 0 0 0 0
0 1 0 0 0 0
1 0 1 0 1 1
1 1 1 1 1 1
L = P
a B
a a B = a
a a B a
a (a B) = a
a B
a a
a a B B
Ilustracja praw pochłaniania w algebrze zbiorów
Przejścia
Rachunek Zdań Algebra zbiorów
Algebra Boole’a
v +
*
~ ‘ -
Fałsz 0
Prawda 1
Interpretacja fizyczna binarnej algebry Boole’a
zestyk rozwierny zestyk zwierny
+
negacja afirmacja
+
suma logiczna iloczyn logiczny
+ +
Interpretacja fizyczna aksjomatów binarnej algebry Boole’a
a
b
a
c
a
b a
b
a
c
a
a
b b
c
a
a
a
a
a
b c
a b a b
a a
a a
2. 2’.
3. 3’.
4. 4’.
5. 5’.
Liczby całkowite, ze znakiem (U2) i bez znaku
dodawanie (ADD)
przykład:
mov EAX,10 ;wpisanie do rejestru EAX liczby 10
add EAX,20 ;dodanie do zawartość EAX liczby 20
;(EAX:=EAX+20) C=0
dodawanie z przeniesieniem (ADC)
W=A+B+C (C=0 lub 1)
Podstawowe operacje
arytmetyczno-logiczne mikroprocesorów
1
odejmowanie (SUB)
mov EAX,10 ;wpisanie do rejestru EAX liczby 10
sub EAX,20 ;odjęcie od zawartość EAX liczby 20
(w tym przypadku wynik będzie ujemny (N=1), oraz
nastąpi pożyczka (C=1))
odejmowanie z pożyczką (SBB)
W=A-B-C
Podstawowe operacje
arytmetyczno-logiczne mikroprocesorów
2
inwersja bitów (NOT) - tak jak w systemie uzupełnień do jedynki U1
mov EAX,12 ;wpisanie do rejestru EAX liczby 12
NOT EAX
negacja liczby (NEG) – system uzupełnień do dwóch (U2) W=(NOT A) +1
mov EAX,12 ;wpisanie do rejestru EAX liczby 12
NEG EAX
;w EAX jest –12 (U2)
Podstawowe operacje
arytmetyczno-logiczne mikroprocesorów
3
mnożenie liczb (MUL) :
- wynik ma dwa razy więcej bitów niż składniki
mnożenia (wynik zawsze w DX:AX)
mov ax,2000h
mov bx,10h
mul bx
po wykonaniu mnożenia w rejestrze DX znajdzie się
liczba 2h, a w AX liczba 0000h (łączny wynik 20000h)
Podstawowe operacje
arytmetyczno-logiczne mikroprocesorów
4
dzielenie liczb (DIV) :
dzielna w DX:AX
wynik w postaci: część całkowita (AX) i reszta (DX)
mov dx,3h
mov ax,205h
mov bx,100h
div bx ;AX = 302h = (30205h/100h)
;DX = 5 (reszta z dzielenia)
Podstawowe operacje
arytmetyczno-logiczne mikroprocesorów
5
Iloczyn logiczny (AND) :
mov dx,11000011b
and dx,11110000b
;w dx będzie
11000000b
Podstawowe operacje
arytmetyczno-logiczne mikroprocesorów
6
AND
A 0 1 0 1 B 0 0 1 1 W 0 0 0 1
Suma logiczna (OR) :
mov ax,11000011b
or ax,11110000b
;w ax będzie
11110011b
Podstawowe operacje
arytmetyczno-logiczne mikroprocesorów
7
OR
A 0 1 0 1 B 0 0 1 1 W 0 1 1 1
Funkcja EXOR:
mov ax,11000011b
exor ax,11110000b
;w ax będzie
00110011b
Podstawowe operacje
arytmetyczno-logiczne mikroprocesorów
8
XOR
A 0 1 0 1 B 0 0 1 1 W 0 1 1 0
Przesuwanie bitów
logiczne:
SHR,SHL:
Podstawowe operacje
arytmetyczno-logiczne mikroprocesorów
Arytmetyczne:
SAR,SAL:
Przesuwanie bitów: ROR,ROL
Podstawowe operacje
arytmetyczno-logiczne mikroprocesorów
79
Przesuwanie bitów:ROR,ROL - przykład
;wartość początkowa „C” bez znaczenia
mov ax,11000011b
ror ax,1
11100001b ;po wykonaniu C=1
;przesunięcie o trzy pola
mov ax,11000011b
ror ax,3
01111000b ;po wykonaniu C=0
Podstawowe operacje
arytmetyczno-logiczne mikroprocesorów
Recommended