Professional Documents
Culture Documents
ВОВЕД ВО
МИКРОПРОЦЕСОРИТЕ
И
МИКРОКОНТРОЛЕРИТЕ
1
Вовед во Микропроцесорите и Микроконтролерите
Содржина
Предговор........................................................................................................................................ 3
1 Основи на микропроцесорските системи ................................................................................. 4
2 Бинарен – начин на кој микропроцесорите пресметуваат .................................................... 10
3 Хексадецимално – начин на кој ние комуницираме со микропроцесорите ....................... 25
4 Како микропроцесорите пресметуваат ................................................................................... 36
5 Вовед за логичките порти и нивното користење .................................................................... 46
6 Регистри и мемории .................................................................................................................. 58
7 Микорпроцесорски базиран систем ........................................................................................ 79
8 Типичен 8 битен микропроцесор ............................................................................................. 91
9 Програмирање – користејќи машински код и асемблер ..................................................... 111
10 Јазици на повиско ниво ......................................................................................................... 121
11 Развој на микропроцесорите и микроконтролерите ......................................................... 137
12 Фамилија Pentium .................................................................................................................. 157
13 PowerPC .................................................................................................................................. 167
14 Athlon XP ................................................................................................................................. 175
15 Микроконтролери и како да ги користиме ......................................................................... 180
16 Употреба на PIC микроконтролер во реален проект .......................................................... 199
17 Интерфејсинг .......................................................................................................................... 212
18 Опрема за тестирање и изнаоѓање на грешките ................................................................ 231
Додаток А: датотека на регистерот за специјални функции ................................................... 241
Додаток Б: Инструкционо множество за PIC16CXXX................................................................ 242
Одговори на квизовите .............................................................................................................. 244
2
Вовед во Микропроцесорите и Микроконтролерите
Предговор
Првото издание на оваа книга започнува со зборовите: „Едно модерно општество повеќе не
може да функционира без микропроцесорот.“
Џон Крисп
3
Вовед во Микропроцесорите и Микроконтролерите
1
Основи на микропроцесорските системи
Раѓањето на микропроцесорите
Во 1971 две компании, и двете од САД, го запознаа светот со нивната иднина, со производство
на микропроцесорите. Toa беа две млади компании со назив Intel и нејзиниот ривал, Texas
Instruments.
Системот, мора да има најмалку еден влез, еден излез и мора да извршува нешто, на пр.: мора
да содржи некој процес. Најчесто има повеќе влезови и излези. Некои излези ни се потребни,
а некои пак ни се вишок (продукт). Во поголема или помала мера, сите процеси генерираат
вишок топлина. Слика 1.1 ни ги покажува тие услови (карактеристики).
4
Вовед во Микропроцесорите и Микроконтролерите
Автомобилот може да соджи и други системи во себе. На слика 1.2, додадовме напојување
(батерија) за потребниот влез за стартување на моторот, за произведување на светлина и за
шал таблата, но отпосле акумулаторот повторно се полно со помош на моторот. Потребно е
електричен систем за работа, како на слика 1.3, значи очигледно е дека можно е еден систем
да имаат вградено во него неколку помали системи. Во истиот контекст, автомобилот е само
дел од системот за транспорт.
Микропроцесорски систем
Како и секој друг систем, така и микропроцесорот има влезови, излези и процес како што е
прикажано на слика 1.4. Влезовите и излезите од микропроцесорот се серија на напони кои
можат да се искористат за контролирање на надворешни уреди. Процесот се состои од
анализирање на влезните напони и така да одлучи за потребните излезни напони. Одлуката се
базира на претходно внесени инструкции кои се извршуваат доста слепо, свесно или не.
5
Вовед во Микропроцесорите и Микроконтролерите
6
Вовед во Микропроцесорите и Микроконтролерите
Терминологија
Интегрирани кола
Елктронско коло произведено од компактен блок на полупроводнички материјал, ваквиот
дизајн на коло, наречено полупроводничко коло, ни дозволува многу комплексните кола да ги
конструираме во мали размери. Интегрираното коло се наракува и „чип“.
Микропроцесор (µP)
Ова е уредот којшто ти го купуваш: само интегрирано коло како на слика 1.6. Самиот, без
околните кола и без доведениот напон, тој ни е некорисен. Тој само ќе лежи на твојата
работна маса и ќе гледа во вас.
7
Вовед во Микропроцесорите и Микроконтролерите
Микрокомпјутер
Дел од микропроцесорски базиран систем кој се користи како компјутер се вика
микрокомпјутер. Додатни кола се потребни за да може да биде составен компјутер во истото
интегрирано коло кој прераснува во единствне чип-микрокомпјутер.
Микроконтролер
Претставува комплетно микропроцесорски базиран систем за контрола заснован на еден
единствен чип. Тоа е мал и удобен, но не прави ништо посебно што не може да биде
направено со микропроцесор и уште неколку додатни компоненти. Подетално ќе има во
подолните заглавја од книгата.
MPU и CPU
MPU (MicroProcessor Unit) e микропроцесорска единица или само микропроцесор. CPU
(Central Processing Unit) претставува централна процесинг единица. Ова е централниот „мозок“
на компјутерот и е составен (вообичаено) од еден или повеќе микропроцесори. IBM-овиот
суперкомпјутер „Blue Gene“ е дизајниран од милион процесори.
Микро (Micro)
Зборот „микро“ се употребува во електрониката и генерално во науката, што означува
„милионити дел“ или 1 10. Исто така се употербува и во секојдневието како нешто многу
мало, како многу мал процесор или микропроцесор. Така стана кратенка за микропроцесор,
микрокомпјутер, микропроцесорски базиран систем или микроконтролер, всушност скоро сè
што во својот збор содржи „микро“. Во научна смисла, зборот микро е прикажано со Грчката
буква µ (ми). Тоа е мал чекор кога микропроцесорот се заменува со скратеницата µP.
Квиз 1
1. Микропроцесор:
a. Има потреба од гориво, вода и струја
b. Или скратено µc.
c. Најчесто е спакуван во пластично куќиште
d. Никогаш не се употребува во CPU, но може да се користи во MPU.
2. Системот мора да има:
a. Влез, излез и процес
b. Нешто да прави во врска со транспорт
c. Микропроцесор
d. Гориво, вода и струја
8
Вовед во Микропроцесорите и Микроконтролерите
9
Вовед во Микропроцесорите и Микроконтролерите
2
Бинарен – начин на кој микропроцесорите
пресметуваат
За разлика од нас, микропроцесорите не се „пораснати“ со идеја дека 10 е конвенционален
број на дигити. Микропроцсорите и други дигитални кола користат само два дигити – 0 и 1 –
но зошто? Ние би сакале нашите микропроцесори да ги завршуваат своите работи бескрајно
брзо и никогаш да не прават грешки. Без грешки, или, големи брзини – што ви се чини
побитно?
Тоа е ваш избор, но јас секогаш би избрал без грешки, особено кога мојот автомобил е
управуван од компјутерот за менаџирање на моторот или кога станува збор за полуавтоматско
слетување на авион. Мислам дека повеќето би се согласиле со мене.
Проблем со шумот
Нека влезот на микропроцесорот е константен напон, на пример 4V, прикажано на слика 2.1.
Ако извршиме мерење на напонот ќе видиме дека немаме константна вредност, туку
континуирано варира над и под главното ниво. Оваа случајна флуктација се нарекува
електричен шум и ги намалува перформансите на секое електронско коло. Можеме да
превземеме некои мерки за да го намалиме овој шум, но целосно да го анулираме е
невозможно. Шумот предизвикува случајни дамки на екран, тоа го нарекуваме снег. Истиот
ефект предизвикува шуштење од звучникот. Ефектот на шумот е прикажан на слика 2.2.
10
Вовед во Микропроцесорите и Микроконтролерите
0=0V
1 = 0.5 V
2=1V
3 = 1.5 V
4=2V
5 = 2.5 V
6=3V
7 = 3.5 V
8=4V
9 = 4.5 V
Ако му дадеме инструкција на нашиот микропроцесор да изврши задача 4 + 4 = 8, со
притискање на копчето „4“ ние ќе генерираме сигнал од 2V кој е запомнат од
микропроцесорот. Копчето „+“ ќе му каже дека се работи за собирање и повторно притискање
на копчето „4“ ќе генерира друг сигнал од 2V.
Така, внатре во процесорот ќе видиме дека треба да собери 2V и уште еден сигнал од 2V, и да
добиеме резултат 4V. Тогаш микропроцесорот ќе ја искористи листата погоре за да го
конвертира крајниот резултат во потребниот бројчен резултат 8. Овој едноставно собирање е
прикажано на слика 2.3.
Ова ни изгледа дека работи многу убаво, но го игнориравме ефектот на шум. Слика 2.4 ни
покажува што може да се случи. Точниот напон мемориран од микропроцесорот е прашање
на случајност. Со првото притискање на копчето „4“, се случило напонот да е 1.5V но вториот
пат сме имале малку повеќе среќа и напонот ни е точно 2V.
11
Вовед во Микропроцесорите и Микроконтролерите
1.5 V + 2 V = 3.5 V
и со коритење на табелата, за 3.5 V имаме број 7. Така нашиот микропроцесор пресметува
дека 4 + 4 = 7!
Бидејќи шумот е случаен, можно е, се разбира, крајниот резултат да ни е многу мал, многу
голем или потполно точен.
12
Вовед во Микропроцесорите и Микроконтролерите
баланс помеѓу еднаквиот број на фиксирани делови наречени протони, кои доведуваат до
позитивно полнење. (види слика 2.5)
13
Вовед во Микропроцесорите и Микроконтролерите
Топлински шум
Колку е повисока температурата, толку се поподвижни електроните, т.е. имаме поголем
случаен напон, а со тоа поголема е појавата на електричен шум.
Поделен шум
Да се навратиме на големиот натпревар. Најпосле две врати се отворени и фановите се
втурнуваат низ рампите. Се очекува еднаков број на луѓе да влегуваат низ влезовите како што
е прикажано на слика 2.8, но во реалноста тоа не е така. Некој ќе неможе да си го најде
билетот, другарите ќе се чекаат еден со друг, некој ќе се обиде да се врати назад преку вратата
за да стигне до другиот крај на стадионот итн. Како што прикажавме, протокот од луѓе може да
биде еднаков за еден час, но ако гладаме секунда по секунда ќе се појават случајни варирање.
14
Вовед во Микропроцесорите и Микроконтролерите
На пример бројот 6 ќе има вредност од 3 V, а бројот 7 ќе биде претставен со 3.5 V. Ако шумот
на напонот го зголеми напонот од 3 V над 3.25 V, тогаш ќе настане до грешно читање и ќе се
прочита 7. Највисокото прифатливо ниво на шум би било 0.25 V. Ова не е толку многу и
грешките ќе бидат чести. Доколку користиме напојување од 3.3 V тогаш ситуацијата ќе биде
уште полоша.
15
Вовед во Микропроцесорите и Микроконтролерите
0
1
2
3
4
5
6
7
8
9
Дотука, еднаш ги искористивме сите симболи, и за да го покажаме тоа ние ставаме „1“ на лево
од бројот и повторно ги употребуваме истите симболи. Тоа ни дава:
10
11
12
13
14
... итн. Се до 19, каде ставаме „2“ на левата страна и почнуваме повторно 20, 21, 22 итн.
Кога ќе стигнеме до 99, повторно додаваме „1“ од левата страна и другите дигити ги враќаме
на нула што ни дава 100. Кога ќе стигнеме до 999, одиме на 1000 итн.
Бидејќи декадниот систем користи 10 дигити, се вели дека системот има основа 10. Оснавата
ни претставува само технички збор кој ни означува за бројот на дигити кои се користат во било
кој броен систем.
16
Вовед во Микропроцесорите и Микроконтролерите
Броењето ја прати истата шема како што ја разгледавме кај декадниот систем: ги користиме
сите дигити и потоа почнуваме одново.
0
1
И тоа е тоа!
10
11
И со додавање на екстра „0“ од левата страна на првите два дигите нема да ја промени
содржината на бинарните броеви. Исто е и кај декадниот систем, бројот 25 нема да биде
променет ако го напишеме како 025 или 0025 или пак 000 000 000 000 025.
Бинарни Декадни
00 0
01 1
10 2
11 3
Бинарни Декадни
100 4
101 5
110 6
111 7
Уште еднаш:
Бинарни Декадни
1000 8
1001 9
1010 10
1011 11
17
Вовед во Микропроцесорите и Микроконтролерите
Забуни и исправки
На пример ако го имаме бројот: 1000. Кој број е ова? Дали е илјада во декаден систем или 8
запишано бинарно?
Ако сакаме 1000 да ни претставува бинарен број ќе го запишеме како 10002, ако пак сакаме во
декаден систем тогаш би било запишан како 100010.
Ќе биде многу нереално ако го ставаме бројот за основата после секој број. Никој не го пишува
бројот на основата после неговиот телефонски број, или на цените во маркетите. Треба да се
употребува само кога треба да избегнеме забуни, како што би запишале израз 1000 = 8 (илјада
= осум???). Запишано како 10002 = 810 ни прави многу леснотија во размислувањето.
Пример
52
52
26 0
Чекор 3: подели го резултатот (26) со 2 и повторно запомни го остатокот (0) како
претходно
52
26 0
13 0
18
Вовед во Микропроцесорите и Микроконтролерите
52
26 0
13 0
6 1
Чекор 5: 2 во 6 го има 3 пати и запомни 0
52
26 0
13 0
6 1
3 0
Чекор 6: делењето на 3 со 2 ни дава резултат 1 и 1 за паметење
52
26 0
13 0
6 1
3 0
1 1
Чекор 7: конечно, делењето на 1 со 2 ни дава 0 и 1 за паметење
52
26 0
13 0
6 1
3 0
1 1
0 1
Чекор 8: не можеме понатаму да продолжиме со делење, бидејќи резултатите ќе бидат
сите нули. Бинарниот број е точно во колоната за паметење. За да го добиеме резултатот треба
да ја прочитме колоната за паметење од доле па нагоре.
52
26 0 = 1101002
13 0
6 1
3 0
1 1
0 1
Постапка
1 Подели го декадниот број со 2, запиши го целиот резултат под него и остатокот
запиши го во колона десно од резултатот
19
Вовед во Микропроцесорите и Микроконтролерите
Друг пример
Еве еден пример за да пробате и вие. Ако некаде заглавите, решението е подоле.
2187
1093 1 = 1000100010112
546 1
273 0
136 1
68 0
34 0
17 0
8 1
4 0
2 0
1 0
0 1
Можеме истото да го направиме и со калкулатор, но за жал тие имаат граници и можат да
претвораат само мали броеви бидејќи се ограничени со бројот на дигити кои можат да ги
прикажат на екранот.
Вистинската вредност на дигитот зависи од две работи: дигитот кој го користиме и колоната
каде тој се наоѓа.
Колоните во бинарниот свет исто така би ни биле бројот на основата на степен кој расте од
десно кон лево.
Така имаме: 23 22 21 20
20
Вовед во Микропроцесорите и Микроконтролерите
Постапка
Чекор 1: напишете ги вредностите за колоните
8 4 2 1
Чекор 2: Под нив напиши го бинарниот број
8 4 2 1
1 0 0 1
Чекор 3: Пресметај ги вредностите на колоните
818
400
200
111
Чекор 4: собери ги добиените вредности
819
Како што гледаме, сите колони кои содржаат бинарна 0 можат да се игнорират, бидејќи
секогаш тие излегуваат нула, така побрз и поедноставен начин би ни било да ги собереме само
вредностите од колоните кои содржат бинарно 1.
Постапка
1 Напиши ги вредностите на колоните за бинарен систем
2 Напиши го бинарниот број, веднаш под вредностите од колоните
3 Собери ги вредностите за секоја колона каде има 1 во бинарниот број
Друг пример
Уште еднаш, еве еден пример за вас. Ако имате проблеми, решението е подолу.
28 27 26 25 24 23 22 21 20
256 128 64 32 16 8 4 2 1
Чекор 2: Впиши го бинарниот број веднаш под броевите од колоните
256 128 64 32 16 8 4 2 1
1 0 1 1 0 0 1 0 1
Чекор 3: собери ги вредностите каде што имаме бинарно 1
256 + 64 + 32 + 4 + 1 = 357
Значи, 1011001012 = 35710 или само 357 бидејќи се подразбира дека е декадно.
21
Вовед во Микропроцесорите и Микроконтролерите
Битовите поминуваат низ микропроцесорот со многу голема брзина и во голем број, така нас
ни е полесно да ги групираме.
Nibble
Група од четири бита заедно. Половина од бајт.
Бајт (Byte)
Бајт претставува колекција од осум бита. Без разлика дали се единици или нули или за која цел
тие се користат.
Збор (Word)
Неколку битови можат да се групираат за да оформат „збор“ (word). За разлика од бајтите,
зборовите немаат одреден број на битови од кои се составени. Должината на еден збор или
бројот на бити во него зависи од микропроцесорот кој се користи.
Ако микропроцесорот прифаќа бинарни податоци во група да 32 во единица време тогаш еден
збор би бил составен од 32 бити. Ако друг микропроцесор користи помали порции на
податоци, да кажеме 16 во единица време, тогаш еден збор ќе биде составен од 16 бити. Во
овој контекст зборот е малку несекојдневен во смисла на неговата големина или должина,
бидејќи зависи за каква ситуација зборуваме. Најмногу се користат 8, 16, 32 и 64 бити, но не е
исклучена ниедна друга големина.
Рзликата помеѓу 1000 и 1024 е многу мала доколку имаме само 1 или 2 Kb и тогаш разликата
лесно ја игнорираме. Но како што се зголемува бројот така и разликата се зголемува. Точниот
број на бајти за 42 Kb е 43 008 бајти (42 1024).
Па така, во компјутерскиот свет, за да го избегнеме тој проблем ние би користеле голема буква
K која ќе ни означува 1024, додека мала буква k ќе ни означува 1000.
22
Вовед во Микропроцесорите и Микроконтролерите
За жал, бидејќи нема ни стандардно користење на голема и мала буква b за бити доведува до
поголемо недоразбирање. 1000 бити ни се kilobit или kb. Понекогаш 1024 бити ги запишуваме
како Kb. Еден начин за да се реши проблемот бити/бајти е да се користи kbit (или Kbit) и kbyte
(или Kbyte).
Квиз 2
23
Вовед во Микропроцесорите и Микроконтролерите
24
Вовед во Микропроцесорите и Микроконтролерите
3
Хексадецимален – начин на кој ние
комуницираме со микропроцесорите
Брзината на светлината во m/s може да се запише декатно како 29979245910 или бинарно како
100011101111001111000010010112. Ако пробаш да ги запишеш овие два броја на хартија,
сигурно полесно ќе ти биде пишувањето на декадниот број. Случајно, овој бинарен број е
двапати помал по должина од броевите што ги обработуваат модерните микропроцесори
милиони пати во секунда, со (речиси) 100% прецизност.
Сега, ако земеме група од четири бити, со најмалиот можен 00002 и најголемиот 11112, и ако
овие бинарни броеви ги претвориме во декадни, би добиле опсег на броеви од 0 до 15.
Првите 10 се лесни, и ние ќе ги користиме 0123456789 како кај декаден систем. За последните
шест, одличивме да ги користиме првите шест букви од абецедата: ABCDEF или abcdef.
25
Вовед во Микропроцесорите и Микроконтролерите
Хексадецимално Декадно
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
A 10
B 11
C 12
D 13
E 14
F 15
Кога ќе ни снема дигити, само додаваме 1 во втората колона и ја враќаме првата колона на 0
итн. Па броењето ќе продолжи:
Хексадецимално Декадно
10 16
11 17
12 18
13 19
14 20
15 21
16 22
17 23
18 24
19 25
1A 26
1B 27
1C 28
1D 29
1E 30
1F 31
20 32
... итн.
„Еден Осум“ хексадецимално, еднакво е на дваесет и четири декадно. Приметивте дека ставив
наводници за hex бројот за да го избегнам бројот осумнаесет, бидејќи осумнаесет е декаден
број и не постои таков како хексадецимален. Ако го читате на овој начин кажувате дека не
станува збор за декаден број.
26
Вовед во Микропроцесорите и Микроконтролерите
18H = 2410
18H = 2410
18h = 2410
18h = 2410
1816 = 2410
Предноста на хексадецималноит систем
1 Многу е компактен. Со користење на 16 како основа, ни кажува дека бројот е помал од
истиот претставен бинарно или декадно.
2 Лесно е претворањето на хексален во бинарен број и е многу полесно отколку во декаден.
Запомнете дека микропроцесорите работат единствено со бинарни броеви, и дека сите
конверзии помеѓу хексадекаден и бинарен број се извршуваат во други кола (слика 3.1).
Постапка
1 Запиши го декадниот број
2 Дели го со 1610, запиши го целиот број на резултатот, а остатокот запиши го во
колона десно од него
3 Продолжи се додека делењето не стигне до нула.
4 Прочитај го резултатот од колоната на остатоци од доле кон горе.
ЗАПОМНИ! ПИШУВАЈ ГО ОСТАТОКОТ ХЕКСАДЕЦИМАЛНО
27
Вовед во Микропроцесорите и Микроконтролерите
Пример
Претвори го декадниот број 23 823 во хексадецимален
Пример
Претвори го 44 25610 во хексадекаден
44 256
2766 0 = ACE0H
172 E
10 C
0 A
28
Вовед во Микропроцесорите и Микроконтролерите
Друг пример
Претвори го 540 70910 во хексадекаден
540 709
33 794 5 = 84025H
2112 2
132 0
8 4
0 8
Значи, 540 70910 = 84025H, но бидете крајно внимателни, кога хексадецималниот број не
содржи букви, да ја ставите основата од десната страна за да не дојде до забуна.
Пример
Да се претвори A40E5H во декаден број
Постапка
1 Напишете ги вредностите на колоните употребувајќи калкулатор, почнувајќи со
160 (=1) од десно кон лево и зголемувајќи за 16 пати на секоја колона.
2 Впишете ги хексадекадните броеви во соодветните колони, претворате ги во
декадни броеви ако е потребно, т.е. треба да запишеме 10 наместо „А“.
29
Вовед во Микропроцесорите и Микроконтролерите
Друг пример
Претвори го 4BF0H во декаден број
Ова значи дека било која група од четири бита можат да се „преведат“ директно во еден
хексадекаден дигит. Едноставно, над секоја група на битови од бинарниот број да ставиме 8, 4,
2 и 1 и да ги собереме оние каде што се појавува 1 во бинарниот број.
Пример
Претвори го 1000000101010112 во хексадекаден број
8 4 2 1
1 0 1 1
8 0 2 1
Резултатот ќе ни е 8 + 0 + 2 + 1 = 1110 или B во хексадекадно.
Сега имаме:
30
Вовед во Микропроцесорите и Микроконтролерите
Чекор 4: следната група е составена само од нули па така можеме да кажеме дека резултатот е
нула. Значи:
Пример:
Претвори го бројот 11000111110012 во хексадекаден
Кога претвараме мали броеви како што е 3H треба да пазиме да не заборавиме да ставиме
нули од левата страна за да можеме да имаме група од четири бити во бинарниот број.
31
Вовед во Микропроцесорите и Микроконтролерите
Пример
Да се претвори 2F6CH во бинарен број
2 F 6 C
Чекор 2: ставете ја комбинацијата на 8, 4, 2 и 1 под секоја цифра
2 F 6 C
8421 8421 8421 8421
Чекор 3: CH = 1210 кој е составена од 8 + 4, па така ставаме 1 на колоните со 8 и 4. Така четири
битниот број ни е 11002
2 F 6 C
8421 8421 8421 8421
1100
Чекор 4: сега го правиме истото со следната цифра. 6 е соствен од 4 + 2, што ни укажува дека
тоа е еднакво на 01102
2 F 6 C
8421 8421 8421 8421
0110 1100
Чекор 5: бидејќи 8 + 4 + 2 + 1 = 15, хексадекадно F, ќе имаме 11112
2 F 6 C
8421 8421 8421 8421
1111 0110 1100
Чекор 6: најпосле, последната цифра, 2 и бидејќи ова кореспондира со втората колона, тогаш
тоа би било напишано како 00102
2 F 6 C
8421 8421 8421 8421
0010 1111 0110 1100
Крајниот резултат е 2F6Ch = 00101111011011002
Но дали треба да ги ставиме двете водечки нули? Има два одговори „да“ и „не“, но и тоа не ни
е многу од помош. Треба да си поставиме друго прашање: зошто ја правиме конверзијата?
Дали ќе се занимаваме со математика или со микропроцесори? Ако се занимаваме со
микропроцесорски систем тогаш резултатот од 16 бити ќе ни кажува дека имаме 16 напони
кои се на 16 жици (конектори). Како броевите се менуваат, сите конектори треба да го
менуваат напонот помеѓу 0 V и 3.3 V за бинарните нивоа 0 и 1. Ова значи дека, сите 16
конектори мора да бидат присутни за да можеме да ги претставиме со бинарни нивоа посебно
за сите нив.
Иако претворањето е чиста математика, сепак водечките нули (од левата страна) немаат
математичка вредност, па така нема потеба од запишување на истите во резултатот.
32
Вовед во Микропроцесорите и Микроконтролерите
Постапка
1 запиши го хексадекадниот број, но со растојание помеѓу цифрите
2 искористи ја комбинацијата од 8, 4, 2 и 1 за да ја конвертираш секоја цифра посебно во
четири битен бинарен број
3 додади водечки нули за да бидеш сигурен дека секоја хексадецимална цифра е
прикажана со четири бити.
Пример
Претвори го 1E08BH во бинарен број
Чекор 1
1 E 0 8 B
8421 8421 8421 8421 8421
Чекор 2
33
Вовед во Микропроцесорите и Микроконтролерите
0
1
2
3
4
5
6
7
10
11
12
13
14
15
16
17
20
Итн.
Нема букви во него и најчесто не може да се препознае дека се работи за октелен броен
систем се додека не приметиме дека нема 8 и 9 во таквите броеви.
Октално во декадно: вредностите на почетната колона ни се 84, 83, 82, 81, 80.
Окатлно во бинарно: запиши го секој октален дигит како група од три бинарни дигити.
Бинарно во октално: почни од десната страна и подели го бинарниот број на групи од по три
бити, потоа пресметај ја секоја група.
34
Вовед во Микропроцесорите и Микроконтролерите
Квиз 3
35
Вовед во Микропроцесорите и Микроконтролерите
4
Како микропроцесорите пресметуваат
Како микропроцесорите се справуваат со бројките (и буквите)
Во претходното поглавје, видовме како можеме броевите да ги прикажеме во бинарна и
хексална форма. Без разлика дали ќе мислиме на хексален или бинарен, па нека е и декаден,
кај микропроцесорите тоа е само бинарен. Целиот хексадекаден концепт е само да си ја
олесниме работата.
Можеме да внесеме преку тастатурата било каков хексадекаден (или декаден) број, но првата
работа на било кој микропроцесорски базиран систем е да го претвори истиот во бинарен.
Цела аритметика се одвива бинарно и на крај неговата работа е да го претвори назад во
хексадекаден (или декаден), само за да не усреќи.
Во секојдневниот живот, тоа е многу лесно, едноставно го ставаме „–“ знакот пред бројот и тој
станува негативен, така +4, станува -4. Лесно, но немаме начин да ставиме минус знак кај
микропроцесорите. Проблемот го разгледавме на неколку различни начини.
1 Користи еден бит, така 8-битен збор сега може да има само седум бита за да
претставуваат број и еден бит за „плус“ или „минус“. Седумте бита сега можат да
избројат до 11111112 = 127, додека осум битен може двапати повеќе, 255.
2 Ако собереме два бинарни броја како +127 и +2, ќе добиеме
01111111
00000010
10000001
Msb (most significant bit), најзначајниот бит, е 1 и ни кажува дека станува збор за негативен
број, а бројот без знак е 0000001 = 1. Така крајниот резултат, не е 129 туку минус 1.
36
Вовед во Микропроцесорите и Микроконтролерите
Кога сакаме некој микропроцесор да обработи некоја аритметика со таков проблем, можеме
да се осигураме дека микропроцесорот ќе го препознае овој случајно настанат негативен број.
Можеме да го преуредиме микропроцесорот да го отстранува овој проблем, но тоа е
комплицирано и бавно.
За среќа со тек на време се појавил еден многу подобар начин кој се користел долги години.
Комплементарни броеви
Овој начин иима две значајни предности:
1 Дозволува користење на сите битови, така 8 битен збор би имале од 0 до 111111112 т.е.
255.
2 Лесно се имплементира со собирање и одземање користејќи во суштина еден потег.
Па како можеме да ги користиме сите осум бита од бројот, и сè уште да знаеме дали се работи
за позитивен или негативен број?
Собирање
Пример
Соберете ги 01011010 + 00011011.
Чекорите се скоро исти како за „нормално“ декадно собирање.
Чекор 1: запиши ги и двата бинарни броја и почни од lsb (least significant bit, најмалку важен
бит) т.е. од десната страна.
01011010 +
00011011
Собери ја десната колона. Па добиваме 0 + 1 = 1, т.е.
01011010 +
00011011
1
Чекор 2: следно е да ги собереме двете 1-ци од следната колона. Резултатот е 2 т.е. 10
бинарно. Ја запишуваме 0-та и ја памтиме 1-цата за следната колона
01011010 +
00011011
01
100
37
Вовед во Микропроцесорите и Микроконтролерите
01011010 +
00011011
101
100
Чекор 4: следната колони ни е иста како втората колона, 1 + 1 = 10 бинарно. Значи, запишуваме
0, а памтиме 1
01011010 +
00011011
0101
10100
Чекор 5: следно, имаме 1 за секој ред и 1 што памтиме, добиваме 1 + 1 + 1 = 3 или 11 бинарно.
Значи, запишуваме 1 и имаме 1 за паметење.
01011010 +
00011011
10101
110100
Чекор 6: следната колона е 0 + 0 + 1 = 1, наредната е 1 + 0 = 1 и за крајниот бит т.е. msb имаме 0
+ 0 = 0, така можеме да ја комплетираме сумата.
01011010 +
00011011
01110101 90 + 27 = 117
110100
Одземање
Размислете, за следново прашање: Кој број би го додале на 50 за да го добиеме резултатот 27?
Во математичка форма ова би го напишале како 50 + x = 27.
Кој број би можел да биде x? Разбирливо е дека, кој и да е број додаден на 50 ќе ни даде
поголем број од него, доколку тој број не е негативен како на пример -23: 50 + (-23) = 27.
Зачудувачки добро е тоа што постои број кој нема минус знак пред него, а го има истиот ефект
како да е негативен. Таквиот број се нарекува втор комплемент на бројот.
Се што треба да направиме е да го инвертираме секој бит од бројот кој треба да го одземиме
т.е. секоја единица ќе стане нула и секоја нула ќе стане единица. Да забележиме дека ваквата
инверзија е наречена „прв комплемент“ од тој број. Механизмот за ова ќе го продискутираме
38
Вовед во Микропроцесорите и Микроконтролерите
Реализирање на сумата
00110010 = 50
11101001 + = втор комплемент од 23
100011011 = резултатот е 27
100000000
Резултатот е 100011011.
Ако ги изброиме битовите ќе видиме дека се девет! Имаме зачувано 1 во последната колона
т.е. во деветтата колона за паметење. Кај микропроцесорите има место само за осум бита,
така деветтиот бит не се користи. Ако го побареме одговорот од микропроцесорот за оваа
сума, тогаш тој ќе ни одговори само со 8 бита т.е. 000110112 или декадно 27. Така го добивме
точниот одговор.
Малку беше напорно, па да дадеме мало резиме за тоа што точно направивме.
Крај на постапката.
Неколку забелешки
39
Вовед во Микропроцесорите и Микроконтролерите
Пример 1
Не ги инвертирај овие!
00011000
Резултатот е 1 1 1 0 1 0 0 0
Овие инвертирај ги!
Пример 2
0000000001100100
Пример 3
1 Вториот број има само шест бита, па ќе му додадиме уште две нуле од левата страна за
да добиеме ист број на битови т.е. 1011 0111 – 0000 1011.
2 Сега секој бит од вториот број ќе го инвертираме за да го најдеме првиот комплемент
и ќе добиеме промена од 00001011 во 11110100.
3 Со додавање на 1 ќе го добиеме вториот комплемент: 11110100 + 1 =11110101 (или ова
направи го со брзиот метод).
40
Вовед во Микропроцесорите и Микроконтролерите
10110111
11110101 +
110101100
111101110
5 Резултатот ни е 110101100 кој содржи екстра бит msb кој го бришеме и добиваме
101011002.
Како се снаоѓаме во вакви ситуации? Можеме да чекаме да излезе 128 битен микропроцесор,
па понатаму да чекаме 256 битен микропроцесор итн. Но, најдобра опција ни е да разгледаме
алтернативни патишта за да можеме да се справиме со големи опсези на броеви. Наместо да
запишуваме број како што е 100, можеме да го запишеме како 1 10 . Ваквата форма ни
кажува дека бројот е еден, следен со две нули, па така билион би бил напишан како 1 10 .
На сличен начин, 0.001 е 1 на кој му претходат две нули и можеме да го запишеме како
1 10, така еден билионит би бил, 0.000000001 = 1 10 . Негативниот степен е за еден
поголем од бројот на нули. Со користење на броеви со подвижна запирка, лесно можеме да
одиме дури до 1 10 или до 1 10 без големо зголемување на бројот дигити.
Модерни имиња
Нормализирање
Запишувањето на секојдневните броеви како што е 275 во форма 2.75 10, се вика
нормализирање на бројот. Првиот број секогаш почнува со еден дигит помеѓу 1 и 9 кој е
придружен со десет на некој степен.
Во бинарниот систем, го правиме истото само што децималната дел се вика бинарна
децимален дел и првиот број секогаш е 1 придружен со 2 на некој степен, доколку е потребно.
Три примери
1 Нека го користиме повторно 275, кој претворен во бинарен број е 100010011. Така овој
може да се нормализира во 1.00010011 2 .
2 За бројот како што е 0.00010012 треба бинарната точка да ја поместиме четири места на
десно и да ја ставиме бинарната точка веднаш позади првата 1-ца, па така
нормализираната вредност ќе биде 1.001 2 .
3 Бројот 1.1012 кој е веќе нормализиран т.е. нема потреба од поместување на бинарната
точка, па така формално може да биде запишано како 1.101 2 .
41
Вовед во Микропроцесорите и Микроконтролерите
Терминологија
Има уште неколку модерни имиња кои се доделини на некои делови од бројот, за да ги
направи навистина страшни.
Exponent
Експонент
Нормализиран број: 8.0245 10
Mantissa Radix
Мантиса Основа
Exponent Mantissa S
Експонент Мантиса З
Bit 31 24 23 1 0
Бит
42
Вовед во Микропроцесорите и Микроконтролерите
Вишок-127 нотација
Ова е многу едноставно, исклучувајќи го впечатливиот назив. За да го најдеме експонентот
само треба да го додадеме 127 и вредноста да ја претвориме во бинарен број. Ова додавање
не осигурува дека ќе имаме екпонент кој има вредност од 0 до 255 т.е. сите вредности ќе
бидат позитивни.
Пример
Ако експонентот ни е 35 па со додавање на 127 добиваме 92, кој можеме да го претвориме
во бинарен број (01011100).
Ако сакаме да се задржиме на вкупно 32 бити, тогаш мораме да направиме некаков баланс,
т.е. ако ја зголемиме должината на експонентот, за да добиме што поголем број, мораме да ја
намалиме должината на битови во мантисата, а со тоа ќе ја намалиме прецизноста. Floating
point operations per second (FLOPS), операции со броеви со подвижна запирка во секунда, ни е
еден начин за мерење на брзината на микропроцесорот.
IBM (од 2002) гради нов супер компјутер составен од милион микропроцсори. Blue Gene (Сини
гени) проектот ќе може да работи со брзина поголема од илјада милион милион операции во
секунда (1 petaflop). Ова е илјади пати побрзо од Intel-овиот рекорд за брзина во 1998 или
приближно два милиони пати побрзо од денешните најјаки декстоп компјутери.
43
Вовед во Микропроцесорите и Микроконтролерите
Да го земеме бројот 2510 кој можеме да го запишеме со 4 бити за дигит, и ќе добиеме 0010
01012. Ова користи еден бајт и се нарекува Запакуван BCD (Packed BCD).
Алтернативно, можеме да користиме 8 бита за секој дигит, така 2510 ќе биде 0000 0010 0000
01012 и сега ќе користиме два бајта. Ова се нарекува незапакуван BCD (Unpacked BCD).
Севкупно
Квиз 4
1. Бројот -3510, неговиот втор комплемент, ако го изразиме со 8 битен бинарен број, е:
a. 00100011.
b. 1111011101.
c. 11011101.
d. 00110101.
2. Бројот 710 претворен во неспакуван BCD формат ќе биде:
a. 1110 0000.
b. 7H
c. 0000 0111.
d. 0111.
3. Бројот со означена магнитуда 110011002 е еквивалентен на:
a. -7610
b. 20410
c. CCH.
d. 121210
44
Вовед во Микропроцесорите и Микроконтролерите
45
Вовед во Микропроцесорите и Микроконтролерите
5
Вовед за логичките порти и нивното
користење
Отворени и затворени порти
Во претходното поглавје, бинарните вредности за нула и еден беа претставени со два
различни напони. Бинарна нула е напон близок до 0 V, додека бинарна единица е напон
близок до +5 V (некои логички кола користат други вредности за напонските нивоа, но ова се
популарни вредности и ќе ги користиме како пример).
Порта претставува едноставно електронско коло кој има единствен излезен напон кој што
кореспондира со едно од двете бинарни вредности. Овие порти се познати како „логички
порти“ и излезниот напон е „логичка 0“ или „логичка 1“, за бинарните 0 и 1. Разликата е само
во називот. Ако запрашате математичар или компјутерски програмер, тие ќе укажуваат на
излезите како бинарни вредности, но инжињерот по електроника ќе ги нарече логички нивоа.
Навистина ова не е битно.
Има само четири основни дизајни на порти. Наречени се НЕ порта (NOT gate), И порта (AND
gate), ИЛИ порта (OR gate) и ИСКЛУЧИВО ИЛИ порта (XOR gate). Се пишуваат со големи букви за
да се избегнат било какви недоразбирања. Не не или и не и или не (not not or and not and or
not)...
46
Вовед во Микропроцесорите и Микроконтролерите
(нула), т.е. ако имаме 0 на влез, тогаш излезот ние е логичка 1. На слика 5.1 е претставен
симболот за NOT порта.
Таблица на вистинитост
Ова е еден начин на опис со зборови како работат портите. Едноставно, таа претставува листа
на сите можни влезови заедно со соодветните излези. Таблицата на вистинитост за NOT
портата е многу лесна. Има само два можни влеза: 0 и 1, како што е прикажано на слика 5.2.
47
Вовед во Микропроцесорите и Микроконтролерите
број на пример A4H. Во ваков случај хексадецималниот број се претвора во 8 битен бинарен
број, овој процес не се прави со микропроцесорот туку се некое друга надворешно коло. Кога
ќе стигне до микропроцесорот тој веќе е претворен во својот бинарен еквивалент т.е.
101001002.
NOT портата има само еден влез, па за обработка на 8 битен бинарен збор нас ни се потребни
осум NOT порти. Сега е лесно, секоја NOT порта ни ја превртува вредноста на само еден од
битовите и сите излези заедно ни формираат нов хексадецимален број. Тоа е прикажано на
слика 5.3. резултатот ни е хексадецималниот број 5BH. Ова е интересно, бидејќи ако го
додадеме A4H на резултатот 5BH ќе добиеме FFH т.е. сите битови во бинарен формат ќе ни се
„единици“ т.е. 111111112. Нема ништо посебно со бројот A4H, ова се случува со секој пар на
броеви генерирани од NOT портите. Зошто е ова така? Клучот ни го дава слика 5.3.
Уште нешто!
Можеме да ја покажеме, т.е. означиме инверзијата, со цртање на линија над променливата.
На слика 5.2 влезот ни беше прикажан со буквата А, а излезот со буквата Х. Едноставно
можеме да напишеме дека: .
AND порта е, било кое коло кој на излез дава логичка (бинарен) 1 ако (и само ако) секој влез во
колото ни е логичка 1. Кај микропроцесорите имаме само два влеза, па лесно ни е да кажеме
дека на излез ќе имаме 1 само кога и двата влеза се логичка 1. Симболот за AND порта ни е
прикажан на слика 5.4.
48
Вовед во Микропроцесорите и Микроконтролерите
Таблицата на вистинитост дадена на слика 5.5 има четири редици со сите можни комбинации
на влезовите.
Многу често се среќавеме со AND портата, но за тоа не сме свесни, на пример кога влегуваме
во лифт, вратата мора да биде затоврена И (AND) мора да имаме притиснато копче за на кој
спрат да оди, за да стартува моторот на лифтот. Ова е AND порта во акција.
49
Вовед во Микропроцесорите и Микроконтролерите
Уште нешто
Во упатствата и книгите за AND функцијата се користи точка, па така ако имаме два влеза А и В,
а за излез користиме Х, тогаш можеме да напишеме Х=А.В
50
Вовед во Микропроцесорите и Микроконтролерите
OR (ИЛИ) порта
OR (ИЛИ) портата ни дава логичка единица кога еден од (двата) влезови е логичка единица.
Исто како AND портата, исто така и OR портата може да има колку сакаме влезови, но кај
микропроцесорите користиме верзија само со два влеза. Симболот и таблицата на вистинитост
се прикажани на слика 5.8. и слика 5.9.
51
Вовед во Микропроцесорите и Микроконтролерите
Уште нешто
OR функцијата се бележи со + или понекогаш !, па така ако OR портата има два влеза А и В, а
излез Х, тогаш тоа можеме да го запишиме како Х = А + В или Х = А ! В. Никој пат не правете
грешка со овој плус знак, и не го сметајте како сума, 3 + 4 = 7.
52
Вовед во Микропроцесорите и Микроконтролерите
Кога влегуваме во лифт, операторот не прашува „Каде ќе одите нагоре или надолу?“, па ние
треба да направиме избор и да решиме каде ќе одиме. Имаме два можни одговори и тоа
„нагоре“ или „надолу“.
По пат накај дома си купуваме сендвич. И продавачот на прашува „Дали сакате кечап или
сенф?“. овој пат можеме да одговориме дека сакаме „кечап“ или „сенф“ или пак можеме да
одговориме дека сакаме и од „двете“.
Ова е добар пример со кој можеме да покажеме едно нешто што е многу лесно, да направиме
да изгледа тешко. Зборот „или“ во Македонскиот јазик има две различни значења кои
укажуваат на исклучување или вклучување. Првиот пример ни покажува за исклучително „или“
бидејќи мора да одговориме со едната или другата можност, но не и со двете заедно. Втората
ситуација ни е влкучиво „или“ бидејќи освен едната или другата можност можеме и двете
заедно да ги одбереме. И двете „или“ секојдневно ги употребуваме и ги разбираме многу
добро и автоматски знаеме за кое „или“ се мисли.
Кај XOR портата излезот ќе ни е логичка единица ако и само ако еден од влезовите ни е
логичка единица, но никако и двата влеза. Се произведуваат само двовлезни XOR порти, без
разлика дали се наменети за микропроцесорите или не (види слика 5.11).
Разгледувајќи на друг начин, излезот од XOR порта е логичка единица, ако двата влеза се
различни, па заради ова, многу често оваа порта се нарекува порта на „нееднаквост“.
Електронска смисла
Кога сакаме да извадиме пари од нашата банкарска сметка, едноставно одиме до банкоматот
и ја ставаме картичката во него, тогаш банкоматот бара од нас да го внесиме PIN-от кој
најчесто е четирицифрен број. Ако бројот е точен, ќе имаме пристап до нашата сметка.
Па како може да го провери нашиот број? Еден лесен начин е да го спореди внесениот број со
бројот кој ќе го исчитува од магнетната лента, од позадината на нашата картичка. Секое
внесено бројче од нашиот PIN го претвора во хексадецимален четирибитен број и резултатот
ни е 16 битен бинарен број внесен од тастатурата, и еден од магнетната лента. Овие два броја
сега може да ги спореди.
Во микропроцесорот имаме 16 XOR порти секоја со по два влеза и тоа еден од картичката и
друг од тастатурата. Кога и двата бита се исти, без разлика дали се нули или единици, излезот
ќе ни биде нула.
16-те излези брзо се прегледуваат и се бара некој излез да е различен од нула, кој ни укажува
дека внесениот број е неточен. Процесот е прикажан на слика 5.12, но за појасна слика само 4
XOR порти се нацртани, реално има 16 од нив.
53
Вовед во Микропроцесорите и Микроконтролерите
Уште нешто
XOR функцијата се пишува со знакот ", па така ако имаме XOR порта со влезови А и В, и излез
Х, тогаш тоа можеме да го запишаме со Х = А " В.
54
Вовед во Микропроцесорите и Микроконтролерите
Да ги погледнеме колата
Во NOT, NAND, NOR и XNOR портите како што прикажавме, има мало кругче на излез за да ни
покаже дека излезот е инвертиран. Истото го имаме и кај баферот. Ако има кругче, тогаш
излезот е инвертирана копија на влезот.
55
Вовед во Микропроцесорите и Микроконтролерите
Ја употребивме истата работа и кај „enable“ влезот, ако е логичка 1 тогаш баферот е вклучен,
прикажано на слика 5.15. Како и да е, ако треба „enable“ влезот да биде логичка 0 за да го
вклучиме баферот треба да ставиме мало кругче на местото каде „enable“ линијата влегува во
баферот. Кога баферот е исклучен се вика дека е оневозможен. Ова ќе ни овозможи да имаме
четири можни бафери прикажани на слика 5.16.
Квиз 5
2 Ако на осум NOT порти се донесе хексадецималниот број 4C, тогаш на излез ќе ја
добиеме вредноста:
a. B3.
b. 4C.
c. FF.
d. CD.
56
Вовед во Микропроцесорите и Микроконтролерите
3 Која од двовлезните порти, има излез логичка 0, ако двата влеза се логичка 1:
a. OR.
b. AND.
c. NOT.
d. XOR.
4 Портата е:
a. Потребна да се задржи добитокот во ранчот.
b. Секогаш работи со напојување од +5V.
c. Електронско коло со три приклучоци.
d. Електронски прекинувачко коло, кај кој излезниот напон зависи од влезовите.
5 Со собирање на влезот и излезот на бинарната вредност од NOT порта:
a. Може да биде 0, 1 или 2 во зависност од влезовите.
b. Ќе ни даде напон околу 2.5 V.
c. Секогаш резултатот е 1.
d. Ова не е можно.
57
Вовед во Микропроцесорите и Микроконтролерите
6
Регистри и мемории
Логичките порти кои ги претставивме во претходното поглавје се појавуваат во многу голем
број кај микропроцесорите и во околните кола. Се наоѓаат во сите микропроцесори почнувајќи
од најстариот и наједноставниот, па дури се јавуваат и во овогодинешниот „Ultimate Wonder
Child“, па и во наредниот „Нов и Подобрен Ultimate Wonder Child MkII“.
Текот на настани е:
58
Вовед во Микропроцесорите и Микроконтролерите
ново ниво на вода во кадата. Ако не почекаме да се стабилизира напонот, може случајно да
запамтиме погрешна вредност.
Слика 6.2 Напонот е вклучен – еве како сакаме да биде промената на напонот
Ова е само влез кој му укажува на флип-флопот дека е време да се прочита нивото на влезот.
Сите микропроцесори оперираат временски добро организирани преку тајмер (puls clock) со
што нè осигурува дека системот работи со точен редослед на настаните.
59
Вовед во Микропроцесорите и Микроконтролерите
Clock сигналот обично е позитивен напонски пулс, кој може да се искористи за вклучување на
две кола во различно време, ако едното коло е дизајнирано да се активира при зголемување
на напонот, додека другото коло на намалување на напонот. На пример ако пулсот од слика
6.4 е широк 10 ns, тогаш овој пулс можеме да го искористиме за потребната пауза која е
потребна за стабилизирање на напонот. Колото ни дава влезен напон кој се активира со
позитивно растечка ивица, и по 10 ns покасно, негативно растечката ивица, дава инструкции
дека флип-флопот може да ја запомни вредноста присутна на влез во тоа време.
Регистер
Регистерот преставува колекција на флип-флопови. Бидејќи флип-флоповите можат да
запомнат само еден бит, па за да можеме да работиме со 32 бити во исто време ќе ни бидат
потребни 32 флип-флопови, кои ќе се однесуваат како 32 битен регистер. На слика 6.5
прикажан е 8 битен регистер.
60
Вовед во Микропроцесорите и Микроконтролерите
Се сеќаваме на сликата 6.1. каде беше претставен еден флип-флоп, кој има посебни линии за
читање и запишување на податоците, па така ако тоа ни е ОК за еден флип-флоп, тогаш за 64
битен регистер ќе ни бидат потребни 128 линии само за да можеме да се справиме со
податоците за влез и излез. Со употреба на три-состојбен бафер од Глава 5, можеме да ја
искористиме секоја линија и за читање и за запишување во зависност од тоа што сакаме да
правиме. Сите три-состојбените бафери се контролираат со логичко ниво донесено на линијата
читај/запиши. Конвенционално, линијата врз „запиши“ (write) ни кажува дека ова линија е на
ниско ниво за да запишиме податок, и се разбира, високо ниво за исчитување на податок.
61
Вовед во Микропроцесорите и Микроконтролерите
Најчесто, податокот кој треба да се зачува е донесен на влезовите од регистерот, и после мала
пауза доволна за да се стабилизира напонот, регистерот е овозможен за работа преку напон
на контролната линија. Тогаш информацијата е сигурно зачувана, се додека нема друго
барање.
Редицата на настаните е:
Ова се нарекува шифт регистер бидејќи податокот се поместува од еден флип-флоп на друг
секој пат кога ќе се појави пулс во тајмерот (clock). Попрецизно, на сликата е прикажан шифт во
62
Вовед во Микропроцесорите и Микроконтролерите
лево регистер, бидејќи при секое поместување на битовите, тие се поместуваат за едно место
на лево при секој пулс на тајмерот. Сите битови се поместуваат во исто време. Последниот бит,
т.е. 7-от бит се испушта и се губи, додека на другиот крај доаѓа нов бит кој се зачувува во 0-тиот
бит.
На слика 6.8, регистерот е наполнет со бинарниот еквивалент на 3610 или 24H и избрано е да се
пушти серија на нули на крајот кај 0-от бит.
Пратејќи ги настанатите промени, обратете внимание што настанува со веќе запишаниот број:
1 После еден пулс, сите битови ќе се поместат за еден на лево. Нова „0“ ќе се внеси во 0-
от бит, а последниот бит од податокот, кој е на 7-от бит ќе отпадне. Зачуваните битови
во овој момент се 01001000 и бројната вредност ќе биде 48H, или декадно 7210.
Забележете како со поместување на битовите на лево ја помноживме вредноста со 2.
2 После осум пулса, сите податоци во регистерот ќе се избришат и ќе се наполнат со
нули. Тогаш регистерот ќе го чува бројот нула, што значи дека има граница колку пати
ќе можеме да множиме со 2, со поместување на регистерот.
3 После 5000 пулса, сеуште регистерот ќе биде полн со нули. Да признаеме, тоа ќе бидат
нови нули, но тоа нема никаква разлика.
63
Вовед во Микропроцесорите и Микроконтролерите
така да имат склоност кон едно логичко ниво. Тоа зависи од производителот, но повеќето
такви „пливачки“ влезови ќе „пливаат“ високо и на влезот ќе имаме единици.
Претходниот шифт регистер преставуваше шифт во лево регистер, што значи дека
информацијата се полни од десната страна и се движи прогресивно на лево се додека
регистерот не го отфрли податокот на другата страна.
64
Вовед во Микропроцесорите и Микроконтролерите
Микропроцесорот е неверојатно брз во споредба со нас. Ако фатиме во рака парче метал кое е
многу загреано, тогаш веднаш ја тргнуваме раката. Но колку долго трае ова? За повеќето од
нас, времето потребно за да размислиме и да реагираме е околу една десеттина од секундата.
Тенисерите кои што ја примаат топката треба да предвидат на која страна да тргнат за да ја
примат топката или едноставно да користат магија. Ако чекаат да видат каде точно оди
топката, нема да можат навреме да стигнат.
Нашето најдобро време на одзив е 0.1 ѕ. Микропроцесорот има време на одзив од околу 0.25
µѕ, ова значи дека микропроцесорот „живее“ со брзина од околи 400 000 пати побрзо од нас.
Па замислете како ние би се чувствувале, ако се соочиме со суштевство наречено
„ПочекајМалку“ кој се движи 400 000 пати побавно од нас? Ќе му биде потребно 11 часа за да
притисне некое копче. Па така со компензација, тој ќе може да живее 28 милиони години!
Ротирачки регистри
Ова претставуваат модифицирани верзии на шифт регистрите, и за да се направат потребни се
две едноставни промени. Првата е тоа што податокот се внесува паралелно, ова значи дека
податок се внесува во секој флип-флоп од регистерот во исто време. Ова има потреба од
одделни конекции за пренос на секој бит, но добрата вест е тоа што податоците се внесуваат
со еден контролен тајмер (clock pulse) со што тоа се одвива многу побрзо. Откога ќе се внесат
сите битови, тие се движат низ регистерот како што прикажавме претходно, но сега наместо да
се испушта последниот бит од податокот, тој е поврзн назад кон другиот крај од регистерот.
Погледнете ги сликите 6.11 и 6.12.
65
Вовед во Микропроцесорите и Микроконтролерите
Користа од користење на ротирачките регистри наместо шифт регистрите е тоа што не се губат
податоци. Видовме дека кај шифт регистрите прогресивно се празнат битовите во „кантата“.
Кај ротирачките регистри податокот не се менува. Ако ротираме, да кажеме шест пати на лево,
за да го вратиме оригиналниот податок, потребно е да ротираме шест пати во десно.
Мемории
Функцијата на меморијте е да ја зачува информацијата – речиси исто како кај регистрите.
Генерлно, регистрите се внатре во микропроцесорот и чуваат мали количини на податоци за
моментална употреба и можат да прават корисни мали трикови како поместување и ротирање
на битовите. Меморијата е дизајнирана за обемно запишување на податоци, и тоа е сè што
прават – без трикови овој пат.
66
Вовед во Микропроцесорите и Микроконтролерите
Па скоро без триков – понекој пат можат да памтат податоци дури и да бидат исклучени од
напојување. Можноста да чуваат податоци и после исклучување на напојувањето е главната
граница која ги дели мемориите на два типа. Ако ги изгуби податоците откако ќе биде
исклучено напојувањето, тогаш станува збор за RAM или пребришлива меморија. Ако ги чува
податоците без напојување, тогаш имаме ROM или непребришлива меморија. Ова е
прикажано на слика 6.13.
RAM
RAM доаѓа од Random Access Memory (меморија со случаен пристап) кое е бесмислено,
застарено, име. Треба да биде наречена read/write (читај/запиши) меморија или RWM, но
тешко да се сменат работите ако веќе еднаш е прифатено тоа. Без разлика, да го оставиме
името и да ја разгледаме меморијата.
Па така, секоја внатрешна ќелија може да има 4, 8, 16, 32, или 64 бити запишано во флип-
флоповите. На слика 6.14 е прикажан изглед на регистерот за многу мала меморија која
содржи 16 ќелии или локации, која секоја од нив може да чува 4 бита и дадени се мемориски
броеви или адреси.
67
Вовед во Микропроцесорите и Микроконтролерите
Зборот RAM
Во праисториските компјутерски денови, меморијата се полнеше редоследно. Првата гупа од
битови ќе се сместеше во локација 0, дригата во локација 1, потоа во локација 2 и се така,
слично како кај шифт регистер. Вака времето за запишување и читање на информацијата се
зголемува, како што се полни меморијта. Ова се нарекува sequential access memory (или serial
access memory, секвенцијален/сериски пристап на меморија), или SAM. Ова беше добро
додека големите компјутери користеа 256 битни информации, но ова е невозможно бавно ако
го употребиме овој трик за гигабајт.
За да го надминеме овој проблем, најден е начин со кој се пристапува до било која мемориска
локација, каде времето на пристап не зависи од тоа каде треба да се зачува податокот, туку
секогаш е исто. Овој систем е наречен случаен пристап на меморија (random access memory)
или RAM.
Пристап до меморијата
Секоја локација на меморијата си има свој број, наречен адреса. На слика 6.14, 16-те локации
на меморија ќе бидат нумерирани од 0 до 15, или бинарно 0000-11112. Ќелиите се поставени
како во правоаголник, во случајот 4 4 квадрат со четири колони и четири редици.
За да се пристапи до некоја ќелија, треба да биде селектиран редот кој ја содржи ќелијата,
плус мора да биде активирана онаа колона што ја содржи таа ќелија. Засенчаната ќелија на
слика 6.15 ја има адресат 0110 што ни укажува дека нејзиниот ред е 01, а нејзината колона е
10.
68
Вовед во Микропроцесорите и Микроконтролерите
Максималниот број на локации кои што можат да се адресираат зависи од бројот на бити во
адресата. Веќе видовме дека 4 битна адреса може да пристапи до 16 локации. Ова е заради
тоа што 24 = 16, па генерално 2n = број на локации, каде n е бројот на бити во адресата. Еден
реален пример: ако имаме 20 адресни линии тогаш ќе имаме 220 = 1 048 576 или 1 мега
локации.
Ваквиот RAM е изграден од флип-флопови. Проблемот со флип-флоповите е тоа што низ нив
цело време тече струја, што доведува до растење на температурата, затоплување, па така на
еден чип, не може да се пакуваат многу блиску. Корисно е тоа што тие се многу брзи и се
употребуваат онаму каде што ни е битна брзината на пристап. Статичкиот RAM најчесто се
нарекува SRAM.
Динамички RAM
Овие мемории ја чуваат информацијата во кондензатори, тоа се мали компоненти кои чуваат
електрично полнење како статичен електрицитет. Се нарекуваат „динамички“ поради
недостатокот што тие го имаат, т.е. електрицитетот кој е во кондензаторот се „излева надвор“
поради неперфектното изолирање. Па така, после некое време електричното полнење треба
да се дополни, инаку, DRAM-от ќе ни се испразни и цела зачувана информација ќе ја загубиме.
Ова допoлнување се нарекува „освежување“ и треба да се извршува во интервали од околу 2
ms од страна на DRAM контролно коло. За да се избегне интерференција со работата на
микропроцесорскиот систем, освежувањето се реализира во позадина без разлика дали се
користи DRAM-от.
69
Вовед во Микропроцесорите и Микроконтролерите
Организирање на меморијата
Меморијата содржи неколку ќелии или регистри, кои истите можат да чуваат информација за
некој број на бити. На слика 6.14 прикажавме навистина едноставна меморија со 16 локации,
каде секоја може да чува 1, 4 или 8 бити. Организацијата на меморијата секогaш се пишува
како „број на локации бити кои можат да се зачуват“, па така оваа меморија може да има
организација од 16 1, 16 4 или 16 8.
Статичките RAM мемории најчесто чуваат по 8 бити во секоја локација, па типична големина на
чипот би бил 131 072 8 кој ни дава вкупен капацитет на простор од 1 048 576 бити. Ово
најчесто се запишува како 128 К 8.
Динамичките RAM мемории чуваат или 1 или 4 бити во секоја локација. Многу пополарна
организација е еден бит во секоја локација, па така типичната организација би била
1 048 576 1, така што, како што се гледа, всушност имаме ист број на бити кои можат да се
зачуват и со дадениот пример за SRAM – промена има само во организацијата.
Маскиран ROM
Маскираниот ROM е произведен врз основа на некоја наша спецификација, и истата не може
да се промени. Мора да бидеме многу сигурни дека информацијата која треба да се запише е
точна, пред да биде направен, во спротивно се ќе отиде во „кантата за отпадоци“ и личноста
одговорна за тоа најверојатно ќе си бара нова работа. Почетната инвестиција е многу голема
за нејзино правење, и вреди да се прави само ако ни се потребни најмалку неколку илјади
идентични чипови (види слика 6.18).
70
Вовед во Микропроцесорите и Микроконтролерите
UVEPROM
Чипот се „бомбардира“ со сноп од ултравиолетова светлина низ проѕирен прозорец на чипот.
За ова ние е потребен специјално направен EPROM бришач, го ставаме чипот во него, ја
затвораме вратичката и уклучуваме тајмер и после неколку минути сите податоци ни се
избришени. Кога ќе се изврши бришењето, сите излези се поставени на 1. Обично, потребна ни
е истата опрема за програмирање на таквиот PROM. За неколку минути ќе го наполниме со
нови податоци и со тоа сме го завршиле процесот.
Можат да се бришат и повторно да се програмираат околу 700 пати пред да станат многу
„неспремни“ за бришење со што животниот век им завршува. Еднаш програмиран PROM
податоците во него се сигурни околу седум години, па за подолгогодишна употреба на
меморијата, најдобро е да ја обновуваме содржината, или уште подобро ако е тоа е возможно
да користиме маскиран ROM.
71
Вовед во Микропроцесорите и Микроконтролерите
72
Вовед во Микропроцесорите и Микроконтролерите
Напојување
Основното напојување за да може да работи чипот е +5 V донесен на V+ пинот и 0 V на GND
(ground, заземјување) пинот.
Адресни пинови
Адресните пинови секогаш се нумерираат почнувајќи од А0, па видовме дека бројот на
локации е изразен со 2n, па така за 17 адресни линии (А0 до А16) бројот на локации би бил
2 131 072.
Податочни пинови
Како кај адресните пинови, и овие пинови почнуваат со нумерирање од нула. Кај EPROM-от
прикажан на слика 6.19 се користи скратеницата D за податоци (data) и почнуваат од D0 до D7
– севкупно осум пина. Некои производители ги нарекуваат излезни пинови (output) и
нумерирањето е O0, O1, O2 итн. Излезот од овие пинови се или 0 V или +5 V или блиску до
овие вредности.
Контролни пинови
1 Chip enable (CE, овозможувач на чипот), понекогаш наречен пин за избор на чипот (chip
select, CS), е главниот вклучи/исклучи прекинувач на чипот. Обично е ниско активен,
т.е. на чипот му е потребен напон од логичка 0 за да биде уклучен чипот. Ова е
покажано со црта над CE. Кога ќе се исклучи чипот, тој оди на „спиење“ и моќноста се
намалува за околу 150 пати.
2 Output enable (OE, овозможувач на излезите) го остава чипот уклучен, но излезот е
дисконектиран од податочните пинови. Ова е направено со оневозможување на серија
три-состојбени бафери веднаш пред податочните пинови. Со дисконектирање на
излезните пинови е многу побрзо одошто исклучување на чипот. Внимавајте на цртата
врз името која ни кажува за поларитетот кој ни е потребен.
Неповрзани пинови
Овие се обележани со NC и не се користат. Тие физички се одделени во внатрешноста на чипот
и немаат никаков ефект. Треба да се остават неповрзани.
73
Вовед во Микропроцесорите и Микроконтролерите
Податочни пинови
Бидејќи SRAM ни е читај/запиши (read/write) меморија, податочните пинови се користат за
читање податоци од чипот и да се запишат во микропроцесорскиот систем. Така овие се
наречени влез/излез (input/output) пинови (I/O) и вообичаено се нумерираат почнувајќи од
нула.
Контролни пинови
74
Вовед во Микропроцесорите и Микроконтролерите
Редот на настаните ни кажува да кога RAS линијата е на ниско ниво долната половина од
адресата е наполнета во редиците (Rows) – потоа RAS се враќа на високо ниво. Потоа CAS се
носи на ниско ниво додека остатокот од адресата нè се наполни во колоните (Columns). После
ова, состојбата на линијата за запис (исто како R/W) одлучува дали податоците ќе влегуваат
или излегуваат од DRAM-от.
Само еден бит е зачуван во секоја адреса, податоците влегуваат во Din пинот (data in) и
излегува преку Dout пинот (data out).
RAM картички
Проблемот со RAM мемориите е тоа што ја губат информацијата откога ќе се исклучи системот.
RAM картичките го надминуваат ова со користење на своја вградена батерија. Па така, RAM
картичките можат да се извадат од системот без да ги загубат податоците, т.е. ова е RAM кој се
претвара дека е ROM. Нејзиното работење со целосна брзина и постојаност трае како и
животот на батеријата, околу 10 години.
Flash меморија
Ова е непребришлив RAM (NVRAM). Всушност ова е реална форма на RAM со батерија која ни
служи за напојување после исклучувањето. Нешто слично како верзија на RAM картичка.
Мапирање на меморијата
Микропроцесорите имаат неколку адресни линии кои се користат за пристап до RAM, ROM
или до некој друг уред во системот. Како што веќе кажавме кај мемориските чипови, за
севкупно адресирање од страна на микропроцесорот беше употребена формулата 2n каде n е
бројот на адресни линии. На пример, кај 8 битен микропроцесор, генерално имаме 16 адресни
линии, кои можат да имаат пристап на 216 или 65 536 или 64 бајти на меморија. Digital Alpha
21064 има 34 битни адресни линии кои ни даваат 234 или малку повеќе од 17 Гигабајти. Оваа
меморија е поделена помеѓу RAM-ови, ROM-ови и други уреди, вклучувајќи е неколку за
употреба од страна на самиот микропроцесор.
75
Вовед во Микропроцесорите и Микроконтролерите
Да претпоставиме дека стартната адреса е FFFAH, тогаш ние мора да имаме внесено некоја
корисна информација на таа адреса која микропроцесорот треба да ја следи. Ова ни кажува
дека на врвот од мемориската мапа мора да има ROM меморија. Некои мемории имаат
можност за многу брзо програмирање, па за ова ни е потребно RAM меморија на дното од
мемориската мапа.
Па останатите RAM и ROM мемории можат да се стават на било која позиција од мапата. Ова
ни кажува дека мапирањето не мора да биде целосно. Билансот помеѓу RAM и ROM
мемориите зависи за која цел ќе се користи системот. За систем на контрола на некое
производство, повеќето од меморијата ќе биде ROM додека за компјутер ќе ни треба повеќе
RAM. Едноставно мемориско мапирање е прикажано на слика 6.22.
76
Вовед во Микропроцесорите и Микроконтролерите
Подредување на адресите
Ова е само вежба со хексадецималните броеви, каде калкулатор кој е способен да работи со
хексадецимални броеви е бесценет. 1 kbyte меморија зафаќаат 210 или 1024 локации, што во
децимално е 400H. Првата секција на RAM се протега до: почетната адреса + највисоката
адреса на RAM меморија = 0000H до 03FFH, така највисоката адреса на секцијата „брзи
инстрикции“ е 03FFH. Корисничката RAM меморија се протега од 0400H до 3FFFH, па колку
килобајти меморија е ова?
На сличен начин, видео RAM меморијата, која ја чува информацијата за тоа што треба да
прикаже на екранот, може да се најде со одземање на долната адреса D800H од највисоката
адреса E000H и се добива 800H, па со делење на резултатот со 400H добиваме 2 килобајти на
видео RAM меморија.
Пример
Ако 12 килобајтен блок од ROM меморија почнува на адреса 8000H, која е највисоката адреса
на истата ROM меморија?
Бидејќи 1 '()*+ 1024, следува дека 12 '()*+, 12 1024 т.е. декадно 12 288 или
хексадекадно 3000H. Сега треба да бидеме малку претпазливи, ако ROM меморијата содржи
3000H адреси, тогаш тие ќе почнуваат од 0 па се до 2FFFH. Така со додавање на стартната
адреса од 8000H на највисоката адреса ќе се добие 8000 2FFF AFFFH, која претставува
највисоката адреса на ROM меморијата.
Квиз 6
77
Вовед во Микропроцесорите и Микроконтролерите
3 Пинот кој е најсличен со оној кој е означен како CS, може да се означи како:
a. ОЕ.
b. CAS.
c. CE.
d. Vcc.
4 Ако во мемориското мапирање, најниската адреса на 8 килобајтен RAM e 1000H тогаш
највисоката адреса ќе биде:
a. 8192H.
b. 2FFFH.
c. 7FFFH.
d. 3000H.
5 UVEPROM:
a. Се програмира со ултравиелетова светлина.
b. Ги губи податоците ако се исклучи од напојување.
c. Е некоја форма на непрепришлива меморија.
d. Се употребуваат кај SIMM.
78
Вовед во Микропроцесорите и Микроконтролерите
7
Микропроцесорски базиран систем
Колку едноставен е всушност микропроцесорскиот базиран систем? Очигледно треба да
содржи микропроцесор, кој претставува едно едноставно електронско коло, кое треба да се
програмира. Ова значи дека треба да му се внесат серија на инструкции кои треба да ги
извршува. Како и да е, со програмирање на микропроцесорот добиваме бинарни броеви, како
резултат, кои претставуваат едноставни чекор по чекор инструкции, кои треба да се извршат.
Овие интрукции мора да се зачуваат во некоја меморија, но дали треба тие да се зачуват во
RAM или ROM меморија? Обавезно тоа мора да е ROM меморија. Треба да запомниме дека
RAM меморијата чува случајни податоци и при првото стартување на микропроцесорот, ако тој
на пример ни контролира некоја операција во фабрика за динамит, последно нешто што
сакаме е да се извршуваат инструкциите по случаен ред и тоа со брзина од милионити дел од
секундата!
Што одлучува за тоа колку брзо ќе се извршуваат инстрикциите? Веднаш ќе кажеме дека тоа е
регуларниот пулс од напонот кој е донесен на микропроцсорот. Овој напонски пулс се
нарекува clock pulse.
Clock (такт)
Clock колото ја контролира работата на микропроцесорот. Ова коло произведува напонски
пулсови, нешто како саат кој чука. Цел систем работи секвенцијално и ја извршува својата
работа една после друга. Еден чекор се комплетира за секое отчукување на clock системот.
79
Вовед во Микропроцесорите и Микроконтролерите
Слика 7.2 Речиси вертикалната предна ивица, значи нулто време на растење
Ако времето на растење (rise time, означенот како tr или trise) не е дадено, тој може да се
измери помеѓу вредностите на напонот за 10% и 90% од работниот напон. Секој
микропроцесор има максимална и минимална фреквенција за clock пулсот.
80
Вовед во Микропроцесорите и Микроконтролерите
Првиот микропроцесор, 1971, беше Intel 4004, и работеше со брзина од 0.108 MHz и можеше
да обработи 4 бита во единица време. Во 1998, 64 битниот Alpha 21164 работи на 600 MHz.
Скоро секој основен систем ќе содржи микропроцесор, clock и ROM чип за да може да ја
изврши вградената секвенца на инструкции. Друга важна работа е дека терба да има кабли
или друг вид на проводници за да може да се поврзи во колото. На слика 7.4 е прикажан
наједноствниот микропроцесорски базиран систем, со своите најбитни работи. Обично,
напојувањето не се прикажува.
Магистрали
Овие проводници се во групи, бидејќи сите одат до исто место и скоро за исти цели. На
пример, 8 битен микропроцесор, нормално користи 8 проводника за да ги пренесува
податоците помеѓу микропроцесорот и меморијата. Диаграмите ќе бидат многу
комплицирани ако ги цртаме сите кабли посебно. Магистралите ни претставуваат колекција од
кабли (проводници) кои имаат слична функција.
81
Вовед во Микропроцесорите и Микроконтролерите
Без разлика со какво име ќе биде наречен некој уред, тие во основа се исти, и се суштински за
секој микропроцесорски базиран систем. Надограден основен систем е прикажан на слика 7.5.
82
Вовед во Микропроцесорите и Микроконтролерите
Читај/запиши сигналите им кажуваат на RAM меморијата и на I/O чипот дали треба да читат,
т.е. да ја примат информацијата од податочната магистрала, или да запишат информација во
податочната магистрала.
Избор на чипот, претставува вклучи/исклучи прекинувач за секој чип и треба да бидеме многу
претпазливи и да се осигураме дека имаме само еден вид на информација приклучено на
податочната магистрала во даден момент.
Ако еден ROM чип сака да запише бинарна 0 на една конекција од податочната магистрала, а
во исто време друг ROM или RAM чип исто сака да запише бинарен 1, ќе настане до
несогласување помеѓу двата чипа. Што ќе се случи? Најчесто доаѓа до „караница“ помеѓу
чиповите и на крај едниот чип ќе биде „осуден на смрт“.
Инструкција: испрати го бројот 25H, кој се наоѓа во ROM-от, и зачувај го во RAM-от на адреса
2500H. Еве што ќе се случи (акциите пратете ги според слика 7.6):
83
Вовед во Микропроцесорите и Микроконтролерите
84
Вовед во Микропроцесорите и Микроконтролерите
Бројот 25 сега е сигурно запишан во RAM-от и ќе стои таму додека не биде запишано нова
информација врз него или додека не се исклучи напојувањето.
1 2 13 8k 25 32M
2 4 14 16k 26 64M
3 8 15 32k 27 128M
4 16 16 64k 28 256M
5 32 17 128k 29 512M
6 64 18 256k 30 1024M = 1G
7 128 19 512k 31 2G
8 256 20 1024k = 1M 32 4G
9 512 21 2M 33 8G
10 1024 = 1k 22 4M 34 16G
11 2k 23 8M 35 32G
12 4k 24 16M 36 64G
Исто така можеме да ја употребиме оваа табела за да го одредиме бројот на адресни линии,
ако тоа ни е потребно, ако го знаеме бројот на адресни локации. На пример, ако сакаме да
пристапиме до 700 локации, гледаме дека со 9 адресни линии имаме 512 локации, што е
помалку од тоа што ни треба, па така ќе имаме 10 линии што ни дава пристап до 1024 локации.
„Реалниот“ одговор би бил 9.45, ама тоа не е логично, бидејќи не можеме да имаме 0.45 од
каблите, па така ако 9 не се доволни, тогаш ќе ни се потребни 10 адресни линии.
logброј на локации
број на адресни линии
log 2
85
Вовед во Микропроцесорите и Микроконтролерите
Декодерот
Декодирачкото коло може да биде направено од одделни логички порти, или пак може да се
купи веќе направено како едно интегрирано коло. Основните потреби се три влезни линии и
осум излезни линии секоја поврзана за еден „избор на чип“ пинот од меморискиот чип.
За да го вклучи чипот, „избор на чип’ мора да има напон на логичка 0, додека напон од
логичка 1 би го исклучило чипот. Неопходно е само еден чип да биде вклучен во даден
момент, инаку ќе испорачат конкурентни податоци до податочната магистрала, и многу лесно
ќе се уништат податоците. Трите адресни линии ни даваат 23 = 8 различни влезови во
логичките порти кои се наоѓаат во декодерот.
86
Вовед во Микропроцесорите и Микроконтролерите
Внетрешниот дизајн нè осигурува дека ако адресните пинови се сите нули, тогаш првиот излез
ќе биде логичка 0, а сите останати логичка 1. Меморискиот чип за кој е прикачен овој прв
излез ќе се вклучи, а останатите ќе останат иклучени. Кога ќе се донесе друга комбинација на
влез 0, 0, 1, вториот мемориски чип ќе се вклучи, а останатите ќе бидат исклучени. Следната
комбинација ќе го вклучи наредниот мемориски чип, а останатите ќе бидат исклучени, и се
така дадока имаме различни комбинации на трите адресни линии (види слика 7.8). За три
влеза и осум излеза, јасно е дека е доволен 3-8 декодер.
Табелата 7.2 изгледа многу лошо од навистина тоа што е. Тоа е збир на излезите од декодерот.
Ако микропроцесорот ја стави адресата C2F1H во адресната магистрала, бинарно тоа би било:
1100 0010 1111 0001 (за полесно читање е поделена во групи од 4 бити). Најзначајниот бит,
А15, е на левиот крај.
0 0 0 0 1 1 1 1 1 1 1 Чип 0
0 0 1 1 0 1 1 1 1 1 1 Чип 1
0 1 0 1 1 0 1 1 1 1 1 Чип 2
0 1 1 1 1 1 0 1 1 1 1 Чип 3
1 0 0 1 1 1 1 0 1 1 1 Чип 4
1 0 1 1 1 1 1 1 0 1 1 Чип 5
1 1 0 1 1 1 1 1 1 0 1 Чип 6
1 1 1 1 1 1 1 1 1 1 0 Чип 7
87
Вовед во Микропроцесорите и Микроконтролерите
Делумно декодирање
Сега да направиме мала промена, нека мемориските чипови користат 4 килобајти наместо 8
килобајти. Каков ефект би ни дало ова?
Прво, бројот на адресни линии ќе се намали и тоа на 12. Сеуште имаме само осум чипови кои
можат да се селектираат со 3-8 декодер. Па што добивме сега? Дванасет адресни линии до
чиповите и три до декодерот, тоа се петнаесет (15), па така ни останува една неискористена
линија. Ако нема ништо приклучено за неа, не е важно каков напон ќе имаме (види табела 7.4)
Да ја разгледаме нашата претходна адреса C2F1H. Но ако некако се случи адресата да се смени
во D2F1H т.е. од:
1 1 0 0 0 0 1 0 1 1 1 1 0 0 0 1 (C2F1H)
во
1 1 0 1 0 0 1 0 1 1 1 1 0 0 0 1 (D2F1H)
Па така, сега имаме два броја кои можат да се донесат до адресната магистрала, со што ќе
резултираат со пристап до иста мемориска локација, бидејќи сите битови кои се користат се
идентични. Ако му дадиме инструкција на микропроцесорот прво да зачува некоја
информација на адреса C2F1H, а потоа да му кажеме да ја исчита информацијата од D2F1H,
тогаш тоа ќе биде истата информација што сме ја зачувале на локација C2F1H. Така адресата
D2F1H претставува „дух“ адреса или слика. Важно е да се нагласи дека ваквите адреси немаат
никаков ефект во работата на микропроцесорскиот систем. Нецелосното или делумно
декодирање секогаш ни дава раст на адресите-слики, па работата со нив е многу лесна. Со
говор на технологијата би кажале дека делумното декодирање ни дава повеќе од една
софтверска адреса за покажување на една иста хардверска адреса.
Оваа линија е
неискористена, па така
може да имаме две
вредности 0 или 1
88
Вовед во Микропроцесорите и Микроконтролерите
Работен пример
(а) 1 килобајтните мемории ќе користат 10 адресни линии. Ова го видовме во табела 7.1, а за
декодерот сеуште ќе ни бидат потребни три влеза. 16 битната адреса за дадената 4000H ќе ни
даде три неискористени линии, види табела 7.5. Овие три бинарни дигити можат да бидат 000,
001, 010, 011, 100, 101, 110, 111 кои ни даваат осум различни вредности. Ова можевме да го
заклучиме и преку 23 = 8. Со ставање на овие осум броеви во адресата ќе добиеме осум
различни адреси.
Три не
искористени
линии
Една реална адреса и седум „слики“. Но кои се „слики“, а кои се реални адреси? Не е важно!
Можеме да ја земеме која сакаме бидејќи тие сите покажуваат на иста физичка адреса.
Имајќи, го ова врпедвид, повеќето, ја одбираат најниската адреса, за реална.
(б) Сега, да ги најдиме овие адреси, се што треба да направиме е да ги ставиме сите бинарни
опции, 000, 001, итн. во „реалната“ адреса и да ги добиеме сите осум „слики“. Ова е дадено во
табела 7.6.
А А А А А А А А А А А А А А А А
Адреса
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4000
0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 4400
0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 4800
0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 4C00
0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 5000
0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 5400
0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 5800
0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 5C00
89
Вовед во Микропроцесорите и Микроконтролерите
Тоа се адресите 4000H, 4400H, 4800H, 4C00H, 5000H, 5400H, 5800H и 5C00H. Па така, бидејќи
веќе бевме запрашани, можеме да кажеме дека седумте последни адреси, ни се „слики“, а
првата дека е реална адреса.
Квиз 7
1 Digital Alpha 21064 микропроцесорот има 34 битна адресна магитрала која може да
пристапи од меморија од:
a. 64 Гигабајти
b. 64 Мегабајти
c. 16 Гигабајти
d. 160 Мегабајти
2 Податочната магистрала:
a. е двонасочна
b. е составена од осум проводника.
c. Може да се користи за пренос на податоци до RAM и ROM мемориските
чипови.
d. Поврзана е за пинот избор на чип (chip select).
3 16 битна адресна магистрала има адреса 4567H и има делумно декодирање каде А15 и
А13 не се користат. Која од овие адреси пристапува на различна хардверска локација:
a. E567H
b. 4567H
c. 6567H
d. 8567H
4 Што од следново НЕ е потребно за микропроцесорски базиран систем:
a. Адресна магистрала
b. ROM
c. Clock сигнал
d. RAM
5 „Слики“ адресите:
a. Исто така и се нарекуваат „дух“ адреси
b. Повеќе хардверски адреси покажуваат на иста софтверска адреса
c. Исто е со делумна адреса
d. Се појавуваат при целосно декодирање
90
Вовед во Микропроцесорите и Микроконтролерите
8
Типичен 8 битен микропроцесор
Детално ќе опишиме 8 битен микропроцесор за да ги „поставиме темелите“ врз кои ќе се
надоградува, за добивање на поновите микропроцесори, бидејќи микропроцесорите
еволуираат од еден во друг, а не се појавени како „гром од ведро небо“.
Z80180 може да ја изврши секоја програма која е напишана за Z80, само во него се додадени
некои нови особини. Технички, ова се нарекува дека овозможува комплетна компатибилност
наназад.
X во Z8X180
Ако одиме да купиме автомобил од било која компанија, тие ќе ни понудат една цела серија
автомобили, кои во оснава се исти, но со избор за јачината на моторот, различен менувач на
брзините, распоред на седиштата и многу други опции. На ваков начин, тие можат да
задоволат максимален број на потрошувачи без значајни промени и трошоци.
И кај микропроцесорите е скоро исто. Почнуваат со некој основен дизајн, а сличните верзии се
означени со мали промени во бројчето за типот. До сега, Zilog ги има произведено Z80180,
Z8S180 и Z8L180. Со споредба на бројчето за типот, можеме да видиме дека се разликуваат
само во третата бројка или буква и со промена на таа буква/бројка со X ние можеме да го
генерализираме тој тип на микропроцесор како Z8X180. X генерално се употребува во
индустријата. Група на микрорпроцесори се нарекува фамилија.
91
Вовед во Микропроцесорите и Микроконтролерите
домот имаат околу 50 вакви уреди без да знаеме дека тие постојат. Тие масовно го
надминуваат бројот на многу брзите компјутерски микропроцесори.
Инструкциски регистер
Регистерот за инструкции е мала меморија која може да чува 8 бити т.е. 1 бајт информација.
Оваа информација е инструкцијата која треба да ја изврши микропроцесорот. Оваа
информација е „заклучена“ во инструкцискиот регистер, за да ја ослободи внатрешната
податочна магистрала за други цели. Не прави ништо со бинарниот влез – само памти што е.
Инструкциски декодер
Инструкцискиот декодер е дел од микропроцесорот кој е способен да извршува инструкции.
Првиот чекор му е да ја идентификува инструкцијата која е внесена. Ова го прави со споредба
на бинарниот код, кој е запишан во внатрешна листа. Откога ќе ја пронајде инструкцијата,
тогаш извршува вградена програма наречена микропрограма. Микропрограмата е
дизајнирана внатре во микопроцесорот, од производителот, и ги содржи сите потребни
чекори за да ја заврши секоја инструкција за кој е способен. Комерцијално ова е сензитивниот
и критичниот дел на микропроцесорот.
92
Вовед во Микропроцесорите и Микроконтролерите
Секој микропроцесор содржи своја колекција на регистри, па така многу е битно внимателно
да ги прочитаме техничките податоци за микропроцесорот за да знаеме што точно работат
регистрите.
Исто така има и „регистри со специјална намена“ кои се веќе одредени да извршуваат некаква
функција, таков е инструкцискиот регистер.
93
Вовед во Микропроцесорите и Микроконтролерите
со информации кои ќе бидат спремни за моментална, брза, употреба кога тоа ќе биде
потребно.
Регистерот за статус, или регистарот за знаменце, ни претставува прозорец преку кој гледаме
што работи микропроцесорот. Нешто слично како едноставен систем за комуникација. Како на
пример, тој ни овозможува да му кажеме на микропроцесорот: „извести ме кога ќе видиш
негативен број при пресметувањето“.
Немораме да обрнуваме внимание за знаменцата, тие се само индикатори за нешто што може
да се забележи или игнорира, исто како што правиме со термометарот закачен на ѕид.
Секое знаменце се идентификува со буква, како на слика 8.3. Ќе забележете дека два бита, 3 и
5 се обележени со Х за да покажеме дека не се користат. Овие битови беа оставени празни за
подоцнежно подобрување (кое никогаш не се случи).
94
Вовед во Микропроцесорите и Микроконтролерите
Уште една забелешка: се вели дека знаменцето е „поставено“ кога има вредност 1, а се вели
дека е „тргнато“ (избришано) кога е 0.
Ѕ знаменцето е само копија на 7-от бит од акумулаторот. Негативниот број има 1 на 7-от бит , а
позитивниот 0, па така ова знаменце ни кажува за знакот на бројот. Сигурно се сеќавате дека
кај броевите со означена магнитуда, се употребува 1 за негативни броеви и 0 за позитивни.
Истотака негативниот број е изрзен со својот втор комплемент кој обавезно има 1 на првиот
бит од лево. Бројот нула се третира како позитивен број, па така не можеме да го користиме Ѕ
знаменцето за да забележиме нула како резултат. Ова го правиме со „вработување’ на
специјален „нула“ знаменце.
Треба да пазиме на две работи, Z знаменцето ја менува состојбата во 1 само и само ако сите
битови во последниот резултат се нули, и внимавајте дека: нулти резултат го прави Z
знаменцето = 1; а не нулти резултат Z знаменце = 0.
0100 0000
1111 1111
0000 0000
1001 1010
Кога се извршува собирање, понекогаш како резултат имаме бит кој се носи во колона за
паметење. C знаменцето ја копира вредноста на 7-от бит од таа колона, а H знаменцето ја
95
Вовед во Микропроцесорите и Микроконтролерите
зачувува вредноста на колоната за паметење од 3-от бит во 4-от бит при собирање. Исто така ја
отсликува вредноста при „досадното“ одземање.
0 1 1 0 1 0 0 1
1 1 0 0 0 0 1 1
0 0 1 0 1 1 0 0 :резултат
1 0 0 0 0 1 1 0 :колона за паметење
Кога ќе се забележи можна грешка ќе се „подигне“ знаменцето, а кога нема грешка тоа е
„спуштено“.
0 1 1 0 0 0 0 0 = 96
0 1 0 0 0 0 1 0 = 66 +
1 0 1 0 0 0 1 0 = -34??
1
Во овој пример, собравме два броја кои почнуваат со нула, бидејќи тие се позитивни, а
резултатот ни почнува со единица, што претставува негативен број, па така P/V знаменцето ќе
биде кренато т.е. ќе има вредност бинарно 1.
Лесен начин за да провериме дали има можна грешка е да ги видеме 7-от бит во колоната за
паметење и 7-от бит од резултатот.
96
Вовед во Микропроцесорите и Микроконтролерите
Правилото е:
Ова го прави со проверка на податокот и ги брои единиците во него, и ако вкупниот број е
парен, тогаш P/V = 1, а ако е непарен бројот на единици тогаш тој е 0.
Ако имаме бајт 10110101, тогаш P/V = 0, бидејќи бројот на појавувања на 1 е 5 пати, т.е.
непарен број. А бројот 10010110 ќе ни даде резултат за P/V = 1, бидејќи четири пати ни се
појавува 1, а 4 е парен број.
Може малку изгледа нелогично тоа што првите четири регистри се именувани B, C, D и E, а
последните два се H и L.
97
Вовед во Микропроцесорите и Микроконтролерите
Тоа што всушност правиме ја ставаме адресата 6400Н во програмскиот бројач (program
counter, PC) и микропроцесорот почнува од таму. Откога ќе заврши со извршувањето на
инструкцијата во 6400Н, оди на следната инструкција на адреса 6401Н, па на 6402Н итн., се
додека не стигнеме да крајот на програмата.
Ако некој ни даде телефонски број, ние најверојатно ќе земеме парче хартија и молив, па ќе го
запишеме бројот. Нашата белешка би изгледала како на слика 8.4.
Ако потоа ни дадат уште неколку броеви, најверојатно и нив ќе ги запишеме, под првиот брот,
како на слика 8.5.
98
Вовед во Микропроцесорите и Микроконтролерите
почнувајќи од последниот внесен број, па сè до врвот на стекот. Првиот број кој влегува,
последен ќе испадне, па заради ова, овој метод се нарекува „прв влегува, последен излегува“,
т.е. „first-in, last-out“ или FILO. За максимална забуна, ова може исто така да биде наречен и
LIFO систем, што ја има истата смисла. Размислете малку за ова! (last-in, first-out)
Поуката од оваа приказна е да го оставиме стекот настрана – или пак да бидеме многу
претпазливи! Во техничките податоци за микропроцесорот секогаш многу добро е
образложено кога микропроцесорот го користи стекот, но сепак подобро е да не го користиме.
99
Вовед во Микропроцесорите и Микроконтролерите
Индексни регистри
Имаме два индексни регистри, едниот наречен Х, а другиот Y. И двата имаат иста функција.
Индекси користиме во ситуации кога сакаме да извршиме секвенца на слични задачи една по
друга. Може да користиме податоци запишани во серија на мемориски локации. 16 битна
содржина на индексниот регистер може да се додаде во содржината на програмскиот бројач
(PC), за да ја дава новата адреса.
Овие регистри, исто така се користат во ситуации кога програмата бара некој податок да биде
внесен од корисникот, како на пример:
ПЕЧАТЕЊЕ
Внеси го бројот на копии
R бројач (R)
Ова е едноставен бројач кај кој долните седум битови се користат за броење, колку
инструкции се извршиле од микропроцесорот, додека работи некоја програма. Се враќа на
нула кога микропроцесорот ќе се рестартира.
100
Вовед во Микропроцесорите и Микроконтролерите
На слика 8.7 прикажани си останатите делови на микропроцесорот. На слика 7.4 сите овие
делови се ставени во еден блок наречен „микропроцесор“ (µP). Овде се прикажани сите
потребни поврзувања на уредите со надворешните кола и други потребни работи.
Податочни бафери
Податочниот бафер е 8 битен регистер и се користи за чување на информации кои се донесени
од надворешната податочна магистрала. Откога баферите ќе ја зачуват бинарната
информација, тогаш три-состојбените бафери ќе ја „заклучат“ информацијата и ќе ја
дисконектира надворешната магитрала за да може да се погрижи за други податоци. Овој
процес се нарекува „заклучување“, „latching“. Како генерално правило, се што влегува во чипот
од магистралата е заклучено. Ова е заради тоа што на магистралите им е потребно време
додека да донесат нов напон на своите линии и треба да почне со работа што е можно порано.
Z80180 има (накој вид на) 16 битна адресна магистрала и 8 битна податочна магистрала.
Кај помалите микропроцесори, обично беше пракса, адресната магистрала да биде двапати
поголема од податочната магистрала, без некоја цел зошто е тоа така. Изборот на адресна
101
Вовед во Микропроцесорите и Микроконтролерите
магистрала зависи од предвидената големина на меморијта, во крајниот дизајн, која што треба
да се адресира. Необично, кај овој микропроцесор има две конфликтни побарувања: тој треба
да остне компатибилен со 16 битната адресна магистрала на Z80, но исто так сакаме да
можеме да адресираме 1 MB за кој е потребно 20 адресни линии.
Овие побарувања се среќаваат во блокот наречен како MMU (memory management unit),
единица за менаџирање на меморијата.
Површински монтирачките уреди немаат пинови кои поминуваат низ дупчиња на веќе
испринтана плоча, туку има конектори кои излегуваат хоризонтално и се залемуваат на
повшината од плочата. Ваквиот метод ни зачувува значаен простор.
Забелешка
Помалиот број на пинови кај DIL, го ограничуваат бројот на адресни пинови на деветнаесет, и
максималната меморија до која може да се пристапи е 219 или 512k (поточно 52488, бидејќи
' 1024 како што кажавме во глава 2).
102
Вовед во Микропроцесорите и Микроконтролерите
Адресни бафери
Ова се три-состојбени бафери исти како податочни бафери само што овие се еднонасочни
уреди. Микропроцесорот испраќа адреси низ адресната магистрала, но вака не може да дојде
до микропроцесорот никаква информација за адресите. Ако сакаме да испратиме адреса во
микропроцесорот тогаш информацијата ја ставаме во податочната магитрала, и како што
знаеме се што доаѓа во податочната магистрала може да се препрати на некое надворешно
коло или до микропроцесорот.
Пожарот не е единствената катастрофа од кој може нашиот мал пријател да не спаси. Може да
не извести, на пример, и кога снемува хартија во печатачот, или има некакво уништување на
податоците пренесени преку телефонскиот кабел.
Така имаме различни програми за секој од овие проблеми кои се зачувани во група од адреси
во ROM чипот. На пример можеме да ги ставиме овие програми на следниве адреси:
103
Вовед во Микропроцесорите и Микроконтролерите
ќе се уништи некој телефонски податок, тоа го приметува сензорот и тој испраќа сигнал за да
го прекине (интерапт) микропроцерот, во кој е делот од адресата 70Н.
Тогаш тој ги комбинира 08Н од Интерапт регистерот и 70Н од надворешниот уред, сензорот, и
го става во програмскиот бројач, PC. Тогаш микропроцеосор се префрла на адреса 0870Н и го
повикува сервисерот за телефони.
Интерапт приоритети
Не сите проблеми се третираат еднакво, ни од нас нити пак од микропроцесорот.
Невообичаено е да се сретнеме со реченица како: „Заборавив да ставам шеќер во кафето. – Ќе
одам да донесам малку шеќер – и приметив дека гори вашата куќа“.
Како кај сите микропроцесори, така и кај Z80180, интерапти делумно се генерираат од
надворешни кола, а некои се од внатрешни извори. Надворешните обично се блокираат или
„маскираат“ и му кажуваме на микропроцесорот да ги игнорира и да ги подреди по приоритет,
така што на повеќе интерапти им е доделено приоритет.
Кај Z80180, најголем приоритет има кога ќе се добие непознат интрукциски код за да спречи
некоја случајна операција да направи изопачување при прграмирањето или трансмисијата.
Овој интерапт се нарекува TRAP.
После овој доаѓа единичен немаскиран интерапт, non-maskable interrupt, NMI. Овој се
употребува за критични ситуации кога мора да ја прекине секоја програма која е стартувана.
Потоа следат три нивоа на надворешни, но превентивни (маскирани) интерапти. Ако не сакаме
програмата да биде прекината, се што треба да направиме е да вметнеме „не прекинувај“ код
во софтверот. Во некои документации овие се напишани како INT0, INT1, INT2, каде бројчето
ни го покажува приоритетот, а во други документации се употребува IRQ кое доаѓа од
Interrupt ReQuest, (барање за интерапт).
104
Вовед во Микропроцесорите и Микроконтролерите
Фамилијата Z8X180 има три претставника: Z80180, Z8S180 и Z8L180. Ѕ верзијата работи на
напојување од 5 волти, а верзијата L работи на 3.3 волти.
Табела 8.1
105
Вовед во Микропроцесорите и Микроконтролерите
Состојби на чекање
За да ја олесни работата при испраќање на информации кон релативно бавен надворешен
уред, микропроцесорот способен е да вметне „состојба на чекање“ кој ќе додаде повеќе
време во временскиот циклус на магистралата. Може да се вметнат во програмата со
програмирање или може внатрешно да се вметнат со генератор на состојба на чекање.
Првата опција ни е clocked serial input/output (CSIO). Ова е едноставна податочна конекција со
висока брзина со друг микропроцесор кој е способен за испраќање и примање на податоци, се
разбира во исто време. Трансмисијата е синхронизирана од микропроцесорскиот часовник.
Исто така имаме два интерфејса за асинхрона сериска комуникација, asynchronous serial
communications interfaces (ASCI), кои ни даваат други две податочни конекции кои можат да се
програмираат да ја изберат потребната брзина на трансмисија и ни овозможуваат двонасочна
трансмисија.
Колото користи кондензатор, тоа е уред кој е направено да се полни со електрицитет, нешто
слично како вазна која се полни со вода.
Кога микро системот ќе го исклучиме, тогаш преку кондензаторот имаме куса врска и струјата
поминува само низ отпорникот, а го заобиколува кондензаторот и нема да се наполни со
106
Вовед во Микропроцесорите и Микроконтролерите
електрицитет бидејќи нема напон на неговите краеви. Истиот ефект се добива и кога држиме
нула волти на ресет пинот доволно време, еквивалентно најмалку на шест циклуси на clock-от.
Прави неколку внатрешни тестови и потоа става адреса во адресната магистрала. Оваа адреса,
очигледно веќе, се нарекува стартна адреса и, повторно, таа фиксирана од произведувачот. За
Z80180 стартната адреса е 0000Н и на овој дел од мемориската мапа мора да содржи малку
ROM за секогаш да ја памти/чува стартната микропрограма.
На слика 6.22 видовме типична мемориска мапа на која стартната програма беше на крајот од
меморијата, за Z80180 потребна е малку поразлична мапа, со ова покажавме уште неколку
некомпатибилности помеѓу микропроцесорите.
Првата инструкција
Стартната адреса ја чита адресаниот декодер, кој дава сигнал „избор на чип“ во контролната
магистрала. Овој сигнал го избира ROM чипот. Сите други чипови го игнорираат сигналот
бидејќи тие не се избрани. Адресата влегува во ROM чипот и декодерот за редици и колони
пристапува до соодветната адресна ќелија. Содржината во ќелијата се става во податочната
магистрала за да биде исчитана од микропроцесорот.
107
Вовед во Микропроцесорите и Микроконтролерите
Второ читање
Микропроцесорот ја испраќа следната адреса во адресната магистрала. Адресниот декодер
повторно ќе го активира ROM чипот. ROM-от ќе стави уште податоци на податочната
магистрала, кој повторно ќе бидат исчитани од микропроцесорот.
Микропроцесорот ја става новата адреса C086H во адресната магистрала. Изборот тоа да биде
C086H не е на дизајнерот на микропроцесорот, тука на системскиот дизајнер – тоа е човекот
кој го вметнува микропроцесорот во микросистемот.
Потоа што?
Адресата, C086H од нашиот пример, пристапува до ROM-от, кој ни праќа бинарен број назад
до микропроцесорот преку податочната магистрала. Во микропроцесорот, овие броеви се
интерпретирани како инструкција. Со споредување на овој број со внатрешната листа на
вградените контролни кодови се открива која е инструкцијата. Сетоа ова го прави
микропрограмата.
Зошто?
Што ќе се случи ако направиме грешка и го ставиме 25 прв, проследен со бинарниот код на
ADD во нашата програма?
Микропроцесорот ќе мисли дека 25 е инструкција – што може да има значење за било што,
или за ништо. Ако на оваа мистериозна инструкција и е потребен број, може да се искористи
бинарниот еквивалент на ADD – што повторно може да биде било што. Ако на лажната
инструкција не ѝ е потребно број, тогаш ADD инструкцијата ќе биде исчитана коректно како
секоја ADD инструкција, но тогаш следниот бинарен влез ќе се земе како број кој треба да се
собери. Нашиот микропроцесор сега има извршено неточна инструкција со користење на
неточни податоци и програмота може да направи било што. Целата програма излезе од чекор
и може да напрви нешто непредвидливо. Ова не е многу забавно во нашата фабрика за
динамит.
108
Вовед во Микропроцесорите и Микроконтролерите
Микропроцесорот нема ни малку интелигенција. Тој ја прати шемат прикажана на слика 8.11,
без разлика што следува во програмата, или е наполнет со програма полна со грешки и ги
отфрла сите тотално непотребни случајни инструкции.
Како што видовме, нема никакви разлики помеѓу инструкции и податоци. И двете се бинарни
броеви и нивната интерпретација зависи од тоа што микропроцесорот очекува да прави во тоа
време.
Квиз 8
1 Стек е:
a. Скратеница за стек покажувач.
b. Серија од локации на RAM-от кои можат да се искористат од микропроцесорот
за да запише податоци.
c. Колекција на програми.
d. Огниште (стек дрва).
109
Вовед во Микропроцесорите и Микроконтролерите
2 CPU:
a. Е битен дел од секој микропроцесор.
b. Е скратеница од Computer processing unit.
c. Може да содржи повеќе од еднa MPU.
d. Е функција на регистерот.
3 Собирајќи ги бинарните броеви 1100 1100 и 0010 1001, користејќи го Z80180
микропроцесор, тогаш C и Н знаменцата ќе бидат:
a. С спуштено и Н спуштено
b. С спуштено и Н дигнато
c. С дигнато и Н спуштено
d. С дигнато и Н дигнато
4 Итерапт векторскиот регистер (I) во Z80180 микропроцесорот се употребува да зачува:
a. Горните бајти од интерапт адресата.
b. Стартна адреса за микропроцесорот.
c. Долните бајти од интерапт адресата.
d. Адреса на стек покажувачот.
5 The fetch – execute cycle:
a. Работи хексадецимално
b. Претпоставува дека вториот, четвртиот, шестиот итн., влез е податок.
c. Претпоставува дека првиот влез е инструкција.
d. Тоа систем кој се користи од инструкцискиот регистер за да ја канализира
информацијата, кон точен дел од микропроцесорот.
110
Вовед во Микропроцесорите и Микроконтролерите
9
Програмирање – користејќи машински код и
асемблер
Микропроцесорот можеме да го користиме како дел од компјутер или како дел од контролер
во фабрика за динамит, а единствената разлика помеѓу нив се инструкциите во
микропроцесорот.
Ако сме на некое предавање, и учителот ни каже, „Ова е крајот“, ние ќе знаеме дека е време
да си ги собереме нашите работи и да ја напуштиме училницата. Но, овие зборови не се
единствента можност со кои, учителот ќе не извести за крајот на предавањето, има и други
„инструкции“ кои можат да се искористат за таа цел, на пример, „Ова е тоа, Благодарам“;
„Овде ќе прекинеме“; „Изгледа е погодно време за пауза“; „Ќе прекинеме овде и ќе
продолжиме наредниот час“, и многу други варијации. Учителот може инстантно да ја
„исчисти“ цела училница, само да погледне во својот часовник и да каже, „Епа, . . .“. Има многу
начини за да им се каже на луѓето кога е време да ја напуштат уќилницата.
Од друга страна, пак, микропроцесорот го нема овој степен на флексибилност, фактички тие
немаат ни малку флексибилност. Многу е разочарувачки, но немаме заеднички јазик со
микропроцесорот (слика 9.1). Секој микропроцесор има вградена листа на инструкции кои
може да ги разбере. Оваа листа се нарекува „инструкционо множество“ и може да содржи
околу стотина или повеќе инструкции, кои мораат да се зададени во точниот редослед за да
може да се изврши потребната функција. Ова е работа на програмерот и е слична со градежен
рабоник кој при изградба на куќа тој треба да ги стави малите делови како дрво, тули, плочки
111
Вовед во Микропроцесорите и Микроконтролерите
Секоја компанија, како Intel, има комерцијален притисок, кој им налага, новоиот
микропорцесор да ги разбира бинарните кодови на своите претходни микропроцесори. Ова се
рарекува „нагорна компатибилност“. Ништо не ја спречува компанијата да произведе
микропроцесор со ист број на пинови и програмарачки можности како некој друг
микропроцесор. Z80180 е направен како подобрена копија на Intel Z80, кој беше пак
подобрена верзија на 8080A. Ова може е иритирачки за оригиналниот производител, но
новиот микропроцесор е прифатен бидејќи внатрешниот дизајн не беше копиран. Навистина,
и со понудата на новиот микропроцесор не ѝ се нанеси штета на оригиналната компанија,
напротив, ако се продадат повеќе компатибилни процесори, ова ќе поттикне повеќе
програмери да напишат програма, користејќи ист код, а ова ќе ја зголеми продажбата на
микропроцесори, и така нема никој да настрада.
Intel Pentuim, интеловиот пентиум, беше под сличен напад во 1997-1998 од други слични
микропроцесори, серијата Athlon направени од A.M.D. (Advanced Micro Devices). Овие можат
да извршуваат Pentium програми, па така, за некои цели тој е и подобар од Pentium.
112
Вовед во Микропроцесорите и Микроконтролерите
Машински код
Бинарниот код кој може да го разбере микропроцесорот се нарекува машински код и се
состои од „река“ на бинарни битови. Нив ги примат RAM или ROM мемориските чипови во
група од 8, 16, 32, или 64 во зависност од микропроцесорот кој се користи. Да се употребуваат
овие бинарни „реки“ е тотално „брборење“, т.е. наразбирливо.
Пример
Ако го земеме Z80180, прикажан на слика 9.3, можеме да ја разгледаме инструкцијата која ќе
ни собери два број. Едниот од броевите е веќе зачуван во акумулаторот т.е. регистер А. Да
претпоставиме дека тоа е бројот 25Н.
Инструкцијата: 11000110 00010101, е во два дела. Првиот бајт, 11000110, има значење да го
додате бројот кој доаѓа на бројот кој е зачуван во акумулаторот. Овој прв бајт, кој ја содржи
инструкцијата се нарекува операциски код (operation code), или скратено „op code“. Вториот
бајт, 00010101, е бројот 15Н. Оваа инструкција има два бајта, но има и некои инструкции кои се
од еден бајт, а има и такви кои користат три или повеќе бајти. Додатните бајти содржат некои
податоци, кои се користат од операцискиот код, и се нарекуваат операнди.
Следи акцијата
113
Вовед во Микропроцесорите и Микроконтролерите
Кој е резултатот?
RAM локациите имаат случајни вредности кога тие ќе се исклучат, па кога програмата ќе ја
изврши својата последна инструкција, тој ќе почне да ги извршува тие случајни вредности како
да се некоја програма. Овие инструкции можат, се разбира, да направат било што. Тие дури
можат и да ја избришат или изменат програмата која тукушто сме ја напишале. Севкупно,
ефектот е како авионот да се руши на крајот од својот пат.
Пишување на реки од единици и нули е многу досадно и ќе направиме многу грешки, особено
ако се потсетиме дека една програма може да е десетици илјади инструкции подолги од ова.
Можете ли да замислите да напишете половина милион битови, и тогаш програмата да
стартува без грешка, и да седнете и да ги најдете грешките?!
Друг проблем е тоа што програмерот мора да ја зема во предвид внатрешната структура на
микропроцесорот, инаку како би знаеле кој регистер да го користиме, или пак кој регистер
постои? Ќе го изучиш сето ова и потоа го сменуваш микропроцесорот и потоа што? Целиот
процес на учење треба да почне одново – нови инструкции, нови регистри, и потребно е ново
кодирање. Сето ова е заплашувачко.
114
Вовед во Микропроцесорите и Микроконтролерите
Асемблерскиот еквивалент за нашиот машински код 11000110 00010101 е кодот ADD A,m. Ова
значи „додади го m (било кој број) на вредноста кој е во акумулаторот. Може брзо да уочиме
дека многу брзо и лесно можеме да го погодиме значењето на ADD A,m со што го прави
прогрмирањето многу лесно. Ако треба да избираме букви за да ни престатвува „собирање“,
ADD очигледно е добар избор. Подобро е вака, отколку да користиме алтернативи XYZ k,g или
ABC r,h. Кодот ADD A,m е наречен мнемоник.
INC H
LD C 48H
LD B B’
Ако SLA E ни значи да ја поместиме содржината на регистерот Е за едно место на лево, тогаш
SRA E значи да се помести за еден бит на десно. LD C 48H значи, стави го бројот 48Н во
регистерот С. LD B B’ ни овозмижува да го копираме бројот кој веќе е запишан во регистерот B’
во регистерот В.
115
Вовед во Микропроцесорите и Микроконтролерите
Недеструктивно читање
Инцидентно, но микропроцесорите заедно со мемориите, секогаш користат недеструктивно
читање. Ова значи дека информацијата е поместена од едно место на друго со нејзино
копирање, и со оставање на оригиналниот број недопрен. На пример, по инструкцијата LD A C,
и двата регистри А и С ќе завршат со иста информација во нив. Ова овозможува да се
употребува запишаната информација повторно и повторно.
Помош за синтаксата
Синтакса ни е структура на исказите во некој јазик, без разлика дали е Македонски, Англиски
или компјутерски јазик. Кај Македонскиот, повеќето од нас ќе забележат, ако кажеме „Тој
одеа“, дека овој исказ е грешен, наместо да кажеме „Тој оди“. Ова е пример на, грешка во
синтаксата.
116
Вовед во Микропроцесорите и Микроконтролерите
Лабели
Друга можност која ни ја нуди добар асемблер е лабелата. Лабела е збор кој може да се
користи да претставува адреса додека ја пишуваме програмата.
Да претпоставиме дека треба да додадиме уште една линија на почетокот од програмата, ова
ќе ни го помести секој бајт за една место подолу во меморијата и тогаш последната линија од
програмата ќе биде 0951Н, наместо 0950Н. Кога програмата ќе му каже на микропроцесорот
да скокне на адреса 0950Н, тој повеќе нема да биде во безкраен мал круг. Новата содржина на
адреса 0950Н може да изврши некоја случајна инструкција и целата програма да крахира. Овој
проблем е прикажан на слика 9.7, каде асемблерот нема да примети дека ова е грешка.
Запомнете дека асемблерот само работи со познати кодови, не е паметна програма.
117
Вовед во Микропроцесорите и Микроконтролерите
Ако напишеме збор врз позицијата каде што стои мемориската адреса, тогаш тој збор ќе биде
препознаен како лабела. Тој збор е еквивалент на адресата која сме ја замениле. Ако ја
користиме истата лабела на друго место во програмата, таа ќе ни враќа иста вредност. Добрата
работа е тоа што, ако се промени програмата, ќе се променат и адресите, тогаш и вредноста на
лабелата ќе се промени автоматски, па така двата збора „STOP“ во последната линија секогаш
ќе имат иста вредност и тогаш безкрајниот круг ќе биде зачуван од инцидентно рушење. (види
слика 9.8).
Ако еднаш асемблерот ја прифати лабелата, таа може да се користи колку сакаме во
прогрмата, но запомнете дека лабелата треба да има само едно значење во една програма,
т.е. изборот на лабели треба да биде различен од зборчињата кои имаат специјално значење
во асемблерот. Тие зборчиња се нарекуваат „резервирани“ зборчиња и обично се зборовите:
jump, LD, ADD, HALT итн. Точната листа доаѓа со асемблерот.
Коментари
Асемблерот и сите јазици на повиско ниво ни дозволуваат да пишуваме коментари или
белешки, за да ни служат како потсетници, но да бидат игнорирани од асемблерот. За да му
укажеме на асемблерот да не ги конвертира во објектен код, коментарот го почнуваме со
точка запирка (;) или со зборчето REM: или нешто слично.
118
Вовед во Микропроцесорите и Микроконтролерите
Зошто?
Квиз 9
1 Асемблерот:
a. Ја конвертира асемблерската програма во машински код.
b. Е тип на микропроцесор.
c. Го конвертира објектниот код во машински код.
d. Е потребен за конвертирање на мнемониците во изворен код.
2 Податокот кој го прати op code (операцискиот код):
a. Секогаш го има и е составен од еден или повеќе бајти.
b. Се нарекува објектен код.
c. Се нарекува операнд.
d. Употребува декаден број.
119
Вовед во Микропроцесорите и Микроконтролерите
3 Лабела е:
a. Важна особина во дизајнирање на костуми.
b. Форма на синтаксичка грешка.
c. Претставник за адреса додека се пишува програмата.
d. Делот од програмата кој доаѓа пред операндот.
4 Машинскиот код:
a. Не е јазик на ниско ниво.
b. Се пишува корисејќи мнемоници.
c. Јазик направен за контрола на машинеријата во индустријата.
d. Е објектен код.
5 Делот од микропроцесорот кој може да го разбира машинскиот код се нарекува:
a. Асемблер.
b. Инструкциски декодер.
c. Инструкциски регистер.
d. Механичар.
120
Вовед во Микропроцесорите и Микроконтролерите
10
Јазици на повиско ниво
Трета генерација на јазици
Третата генерација на јазици е одбран за да ни го олесни животот. Направени се за да ја
подобрат читливоста, со користење на Англиски зборови кои ќе ни го олеснат разбирањето на
програмата и на некој начин полесно да ги откриеме грешките (баговите) во програмата.
Процесот на отстранување на грешките (bugs) се нарекува debugging (дебагирање, т.е.
откривање на грешки). Дополнително, тие треба да го ослободат програмерот од потребата да
ја знае внатрешната архитектура на микропроцесорот со што програмата станува целосно
подвижна. Погодно е и тоа што програмерот, не ни треба да знае затоа кој процес се користи.
Овие јазици се нарекуваат јазици на повисоко ниво и сите се процедурални.
Fortran
Во почетните денови на компјутерската ера, беше битно да се подобри брзината и
прецизноста во извршувањето на математички пресметки – наместо користење на некоја нова
и подобрена машина за калкулирање. IBM доминираше во компјутерскиот свет и во тоа време
нивниот вработен John Backus го направи подобрениот јазик кој го заменуваше асемблерскиот
јазик. Конечно во 1957, резултатот од тоа беше јазикот Fortran. Ова беше првиот јазик на
високо ниво кој многу широко беше прифатен. Неговата „искра“ беше тоа што можеше да
пресметува математички формули. Од овде му доаѓа и иметоа „FORmula TRANslation“
(оригинално „IBM Mathematical Formula Translating System“). (види слика 10.1)
121
Вовед во Микропроцесорите и Микроконтролерите
Fortran има вметнати инструкции за да може да се справи со повеќето научни формули како
што се пресметување на синус од некој агол, што е екстремно тешко да се направи со
асемблерски јазик. Тешко, но не е невозможно. После се, програмата напишана во Fortran
прво мора да се конвертира во машински код, кој што го разбира микропроцесорот. Откога ќе
се конвертира во машински код, тогаш микропроцесорот ја гледа програмата како да е
напишана директно во машински код.
Како што течеше времето, се додаваа мали измени, и алтернативи, и така јазикот добиваше
нов „диалект“. Недостатокот од ова е тоа што почнуваше да ја разјадува подвижноста – тоа е
една од примарните особини кои треба да ги имаат јазиците на повисоко ниво. Во 1958 излезе
редефиниран јазик наречен Fortran 2 кој многу брзо се замени со Fortran 3 и 4. Се изродија и
уште нови верзии, па во 1966, конечно на крај се дефинираше верзијата Fortran 66, која
истотака беше подобрена со Fortran 77, и асполутно конечната верзија и целосно дефинитна
беше Fortran 90. Ова не беше така лошо, како што изгледа, бидејќи секоја нова верзија немаше
промени тука имаше само додадени екстра работи. Потоа испадна Fortran 95, па излезе и една
некаде во период помеѓу 2004 и 2006, и беше означена како 200Х која ни кажува дека е
излезен не подоцна од 2009 година. Во меѓувреме испадна и многу лесна верзија за учење,
наречена F, која е компатибилна со Fortran 77, 90 и 95 кој вклучува повеќе модерни
карактеристики, додека старите и редунданти секции беа отфрлени. High Performance Fortran
(HPF) (Фортран со високи перформанси) е сличен со верзиите 90 и 95, освен што е проширен со
можноста микропроцесорот паралелно да извршува процеси за да добие во брзина.
Compilers, Компајлери
Во асемблерскиот јазик ние користевме програма, асемблер, кој ни ги конвертираше
мнемониците во машински код. Честопати кажуваме дека е извршено конверзија од изворен
код во објектен код, но се мисли на истата работа. Кај Fortran, па и во секој јазик на виско
ниво, се користи компајлер за да ни „произведе“ машински код. Компајлерот, исто така ќе ни
даде и многу добра, како што се проверка за грешки и проверка на синтаксата, со кои се
сретнавме во асемблерите. И компајлерите и асемблерите се софтвер – програми направени
да извршуваат специфична работа. Ако сакаме да користиме 68000 микропроцесор, ние мора
да користиме програма за специјален јазик, да кажеме Fortran, ние мораме да купиме „Fortran
90 за 68000“ компајлер. Тој ќе со ја изработи својата работа и ништо друго не може да работи.
Не можеме да го приспособиме да може да го користиме за различен микропроцесор, види
слика 10.2.
122
Вовед во Микропроцесорите и Микроконтролерите
Ова ја намалува количинатана за пишување на целиот код кој е потребен. Може „новите“
формули да се направат со комбинација на веќе постоички код. Ставањето, на овие веќе
направани рутини, од библиотеките во главната програма, се прави со поврзувачи (linkers) кои
се уште едно парче софтвер. Поврзувачите ги групираат т.е. поврзуваат заедно повеќете
одделни делови на кодот во една програма спремна за употреба. Последно што треба да се
направи е да се стави во некој RAM кој е подготвен за употреба. Друго парче софтвер се
користи за да детерминира кои адреси од микропроцесорската системска меморија е
слободна за користење. Ова се нарекува полнач (loader). Полначот истотака ги конвертира
лабелите во нивните крајни адреси. Многу често поврзувањето и полнењето се комбинирани
во една поврзувач-полнач (linker-loader) програма. Процесот е илустриран на слика 10.3.
123
Вовед во Микропроцесорите и Микроконтролерите
Кодот напишан во Fortran е во многу компактна форма, многу блиско како во математичка
форма. На пример, кодот за да се зачува некој број и да се најде неговиот квадратен корен, би
изгледал вака:
1 Read (4) P
2 A = SQRT(P)
Во првиот исказ, микропроцесорот треба да го внеси бројот 4 (ова треба да биде претходно
дефинирано) и да го вчитува со број кој го викаме P. исказот 2 го наоѓа неговиот квадратен
корен.
Fortran има многу голем број библиотеки за да може да се справи со научни и инжењерски
проблеми. Недостатокот на Fortran е тоа што интрукциите му се многу компакти, и можат да
изгледаат малку заплашувачки. Додатно, форматот му е многу прецизен и ова го први тежок за
учење. Ако имате смртен страв од математика пристапот кон него сигурно ќе ви биде со мало
застрашување.
Basic
Во Dartmouth колеџот, САД, беше направен упростен јазик. Се базираше на Fortran и беше
дизајниран да го поедностави јазикот и да го олесни изучувањето. Овој јазик беше наречен
Basic (Beginners’ All purpose Symbolic Instruction Code) и првото појавување му беше во 1960
(види слика 10.4).
124
Вовед во Микропроцесорите и Микроконтролерите
За да зачува во меморија, Basic беше направен како толкувачки јазик, толкувач (interpreter)
наместо компјалер (compiler), ја извршуваше конверзијата од изворен во објектен код.
125
Вовед во Микропроцесорите и Микроконтролерите
Развојот на Basic
„Експлозијата“ на користење на микрокомпјутерите во 1980 година резултираше со
прифаќање во големи размери на јазикот Basic. Беше користен од, или најмалку се забавуваа
со него, многу луѓе од било кој друг претходен програмски јазик дотогаш. Почнаа да се
појавуваат многу варијации, или дијалекти, како што беше со Fortran.
Со годините, развојот на јазикот стигна до многу висок степен во неговите можности, за рзлика
од неговиот близок ривал Fortran кој беше за математички пресметки. Basic се ослободи од
почетниците и се користеше од многу проефесионални програмери. Сега големината на
меморијата не е некој проблем, па се користи верзија со компајлер за да го убрзи
извршувањето на програмите.
Имаше серија на верзии од Visual Basic, од VB1 до VB6 и сега имаме VB.Net кој ни овозможува
многу лесна манипулација со работа на Windows™ и Web страните.
10 input A, B
20 Let C = A * B
30 Print C
40 End
Кај линијата 10, потребно е да се внесат два броја А и В, веројатно преку тастатура. Линијата 20
дефинира нов број С како резултат од множењето на А и В. Print значи да го испечати С на
печатач или екранот. Последната линија ја стопира програмата.
126
Вовед во Микропроцесорите и Микроконтролерите
Наредбите се извршуваат по броен редослед и ако недостига бројот на линијата, таа линија се
игнорира. Ова ни дозволува да употербуваме броеви кои се зголемуваат за чекор од 5 или 10
наместо еден. Привелегијата од ова е ако имаме заборавено некоја инструкција, подоцна да
можеме да ја вметниме во нова линија. На пример, ако сакаме да ја поделиме вредноста на С
со 2 и потоа да го испечатиме резултатот, можеме да додадеме пар на екстра линии:
10 Input A, B
20 Let C = A * B
30 Print C
32 Let D = C/2
35 Print D
40 End
Cobol
Ова е син на Fortran, и не се направани поголеми чекори за да се вметнат секојдневни фрази
од Англискиот јазик. Cobol го претстави US Defense Department, Американскиот одел за
одбрана, во 1959 – веднаш пред Basic (види слика 10.6). Неговата цел беше, не како на Fortran
работа со бројки, туку работа со информации. Се покажа како успешен во ова и широко се
користеше во Американската војска за запишување на стоковите резерви и намирници, па и во
бизнис светот. Името доаѓа од COmmon Business Oriented Language.
127
Вовед во Микропроцесорите и Микроконтролерите
Како Fortran, и тој се сретнал со некои специфични потреби и имаше серија надоградување на
стардната верзија. Тие се бележеа со додавање на годината во која испаднале: Cobol 60, Cobol
74, Cobol 85, Cobol 97 и новата 2002 верзија.
Многу напор се направи за да им се дозволи да го разберат јазикот на оние кои знаат повеќе
Англиски јазик одошто знаат да програмираат. Така, изразите во Cobol се Англиски фрази кои
вклучуваат глагол и завршуваат со запирка. Фразите можат да се спојуваат за да формираат
реченица или единечен израз може да заврши со точка.
Pascal
Pascal најпрво беше дизајниран во Швајцарија во 1971 (слика 10.7). Тој повеќето се користеше
за наставни цели и со тек на време на големо се превзема за професионално програмирање
како што е и јазикот С. Кога се изучува некоја јазик за програмирање, многу често како вовед
се одржува краток курс по Pascal. Тој се употребува бидејќи е „добар за вас“, исто како што се
вели за да се научат Европските јазици е „добро“ најпрво да се научи Латински како основа
пред да се започне да се учи Француски, Германски или Шпански.
Pascal е многу структуриран јазик, и една структурирана програма содржи серија од одделни,
самостојни целини која секоја си има своја единствена стартна точка и единствена крајна
точка. Распоредот на програмата изгледа како едноставен блок диаграм со сите блокови во
него подредени еден под друг. Бидејќи секоја целина може да се изолира од оние над и под
неа, откривањето на грешки, или пак разбирањето на нова програма е релативно многу лесно.
128
Вовед во Микропроцесорите и Микроконтролерите
Јазиците како Basic може со користење на инструкцијата како GO TO да скокнат до нов дел од
програмата и ова многу често доведува до резултат кој се нарекува „шпагети“ програмирање,
кој го прави тешко откривањето на грешки во програмата или пак разбирањето што работи
програмата (види слика 10.8). Pascal го избегнува ова со употреба на инструкции како што е
„Repeat ... until“. Basic се исправи во овој поглед со воведувањето на ваков тип на инструкции
во поновите верзии.
129
Вовед во Микропроцесорите и Микроконтролерите
C
Дел од навиките за „добро“ учење на програмирање, Pascal на големо беше заменет со
програмски јазик наречен C, откриен една година подоцна од Pascal и ги овозможува сите
добри вежби за методите при програмирање кој ги овозможуваше Pascal и уште неколку
екстра (види слика 10.9).
Слика 10.9 С
Главната разлика е тоа што тоа е јазик на пониско ниво од Pascal кои изгледа многу чудно
напредување, но неговите придобивки се тоа што може да ги контролира особините за ниско
ниво, како што е запишувањето во меморијата исто како со асемблерски јазик, но без негово
користење. Секако, тој има и многу особини за високо ново, и особини на ниско ниво, кои
можеме да ги искористиме и да создадеме многу компактен, а со тоа и брз, код.
130
Вовед во Микропроцесорите и Микроконтролерите
Сите прозорци имаат сличности и разлики. Слични објекти се групирани во класи „classes“.
Класата ги вклучува дефиницијата и типот на податоци заедно со методите на манипулација
кои можеме да ги направиме врз објектот. Во нашиот пример за класа ги вклучува прозорците,
а секој специфичен прозорец се нарекува „инстанца“, „instance“. Сите класи делаат некои
својства наречени „public“ својства, и некои пак се различни на некој начин, исто како
различен текст кој е внесен, и овие се нарекуваат „private“ особини.
Како што кажавме претходно, С++ е само стандарден С со екстра додаток за објетно
ориентирано програмирање.
Java
Сепак не е оригиналната дестинација (островот во Индонезија), Java е идеална за трансмисија
на информации преку Интернет. На прв поглед изгледа дека е сличен на С++, но има некои
131
Вовед во Микропроцесорите и Микроконтролерите
важни придобивки. Тој е мал и нема потреба од одредена архитектура и затоа може да се
вгради во многу апликации и да се употребува во голем ранг на системи. Ова вградување на
Java код се нарекува аплети „Applets“ и се опотребуваат во Internet Explorer и другите интернет
пребарувачи.
Lisp
Lisp испадна во скоро исто време кога испадна и Cobol т.е. неколку години пред Basic. Тоа
беше производ на работата на Американецот John McCarthy (види слика 10.11).
132
Вовед во Микропроцесорите и Микроконтролерите
Дефиницијата на едноставна функција би билa (PLUS 6 4) и ќе ни врати резултат 10, кој е збир
од двата броја. Бидејќи ова е интерпретирачки јазик, програмата се извршува чекор-по-чекор,
а како влезни вредности се користи тоа што е внесено. Во некои верзии на Lisp, ова може да се
запише како (+ 6 4), т.е. користејќи математички симбол.
APL
Буквите APL се скратеница од „A Programming Language“. Ова е уште еден интерпретирачки
јазик изгреден од IBM, околу 1962 година, и се користи само за нумерички податоци. Тој е
чиден микс од Lisp и Fortran. Тој ги комбинира функциската ориентираност на Lisp, со
процедуралната математика на Fortrn (види слика 10.12). Дозволува корисникот да си
дефинира свои функции, и има голема библиотека од решенија за одредени проблеми.
Повеќето луѓе ќе се согласат со тоа дека ако сакаш да изучиш некој програмски јазик, APL не е
јазик кој се учи ако се брзаш за нешто. На пример, иако ги има сите четири основни функции:
собирање, одзимање, множење и делење, работата со нив не е лесна. Каков резултат ќе
очекувате за 2 * 3? Тоа не е 6. За да добиете шест треба да напишете 2 3, а резултатот од 2 *
3 е всушност 23 т.е. 8. Изразот: 4 – -2, е одземи од 4 минус два и ќе добиете плус шест.
133
Вовед во Микропроцесорите и Микроконтролерите
Не е лесно. Добрата страна е тоа што ако го изучиш еднаш ви овозможува брзи и компактни
програми, но многуте криптични изрази ќе имаат потреба од многу коментари за да ви
помагнат да ја разберете програмата.
Prolog
Prolog се нарекува „декларативен“ јазик со кој програмерот не треба да знае што точо ќе биде
излезот пред да почне да ја прави програмата. Прво е направен во Франција во 1972, со
причина да може да се користи за создавање на вештачка интелиганција. Prolog доаѓа од
PROgramming by LOGic. Во Велика Британија се произведоа други верзии како DEC10, IC Prolog,
додека во Америка има и други верзии (види слика 10.13).
Prolog е уште еден не-процедурален јазик, со кој немаме рута до целта, туку множество на
информации и методи со кои може да се дојде до резултатот. Во основа, идејата е да се внесат
неколку факти и да се праша програмата да дојде до некој заклучок. Потсетете се на малата
логичка сложувалка како „Ристо е женет со Ана, Благој е син на Петар и братот на Марко . . .
Благој е брат на . . .“, ви текнува на ваквите сложувалки – со многу меѓуповрзани делчиња на
информации се додека на ве заболи главата. Е ова е работа само за Prolog.
134
Вовед во Микропроцесорите и Микроконтролерите
Facts:
coins (franc, france)
coins (centime, france)
coins (dollar, usa)
coins (cent, usa)
Rules:
french(x):-coins (x,france)
american(x):-coins (x,usa)
?french (centime)
answer: Yes
?french (dollar)
answer: No
?american (dime)
answer: No
Нема информација за тоа дали „dime“ е точно или не, па тој „игра“ сигурно и одговара со
негативен одговор.
Иднина
Зголемувањето на брзината на микропроцесорите со користење на повеќе микропроцесори за
да си ја поделат задачата, заедно со намалување на големината и цената на меморијата е
главен клуч за иднината. Идејата да се има десктоп компјутер кој работи на 20 GHz и кој има
126 Gbytes меморија не е веќе апсурдна. Во табела 10.1 се дадени трендовите кои беа во
последните 26 година, и проектирани се уште 26 години во иднина.
Табела 10.1
Моја денешна преокупација е вистинска комуникација со мојата кристална топка. Пред некоја
година распознавање на говорот беше само сон, но денес е реалност и станува многу
ефикасно. Синтезата на говорот има добар прогрес и почнува да не наликува на роботски
говор. Кога ќе созреат и се спојат овие две технологии, тогаш симултниот превод нема да биде
135
Вовед во Микропроцесорите и Микроконтролерите
толку далеку, а ниту пак нема да биде чуден и разговор со компјутерот. Милион различни
телевизиски програми, наеднаш ќе можете да ги гледата без превод (титлување).
Шест милиони, милиони инструкции ќе се извршуваат за една секунда на 800 GHz брз
микропроцесор и заедно со гласовната контрола на компјутерите наскоро ќе биде меѓу нас.
Квиз 10
1 Компајлерот:
a. Го конвертира машинскиот код во јазик на високо ниво.
b. Е побрз од интерпретерот.
c. Е друго има за поврзувачот.
d. Го нема во Basic.
2 APL произлегува од влијанието на:
a. Cobol и Prolog.
b. Lisp и Fortran.
c. Fortran и Basic.
d. Pascal и Cobol.
3 Четвртата генирација на јазици може да се опише како јазик кој:
a. Сеуште се користи.
b. Е објектно ориентиран.
c. Е направен за вештачка интелигенција.
d. Е не-процедурален.
4 Јазикот кој доаѓа до логички заклучок со помош на внесените податоци е:
a. C.
b. Латински.
c. Prolog.
d. Fortran.
5 Pascal:
a. Во споредба со С е јазик на ниско ниво.
b. Се користи само ако саката да преведите некој Европски јазик.
c. Тој е многу структуриран јазик.
d. Е прв популарен јазик на високо ниво.
136
Вовед во Микропроцесорите и Микроконтролерите
11
Развој на микропроцесорите и
микроконтролерите
Микропроцесорите стануваат поголеми – и побрзи
Како расте комплексноста на микропроцесорите и на дигиталните интегрирани кола,
неизбежен е растот на бројот на транзистори кои се вградени во нив.
Подолу ими една листа, во која ги користиме транзистори и нивните еквиваленти. Оваа
класификација не е универзално прифатена, и има различни именувања и броевите „пливаат
наоколу“, па така треба да имаме голем степен на флексибилност кога споредуваме различни
извори. Ова е особено точно во големи граници бидејќи сеуште немаме „силно“ изградена
терминологија.
Зголемувањето на бројот на уреди исто така имаше влијание врз потребата од намалување на
големината на секоја компонента. Ако се користеше истата големина на компонентите во
сегашните микропроцесори, какви што беа во оригиналниот 4004, тие ќе имаа големина како
еден лист А4. Па и ако ги разгледаме денешните микропроцесори, и ако ги користими истите
компоненти, но без да ја намалиме нејзината големина, нема да можеме да ја зголемиме
брзината на нивната операција, и максималната брзина би била помалку од 1 MHz.
137
Вовед во Микропроцесорите и Микроконтролерите
натпреварувачи во трка на 100 метри. Да, да, сигурен сум дека можам побрзо да направам
функционален микропроцеорски базиран систем од било кој атлетичар. Видовте, дека
компарацијата зависи од каков тест сме одлучиле да правиме. Секој може да биде Светски
шампион, но само треба добро да се избере тестот. Имајќи го ова на ум, еве неколку
популарни компарации за брзината.
На пример, Athlon работи со 2 GHz или 2000 MHz, и може да изврши 9 инструкции за еден такт
(clock cycle), па така бројот на инструкции во секунда би бил 2 10 9 18 000 милиони
инструкции во секунда.
Екстремен пример се појави пред околу десет години со Intel 80386, ако му дадовме задача да
собира, па со консултирање на инструкционото множество, ќе видиме дека за тоа е потребно
два такта за да се комплетира. Фреквенцијата ја земаме да е 25 MHz, па така секој такт ќе трае
40 ns, така „add“ инструкцијата ќе трае 80 ns, т.е. брзината би му била 12.5 MIPS. Неучтив
натпреварувач може „случајно“ да ја земе инструкцијата за делење која е 46 тактови, па така
ќе се намали брзината на 0.54 MIPS. Одмаздољубив човек може да бара со „лупа“ низ
инструкционото множество и да најде навистина „мрачна“ инструкција за која е потребно 316
тактови. Ова ќе даде брзина од 0.08 MIPS – приближно како брзината на 4 битен
микропроцесор.
Не можеме да кажеме дека е фер и ако користиме иста инструкција за секој микропроцесор,
бидејќи инжењерите немаат, исто размислување, за проблем од исто поле. Ако имаме два
микропроцесори и секоја со 5 тактови за „load“ инструкцијата и двата да работат со 10 MHz
фреквенција, која би била нејзината брзина? 10/5 = 2 MIPS. (при решавањето на оваа равенка
не треба да го игнорираме фактот дека фреквенцијат е во мегахерци, а брзината се мери во
милиони иснтрукции). Но дали можат иста работа да ја извршуваат исто брзо? Можат, ама и не
можат. Што ако едниот микропроцесор ни е 64 битен, а другиот 8 битен, тогаш 64 битниот
може да ги полни податоците 8 пати побрзо. Па така со добра причина MIPS се толкува како
„Meaningless Indication of Performance by Sales reps“ (Безначајна индикација за перформансите
од застапниците за продажба.
138
Вовед во Микропроцесорите и Микроконтролерите
Брзо да се потсетиме дека, floating-point број е оној на кој децималната точка ја подместивме
на почетокот од бројот, па 123.456 ќе биде конвертиран на 1.23456 10 . Вака математиката
се одвива побрзо, па така модерните микропроцесори би имале вредности од редот на
десетици GFLOPS (GigaFLOPS).
Системски тестови
Друг начин на мерење на брзината е да се извршува системски тест наместо
микропроцесорски тест, затоа ќе дадеме краток преглед за ваквите тестови.
Како што нè сугерира името, ова мерење на брзината се сведува на брзината со која системот
ги прима информациите и повторно ги испраќа истите. Но, ако на пример, читаме информации
од CD, брзината ќе зависи од тоа каква информација ќе читаме од една иста трака, или дали
главата се поместува за да го вклучиме и времето потребно да се пронајде информацијата?
Овој модел на задача е преземен од ситуација во реалниот живот. Системот треба да ја исчита
информацијата, да ја модифицира и повторно да ја запише. Овој тест става голема важност на
времето потребно за пристап до меморијата и на компајлерите.
139
Вовед во Микропроцесорите и Микроконтролерите
Овие тестови познати се како SPECfp95 и SPECint95. Како почетна точка за компарација, Intel
Pentium Pro на 200 MHz дава вредност од 8.71 со употреба на SPECint95.
Трошење на енергијата
Топлината е форма на енергија која е непожелна ако е производ од било каква активност на
микропроцесорот.
140
Вовед во Микропроцесорите и Микроконтролерите
Современите микропроцесори имаат околу 128 Kbyte вграден on-board RAM, наречен кеш
(cache). Кога микропроцесорот треба да зема информација од надворешна меморија, тој
зачувува копија на адресата и на информацијата, во случај да не му затребат повторно. Тој исто
така ги зачувува адресата и информацијата од следната мемориска локација. Причината за ова
е тоа што повеќето програмски јазици се процедурални, со што е поизвесен пристап до
следната локација. Ако не е така, програмата може да се врати назад на претходната адреса и
да повторува дел од програмата како безконечен круг ,т.е. јамка, за да произведе одлагање.
Ако микропроцесорот треба да пристапи до меморијата тој прво проверува дали
информацијата е зачувана во кешот, меморија со голема брзина, и ако ја има, тогаш имаме
„погодок“ (hit), со што систомот си ја зголемил брзината. Ако информацијата не е во кешот,
тогаш имаме „промашување“ (miss) и се користи главната меморија. Оваа нова информација
се зачувува во кешот, ако ни треба за подоцна.
141
Вовед во Микропроцесорите и Микроконтролерите
Овој кеш понекогаш се нарекува кеш на прво ниво (level 1 cache), или L1 кеш. Ова значи дека
може да постои и кеш на второ ниво – и го има. L2 кешот обично е 256 Kbyte.
Кога е потребен некој податок, микропроцесорот прво го бара во кешот на прво ниво т.е. L1
кешот, потоа во кешот на второ ниво т.е. L2 кешот, и на крај во главната меморија.
Ако имаме уште еден број кој треба да го исчитаме, терба да го повториме процесот, па така за
читање на два броја ќе ни се потребни четири такта (пулса). Три броја ќе не чинат шест такта и
така натака.
142
Вовед во Микропроцесорите и Микроконтролерите
Ако имаме извршено две работи во ист такт, тогаш имаме значајни подобрувања на брзината,
без да ја зголемиме фреквенцијата на микропроцесорот. Уште подобро би било, доколку
успееме да менаџираме пренос на три парчиња информации, или извршени работи, во ист
такт. Патем Pentium менаџира со пет, Pentium Pro може да менаџира 12, а Pentium 4 дури 126
инструкции „во еден лет“. За жал, не можеме да работиме со групирање на сите инструкции,
не секој помага по помалку.
RISC и CISC
Ако сакаме да ја применеме операцијата AND врз два бинарни броја, можеме тоа да го
сториме со користење на логички пори како што видовме во Глава 5 или пак можеме да го
употребиме микропроцесорот за да ја изврши потребната инструкција. Споредувајќи ги
просечните уреди, логичките порти задачата ќе ја завршат за 8 ns, но во споредба со
микропроцесорите (80386, 25 MHz) потребното време за задачата ќе биде 80 ns.
Ако треба да извршиме некоја задача со извршување на сто вакви инструкции, имаме избор:
143
Вовед во Микропроцесорите и Микроконтролерите
CISC дизајн имаат сите 8 битни микропроцесори и Pentium, Pentium Pro, а сите од фамилијата
68000 се RISC вклучувајќи ги Digital Alpha и IBM/Motorola Power PCs.
Со анализа на кодот кој всушност е производ од компајлерите, наоѓаме мал број на различни
инструкции за голем дел од објектниот код. Повеќе популарни се инструкциите кои се
занимават со поместување на податоците наоколу.
144
Вовед во Микропроцесорите и Микроконтролерите
Во скоро исто време, Motorola го претстави својот ривал MC6800. Исто како Intel 8080A, и овој
беше 8 битен микропроцесор со 16 адресни пинови. Овде завршуваат сличностите, тој не беше
145
Вовед во Микропроцесорите и Микроконтролерите
компатибилен со 8080А и така на пазарот имаше борба за превласт, со што Motorola испадна
на второ место.
146
Вовед во Микропроцесорите и Микроконтролерите
Во ова време некои од инжењерите кои работеа на 8080А и ја создаваа неговата замена
наречена 8085А одлучија, или беа принудени, да преминат во ривалната компанија Zilog.
Во меѓувреме, Intel го произведе 8085, кој одговори на сите критики на 8080А и ја зголеми
брзината на 5.5 MHz. Сеуште 8 битен со 16 битна адресна магистрала, и со своите осум
регистри за опште намена. Пратејќи ја предноста на Motorola, исто така и тој напојувањето го
направи на единичен +5 V, но ги задржа своите корисници со тоа што инструкциите беа
компатибилни со 8080А.
Кај Zilog пак, друга група на инжињери кои исто така работеа на 8080А, започнаа работ врз Z80
кој подоцна го направија Z80180. Тие ги комбинираа скоро сите добри идеи од Intel-овиот
дизајн и неколку добри идеи од MC6800. Се користеше единечно напојување, и не само што
користеше внатрешни регистри за општа намена туку тие се зголемија на 14 регистри.
Инструкционото множество беше составен од целото множество на 8080А и беа додадени и
нови инструкции со што вкупниот број скоро се дуплира.
147
Вовед во Микропроцесорите и Микроконтролерите
Во меѓувреме се појави нов „играч“, MOS Technology, со својата MCS650X фамилија од која
MCS6502 беше најпознат микропроцесор. Ова резултираше со раст на користење на
микрокомпјутерите во 1980 година. Во основа беше подобрување на Motorol-овиот MC6800 со
трендовите да е 8 битен со 16 битна адресна магистрала и единечен +5 V напојување.
Неговиот напредок беше поради идејата за групирањето (pipelining). Беа продадени две
милијарди 6502-ки.
Да се вратиме на оснавата
6502 се нарекуваше дека е „акумулаторски базиран“, бидејќи немаше регистри за општа
намена и единствено акумулатор беше тој низ кој влегуваа и излегуваа податоците, но со
групирањето (pipelining) и неколку брзи инструкци – неколку години беше многу популарен.
Ако ги споредиме слика 11.6 со слика 11.5 ќе го видиме влијанието на МС6800. Повеќето
блокови се исти. МС6800 има два акумулатори и еден индексен регистер, додека пак МС6502
има два индексни регистри и еден акумулатор.
Разликите помеѓу микропроцесорите беа мали, па така 6502 имаа предност кај пазарот на
микрокомпјутери, додека МС6800 беше повеќе популарен во полето на индустриска контрола.
Intel го произведе 8048, ова не беше едноставно 8085 + RAM + ROM, туку тоа беше нов дизајн.
Тој вклучуваше (уште една) промена во инструкциските кодови со што не беше компатибилен,
ни со оригиналниот 8080А или пак 8085А. Вградената меморија беше составена од 1 килобајт
ROM и 64 бајти RAM кој многу брзо се дуплира на 2 килобајти и 128 бајти во новите верзии, т.е.
8049. Тој исто така може да пристапи до 4 килобајти од надворешен ROM. Друго подобрување
беше тајмерот. Овој тајмер можеше да брои прогресивно и регресивно за да произведи
одложување. Без ова, микропроцесорот ќе требаше да се користи за оваа функција што
можеше да се оневозможи да прави некои други покорисни работи.
Zilog, се разбира не беа многу оддалечени. Тие го претставија Z8. Концептот му беше сличен,
но имаше мали надоградувања. Тој имаше два бројача/тајмери кои можеа да се користат за
броење на примените пулсови, исто така и за да го реализира одложувањето. Имаше 2
килобајти од ROM и 128 бајти на RAM кои се наракуваа регистри за општа намена. Големо
подобрување беше тоа што можеше да пристапи до 64 килобјтна надворешна ROM меморија
и 64 кбајтна надворешна RAM мемори, за да ни дозволеше, да можеме од „еден чип“ да го
направиме, ако ни е потребен, да биде повеќе од еден.
148
Вовед во Микропроцесорите и Микроконтролерите
Микроконтролер
Како се развиваа домашните компјутери, интересно за насловните страници беше само
постојаното зголемување на брзината и способноста на микропроцесорот. Сепак, зад сцената,
се продаваа микроконтролери во голем број кои имаа малку публицитет. Не беше превласт за
насловна страница, бидејќи микроконтролерите се врагуваа во видеа рекордерите.
Ако сакаме некаква промена, тогаш таа треба да биде поверодостојна. Дали Pentium 4 е
повеќе веродостоен (сигурен) од Z80? Се сомневам. Ние сигурно ќе сакаме да биде поевтин и
да користи помалку енергија, и не ни е потребен обожавач (фан) да се изјасни со свој став.
Треба да се преиспитаме што навистина сакаме и одговорот во повеќето случаи е нешто многу
блиску до денешниве микроконтролери.
149
Вовед во Микропроцесорите и Микроконтролерите
Друга заблуда е тоа што дека треба да е исто со широчината на податочната магистрала. Не е
така. Pentium фамилијата користи 64 битна податочна магистрала, а тие се составени од 32
битни податочни регистри и затоа се 32 битни уреди. Користат 64 битна податочна магистрала
за да можат истовремено да читат од два 32 битни регистри. Power PC и Digitаl Alpha
фамилиите се вистински 64 битни уреди и имаат 128 битна податочна магистрала.
Интересно е тоа што, Intel 8088 беше вистински 16 битен микропроцесор, но имаше 8 битна
надворешна податочна магистрала. Ова му овозможуваше да биде компатибилен со
поефтините 8 битни кола, кои не можеа да се прилагодат да користат 16 бити.
Фамилија 68000
М68000, кој беше прв произведен во 1979 година, беше VLSI чип кој беше направен од околу
70 000 транзистори. М68000 микропроцесорот беше добро познат како 16 битен
микропроцесор, но во реалноста, тоа е 32 битен уред, ако се држи до нашата дефиниција од
погоре. Тој секако има 16 битна податочна магистрала, но внатрешните регистри се 32 битни,
иако некои аритметички опрации можат да користат само 16 битни податоци. Понекогаш
ваквиот формат се нарекува 16/32 битен процесор. Тој беше во 64 пинско dil (dual-in-line)
пакување, прикажано на слика 11.4, но малку подолго. Неговата должина честопати беше
недостаток, бидејќи лесно можеше да се скрши при вадење со влечење од едниот крај на
чипот. Тој имаше 24 битна адресна магистрала која можеше да пристапи до 16 Мегабајти
меморија со фреквенција од 12 MHz.
150
Вовед во Микропроцесорите и Микроконтролерите
Една интересна карактеристика е тоа што овој микропроцесор може да работи во два мода,
надзорен и кориснички. Суштинската разлика е тоа што корисничкиот мод има на располагање
ограничена листа на инструкции. Оперативниот систем може да го користи надзорниот мод кој
го користи целото множество на инструкции, но корисничките програми имаа само пристап до
ограничен опсег – доволен за да работат програмите, но, надевајќи се, не доволно да ги
разбрка работите премногу. Постои софтверски пат за промена на двата мода, ако тоа е
навистина потребно.
Ова доведе развојот да се подели на две посебни патеки: брзина и сила или ефтини и мали.
151
Вовед во Микропроцесорите и Микроконтролерите
чинело цело богатство, пред три години, сега е фрлено во ѓубре, тие се непотребни. Сега ќе ги
разгледаме денешните, а утрешните уреди ќи ги разгледаме во следните три поглавја.
Машини за игри
Ако ни е потребен компјутер само за да можеме да пишуваме текст во некој текст едитор,
многу малку труд треба да вложиме за развој на ваков процес, какви што се имаат појавено во
последните десет години – нашето пишување не се забрзува и текстот претставува едноставна
работа. Со вметнување на слики во боја работите малку го менуваат нивото на „стрес“, но
работите навистина почнуваат да бида посложени кога сакаме да имаме слика во кои се
менуваат боите.
Многу компјутери воглавно се користат за играње игри и симулации, но бидејќи тие имаат и
други функции тие мора да бидат дизајнирани да можат да работат за различни цели и тие не
се вистински оптимизирани за некоја посебна задача. Ова резултираше со развој на посебни,
посветени машини за игри. Во моментов имаме избор на три – тука се Nintendo Gamecub,
Playstation и X-Box.
Nintendo Gamecube
Ова е најстариот дизајн и, неизбежно, најмалку технички напреден. Генерлно тој е ефтин, исто
така и игрите се ефтини и повеќе се популарни меѓу помалите корисници.
Главното место за складирање на игрите е 3 инчен со 1.5 GB Nintendo оптички диск. Исто така,
има можност за 64 MB мемориска картичка, обезбедена од Panasonic.
152
Вовед во Микропроцесорите и Микроконтролерите
Sony Playstation 2
Наместо да земеше веќе направен микропроцесор, и да го доработеше дизајнот за им
користеше за машина за игри, Sony, почна да дизајнира нивен нов микропроцесор наречен
„Emotion Engine“ направен само за да стартува игри-програми, што е можно побрзо. Пристапот
„единствена работа“ (single job) им овозможи повеќе да се фокусираат на дизајнот.
Микропроцесорот е опкружен со потребните кола за да може да ги обезбеди потребните
влезови и излези. Севкупниот блок диаграм е прикажан на слика 11.9.
Ако се вчита игра од DVD, стартните информации се проследуваат од Emotion Engine-от кој ги
приготвува графиката за играта и звукот било да е во аналоген или дигитален формат. Потоа
чека да пристигне влезна инструкција од нашиот контролер или преку USB портите.
Игрите вклучуваат сериозен број на пресметики и тие можат да бидат многу комплексни. Има
два вида на пресметки: директни пресметски (еден вид на пресметки кои можеме да ги
извршиме и со џебен калкулатор) и геометриски преметки. Обичните пресметки се извршуваат
со FPU (Floating-Point Unit), а другите со VU (Vector Unit). Па зошто толку многу пресметки?
153
Вовед во Микропроцесорите и Микроконтролерите
Дали колата се удри во аголот? Ова зависи од тоа колку брзо му кажуваш да заврти, со колкава
брзина возиш, избраните временски услови и податоците за автомобилот. Што ќе се случи ако
„случајно“ удриш во дрви или во друго возило?
Овие пресметки треба да се извршат во реално време – ако го завртиме воланот, тогаш колата
треба веднаш да одговри, т.е. и таа да заврте. Геометриските пресметки се извршуваат од
единицата за Вектори, која ни дава разултат за тоа што се случува на екранот. Исто така ни
подготвува листа на настани која што контролира сè што се појавува на екранот – целиот пат
што го гледаме, одроните, па и рефлексијата на ретровизорот.
Опште земено, конзолата е прилично скапа но, дали го имате купено, игрите се ефтини. Без
разлика PS2 купуваме само еднаш и кога ќе заборавиме колку чини, особено ако е подарок,
можеме да си дозволиме да си купиме многу игри. Имањето на многу игри ја намалува
привлечноста за да ја замениме за друга машина за игри – како што е Xbox.
Emotion Engine работи само на 294 MHz, но оваа гранична брзина не е добар индикатор за тоа
колку брзо си ја врши работата – ова зависи од тоа колку добро е дизајниран за својата работа.
Се сеќавате дека микропроцесорот во Gamecube работеше на 485 MHz, повеќе за 50% од PS2,
но погледнете ги брзините на исцртување: кај Gamecube имаме 12 милиот полигони/секунда,
а кај PS2 25 милиони полигони/секунда, дупло повеќе. Ова ни го споредува микропроцесорот
кој е во компјутерот за општа намена со уред за посебна намена.
Microsoft Xbox
Xbox е последната понуда на пазарот. Тие се одлучија за спротивната стратегија од Playstation
2, т.е. козолата да биде многу поефтина, но да наплатуваат повеќе за игрите. Веројатно,
имиџот на Microsoft заедно со однапред аткрактивната цена ќе доведе до празнење на
продавниците, т.е. ќе се купи секој Xbox, а за игрите ќе се погрижиме подоцна. Тие како да
сакат да го продадат на една постара група и дека цената на игрите нема да биде никаква
пречка.
Избраниот микропроцесор за оваа машина е Pentium 3 кој работи на 733 MHz. Тие се одлучија
за стандардниот микропроцесор, наместо некој специјализиран дизајн, без разлика на тоа, тој
сепак има таква моќ што може да направи чуда со играта во добра смисла. Брзината на
геометриското цртање на текстурирани полигони е 50 милиони во секунда или двапати повеќе
од брзината на PS2, т.е. осум пати повеќе од Gamecube. Во сите случаеви, изброените
полигони се со вклучена текстура. Празните полигони се едноставни форма како рамка од
154
Вовед во Микропроцесорите и Микроконтролерите
жица без никаква површина за боење која е од суштинско значење за да обезбеди реална
сцена.
Чипот North Bridge (северен мост) е централен блок на Xbox и ги обезбедува интерконекциите
помеѓу другите единици. Го контролира пристапот до 64 МВ меморија која служи како кеш
меморија за CPU (Central Processing Unit) за да го зачува програмскиот код и голем дел за GPU
(Graphics Processing Unit). North Bridge исто така испраќа сигнали и до South Bridge чипот.
South Bridge ги обезбедува сите надворешни влезови и излези преку USB и мрежни порти,
заедно со аудио сигнали.
Дизајнот на GPU единицата е прикажан на слика 11.12, наречен „nVidia“ базиран на GeForce 3
дизајнот, уште една популарна компутерска компонента. Графичкиот процесор го конвертира
излезот од CPU единицата и во форма на готови информции се испраќаат до CPU или
телевизорот.
155
Вовед во Микропроцесорите и Микроконтролерите
Квиз 11
156
Вовед во Микропроцесорите и Микроконтролерите
12
Фамилија Pentium
Pentium е 32 битен микропроцесор исто како и претходните на Intel 80386 и 80486, но беше
значително подобрен за да ја зголеми својата брзина на работење. Дури и 132 пинови на
80386 се зголемија на 196 кај Pentium.
И другите целосно RISC чипови беа добро прифатени во истото време кога испадна CISC
Pentium во 1993, тогаш Intel ги зеде во предвид овие нови дизајни, но тие беа тргнати на
страна поради неговиот успех. Требаше да ја задржи апсолутната компатибилност со своите
претходни микропроцесори 8086, 80286, 80386 и 80486 заедно со нејзините нумерички ко-
процесори. Компромис беше сите тие да користат RISC, а да ги задржат CISC кодовите. Тој има
повеќе од 400 инструкциски кодови. Некои се извршуваат хардверски, а некои пак со
микрокодови. Тој вклучуваше повеќе од два милиони транзистори во својата суперскаларна
структура. Ова значи дека тој ги има дуплирано аритметичките и логичките единици кои можат
да извршат две инструкции во исто време под поволни услови.
Тој беше лансиран со 66 MHz и во својата прва година стана популарен како микропроцесорот
кој неможе да брое. Имаше серија наслови во компјутерските весници како и шеги од типот
„Колку Pentium-и е потребно да се промени сијалица“. Отпрвин, Intel негираше дека постои
проблем, иако тие знаеа за тоа. И други наслови беа: „Не, нема да можете да си ги повратите
парите.“, „Добро, постои многу мала разлика кај неколку суми при делење“. Грешки се јавува
во непрецизноста во шестата или деветата децимала во некои суми при делење. Ова беше
мала грешка за да влијае кај мал број на корисници, но почна да ја поткопува довербата во
Pentium. Вистински проблем беше што се појавија две грешки при дизајнирањето во исто
време. Ниедна посебно неможеше да се забележи, но двете грешки си служеа за да се кријат
меѓусебно. Како и да е, го поправија. Беа афектирани само првичните верзии и сега повеќе не
се значајни.
Со тек на време брзината се зголеми на 200 MHz, со неизбежните гласини за дека Pentium II ќе
работи на 400 MHz, што ќе го поддржава системски часовник на 100MHz.
157
Вовед во Микропроцесорите и Микроконтролерите
Секогаш кога е можно, Pentium користи „рафален“ мод за да чита и запишува податоци. Со
рафалниот мод системот го полни кешот, на пример, со повеќе податоци од ширината на
податочната магистрала. Ако линијата за кешот е 128 бити широка и ако се полни од 64 битна
податочна магистрала, можеме комплетно да го наполниме кешот со трансфер на 64 бита и
потоа уште на едни 64 бита. Со рафалниот мод полнењето е многу брзо со што не е потребна
понатамошна интервенција од микропроцесорот. Со ставање на повеќе нови податоци во
кешот ќе ја зголеми можноста кешот да „држи“ потребни информации. Ова се нарекува кеш
„погодок“ (cache ‘hit’).
Prefetch бафер
Prefetch бафер е мала внатрешна меморија во која се чува листа на инструкции кои чекаат да
бидат извршени. Ова осигурува дека инструкцискиот декодер никогаш не чека нова
инструкција од надворешната (бавна) меморија и прави да има поефикасно користење на
надворешната податочна магистрала, бидејќи новата магистрала може да се исчита кога и да
се појави прилика. Кога ќе се појави момент, Pentium ја поместува инструкцијата од
надворешната програма во кешот и пренесува една инструкција од кешот во prefetch баферот
и истотака испраќа сигнал до колото за микрокод за да го припреми кодот за следната
инструкцијата. Значи, одкога ги извршивме сите домашни задачи, инструкцискиот декодер
може да се наполни со инструкции и податоци со неговата максимална рата. Prefetch баферот
всушност има два независни 32 битни бафери, секој од нив овозможува влез во една од двете
ALU единици.
Инструкциски декодер
Инструкцискиот декодер ја врши скоро истата функција како кај другите микропроцесори. Тој
има два излези кои ги полнат двете ALU единици наречени „u“ и „v“.
158
Вовед во Микропроцесорите и Микроконтролерите
Има осум FPU регистри со ширина од 80 бити, подредени како стек. Битовите од 0 до 63,
служат за 64 битната мантиса, битовите од 64 до 78 служат за 15 битен експонент и последниот
бит ни служи како знак бит.
S Exponent Mantissa
З Експонент Мантиса
Bits 79 78 64 63 0
Битови
159
Вовед во Микропроцесорите и Микроконтролерите
„jump to address xxxx if the value in the accumulator is not zero“ (скокни на адреса хххх ако
вредноста во акумулаторот не е нула). Кога ќе се сучи овој скок, следните неколку инструкции
кои веќе се исчитани со групирањето се неточни и сега треба да се испразнат и повторно да се
наполнат регистрите за групирање со нови, точни, информации. Ова се нарекува празнење
„flushing“ на групирањето и предизвикува иритирачка пауза од четири или пет такта.
Во кеш се чуваат инструкциите веднаш пред гранката или скокот заедно со целната адреса при
скок, претпоставувајќи дека ќе се случи скокот. Исто така чува и статистички информации за
тоа колку често се исполнувал скокот во минатото. Овие информации се користат за да го
предвиди веројатниот исход од ситуацијата, и ова е точно во околу 85% од случаевите. Кога ќе
се појава гранка, историските информации се обновуваат за да следното предвидување биде
уште поточно.
Интерапти (interrupts)
Справувањето со интераптите (прекините) се нема изменето од сите оние шти ги препознавме
кај Z80.
Постојат два хардеверски интерапти. NMI или ,не маскиран интерапт (nonmaskabel interrupt) се
активира со носење напон, на пинот, на високо ниво т.е. логичка 1. Веднаш по заврсшувањето
на тековната инструкција, Pentium ја става содржината во знамеце flag регистерот и
потребната адреса во стекот. Тогаш се префрла во flag регистерот и го ресетира, за да спречи
понатамошно прекинување (interrupt). Тогаш микропроцесорот му служи на тој прекин
(interrupt). NMI обично се појавува како резултат на хардверска грешка и намената му е брзо
да го ограничи оштетуваето кое може да настане.
160
Вовед во Микропроцесорите и Микроконтролерите
IRQ или interrupt request (барање за прекин) исто така се активира кога на соодветен пин
(конектор) доведеме логичка 1 или високо ниво на напон, но во овој случај не заборавете дека
тоа е само барање и може да се блокира со ресетирање на interrupt flag (знаменцето за
прекин) во регистерот за знаменце (flag register). Ако имаме повеќе од еден интерапт, ги
проверуваме приоритетите и оној со најголем приоритет побрдува. IRQ интерпатите, во
глобала се иницираат од периферната опрема како што е печаточот.
Исклучоци
Овие прекини се „издадени“ од самиот микропроцесор и се случуваат кога микропроцесорот
ќе се најде во тешка ситуација која не знае како да је реши.
Кога ќе се појава исклучок, најчесто на екранот се соопштува со некоја порака дека има
исклучон и Pentium микропроцесорот се обидува повторно да ја изврши инструкцијата.
Запрашувајќи го Pentium микропроцесорот за невозможен одговор ние предизвикуваме
исклучоци. Тоа може да биде „делење со нула“. Делењето на некој број со нула е невозможно
и Pentium не може да ни одговори. Друг исклучок, кој ги погодува во срце корисниците, е
‘General Protection Error’. Софтверот му испраќа адреса, на Pentium микропроцесорот, која не
постои и очигледно, не постои и инструкција за извршување.
MMX Pentium
MMX (MultiMedia eXtensions) е додадок на стадардниот Pentium микропроцесор, кој е
дизајниран да ја зголеми брзината на мултимедијата, комуникацијата и други апликации во е
кои е потребно да се повторуваат голем број на исти пресметки.
161
Вовед во Микропроцесорите и Микроконтролерите
Saturation arithmetic гарантира дека секое зголемување кое може да предизвика случаен
ефект на појавување нула е спречен (види слика 12.2). Ако почниме да броиме од 0000,
Pentium микропроцесорот ќе овозможи нормално да продолжи броењето се додека не ја
достигне максималната вредност 1111 и потоа ќе ја држи оваа вредност. Бојата во нашиот
пример ќе биде црна, но ќе биде спречена случајно да стане бела.
Pentium 4
Како што споменавме претходно, една од границите на оперативната брзина е големината на
внатрешните компоненти, до неодамна најмалите детали кои беа лимитирани до 0.18 µm.
Како што продолжува натпреварувањето со AMD, беше време за следниот чекор на AMD да
почне да користи 0.13 µm технологија, и како што се очекуваше, Pentium 4 микропроцесорот
исто така го надоградија со истата технологија за побрзата верзија од 1.8 GHz и поголема. Исто
така оперативниот напон се намали од 1.75 до 1.5 волти, дозволувајќи помал простор со што
придонесе до уште поголемо зголемување на брзината (и 25% намалување на цената). Новиот
дизајн му овозможи на Pentium 4 да го зголеми бројот на транзистори од 42 милиони во 55
милиони и зголемување на конекциските пинови на 478. Тоа беше долг пат за Intel од 16
пинско куќиште за нејзиниот 4 битен микропроцесор во 1972.
Термо безбедност
Трошењето на енергијата се зголемува со побрзото работење на секое интегрирано коло, и тоа
не е исклучок за Pentium 4. Сега, земајќи в предвид дека актуелниот процесор е само
162
Вовед во Микропроцесорите и Микроконтролерите
Системеска магистрала
Исто така наречена FSB (Front Side Bus), е широка 64 бити и е „Quad Pumped“ кое е фенси начин
на изразување дека за еден такт, кој се јавува со фреквенција од 133 MHz, ќе пренеси четири
групи од податокот низ магистралата. Малку да го појасниме ова, 133 MHz 4 = 533 MHz, па
така магистралата изгледа како единечна која работи на 533 MHz. Влезната и излезната
информација се чува во 256 kB level 2 Andvanced Transfer Cache (кеш со напреден трансфер на
ниво 2) која се полни со 256 битни широки патеки. Интел го нарекува „Advanced Transfer
Cache“ кој не е „quad pumped“ иако е поширока, сеуште се поклопува со брзината на
системската магистрала.
163
Вовед во Микропроцесорите и Микроконтролерите
фази кој ни овозможува да користиме 126 инструкции во исто време кои можат да содржат
дури до 48 исчитани и 24 запишани инструкции.
164
Вовед во Микропроцесорите и Микроконтролерите
Кешот на 1 ниво за податови (level 1 data cache) се справува со податочните излези од ALU и
AGU (Address Generation Units) единиците.
Иден развој
Новиот дизајн на Pentium со брзини преку 1.8 GHz и технологија од 0.13µm има кодно име
„Northwood“, кој го замени претходниот „Williamette“. Работата врз Williamette стигна до
крајот на неговиот развој, па со оглед на тоа Northwood е само почеток и бидејќи тој веќе
работи на 2.8 GHz, па така неминовен е чип со 3 GHz, тогаш веројатно ние можеме да
погледнеме и понапред, па да ја погледнеме и уште поголемата магија од 4 GHz пред да
застари дизајнот Northwood.
Celeron
Секогаш се акцентираат „цената и брзината“ во компјутерските реклами, и повеќето
корисници „паѓаат во стапица“, претпоставувакќи дека 2.8 GHz микропроцесор очигледно е
побрз од 2.5 GHz микропроцесор. Оваа е грешна претпоставка, но сепак добро воспоставена,
па така за овој дел од пазарот постои побарувачка за многу ефтин микропроцесор со висока
брзина.
Квиз 12
1 SIMD e:
a. Искористен во стандардните Pentium, но не и во MMX верзиите.
b. Начин на заштитно пакување.
c. Single in-line multimedia data.
d. Single instruction multiple data.
2 Логика за предвидување на гранки:
a. Е друг начин на именување на prefetch регистерот.
b. Само се користи во MMX верзиите.
c. Заштедува 85% меморија.
d. Се обидува да ги погодин наредните чекори кои ќе ги изврши програмата.
3 Исклучокот:
a. Ќе го игнорира I знаменцето (I flag) ако е поставено на високо ниво.
b. Е невообичано разгранување на програмата.
c. Е сигна за прекин генериран од микропроцесорот.
d. Се појавува кога Pentium е изненаден од аритметичкиот резултат.
165
Вовед во Микропроцесорите и Микроконтролерите
166
Вовед во Микропроцесорите и Микроконтролерите
13
PowerPC
Intel произведе серија на CISC микропроцесори, и заедно со Microsoft, беше во позиција да
доминира на пазарот, со што целосно го отфрлија традиционалниот крал на компјутерите,
IBM, кој во еден момент, произведуваше повеќе компјутери од сите други производители
заедно. Big Blue како што го нарекуваа IBM, за сметка на нивното лого и синити костуми кои ги
носеа армијата од продавачи, го постави стандардниот дизајн на компјутер кој сега ги
замрачува сите останати дизајни во светот.
Како и одамна, во стредината на 1970-тите години, IBM разви RISC микропроцесор, но не баш
се најде на пазарот. RISC не „порасна“ се додека Acorn не ги произведе микропроцесорите
ARM 2 и 3 за своите Archimedes микрокомпјутери, ниту и овие истотака, не можеа да се
рашират на пазарот бидејќи имаше мали обиди тие да бидат компатибилни со Intel-овиот код.
Acorn, во тоа време, ги претстави своите Archimedes како замена за многу посакуваните BBC
микрокомпјутери. Во 1990, очигледно беше дека страшните близнаци, Microsoft и Intel, ќе го
преземат светот, ако никој не им возврати.
Многу години и беа потребни на младата компанија наречена „AMD“, полека да напредува и
да расте низ годините и еден ден да стане постојан надразнувач на Intel. Сеуште Microsoft
владее во светот, но постои систем наречен Linux кој може, еден ден, да постане
проблематичен и за Microsoft.
Во меѓувреме, се формираше алијанса помеѓу IBM, Motorola и Apple Computeros, во која IBM го
донесе својот POWER микропроцесор (Performance Optimized With Enhanced RISC,
перформансиски оптимизаран со подобрен RISC). Ова беше наследник на претходниот 801
RISC микропроцесор и беше избран поради тоа што беше RISC микропроцесор и веќе имаше
развиен софтвер. Motorola ќе го изгради чипот, а Apple ќе го „даде“ својот компјутерски
оперативен систем, кој беше неколку светлосни години понапред од Microsoft-овиот
еквивалент во тоа време. Новата фамилија на микропроцесори беше наречена PowerPC.
167
Вовед во Микропроцесорите и Микроконтролерите
Кеш (Cache)
Овде имаме единечен 32 килобајтен кеш кој се дели за податоците и интрукциите. Покасните
верзии го надоградија вкупниот кеш кој е спроведен со два одделни 32 килобајтни кешови,
еден за податоците и друг за инструкциите.
168
Вовед во Микропроцесорите и Микроконтролерите
меморија. Ова, се разбира, ни зачувува многу време бидејќи кешот е околу седум пати побрз
од пристапот до главната меморија и милион пати побрз ако го користими хард дискот.
Не прави избор. Ако гранката ја враќа програмата на претходната инструкција, тој секогаш
претпоставува дека ќе ја прифати гранката. Ова обично е точен избор, бидејќи повеќето јамки
во програмите се многу слични. На друга страна, ако инструкцијата на гранката ни нуди
можност за скок нанапред, тој претпоставува дека нема да ја прифати гранката. Ако
предвидувањето е точно, претходно се земаат инструкциите и се полнта во инструкциски ред,
169
Вовед во Микропроцесорите и Микроконтролерите
Единицата за цели броеви се справуват со сите инструкции како што се, аритметичка
манипулација на битовите од цели вроеви, и пренос на податоци до и од надворешната
меморија, и таа е организирана во три-фазен цефковод (pipeline). На слика 13.3, вториот такт ја
извршува првата инструкција. Следнот такт ја извршува втората инструкција и последниот такт
ја извршува третата. Ја постигнавме целта од еден такт за такт, и во четвртиот такт, можеме да
забележеме дека следната инструкција пристигнува за да се декодира, веднаш после првото
write-back (запишување-назад).
170
Вовед во Микропроцесорите и Микроконтролерите
Мемориски бафер
Овој работи како бафер за надворешна меморија. Баферите вклучуваат две читања и три
запишувања, секои до 32 бајти. Тој исто така се користи за запишување-назад на кешот.
Замислете си дека сакаме да запишиме 32 битен број 00000000 01010101 00010001 111111112
и на располагање ги имаме адресите 24646603Н, 24646602Н, 24646601Н и 24646600Н. Little-
endian форматот ќе ги запише најзначајниот бајт во највисоката мемориска адреса, па во
нашиот пример, податокот 00000000 ќе оди во 24646603Н. Ова се користи од страна на Intel
микропроцесорите. Big-endian, кој го користи Motorola, работи на спротивен начин,
најзначајниот бајт се става во најниската мемориска адреса, па така во нашиот пример,
податокот 00000000 ќе оди во адреса 24646600Н. Ова е прикажано на слика 13.4. Сите
PowerPC микропроцесори се switchable за да им се овозможи користење на little-endian или
big-endian.
PowerPC 970
Голем број на PowerPC-а продолжија да се вградуваат во Apple-Mac и IBM десктоп компјутери,
и како додатно, ги подржуваат и двата оперативни системи UNIX и Linux.
Последната понуда е 970, кој е изграден од 52 милиони транзистори и го започна својот живот
како уред на 1.8 GHz, кој сега се искачи до 2.0 GHz. Ова може да изгледа бавно, но тој има
компензирачки атрибути, како што е неговта магистрала на 900 MHz во споредба со 533 МHz
магистрала на Pentium 4.
171
Вовед во Микропроцесорите и Микроконтролерите
Како што продолжува растот на мемориската големина во секој дизајн, така е големината на
меморијата кој може директно да се пристапи се зголеми со потегот за процесирање на 64
бити. Pentium 4 може да пристапи до 40 GB меморија, што изгледа претерано голема во овој
момент, но имаше и времиња кога 4 MB беа доволни да не зачудат. PowerPC 970 може да се
справи со меморија со пропорција од Star Trek измерени во терабаајти (илјади гига).
Како и во Pentium 4, така и кај PPC970 за ова се користи кешот на ниво 1, и како што е познато,
тој е поделен на инструкциски кеш и податочен кеш. Исто така има и кеш на ниво 2 и еден
надворешен кеш на ниво 3.
Читање на инструкции
Инструкциите се „истураат“ од инструкцискиот кеш со максимална рата од осум за еден такт,
иако поверојатно е тоа да се пет. Но, ова е сепак брзо.
РРC970 користи многу долг цефковод (pipeline) кој може да опслужи симултано дури и до 200
инструкции. Цената на ваков долг pipeline е тоа што мора да бидеме претпазливи и да се
осигураме дега тој се полни со најкорисни инструкции и оттаму тој треба да биде поткрепен со
ефективна техника за предвидување на гранки.
Предвидување на гранка
За да се добие максимална можна брзина, кај РР970 голем дел од ресурсите се посветени за
предвидување на разгранувањето. Како се чита инструкцијата, така колото за предвидување
на гранки ја скенира дојдена инструкција и проверува дали е некоја инструкција која
разгранува. Секој пат кога се среќаваме со таква инструкција имаме опција дали таа гранка ќе
ја прифатиме или ќе ја одбиеме.
172
Вовед во Микропроцесорите и Микроконтролерите
970 има два метода за предвидување на гранка. Првиот е многу сличен со оној кој го користи
Pentium 4, и за да си ја поедностави ситуацијата, ги следи сличните заклучоци какви што ги
донесуваме во секојдневниот живот. Ако вообичано тоа се случува, многу веројатно е тоа
повторно да се случи. 970 чува информации за претходните 16384 гранки во своја BHT (Branch
History Table), табела за инсторија на гранките, за да види колку често е направен еден избор и
овие информации се подредуваат со програма за предвидување пред да се дојде до конечна
одлука.
Вториот метод вклучува табела со слична големина наречена Global Predictor. И овој метод
исто така дава заклучок за прифаќање, или пак не прифаќање, на гранката, но тоа го одлучува
со генерирање на 11 битен вектор кој го чува конкретно извршениот пат „поминат“ од
претходните единаесет исчитани групи кои водат до гранката.
Значи постојат два независни механизми кои служат за донесување одлука за тоа дали да се
прифати некоја гранка. Ако тие не се согласуваат, потребен ни е судија. Оваа работа е
изведена од „Selector Table“ (селектор на табела) кој ги чува ратите на успеси за секој од двата
претходни методи за секоја гранка посебно. И на крај тој донесува одлука – и како што велат
(од IBM), тој е многу успешен, што веројатно и е успешен.
Справување со инструкциите
Со комбинирање на влезната инструкција од инструкцискиот кеш и информацијата за
предвидувањето на гранки, инструкцијата се става во ред и се препратува до единиците за
Decode, Crack и Group Formation.
173
Вовед во Микропроцесорите и Микроконтролерите
IOPs се извршуваат во таков ред кој ќе резултира со најбрза пропусна моќ, и за да ја намали
комплексноста на следење на извршувањето за сите поединечно, тие се организираат во групи
од по пет IOPs и тогаш се следат групите.
PC-пазар
PowerPC може не е во нашиот компјутер, но тој може да се најде во нашиот автомобил. Ford
Motor Company го избра PowerPC да се користи за нивниот компјутер за менаџмент на моторот
кој ќе го вградуваат во иднина.
Квиз 13
174
Вовед во Микропроцесорите и Микроконтролерите
14
Athlon XP
Ова е конкуренцијата од AMD на постоечкиот Pentium, и двете компании се концентрирани на
тоа, како ние да имаме поголеми добивки.
175
Вовед во Микропроцесорите и Микроконтролерите
Кешови
За максимална брзина кешот е вграден во чипот. Со ова AMD го елиминраа времето потребно
за да се пренеси податокот.
Предвидување на гранка
Како кај сите сегашни микропроцесори, и кај овој посветено е големо внимание за
претпоставка на најверојатниот резултат од секоја гранка-инструкција. Секоја ваква
инструкција, обично, произведува два алтернативни правци на програмата. Тие одговараат на
прашања како „дали резултатот е нула?“ и одговорот одредува што ќе се случи следно. Ако
секој пат чекаме да се одговри прашањето и само тогаш ги читаме инструкциите од следниот
дел на програмата ќе имаме многу потрошено време, како што видовме во првите дизајни на
микропроцесорите. Ако претпоставиме точно, можеме предвреме да го исчитаме следниот
дел од програмата и да го стартуваме. Колото за предвидување на гранка ја прави таа
претпоставка. Ако претпостави грешно, старите податоци се отстрануваат и се заменуваат.
Инструкциски декодери
За да биде во целосна употрeба својот побавен такт, Athlon има три инструкциски декодери
кои работат независно. Секој од овие може да се справи со три операции во еден такт кој дава
вкупен проток на девет операции во еден такт, кој сеуште е значајно поголем од шесте
операции за еден такт кај Pentium.
176
Вовед во Микропроцесорите и Микроконтролерите
Состојба на натпреварувањето
Pentium има „мотор за брзо извршување“ кој има две ALU (arithmetic and logic units) за
инструкции со цели броеви, секоја со такт двапати побрз од брзината на процесорот која
работи со брзина на предната магистрала (front side bus) од 533 MHz, наспроти тоа Athlon има
само 333 MHz FSB. Ова ја продолжува шемата да мислиме дека Pentium предничи во брзината,
како и да е, во пракса, Athlon, во повеќето тестови, е нешто побрз од Pentium.
Вести ...
Тоа е напишано вчера, ова утро дојде веста дека Intel штотуку ја проби бариерата од 3 GHz со
уред на (само) 3.06 GHz. Ова, кажуваат тие, дека вклучува hyper-threading, техника која
вклучува поделба на програмата на помали единици кои можат да се извршуваат симултано.
Ова овозможува микропроцесорот да работи со повеќе апликации во исто време, исто како да
имаме два процесори. Таквиот multi-tasking (работа со повеќе задачи истовремено) е достапен
во Windows XP и Linux и веројатно ќе биде достапен и во сите нивни наследници. Па каде во
иднина води ова, дали ќе одиме на се поголеми и поголеми брзини, или ќе го развиваме
multi-tasking-от за да имаме, во поголем број поефективни микропроцесори која ја делат
работата? Имам чувство дека одговорот е поделбата на работата.
Речиси веднаш, Athlon одговори со она што изгледа уште еден значаен чекор напред – 64
битно пресметување.
Микропроцесорот кој сеуште опстојува со кодното име „Hammer“ ќе се продава како уште
попријателското име „AMD Athlon 64“ и ќе биде достапен во средината на 2003 и ќе му се
придружи на PowerPC 970 во клубот „64“. Тој ќе може да стартува 64 битни, 32 битни и 16
битни апликации, без пенали за брзината (без да ја намали брзината) и ќе ги избегне
трошоците од купување на нов софтвер.
Единствената техничка информација која беше вклучена во првичната најава беше новиот
систем на магистралата која користи „hypertransport“ технологија, за која AMD тврди дека го
177
Вовед во Микропроцесорите и Микроконтролерите
зголемува протокот низ нив за 50% повеќе од постоечкиот дизајн. Intel ќе има нешто да искаже
во врска со ова тврдење, а тоа е: сè надевам. Фреквенцијата на првата избрана серија малку ќе
се разликува од ХР, и ќе биде околу 2.8 GHz, но дизајнот ќе овозможи повеќе простор за развој
и ќе може да стартува програми на повискои брзини.
Табела 14.1
Квиз 14
178
Вовед во Микропроцесорите и Микроконтролерите
179
Вовед во Микропроцесорите и Микроконтролерите
15
Микроконтролери и како да ги користиме
Припремете се за полетување
Во 1960-тите, електрониката започна да се буди од својот длабок сон, во кој се употребуваше
технологија на термионски вентили кои беа претпознатливи како кола кои се градеа триесет
години. Темпото на напредокот беше со благ раст. Тогаш се произведе првиот
полупроводнички материјал и употребата на транзисторите се појави за неколку години. Се
користеше фотографски процес за да се дизајнира и произведат транзисторите кои брзо
доведоја до производство на едноставни интегрирани кола и микропроцесорот.
Почетокот на микроконтролерите
Не порано од појавата во 1971 година на микропроцесорот и придружните мемории, стана
јасно дека микропроцесорот секогаш е придружен со други кола, како влезно/излезни уреди,
мемориски и тајминг кола, па би било добар потег за да ги искомбинираат во еден уред.
Само размислување
Микроконтролорите го надминаа бројот на популација веќе неколку пати, и како што
претходно споменавме во нашите домови ги има, веројатно, околу педесет од нив. Тие се во
секоја голема индустрија – производство на храна, транспорт, комуникации, истражување,
оружје, производство на енергија, медицината, греење и климатизација – има многу малку
нешта што не се потпираат на тоа да користат микроконтролери. Ако тие научат да
180
Вовед во Микропроцесорите и Микроконтролерите
комуницираат независно од нас, тие може ќе развијат своја агенда. Сега тоа е само една
мисла.
8051
Веројатно транзицијата од микрокомпјутер во микроконтролер започна со појавата на Intel
8048, како што видовме во Глава 11. Кај 8048 вградивме RAM, ROM и тајмер, па така можевме
да го користиме, како уред за една цел, за контрола на тастатура – всушност, што и беше
микроконтролер.
Со искуството стекнато со неговото користење, стана очигледно дека има значаен пазар за
микроконтролерите.
Во 1980 година, Intel го лансираше 8051 кој и после дваесет и три години подоцна е „жив и
здрав“. Фактички навистина многу здрав. Тој е веројатно најпопуларниот микроконтролер на
сите времиња. Тој се прави од околу 44 снабдувачи.
Овие снабдувачи честопати додаваат некои екстра особини за да ги направи верзиите или
„алтернативите“, како што ги нарекуваат тие, особено погодни за одредена цел/работа. Има
најмалку 92 алтернативи и сите се компатибилни со оригиналниот код. Освен различните
алтернативи, има и серија на опции кои го зголемија вкупниот број на членови од фамилијата
8051 до неколку стотици.
Нумерирање
Нумерирањето на уредите не е толку очигледно бидејќи достапни ни се многу
микроконтролери од неколку снабдувачи кои имаат свои кодови на прозиводите. Па така тие
произведуваат група во основа слични уреди, со мали измени како што е работниот напон или
различна големина на вградениот RAM и ROM мемории – ваквите групи нас ни се познати како
„фамилии“.
181
Вовед во Микропроцесорите и Микроконтролерите
Па така на фамилијата ѝ се доделува име кој има мала поврзаност со кодот на производот. На
пример, фамилијата на Intel, 8051 има име на фамилијата MCS51, која е составена од 803Х,
805Х, 875Х и верзиите со ниска моќност bXC45X и 8XCX52. Како и обично, Х ни заменува некоја
бројка или буква, на истата позиција.
Распоредот на пиновите се прикажана на слика 15.2, на прв поглед, повеќето пинови имаат
двојна употреба што ни ја прави ситуацијата доста комплицирана. Ова е честа карактерисика
кај микроконтролерите и претставува метод со кој се намалува бројот на пиновите. Ако има
повеќе пинови, тогаш имаме поскап и поголем уред. Ова претставува лоша вест за уредите кои
често се предодредени да бидат вградени во рамките на други кола.
182
Вовед во Микропроцесорите и Микроконтролерите
Reset
Без оглед на тоа која програма е стартувана, ние мораме секогаш да имаме контрола врз
микроконтролерот, исто како што мораме да имаме контрола и врз микропроцесорот.
Процедурата е сосема иста. Микроконтролерот има reset пин кој, кај 8051, се превзема од
блокот за контрола на магистралата и, во нормална работа тој мора да биде на нула волти.
Кога ќе се донесе позитивен напон нaд 2.0 V, тогаш микроконтролерот веднаш се враќа на
својата стартна адресна локација, што во нашиот случај е 0000Н. Можеме да го организираме
ова за да биде автоматски при вклучување, но ние исто така мораме да обезбедиме и reset
прекинувач (копче) за да се здобиеме со контрола на системот во секое време без да го
отстраниме од напојување. Ова е „reset“ прекинувачот (копчето), што го користиме кога
нашиот компјутер се закочува и не игнорира.
183
Вовед во Микропроцесорите и Микроконтролерите
Clock input
Како што видовме во Глава 7, имаме потреба од clock (такт) сигнал. Оригиналниот дизајн на
8051 имаше кристал со фреквенција 12 MHz, што во покасните верзии може да работи на 33
MHz, 40 MHz дури и на 44 MHz. Како алтернатива, можеме да користиме керамички резонатор
или пак надворешен сигнал. Clock input (влез за такт) кој користи кристал е прикажан на слика
15.4. За да употребиме надворешен сигнал, треба да го отстраниме кристалот и
кондензаторите, и треба сигналот да го доведиме на Xtal1 пинот, а Xtal2 треба да го оставиме
дисконектиран (откачен).
Ports (Порти)
Вградената меморија на чипот може да биде маскиран ROM или EPROM со кои се сретнавме
во Глава 6. Со употреба на надворешна меморија очигледно ги зголемуваме можностите на
чипот, но дозволено ни е само меморија до 64 kB, која е стандардна големина за 8 битен
микропроцесор.
184
Вовед во Микропроцесорите и Микроконтролерите
External Interrupt 0
Timer 0
External Interrupt 1
Timer 1
Serial port
И покрај ова, секој интерапт има две нивоа на приоритет, па така ако се појават два интерапти,
прво ќе се изврши оној со повисок приоритет. Ако и двата имаат ист приоритет, тогаш се
одлучува по избирачкиот редослед.
Timer/counters (тајмери/бројачи)
Тајмер или бројач ни е серија од бистабилно кола или флип-флопови кои ја менуваат
состојбата за еден за секој влезен сигнал. Ваквите кола ќе ја делат влезната фреквенција со
фактор два. Ако тој сигнал се носи на друго бистабилно коло, излезот ќе биде ¼ од
оригиналната фреквенција, уште едно коло ќе ни даде излез од 1/8, потоа 1/16 од
фреквенцијата итн.
Има два тајмера, Т0 и Т1. Овие можат да се испрограмираат за да делиме со 256, 8192 или
65536 и ќе генерираат интерапт сигнал кога софтверски ќе се детектира дека тоа е завршено.
Еден од модовите ни дозволува тајмерот/бројачот во 8 битен (делење со 256) мод
континуирано да се полни и повторно да почне да брои секој пат.
Влезниот сигнал кој што се одбројува може да потекнува од надворешно коло, па ги брои
влезните пулсови, или може да користи внатрешен сигнал кој е всушност 1/12 од
фреквенцијата која се користи. Како што спомнавме погоре, тој генерира интерапт сигнал кога
ќе стигне до неговата максимална вредност. Можеме повторно да го наполниме тајмерот со
број од кој ќе ни започне броењето. Ова ни овозможува да генерираме интерапт после
појавата на одреден број од некој настан, или временски интервал.
185
Вовед во Микропроцесорите и Микроконтролерите
Сериската порта ни овозможува во исто време да испраќаме и примаме податоци, ова нас ни е
познато како full duplex (полн дуплекс/двоспрат) систем. Како што ни кажува името, битовите
од податоците се движат еден после друг во континуиран тек. Pin 10 се нарекува RXD т.е.
receive data (примај податок), a pin 11 е TXD transmit data (испрати податок), но, што е многу
чест случај, работите не се така едноставни.
Mode 0 (режим 0)
Во овој режим, и само во овој, TXD пинот всушност се користи за такт сигнал, а RXD пинот се
користи за примање или испраќање на податоци. Фреквенцијата на тактот е фиксирана на 1/12
од фреквенцијата од вградениот осцилатор, и ова, се разбира, ни ја одредува брзината со која
се пренесуваат податоците преку 8 битните шифт регистри.
Mode 1 (режим 1)
Mode 2 (режим 2)
Овој е многу сличен со режим 1, освен тоа што бројот на пренесени битови се зголемува од 10
на 11. Додатниот бит може да се користи како бит за парност, кој се употребува за преверка на
грешки при пренос. Шаблонот е: Почетен бит (0), податок од 8 бита, бит за парност и стоп бит
(1). (повторно погледни во Глава 17). Ратата на трансмисија може да биде 1/32 или 1/64 од
фреквенцијата на вградениот осцилатор.
Mode 3 (режим 3)
Ова е 11 битна трансмисија со програмабилна baud rate (бауд брзинска единица, бауд во
секунда). Baud rate е скоро исто како брзината на трансмисијата измерена со бити во секунда.
186
Вовед во Микропроцесорите и Микроконтролерите
Тајмерот заштитник го има само во некои варијанти на 8051, но го има како самостоен чип. Тој
е неизбежен во поновите дизајни.
На слика 15.5, го имаме блок диаграмот. Големо олеснување е тоа што поголемиот дел е многу
сличен со првите 8 битни микропроцесори и 8051 што го разгледавме во претходното
поглавје. Веќе видовме дека повеќето уреди се комбинација од една или две иновативни идеи
споени во стандардна мешавина.
187
Вовед во Микропроцесорите и Микроконтролерите
Влезови и излези
Една забележлива особина во блок диаграмот, е тоа што гледаме дека има само пет
влеза/излези обележени како PortB од 0 до 4, т.е имаме само пет конекции за податоците што
е мал број се додека не ја разгледаме сестринската верзија AT90S/LS2323 кој има само три
PortB од 0 до 2! Сепак, тие се нарекуваат 8 битни уреди, а во претходните 8 битни
микропроцесори, пораснавме со очекувањето, дека секогаш ќе имаме најмалку една или две
конекции од 8 битни влезно/излезни порти.
Пиновите од PortB можат да се користат за испраќање на податоци во две насоки, т.е. можат
да се користат како влезни или излезни пинови. Како што е заедничко и за другите
микропроцесори и микроконтролери, правецот на движење на податоците во секоја линија од
PortB се контролира од регистер за правец на податоците. Со ставање на „единица“ во
регистерот ќе ја направи соодветната линија од PortB излезна, а пак на друга страна „нулата“,
се разбира, ќе ја промени во влезна линија.
Мемории
Овој микроконтролер има три мемории, или четири ако ги броиме и регистрите за општа
намена. За запишување на меморискиот простор се користи сериски пренос на податоци и е
постигнато од SPI (serial programming interface).
Корупција (губење) на податоците може да се појави ако многу се намали напонот на EEPROM-
от, но овој ефект може да се избегне со употреба на еден од следниве три методи. Првиот
веќе го спомнавме – да користиме Flash меморија за критичните податоци. Другите два
метода слични и кога ќе детектират пад на напонот, веднаш го го стават микроконтролерот во
безбедна состојба. Ова често се нарекува „brown out protection“ (заштита од црнило).
Надворешно коло го детектира падот на напонот и се додека не се „опорави“ напонот тој носи
низок напон на reset пинот кој ефективно го исклучува чипот. Како алтернатива е да го стави
микроконтролерот во режим на спиење, кој претставува режим за заштеда на енергијата, и
има ефект на заштита на било какво декодирање или извршување на било каква инструкција –
кој, се разбира, исклучува било какво „запишување“ во EEPROM-от.
Исто така има и 128 бајтен SRAM (Static RAM) за привремено складирање на податоците и 32 8-
битни регистри за општа намена, кои два од нив можат во исто време да бидат поврзани со
ALU (arithmetic and logic unit), кој е срцевината на „мозокот“ кај микроконтролерот.
188
Вовед во Микропроцесорите и Микроконтролерите
Clock (Такт)
AT90S/LS2343 има внатрешен RC осцилатор кој работи на 1 MHz, 4 MHz или 10 MHz во
зависност од тоа која верзија ја употребуваме. Ова е еден од ретките микро уреди кои не
користат надворешен кристал кој може да се користи како натворешен тактен пулс. За овој
надворешен тактен пулс потребен е еден пин, па оттаму имаме додатен пин кој може да го
користиме како излез.
Interrupts (интерапти)
Има само три интерапти, првиот, кој има највисок приоритет, е reset кој се активира со носење
на низок напон на пинот 1, на power-on reset или сигнал од заштитникот. Следен е надворешно
барање за интерапт, и последен, е пречекорување од тајмер/бројач колото.
Пин 1 – Reset активен на ниско. Мора да биде на низок напон барем 50 ns.
Пин 2 – Влез за надворешен такт или PortB 3.
Пин 3 – PortB 4. Сите линии можат да носат 20 mA, па затоа способни се директно да
снабдуваат со струја LED диоди. Со ова се мисли дека LED диодата или некој друг
потрошувач е поврзан помеѓу позитевен Vcc напон и низок напон кој излегува од
портата.
Пин 4 – Заземјување. (Ground)
Пин 5 – PortB 0 или MOSI. Во режимот на сериско програмирање, MOSI претставува
сериски влез на податоци.
Пин 6 – PortB 1 или MISO/INT0. Во режимот на сериско програмирање, MISO претставува
сериски излез на податоци. Овој пин може исто така да има улога на надворешен
интерапт, што го опишавме во претходниот пасус.
Пин 7 – PortB 2 или SCK/T0. Во режимот на сериско програмирање, SCK претставува
сериски влез за такт. Овој пин сто така може да ни овозможи влез за
тајмер/бројач0 тактот.
Пин 8 – Vcc. LS верзијата има потреба од позитивен напон кој се движи во граници од
2.7–6.0 V.
189
Вовед во Микропроцесорите и Микроконтролерите
PIC16F84A
Ова е модерно развиен RISC дизајн и има многу особини кои се слични со AVR, кој претходно
го разгледавме. AT90S/LS2343 го избравме како пример за многу мал и основен
микроконтролер кој се наоѓа во многу производи. PIC16F84A од Microchip Technology е уред со
„средни“ можности и е поголем и многу поспособен од AVR.
Тој се покажа како лесна, без конкуренција, почетна точка за многу луѓе, и „PIC“ не е само
нивниот прв избор, туку тој почнува да се користи како опште поим за било кој
микроконтролер.
190
Вовед во Микропроцесорите и Микроконтролерите
Напојување
DC напојувањето мора да остане во опсег од 2.0–5.5 V за тој да може да си работи „среќно“,
иако верзиите слични на PIC16F84 можат да работат помеѓу 2.0 и 6.0 V.
За да се добие најниска струја при режим на спиење, треба сите I/O пинови да се држат на VDD
или VSS, да ги оневозможиме сите надворешни тактови (clock) и да го држиме master clear
пинот во состојба на логичко високо ниво – не во состојба на reset. Целта на сето ова е да се
заштитиме од билокакво варирање на напонот. Ако го направиме ова, струјат ќе биде многу
мала, освен во моментот на префрлување што предизвикува скок на струјата, па што поголема
фреквенција, скокот на струјата ќе биде поголем.
191
Вовед во Микропроцесорите и Микроконтролерите
Микропроцесорот ќе се разбуди ако: ако се појави reset од носење на напон на логичко ниско
ниво на MCLR пинот, „разбодувачки“ пулс може да пристигне и од единицата заштитник (ако е
овозможена) или „EEPROM write comlete“ сигнал.
Меморија
Како и обично, имаме два блока на меморија. Едниот е меморија за програмата, а другиот за
податоците. За максимална брзина, и две си имаат посебна магистрала, со што можеме да
пристапиме до двете мемории во еден такт.
Меморијата за програмата е сместена во flash меморија која е организирана како 1024 14.
Сите инструкции кај PIC16 серијата користат 14 битни инструкции.
Просторот за податоци е поделен на два дела, FSR (file select register, регистер за селектирање
на датотека) и GP (general purpose registers, регистри за опште намена), прикажани на слика
15.8.
192
Вовед во Микропроцесорите и Микроконтролерите
Сите регистерски датотеки се 8 битни широки и подредени во две банки наречени bank 0 и
bank 1. Треба да му дадеме инструкции на микроконтролерот која банка да ја користи и тоа го
постигнуваме со специјална инструкција која ни дава пристап до одредени page 1 registers.
Пристапите до нив се прикажани на слика 15.8. Microchip Technology има во план да ги
отстрани OPTION и двата TRIS регистери и наместо нив да се користи STATUS регистер. Ова
нема влијание врз употребата на овој чип, но не осигурива дека нема да бидат потребни
никакви модификации на софтверот при некакво идно надоградување.
Сите излези можат да бидат „извор“ или пак да „излеваат“ 25 mA и затоа можат да напојуваат
значајни надворешни кола без да бидат потребни дополнителни засилувачи. „Излевањето“ е
оптоварување помеѓу позитивниот Vcc и нискиот напон од излезот на портата, и изворот за
напојување на колата се обезбедува кога истото коло го поврзиме со излезниот пин и
заземјувањето.
PortA е 5 битна широка двонасочна порта, и секоја линија посебно се контролира, па така
некои лини можат да ни бидат влезови, а останатите излези. Изборот за влез и излез се прави
со ставање на 0 (излез) или 1 (влаз) во соодветниот бит во регистерот за насока на податоците,
TRISA.
Заедничко за сите уреди е тоа што, кога прв пат ќе се уклучи, тогаш портата е поставена како
влезна. Ова ни претставува заштитна опција, од ризикот при вклучување да не се испратат
некои случајни информации до она што е приклучено.
PortB е 8 битна широка двонасочна порта, каде секоја линија посебно се контролира преку
употреба на TRISB, исто како кај PortA. Секој пин од PortB има слаб внатрешен „додаток“ кој
може да се уклучуваат и исклучуваат од опционен регистер, RBPU. Овие „додатоци“ се
оневозможуваат кога портата се користи како излезна и исто така кога се вклучува
микропроцесорот.
Секој од пиновите RB4–RB7 ако се конфигурирани како влезови имаат функција interrupt-on-
change кои може да биде многу корисна. Ако еден или повеќе од овие пинови ја сменат
својата логичка состојба, ако се користат за читање, тоа предизвикува промена за интерапт кај
RB портата. Овој интерапт може да се искористи за да го рабуди микроконтролерот од „sleep“
режимот.
193
Вовед во Микропроцесорите и Микроконтролерите
Битовите се:
Бит 1 ни ја прикажува carry ситуацијата која што се појавува на 4-тиот бит на резултатот. Ова
исто така се нарекува и half-carry бит.
Бит 2 е знаменце за нула. Се поставува на ЕДЕН кога резултатот од последната аритметика или
логичката операција е НУЛА. Бидете претпазливи да не го прочитате погрешно ова.
Бит 5 се користи за селекција на една од двете мемориски банки. Тој се поставува на 0 кога
сакаме да пристапиме до Bank 0, а се поставува 1 ако сакаме да пристапиме до Bank 1.
Две функции се засегнати од prescaler-от, а тоа се, TMR0 (тајмер нула) и тајмерот заштитник.
Секој од овие кола ни дава излезен пулс кога ќе се заврши броењето и започнуваат повторно
од нула. Кај тајмерот заштитник, временскиот интервал е 18 ms, и ако ни е потребен подолг
врменски интервал, имаме три алтернативи. Едноставно можеме да го исклучиме
„заштитникот“, но, се разбира, тогаш ги губиме придобивките од тајмерот заштитник, а тоа е
кога микроконтролерот ќе се „зароби“ во јамка. Едноставен начин е ако во софтверскиот код
од програмата ставиме инструкција CLRWDT (clear watchdog timer) при секое завшување на
броењето, со што ќе го ресетираме тајмерот за уште едни 18 ms, и ова можеме да го
повторуваме толку пати колку што ни е потребно. Последно, можеме да го користиме
prescaler-от за да ја намалиме фреквенцијата на влезните пулсеви и оттаму да го зголемиме
времето за кое ќе ни генерира излезен сигнал.
Кај prescaler-от 3-ти бита 0, 1 и 2 т.е. PS2:PS0 (prescaler битови за селекција на брзината) и тие
ни овозможуваат осум алтернативи за брзината на пуслевите кои ќе ги користат тајмерот
заштитник и TMR0. Со поставување на трите бита на 000, тгаош имаме тактен сигнал кој е
194
Вовед во Микропроцесорите и Микроконтролерите
еднаков со надворешниот сигнал за такт или осцилаторот во чипот. Ако ги смениме во 001
тогаш ќе ја преполовиме фреквенцијата (т.е. ќе го дуплираме времето). 010 ќе ја намали
фреквенцијата за една четвтина од оригиналната, и како ова броење се зголемува, тогаш
фреквенцијата ќе се преполовува секој пат се додека не сигнеме да максималната вредност
111 со што ќе го зголемиме времето на „заштитникот“ за 128 пати. Како што е случај со TMR0,
кое е поделен на две вградени кола, тогаш ако за битовите имаме поставеност од 000, ќе
добиеме половина од фреквенцијата и тогаш максимумот 111 ќе ни ја намали фреквенцијата
за 256 пати.
Бит 3 PSA (prescaler assignment bit) – кај повеќето PICs, prescaler-от може да се примени врз
TMR0 тајмерот или пак врз заштитник тајмерот, но не и врз двата, па така овој извор го
правиме преку опциониот регистер. Бит 3 од опциониот регистер го поставуваме на 0 за да го
употребиме предимензионирањето (prescaler-от) врз TMR0, а 1 за да употребиме врз
заштитник тајмерот (watchdog).
Останатите битови
Бит 4 – T0SE (TMR0 source edge select). Со овој бит го контролирме зголемувањето на тајмерот
при која ивица да реагира, ако е „0“ тогаш броењето се врши при растечка ивица, а ако е „1“
тогаш при опаѓачка ивица.
Бит 5 – T0CS (TMR0 clock source select). Со ова избираме од каде да ни биде изворот на
пулсовите. Ако изборот ни е „0“ тогаш сме одлучиле да го користиме внатрешниот такт кој
доаѓа од CLKOUT пинот, а ако е „1“ тогаш броењето се врши со такт од RA4/T0CKI (timer zero
clock input). Оваа опција ни овозможува пулсовите на тактот да бидат генерирани од било
каков надворешен извор, на пример од детектор на конзерви на подвижна лента или пак од
вртежи на некој мотор.
Бит 6 – INTEDG (interrupt edge select). Ова е сличен со бит 4, но за разлика од него тука го
контролираме моментот кога се препознава интерпт сигнал од RB0/INT пинот. За „0“ ја
користиме опаѓачката ивица на напонот, а за „1“ растечката ивица.
Бит 7 RBPU (PortB pull-up enable). Со овој бит ги контролираме додатоците „pull-ups“ на PORTB
излезот. Ако имаме „0“ тогаш за секоја линија посебно од PortB имаме додаток (pull-up) кој по
потреба може да се вклучи или исклучи. Ако имаме „1“ тогаш сите се исклучени. Pull-up колото
(колото за додаток) е прикажано на слика 15.9.
195
Вовед во Микропроцесорите и Микроконтролерите
Кога прекинувачот е затворен со поставување „0“ на овој пин, тогаш тој го поврзува излезот со
позитивно напојување преку граничен отпорник на струјата. Ова не осигурува дека при
отсуство на било какви влезни податоци на портата, ќе го носиме во позитивна состојба, со
што нема никогаш да ни залута со носење на непредвидливи влезови. Ако се ипотребува
поголема вредност на отпорникот, тогаш влезниот напон полесно ќе го спушти напонот, и ова
се нарекува како „слаб“ додаток (pull-up). Така, со намалување на отпорникот ќе го одредиме
влезот на портата да остане висока вредност, и ова се наведува како „силен“ додаток (pull-up).
PC ни претставива програмски бројач (program counter) кој води сметка која инструкција да се
изврши. Тој е 13 битен регистер, кој е поделен на PCL за долниот бајт и PCH за горниот бајт.
Неговото однесување е заедничко со сите други микроконтролери и микорпорцесори какви
што ги опишавме во Глава 8.
Stack (стек)
Овој регистер ги чува адресите кои се јавуваат при интерапти. Зачувува дури до осум 13 битни
адреси. Повторно, повеќе детали има во Глава 8.
Ова е специјален регистер кој всушност е мемориската локација 2007Н до кој може да се
пристапи само при програмирањето. Непрограмираните пинови се читаат како „1“.
Битовите од 13–4, се користат за заштита на програмскиот код, дали да може да се чита после
завршувањето на програмирањето. 1 = без заштита, 0 = цела програмска меморија е кодирана.
00 = LP осцилатор
01 = HS осцилатор
10 = XT осцилатор
11 = RC осцилатор
Осцилатори
На слика 15.10 се прикажани некои кристални или керамички резонатори, и осцилаторите се
поделени во фреквентни групи како:
196
Вовед во Микропроцесорите и Микроконтролерите
Овие се како алтернативи за кристали употребени како освилатори. Општо тие се полесни,
повеќе отпорни на потреси и обично тие се нешто помали и поефтини. Недостаток е тоа што
тие немаат совршена фреквентна прецисност или стабилност, и со голема почит се вбројуваат
помеѓу RC мрежите и кварцните кристали.
Резиме за интераптите
PIC16F84A има четири извори на интерапти:
197
Вовед во Микропроцесорите и Микроконтролерите
Квиз 15
198
Вовед во Микропроцесорите и Микроконтролерите
16
Употреба на PIC микроконтролер во реален
проект
Изборот на PIC микроконтролер и многу погоден за почеток во оваа област, иако, како што
видовме дека постои огромни области во кои се преклопуваат микропроцесорите и другите
дизајни на микроконтролерите.
Една погодност, е тоа што Microchip Technology го превземаа, многу сериозно, RISC концептот,
кој има само 35 инструкции, и од овие се потребни само неколку за да се напише корисна
програма.
Сите движења на податоците се базирана врз еден регистер наречен „W“ (working), и има
скоро иста функција како акумулаторот во првите процесори, како на пример 6502.
Да започнеме
За да програмираме PIC, потребно ни е да имаме копија од софтверските инструкции и повеќе
детали за распоредот на регистрите.
Хардвер
Да го поедноставам ова, треба да купиме микроконтролер и да го поврзиме за да можеме да
го програмираме.
199
Вовед во Микропроцесорите и Микроконтролерите
пакување. Нема минимална работна фреквенција, и колку побавно работи, толку помалку
троши енергија.
Слика 16.1
На слика 16.2 е прикажано најосновно коло, во кое е вклучено само напојување на чипот и
позитивно напојување за да се спречи MCLR (master clear) од ненадејно ресетирање на PIC-от
во текот на програмата. Освен ако тие не се врзани за одредена вредност, тогаш сите
неповрзани влезови ќе варираат и може да предизвикат случајно префрлување.
Слика 16.2
Подоцна, откога ќе ја напишиме програмата мора да „му кажеме“ на асемблерот, кој тактен
сигнал ќе го користиме. Во нашата програма PIC-от ќе очекува тоа да биде RC осцилатор. Оваа
информација, како алтернатива, можеме да ја наведиме во програмата. Тоа е наш избор. Но е
нешто полесно тоа да го сториме во фазата на асемблирање, но во секој случај мора да го
направиме тоа.
200
Вовед во Микропроцесорите и Микроконтролерите
Софтвер
Има три важни информации кои треба да ги знаеме пред да ги употребиме регистрите. Прво,
треба да ги знаеме имињата и адресите на датотеките, како што видовме во датотека на
регистерската мапа на слика 15.8. Вториот чекор е да ја знаеме функцијата на секој бит од
секој регистер, ова го има во Додаток А, и конечно, објаснувањето на овие функции можеме
да ги најдеме во Додаток Б.
Асемблер-от е дел од PICSTART PLUS развојниот систем, но постојат и други асемблери со кои
можеме да обработиме код за сите PICs контролери. Кодот кој го пишуваме како влез во
асемблерот се нарекува „изворен код“, „source code“, а кодот кој го добиваме од асемблерот
се нарекува „објектен код“, „object code“. Објектниот код навистина е бинарен, но за да ни е
полесен за разбирање, обично на екран се прикажува во хексадецимален формат.
Важна забелешка
Кога ја пишуваме програмата не смееме да оставаме никакви празни места во инструкцијата
или во податоците.
Чекори на програмирање
Цел на нашата прва програма
Сакаме да направиме нешто навистина едноставно, но тоа да не биде нешто што ќе се случи
случајно. Ќе ги конфигурираме сите излези на PortB, и потоа ќе направиме излезен сигнал кој
постојано се off, on, off, on, off, on, off, on. Така ќе можеме да поврзиме серија на LED диоди на
излезните пинови, кои наизменично ќе се вклучуваат и исклучуваат во зависност од излезниот
сигнал.
Програмта започнува:
201
Вовед во Микропроцесорите и Микроконтролерите
Овде вреди да спомниме дека сè што ќе се напише после точка запирка е само белешка за нас
и е игнорирано од асемблерската програма. Ова се нарекува поле за коментар. Секогаш вреди
да го користиме ова поле за да објасниме што прави програмата, и честопати ова ни зачувува
драгоцено време да запомниме што сме сакале да направиме при првото пишување на
програмата. Ова може да се најде и во поголем проблем, ако некој друг ја напише програмата
и се разболе и не остават нас, ние да откриме зошто не работи програмата.
2 Сега сакаме да ја прилагодиме PortB да работи како излез. За ова е потребно да ставиме 0
на секој контролен бит од регистерот за движење на податоците, како што гледаме на слика
15.8, тоа е TRISB и е регистер број 86. За да го сториме ова, треба да го избришиме W
регистерот со употреба на CLRW инструкцијата, и потоа да ја копираме оваа нула во регистерот
86. За ова се потребни две додатни инструкции, па така нашата програма да сега ќе биде:
Програмата сега е:
202
Вовед во Микропроцесорите и Микроконтролерите
6 На почетокот од програмата може да ја користиме директивата ORG што има значење „origin
(почеток)“ и ја дава стартната адреса на асемблирараната програма. И ова го додадовме во
нашата конечна програма. Ако не го направиме ова, асемблерот ќе претпостави дека тоа е
адресата нула, па во нашиот случај нема да направи некоја разлика ако ја додадеме или ја
испуштиме оваа директива. Кога се ресетира PIC-от, тој секогаш оди на адреса 000, па ако
сакаме програмата да започнува од некоја друга адреса треба да ставиме GOTO инструкција во
адресата 000 за да му кажеме на микроконтролерот од каде да започне. Запомнете дека ORG е
инструкција само за асемблерот која му кажува од каде да почне да ја запишува програмата –
PIC-от не знае ништо за ова бидејќи директивите не се конвертираат во програмски код.
203
Вовед во Микропроцесорите и Микроконтролерите
LED диодите ги има во различни бои и големини, и катодата треба да се поврзи за помал
позитивен напон од анодата. Катодата, во основа, ја препознаваме или по пократкиот
конектор или на таа страна од телото на диодата е зарамнето.
Вредности на компонентите
Гледајќи ги податоците за стандардна црвена LED диода, кога светат типичниот напон (Vf) низ
нив е 2 V со максимална струја (If) од 20 mA. Малото ‘f’ стои за „forward, напред“. Светлината се
намалува (изгубува) со намалување на струјата под својата максимална вредност, и не е многу
добро, но е сосема разумно ако LED диодите работат, да кажеме со 10 mA.
Уште лабели
Употребата на лабелите не само што ни ја прави програмта почитлива, туку ни овозможува
полесно да ја модифицираме. На пример, ако ја ставиме вистинската адреса наместо лабела и
потоа ја модифицираме програмата со додавање на додатна инструкција, тогаш вистинските
адреси ќе ни се разместат за да обезбеди место за новата инструкција, со што нашата стара
адреса станува несоодветна. Програмата нема да работи и може да ни одземи часови додека
да увидиме што сме сториле.
Има уште една корисна асемблерска директива, EQU, која е скратеница од equates
(изедначува) или „is equal to (е еднакво на)“. Оваа директива можеме да ја употребиме за да ја
направиме програмата почитлива со заменување на некои броеви со зборови. На пример,
регистерот 86 е PortB Data Direction регистер, и програмата полесно ќе се чита ако овој број го
замениме со некои име. Ова ќе го сториме со додавање на линијата: PortBDDR EQU 86 пред
сите линии на програмата, и кога асемблерот ќе го сретне името PortBDDR ќе го замени со 86.
Ова нема никакво влијание врз програмата, но ни го поедноставува животот.
Ако додадиме уште неколку лабели, тогаш крајната програма може да се запише како:
;EQUATES
PortBDDR EQU 86 ; регистерот за насока на податоците на PortB
; е регистерот 86
PortB EQU 06 ; податочниот регистер PortB
; е регистерот 06
Status EQU 03 ; Статусниот регистер (Status register)
204
Вовед во Микропроцесорите и Микроконтролерите
; е регистерот 03
RP0 EQU 05 ; Bank1 ја селектираме преку бит 5
Data EQU 55 ; податокот кој го користиме е 55Н
BSF Status,RP0 ; Постави го бит 5 од регистерот 3 за да ја селектираме
; Bank 1
CLRW ; става нула во регистер W
MOVWF PortBDDR ; ја копира нулата во регистер 86 кој е регистер за
; движење на податоците за PortB
BCF Status,RP0 ; го брише бит 5 од регистер 3
MOVLW Data ; ова е излезниот податок кој ќе ни даде секвенца од
; on, off
again MOVWF PortB ; ова го копира податокот во PortB
GOTO again ; оваа линија го присилува микроконтролерот да се
; врати на претходната линија
END ; крај на нашиот код што треба да се асемблира
Со целосна употреба на лабелите, ја презапишавме нашата програма без употреба на било кој
број воопшто. Ова е прашање на избор – сите лабели, неколку лабели или без лабели, како
што сакаме ние.
Употреба на кристал
Ова ни дава поголема прецизност на брзината на тактот, па така може да напишеме некоја
програмата која ќе ја користиме за некоја реална цел, на пример ако сакаме да прикажеме
секвенца која треба да се извршува со одредена брзина.
205
Вовед во Микропроцесорите и Микроконтролерите
Модификација на програмата
Во последната програма ние го контролиравме напонот на секој излез од PortB. Со мали
промени можеме да носиме било која комбинација на напони за да го контролираме било кои
надворешно коло. Иако и првото коло имаше значајна можност за контрола, сега ние ќе ја
прошириме оваа можност со броење на секвенцата на излезниот сигнал.
Сите програми се направени врз грбот на други програми кои веќе претходно сме ги
употребиле, со што си заштедуваме значајно време со чување на копии од нашите корисни
програми. Ова убаво е демонстрирано во следниов пример.
Програмата се состои од три чекори, од кои два веќе сме ги дизајнирале и тестирале, па
знаеме дека работат. Ако новата програма не ни работи, не треба да почнуваме од почеток (од
скици), знаеме дека две третини од нив се ОК. Ова е многу моќен метод на дизајнирање
програми и достапни се цели библиотеки од програми, па така развојот на нови програми
може да се сведе на спојување на веќе направени програмски делови.
Кога правиме промени на претходна програма, многу важно е да ја зачуваме новата верзија
под ново име, па така, дури и при катастрофа, да можеме да почнеме од почеток.
ORG 000
BSF 3,5
CLRW
MOVWF 86 ; насока на податоците за PortB = излез
; PortB data direction = output
BCF 3,5
MOVLW 55
MOVWF 06 ; PortB data set to a start value
; стартна вредност на податокот во PortB
Во оваа фаза можеме, се разбира, како стартна вредност за излез да ја поставиме било која
вредност помеѓу 00Н и FFH, што бинарно е B’00000000’ и B’11111111’.
Имаме само една нова инструкција за која треба да бидеме загрижени: INCF f,d. Оваа
инструкција ја инкрементира или ја зголемува вредноста за селектираната датотека „f“ за 1, и
новата вредност оди на место кое е зависно од „d“. Ако „d“ е 0, тогаш новата вредност се става
во W регистерот, но ако е 1, тогаш новата ведност се враќа во оној регистер што се користи.
206
Вовед во Микропроцесорите и Микроконтролерите
Податочниот регистер за PortB е регистерот 06, па така кодот INCF 06,1 ќе ја земе тековната
ведност од податокот во PortB, ќе ја зголеми за 1 и резултатот ќе го врати во податочниот
регистер за PortB, така во нашиот пример вредноста од 55 ќе се промени во 56 и излезните
напони на пиновите ќе се сменат од 01010101 во 01010110.
ORG 000
BSF 3,5
CLRW
MOVWF 86 ; насока на податоците за PortB = излез
; PortB data direction = output
BCF 3,5
MOVLW 55
MOVWF 06 ; PortB data set to a start value
; стартна вредност на податокот во PortB
again INCF 06,1
goto again ; go back and INCF again
; врати зе назад и изврши ја INCF повторно
end ; end of source code
; крај на изворниот код
Забавување на работите
Ако сакаме да ги забавиме работите, можеме да му додели нешто да работи
микроконтролерот, само да го држиме зафатен. Има NOP инструкција, која апсолутно не
работи ништо, но троши еден инструкциски циклус. Бидејќи не прави ништо, не е важно колку
ќе имаме во програмата, или пак каде ќе ги користиме. За значајно доцнење ќе ни бидат
потребни стотина, што претставува не елегантен начин за да си го решиме проблемот.
207
Вовед во Микропроцесорите и Микроконтролерите
Инструкцијата што ќе ја користиме овој пат е DECFSZ f,d. Оваа инструкција е направена само за
работа од ваков вид на броење. Го намалува одбраниот регистер и ако d = 0 резултатот оди во
W регистерот, но ако е 1, тој ќе се врати во истиот регистер. За нашата цел, во нашиот код ќе ја
вметнеме инструкцијата DECFSZ 20,1. Ова ќе ни ја намалува вредноста во регистерот 20, и
резултатот ќе го враќа назад во регистер 20. Кога овој регистер стигне до нула, ќе ја пропушти
следната инструкција, за да престане да се врти во јамката, и ќе оди на следната инструкција.
Побавно броење
Уште еднаш, ова користи нешто од нашата претходна програма.
ORG 000
BSF 3,5
CLRW
MOVWF 86 ; насока на податоците за PortB = излезна
BCF 3,5
MOVLW 55
MOVWF 06 ; стартна вредност на податокот во PortB
again INCF 06,1
MOVLW 30 ; стави во W 30Н
MOVWF 20 ; стави го бројот 30Н во регистерот 20
count DECFSZ 20,1 ; намали ја вредноста во регистерот 20
goto count ; намалувај се додека не стигнеш до нула
goto again ; врати се да ја заголемиш вредноста во PortB
end
208
Вовед во Микропроцесорите и Микроконтролерите
Пресметување на доцнењето
Почнувајќи од моментот кога се зголемува PortB:
За MOVLW потребен е 1 такт.
За MOVWF потребен е 1 такт.
За DECFSZ потребен е 1 такт при нормално извршување, но за да излезе од јамката потребно е
2 такта.
Бидејќи регистерот е наполнет со хексадецималниот број 30, кој е 48 декадно, тај ќе ја
извршува инструкцијата со 1 такт 47 пати, и 2 такта за да излезе од јамката. Ова ни дава фкупно
49 такта.
goto count ќе се изврши 48 пати и за секој пат е потебно 2 такта, што ни дава вкупно 96 такта.
goto againt ќе се изврши само еднаш за да се врати кај PortB, и ова се уште 2 такта.
Конечно, за INCF потребно е 1 такт за да ја зголеми вредноста на PortB.
Подолги доцнења
Еве ја нашата претходна програма, но приметете како се користи „count“ јамката за доцнење
како потпрограма.
209
Вовед во Микропроцесорите и Микроконтролерите
ORG 000
BSF 3,5
CLRW
MOVWF 86 ; насока на податоците за PortB = излезна
BCF 3,5
MOVLW 55
MOVWF 06 ; стартна вредност на податокот во PortB
again INCF 06,1
MOVLW 30 ; стави во W 30Н
MOVWF 20 ; стави го бројот 30Н во регистерот 20
CALL count
goto again ; врати се да ја заголемиш вредноста во PortB
end
Потпрограмата се нарекува count и има инструкција RETURN на крајот.
Главната програма има инструкција CALL count што значи „оди и изврши ја потпрограмата која
се вика count“.
CALL count
CALL count
CALL count
Па ако имаме потреба да вметнеме доцнење од 2.3 секунди, едноставно само ќе додадеме:
CALL 1second
CALL 1second
CALL 0.1second
CALL 0.1second
CALL 0.1second
Сите потпрограми ќе ни завршуваат со ист код RETURN, па како тие знаат каде да се вратат?
Одговорот е серија од мемориски локации наречени стек (stack). Во него се чуваат сите адреси
кога се појавило CALL, се испраќа релевантната адреса во стекот и при секое појавување на
секвенца RETURN, адресите ќе се празнат од стекот во потребниот редослед. Стекот има firs-in
last-out (FILO) (прв-влези последен-излези) организација. Повеќе за стекот види во Глава 8.
210
Вовед во Микропроцесорите и Микроконтролерите
3 Кај PIC повеќето инструкции се извршуваат во еден инструкциски такт кој е ¼ од брзината
на осцилаторот, т.е. фреквенцијата. За да го промениме доцнењето, секогаш можеме да ја
смениме фреквенцијата. Има две продобивки, помала фреквенција ја намалува
потрошувачката, и нема долна граница за брзината за PIC, за разлика од некои уреди.
Општо земено се употребуваат потпрограми, бидејќи често има други ограничувања во
однос на брзината.
Квиз 16
1 RETURN (врати):
a. Се употребува само како дел од јамка за доцнење.
b. Е билет за да можеш да се вратиш дома.
c. Е асемблерска директива.
d. Е инструкција која се наоѓа на крајот од потпрограмата.
2 ORG:
a. Никогаш не потребно бидејќи PIC секогаш започнува од адресата 0000.
b. Е асемблерска директива.
c. Е скратеница од организација.
d. Е инструкциски код.
3 Асемблерот конвертира:
a. Декадно во хексадекадно.
b. Главните кодови во потпрограми.
c. Изворниот код во објектен код.
d. Објектен код во бинарен код.
4 При избор на тактно коло (clock circuit):
a. Керамичкиот резонатор не е толку прецизен нути толку робусен (отпорен) како
кристалот.
b. RC колото работи четири пати побрзо од фреквенцијата на кристалот.
c. Кристалот ни дава најпрецизна и најстабилна фреквенција.
d. Се употебува RC коло и кристал за да се добие прецизност и отпорност.
5 Кога користиме кристал со 4 MHz фреквенција, нормалното време на извршување е:
a. 0.25 microseconds (микросекунди).
b. 1 millisecond (милисекунда).
c. 4 millisecond (милисекунда).
d. 1 microseconds (микросекунди).
211
Вовед во Микропроцесорите и Микроконтролерите
17
Интерфејсинг
Интерфејсинг е процес на поврзување на микропроцесорот со остантото коло и надворешните
уреди. Дури и во наједноставниот компјутерски систем, имаме некој влезен уред, како
тастатура. Па како, микропроцесорот знае дека сме притиснале тастер? Кога испраќаме текст
до печатачот, како печатачот не известува дека е спремен за уште влезни податоци (текст)?
Во микропроцесорски базиран систем за општа намен, ако прави нешто корисно, треба да има
влезови и излези. Па затоа, надворешните уреди мора да комуницираат со микропроцесорот.
Во некои случаеви, микропроцесорот ја зема работата во свои раце, и ги испраќа податоците
како дел од неговата програма, но дури и во овој случај, нормално, дозволува да се помогне
со надворешен уред.
Интерапти
Со интераптите се запознаевме во Глава 8, кога ја разгледавме улогата на интерапт
знаменцето во статусниот или flag регистерот, но сега ќе навлеземе малку подлабоко во
системот.
Сите микропроцесори има интерапти кои можат да се иницираат или од софтвер кој е
стартуван во тоа време или од надворешно хардверско коло. Микропроцесорите се
разликуваат во некои детали во нивниот одговор на хардверски интерапт и во бројот на
различни интерапт пинови кои ги нудат. Деталите секогаш се запишани во техничките
податоци кои што се доставуваат со уредот.
Сличностите се следни
Има два основни типа на хардверски интерапти. Првиот е interrupt request (барање за
интерапт) или IRQ (или INTR) пин. Ова му кажува на микропроцесорот да обрне малку
внимание на уредот. Бидејќи ова е барање (request), а не е наредба (order), тогаш
микропроцесорот слободно може да одговори „да“ или „не“, или пак „да, но не во овој
момент – почекај додека не бидам спремен“. Ова не вклучува некаква интелигенција како дел
од микропроцесорот – туку треба софтверот кој што е стартуван во тоа веме да му каже што да
одговори. Во отсуство на инструкција, нормално, се прифаќа интераптот. Ако на одреден
интерпат пин му се каже да не одговара на интерапти, тогаш велиме дека тој интерапт е
„маскиран“ (masked).
212
Вовед во Микропроцесорите и Микроконтролерите
Првите два избора е промена на нивото (јачината) на напонот. На пинот може да имаме +3.3 V
или било која вредност што ни претставува „висок“ напон, и при пад на напонот на 0 V, тој го
препознава интераптот. Ова го нарекуваме „ниско активен“, т.е. кога напонот на пинот се
променува на ниско ниво тогаш се препознава интераптот. Алтернативно, тој може да биде на
0 V и да се активира со зголемување на напонот. Ова го нарекуваме „високо активен“.
Кога еднаш ќе се активира интераптот, сигналот мора да се врати на својот нормален напон
пред повторно да се активира. Влезот е маскиран, ако стартуваната програма го заштитува
интерапт пинот, од прекинување на програмата, иако се појавило активно ниво на напонот за
интерапт.
Кога ќе се појави интерапт, се активира програма наречена „first level interrupt handler“ т.е.
FLIH. Функцијата на FLIH е да го идентификува уредот што го предизвикал интераптот и да ја
213
Вовед во Микропроцесорите и Микроконтролерите
Како знае кој уред бара помош? Има две можности, анкетирани (polling) инраптите и посочени
(vectored) интерапти.
Ова е бавен, но сигурен начин. Секој можен уред се испрашува со „дали си тоа ти?“ сигнал, се
додека не се најде изворот на интераптот. Редот на испрашување е подреден според
приоритет, па така најважнниот уред се испрашува прв.
Веднаш од кога ќе се појави интерапт, FLIH дава „кој е таму?“ сигнал, и потоа колото кој го
пратил интераптот испраќа идентификационен сигнал на податочната магистрала. Овој сигнал,
вообичаено е адреса со која се идентификува делот од програмата што треба да се изврши.
Парност
Ако влезете во преполна соба и кажете само „Хамбургери“ и ништо друго, повеќето ќе се
обратат до своите соседи и ќе запрашаат „Што е ова?“, а некои само ќе стојат збунето. (некои
дури може да не разберат убаво и да се почувствуват навредени.) Како форма на
комуникација, ова не е многу ефикасно. Ако пробате со „Ручекот ќе содржи хамбургери“, сите
ќе ја разберат твојата порака.
Првиот обид беше многу ефикасен во однос на бројот на употребени зборови, но веројатно не
е ефикасен за комуникација, бидејќи повеќето луѓе не разбраа што сакавме да кажеме. Во
вториот обид, користевме четири збора за да бидеме сигурни дека сите ќе нè разберат. Ова се
нарекува додавање „вишок“ (редудантност). Колку повеќе додаваме вишок (редудантност),
толку поточна, и посигурна ќе биде пораката, но комуникациониот систем станува побавен и
214
Вовед во Микропроцесорите и Микроконтролерите
помалку ефективен. Податоците кои се вратени од вселенските сонди користат многу високо
ниво на редундантност, над 96%, што овозможува корекција на навистина измешаните
сигнали, поради ниските нивоа на моќност кои се вклучени.
Овој едноставен пристап може лесно да се измами, ако имаме две грешки, тогаш бројот на
единици ќе биде парен и податокот ќе помине како точен. И, уште едно разочарување, ако се
појави грешка, не сме во можност да кажеме кој бит е грешен за да го поправиме. Кога се
користи овој систем, се испраќа сигнал за грешка на предавателот, кој побарува повторно да ја
прати пораката, но ова претпоставува дека предавателот и приемникот се поврзани меѓу себе.
Може да го измениме овој систем за да го направиме да може да врши ограничена автоматска
корекција.
0 0 1 0
1 1 1 1
0 1 0 1
1 0 1 1
Чекор 2 Додади ги битовите за парност. На горната редица, го имаме бројот 0010 кој
вклучува само една 1-ца. Во овој систем, кој го нарекуваме „парна“ парност, додаваме
уште една 1-ца, ако е потребно да добиеме парен број на 1-ци во првата редица.
Бидејќи имаме една 1-ца, додавеме уште една „1“ на крајот. Тоа сега ќе изгледа вака:
0 0 1 0 1
1 1 1 1
0 1 0 1
1 0 1 1
Горната редица, сега има парен број на 1-ци. Следната редица има четири 1-ци, што е парен
број на 1-ци, па така нема потреба да додадеме уште една 1-ца. Па затоа додаваме 0:
0 0 1 0 1
1 1 1 1 0
0 1 0 1
1 0 1 1
215
Вовед во Микропроцесорите и Микроконтролерите
Третата редица ќе ја комплетираме со „0“ бидејќи содржи парен број на „1-ци“ и последната
редица има три „1-ци“ и треба да додадеме уште една 1-ца. Резултатот од ова е:
0 0 1 0 1
1 1 1 1 0
0 1 0 1 0
1 0 1 1 1
Чекор 3 Сега имаме пет колони, и треба во секоја да додадеме „1-ца“ на ист начин за да
го направиме вкупниот број на „1-ци“ парен. Првите две и последната колона содржат
две „1-ци“, па ќе додадеме нули. Третата и четвртата колона имаат по три „1-ци“, па
така треба да додадеме уште по една „1“ во секоја колона. Резултатот е:
0 0 1 0 1
1 1 1 1 0
0 1 0 1 0
1 0 1 1 1
0 0 1 1 0
Забележете дека сега добивме вкупно 25 битови кои треба да се пренесат. Од овие 16 бити се
податокот, а 9 бити се додадени за да се провери точноста на податокот. Па така, конечниот
сериски пренос ќе биде 0010111110010101011100110. Ова значи дека 9 од 25 или 36% од
преносот, всушност не е податок и ова го претставува вишокот т.е. редундантноста.
Да видиме како ова работи. Ќе претпоставиме дека се појавила грешка, и еден од битовите се
прима погрешно, па еве го приемниот податок:
0010111110010101001100110
0 0 1 0 1
1 1 1 1 0
0 1 0 1 0
1 0 0 1 1
0 0 1 1 0
216
Вовед во Микропроцесорите и Микроконтролерите
Грешка се појави во третата колона и четвртата редица. Бидејќи се знае дека овде имаме
грешка и бидејќи имаме избор само од 0 или 1, тогаш лесно можеме 0-та да ја промениме во 1
и да го поправиме податокот.
0 0 1 0 1
1 1 1 1 0
0 1 0 1 0
1 0 1 1 1
0 0 1 1 0
Во овој пример, одбравме да користиме парна парност, т.е. секоја редица и колона ја
направивме да има парен број на 1-ци. Ова ќе работи сосема исто и ако користиме непарна
парност, т.е. ако бројот на 1-ци го направиме непарен. Исто така ќе работи и ако ги броиме
нулите наместо единиците. Ако се случи повеќе од една грешка, ќе не предупреди дека има
грешка, но нема да бидеме во можност да ја поправиме. Ако пробате, ќе видите дека ќе
имаме четири можни грешки за настанати две грешки т.е. девет за три грешки.
Пример
Поправете го приемниот податок кој има една грешка. За да се овозможи автоматска
корекција, употребена е непарна парност на 1-ци.
1 1 0 1 0
0 1 0 0 1
1 1 1 0 0
1 0 1 0 1
0 1 1 0 1
1 1 0 1 0
0 1 0 0 1
1 1 1 0 0
1 0 1 0 1
0 1 1 0 1
217
Вовед во Микропроцесорите и Микроконтролерите
1 1 0 1 0
0 1 0 0 1
1 1 1 0 0
1 0 1 0 1
0 1 1 0 1
Чекор 4 Податокот каде што се сечат колоната и редицата е грешен. Па така едноставно
ја променуваме 1-цата во 0.
Чекор 5 Исфрлете ги битовите за парност за да го добиеме оригиналниот податок
1101000011101010 0110
Пренос на податоци
Најосновен начин за да испратиме информација од едно место до друго, е едноставно да ги
поврзиме со проводник и на едниот крај да носиме напон. Со варирање на напонот, можеме
да испратиме различно ниво на напон, што може да ни биде дури и говор или музика. Ова се
нарекуваат аналогни сигнали и имаат многу недостатоци.
Главниот недостаток е ефектот од шум. Како што патува сигналот низ проводникот, тој
ослабува и се вгнездува шум во него, од различни електро-магнетни сигнали и од вибрациите
на молекулите во проводникот. Целокупниот ефект е што сигналот станува лош и ослабен.
Немаме вакви проблеми со дигиталните сигнали, бидејќи знаеме дека сите имаат правоаголен
облик, па така можеме да користиме засилувач кој ќе ги регенерира облиците на сигналот и
притоа да го отфрли ефектот од шумот. Ако се соочиме со испраќање на некој аналоген сигнал,
како што е говорот или музика, наша прва задача е да го конвертираме во дигитална форма.
Има неколку различни дизајни на ADC (аналогно-дигитален конвертер), кои се базираат на три
основни различни пристапи.
218
Вовед во Микропроцесорите и Микроконтролерите
Flash converter
Првиот дизајн е наречен flash конвертер или паралелен енкодер. Овде се користат кола
наречени компаратори. Компараторот има два влеза, еден е аналогниот напон кој треба да се
конвертира, а другиот е познат референтен напон. Се што бараме од компараторот е да ни
одговори на едноставното прашање: „Дали аналогниот влезен напон е повисок или понизок
од нашиот референтен напон?“ Тој ни одговара со промена на излезниот напон на логичка 1
(единица), ако е повисок, или логичка 0 (нула) ако е понизок. Тие се многу прецизни, и скоро
се нема случено за да даде два различни напона за едно исто влезно напонско ниво. (види
слика 17.2).
Влезни напони од 2.4 V или 2.9 V, со користење на истите компаратори, ќе ни дадат ист
резултат, со што ќе имаме ист излезен дигитален сигнал. Ваквите грешки се јавуваат во сите
аналогно-дигитални конвертори. Можеме да ја намалиме големината на грешка со
зголемување на бројот на компаратори, за да ни претставуваат повеќе нивоа. Реалните имаат
помеѓу 16 и 1024 различни нивоа.
Успешна апроксимација
Ако употребуваме 3 битен дигитален сигнал за конверзија на аналоген напон помеѓу 0 V и 4 V,
можеме да имаме комбинација од 3-те бита за да ни претставуваат 4 V, 2 V и 1 V. Еве како ќе
одговори колото за влез од 3.5 V.
219
Вовед во Микропроцесорите и Микроконтролерите
Колото ги испробува сите можни вредности се додека не го најде оној кој дава најблизок, но
помал, резултат од влезниот сигнал. Исто како и претходно, колку повеќе битови користиме,
толку е попрецизен резултатот.
При избор на ADC кој што ќе сакаме да го користиме, треба да ги споредиме следниве
критериуми.
220
Вовед во Микропроцесорите и Микроконтролерите
Ако наместо осум употребиме 1024 компаратори, тогаш растојанието помеѓу напоните ќе се
намали од 1 V на 7.8mV, што ни претставува квантизациона грешка. Без разлика кој метод се
користи за A-D конверзија, секогаш е присутна квантизациона грешка.
Битови (Bits)
Повеќе битови подобро. Најверојатните вредности ќе бидат помеѓу 8 и 16.
Брзина
Овде имаме два фактори. Колку често може да се добие ажурирана вредност за сигналот и
колку добро може да се следат некаквите промени што настануваат? Дури и да не сакаме
семплирањето, земањето на одбироци, да биде со многу голема брзина, сепак сакаме при
промена на влезната вредност многу брзо тоа да се увиди и на реално измерената вредност,
т.е. на излез.
Кога станува збор за брзина, неможете да го победите flash конверторот. Тој може да зема
одбирок со пауза помала од 3 ns, во споредба со многу поволните конвертори, ramp (рампа)
генератори и типот со успешни апроксимација, кои имаат пауза од 10 µs.
Да претпоставиме дека имаме 4 битен дигитален сигнал, кај кој најзначајниот бит може да
генерира струја од 8 mA, а останатите може да произведат, по ред, 4, 2 и конечно 1 mA. Ако
дигиталниот сигнал кој што треба да го конвертираме е 10112, тогаш првиот, третиот и
четвртиот извор на струи ќе се активираат и ќе ни дадат вкупно 8 + 2 + 1 = 11 mA (види слика
17.4).
221
Вовед во Микропроцесорите и Микроконтролерите
Кај некои DAC конвертори крајниот излез е промена на струјата, но кај други таа се претвара во
напон. Ова зависи од тоа какво интегрирано коло сме избрале да користиме. Кај оние што
дават напон на излез, вкупната струја поминува низ отпорник. Ако избереме убава вредност,
како 1kΩ, тогаш напонот на отпорникот ќе биде 11 mA 1 kΩ = 11 V.
На сличен начин, можеме да приметиме дека сите бинарни вредности помеѓу 0000 и 1111
можат да се конвертираат во напони помеѓу 0 V и 15 V. Има неколку спецификации кои треба
да се проверат пред да одлучиме кој конвертор ќе го користиме.
Резолуција (resolution)
Ова е бројот на дигитални битови кои се користат за да се конвертираат во аналоген напон.
Можни типични вредности се од 4 до 18 битови. Како настанува промена на дигиталниот влез
со промена на еден бит, на пример 1000 во 1001, резултантниот напон или струја се зголемува
со дискретен чекор. Големината на овој чекор зависи од бројот на битови кои се употребени
споредено со максималната вредност на излезната струја или напон.
На пример, ако користиме 4 битови тогаш ќе имаме вкупно 16 различни чекори, и ако
максимумот е во 8 V, секој чекор ќе претставува промена на напонот за 0.5 V. Така, постојаното
зголемување на дигиталниот сигнал ќе предизвика аналогниот напон да се зголемува со мали
дискретни чекори, како скалила. Ова е многу сличен случај со квантизационата грешка.
Брзина
Брзината со која работи многу зависи од тоа кој чип го разгледуваме. Имаме конвертори кај
кои времето на конверзија е премногу брзо, 1 ns, и послаби конвертори со 5 µs.
Паралелна конекција
Има неколку различни стандарди кои се употребуваат за паралелна конекција на податоци, но
една од најпознатите, широко користена, и најсигурна, беше произведена од Centronics.
Centronics системот испраќа осум бита во исто време и користи систем од 36 plug and socket
(клин и џеб приклучок). За да испрати податоци, има четири основни контролни сигнали, како
и осум податочни линии. Исто така, предвидува варијанти на други контролни линии кои
можат да се користат, ако е потребно.
222
Вовед во Микропроцесорите и Микроконтролерите
Важна работа што треба да ја запомните околу овие стандарди е тоа што не треба да ги
користите сите конекции, но оние што ќе одлучите да ги користите треба да одговараат со
спецификацијата и да бидат на правите пинови. Ова нè осигурува доколку го приклучиме за
ново парче опрема, може нема да работи, но барем нема да го оштети.
Има неколку точки кои треба да ги спомнеме. Веќе го спомнавме проблемот со времето на
растење во Глава 7. Запомнете дека не можеме да го промениме нивото на напонот
инстантно. Ова може не изгледа многу важно доцнење кога мислиме на вклучување на
светлата во нашата соба, но кога микропроцесорот се справува со податоци од милиони бити
во секунда, ова доцнење може да биде многу важно и честопати предизвикува потфрлање на
колото кое „треба“ да работи. Повеќето брановидни диаграми краевите на правоаголниот
бран го прикажуваат со закосени линии наместо вертикални.
На слика 17.7 е прикажан процес на пренос на осум битен податок, од микропроцесорот кон
надворешен печатач или друг уред.
223
Вовед во Микропроцесорите и Микроконтролерите
Стандардот овозможува многу други контролни проводници за друга намена. Во овој пример,
осумте податочни проводници се користат како излези од микропроцесорот, но сосема е
можно нив да ги искористиме за да носат влезни податоци, иако ова не е дозволено во
дизајнот на компјутерите.
Сериски пренос
За да се испрати информација во сериска форма, потебно е само едноставна комуникациона
врска, но ова неизбежно е побавно од паралелен пренос, бидејќи податоците се испраќаат бит
по бит.
UARTs
За да ги претвориме паралелните податоци од податочната магистрала на микропроцесорот
во сериски пренос, можеме да користиме шифт регистер како во Глава 6. Денешната
алтернатива е да користиме чип наречен UART (universal asynchronous receiver/transmitter) или
USART (universal synchronous/asynchronous receiver/transmitter).
224
Вовед во Микропроцесорите и Микроконтролерите
Парелелниот пренос очигледно е многу побрз, бидејќи се носат осум бита во единица време,
но потребни се осум конекции. На пример, за да се испрати fax сигнал ќе ни треба осум
телефонски линии, додека со UART можеме да го конверираме во сериски пренос и да го
пратиме преку една линија со брзина осум пати помала.
Кога користиме ASCII сигнали во сериски пренос, треба да можеме да ја известиме приемната
апаратура кога сме испратиле еден посебен ASCII карактер. Ова лесно е направено во
синхроните системи кои осигуруваат дека прадавателот и приемникот се „држат заедно“
(locked together) и работат со иста брзина. Ова не е најлесниот начин за работа на системите,
имајќи ги впредвид тешкотиите кои се јавуваат при обид два уредат да бидат синхрони. Затоа,
имаме тенденција да работат асинхроно. Ова значи дека треба да испратиме сигнал заедно со
ASCII кодот за да му укажиме на приемникот каде започнал и каде завршил ASCII кодот. Инаку,
предавателот континуирано ќе испраќа податоци, и ако се изгуби некој бит, приемникот ќе
испадне од чекор, и погрешно ќе ја прочита подсеквенцата од податоци.
225
Вовед во Микропроцесорите и Микроконтролерите
Како и кај повеќето медиуми за пренос, постои поврзаност помеѓу брзината и максималното
растојание што може да го користи системот. Ако имате намера да го форсирате растојанието
на пренос до максималната вредност, треба да прифатете дека брзината ќе се намали. Како
некое непишано правило е, ако го дуплирате растојанието, тогаш ќе ја преполовите брзината.
RS232C
Овој стандард за пренос е креиран од одборот на EIA. Стандардот ни овозможува пренос на
растојанија до 15 m со брзина до 20 kbaud (всушност може да ја надмине оваа брзина и ова
растојание, но не гарантира „сигурен“ пренос). Baud е мерка за брзина на пренос. Тоа е бројот
на тактови во секунда, кој е приближен со бројот на битови во секунда.
RS423A
Ова е подобрена верзија која има максимална брзина од 100 kbits/s и максимална должина на
кабелот од 1.2 km. Предавателниот напон може да биде помеѓу Z3.6 и Z6 V, а приемникот
може да оди надолу до Z0.2 V.
Како ги менуваме бинарните или логичките вредности во RS232 напонски нивоа? Ако правите
микропроцесорски базиран систем најочигледниот начин е да користите пар интегрирани
кола, наречени 1488 (предавател) и 1489 (приемник). Овие интегрирани кола достапни се
повеќе години и тие се едноставни и сигурни. Имаат мала пречка, а тоа е што се напојуваат на
12 V, за разлика од денешното напијување од 5 V, и многу почесто може да бидат
поинтересни, и полесни за користење, новите трансивери (transmitter/предавател +
receiver/приемник), направени од Maxim. За овие е потребно само напојување од единечни
+5V, а тие си генерираат свои Z напони за RS232C преносот. Секој чип се состои од два
предаватели и два приемника кои работат дури до 120 kbits/s. Уредите се нумерирани како
MAX202, MAX208, MAX220, MAX232 и има и други. Кај компјутерите имаме сериска порта која
ни овозмижува сигнал со RS232C нивоа.
226
Вовед во Микропроцесорите и Микроконтролерите
Модеми
Модем, modem (MOdulator DEModulator), ги конвертира дигиталниот сигнал во два аудио
тонови, па така можеме преносот да го направиме преку телефонска линија. Телефоните,
генерално, се направени да прифаќаат фреквенции помеѓу 300 Hz и 3.1 kHz. Одбран е ваков
релативно тесен пропусен опсег за да можеме да го пренесеме говорот со непотребно губење
на квалитетот, и притоа да ни овозможи пренос на голем број повици преку ист кабел. Откако
дигитални сигнали ги пренесовме преку телефонската линија, можностите станаа
неограничени.
Избор на системите
Неколку метри
Може да користиме чисти бинарни податоци за пренос преку еден кабел (види слика 17.11).
227
Вовед во Микропроцесорите и Микроконтролерите
Може да го конвертираме сигналот за пренос во RS232C или RS232A, по потреба (види слика
17.12).
Неограничена оддалеченост
Додадете модем и врска (link) со телефонска линија или пак оптички влакна (види слика
17.13).
Ако со некој светлосен избор се осветли еден крај од оптичкото влакно, тогаш светлината ќе се
рефлектира од внатрешната површина низ целиот кабел. Како светлосен извор може да се
користи ласер кој работи во регионот на инфрацрвениот спектар. За да го користиме за
228
Вовед во Микропроцесорите и Микроконтролерите
Ако сакаме да конструираме своја оптичка врска, се што ни треба е да купиме ласер (или LED
диоди), фотоќелија и неколку приклучоци за да ги поврзиме. Може да се искористи како
замена на бакарен кабел од секој претходно опишан систем (види слика 17.14). Внимавајте!
Ифрацрвената светлина од ласерот може случајно да предизвика непоправлива штета на
окото. Мора секој пат да запомниме дека ова ни се последниот пар очи.
Квиз 17
229
Вовед во Микропроцесорите и Микроконтролерите
230
Вовед во Микропроцесорите и Микроконтролерите
18
Опрема за тестирање и изнаоѓање на
грешките
Ова поглавје е наменето да ни пренесе некои совети за изнаоѓање на грешките во
микропроцесорски базираниот систем, и е цврсто базиран врз основа на искуство, па затоа
може да се преименува во „Грешките што ги направив јас“.
Увидете ги сите симптоми и запишете ги. Бидете претпазливи со идеите за симптомите дадени
од други луѓе, бидејќи ако тие не ве разбрале што точно се случува, може да ве наведат да
изгубите часови или денови. Ако заборавите да ги запишете, порано или подоцна ќе се
вратите назад за да ги повторите истите проверки.
Статички електрицитет
Кога два различни материјала се тријат меѓусебе, некои негативни електрони се стремат да
мигрираат од едниот материјал во другиот. Ова резултира со напонска разлика помеѓу двата
материјала. Количеството на напон може да биде многу големо – неколку илјади волти. Ако
одиме низ тепих или седиме на пластичен стол, можеме да бидеме смртоносни за
интегрирано коло дизајнирано на 5V. Повеќето интегрирани кола имаат вградени
антистатички претпазливи мерки, но и тие имаат ограничени својства. Мора да балансираме
со ова, бидејќи ако користиме подобри антистатички претпазливи мерки, тогаш интегрираното
коло ни е побавно.
231
Вовед во Микропроцесорите и Микроконтролерите
Наједноставен метод е да имаме проводлив појас околу нашиот зглоб со дел кој води кон
заземјување. Овие зглобни појаси се направени од гума во која е измешен јаглерод за да
може да има мала спроводливост. Исто како и кај зглобните појаси, така можеме и лист од
оваа гума да ставиме на горната и долната страна од клупа. Таквите антистатички работни
станици се многу ефективни. Мало предупредување. Не правете си свој појас за зглоб од
бакарна жица. Ова има многу мала отпорност и нема никаква заштита при случајно допирање
на електричниот вод.
Дома, избегнувајте да работите на пластична маса, или стол, или пак да носите облека
направена од неприродни влакна. Природните материјали како памук, волна и
необработеното дрво, природно апсорбираат малку вода и се прилично безбедни за работа.
Треба да се избегнува убаво дрвена клупа, обложена со полиуретански лак бидејќи таа
претставува, ефективна, пластична клупа.
Проблеми со приклучоците
Многу приклучоци кои се користат во повеќето парчиња опрема имаат голем број на пинови.
Со откачување на еден од нив, всушност доаѓа до прекин на некој напон. Ова може да биде
фатално за интегрираните кола, бидејќи сите приклучоци мора да бидат вклучени, или сите да
бидат исклучени, па затоа никогаш не приклучувајте или откачувајте со вклучен напон. Поради
истата причина, никогаш не вадате или заменувајте интегрирано коло ако е вклучен напонот.
Повеќето напојувања имаат променлив излез, ова значи дека 5 V напојување, ќе има различни
5 V на двата краја. Ова значи дека ако го заземјиме негативниот крај, како на слика 18.1(а),
другиот крај ќе биде 5 V. На друга страна пак, ако го поврзиме како на слика 18.1(b), другиот
крај ќе ни биде 5 V.
Обрнете внимание при лемењето, ако тоа е видливо треба да биде мазно и сјајно. Секоја
нејасна и карпеста околина е сомничава. Ако интегрираните кола се приклучуваат во некоја
база наместо да се лемат, погледнете дали тие се вметнати како што треба, со вистинската
232
Вовед во Микропроцесорите и Микроконтролерите
Кај повеќето интегрирани кола, пиновите се нумерирани од надворешната страна, како што е
прикажано на слика 18.2. Позицијата на пин 1 секогаш е на левата страна од крајот на кој има
вдлабнатина, дупче (indentation) кога го гледата одозгора, како на слика 18.2. Кога ја барате
вдлабнатинката, пазете да не ве збунат некои мали кружни белези каде што пластиката е
вкалапена. Печатените кола обично имаат или број „1“, или мало квадратче или некој друг
знак кој ја покажува позицијата на првиот пин.
На слика 18.3 е прикажан изглед на мрежното поле од пинови, pin grid array (PGA). Забележете
дека буквите скокнуваат од Н на Ј, поради можноста од забуна на I со 1. Уредот го одредува
233
Вовед во Микропроцесорите и Микроконтролерите
бројот на пинови. Прикажаниот изгледа е постариот Intel 80386. Pentium има по 21 пин на
секоја страна.
234
Вовед во Микропроцесорите и Микроконтролерите
Логичка сонда
Логичката сонда е едноствен инструмент кој има две конекции за напојување (штипки) и уште
една конекција зашилена на врвот за да може да се допре на точките од интерес. Генералниот
изглед е прикажан на слика 18.4. На него има три LED диоди, првите две ги покажуваат
логичките состојби 0 или 1, а третата покажува присуство на правоаголен пулс со многу висока
фреквенција или единичен, многу краток пулс, наречен „glitch“ (дефект).
Најверојатните пинови кои вреди да се проверат се оние кои носат DC напон, како што се оние
на кои се врзува напојувањето и оние за интерапти. Вреди да се погледне пинот кој треба да
има 0V. Кога користиме волтметар, понекогаш може да измериме 0 V кога тие се
дисконектирани или „лебдечка“ нула. Ако користиш волтметар за да го измериш напонот
помеѓу позитивниот напон и осомничениот пин, тој сеуште ќе покажува 0 V, со што јасно се
гледа дека нешто недостасува. Логичката сонда не може да се измами со „лебдечка“ нула, таа
нема да покажува логичка нула, ако таа нула е „лебдечка“.
235
Вовед во Микропроцесорите и Микроконтролерите
Ако ја погледнеме слика 18.6, можеме да забележиме дека А1 линијата работи со половина
фреквенција од А0 линијата. Слично, адресната линија А2 има половина од ферквенцијата на
А1 и така натаму за сите адресни пинови. Ако поврзиме осцилоскоп на секоја линија по ред,
фреквенцијата треба постепено да се намалува. Проверете дали се преполовува
фреквенцијата на секоја адресна линија, и ако не е така имаме грешка при поврзувањето, со
што ќе станат очигледни кратки споеви помеѓу адресните линии.
Ако до сега се е како што треба, а сеуште не работи како што треба, тогаш сме во сериозна
ситуација за изнаоѓање на грешката.
236
Вовед во Микропроцесорите и Микроконтролерите
Сега замислите шифт во десно регистер кој може да чува 36 битен податок. Ако го поврзиме за
А0, првата адресна линија од адресната магистрала, и стартуваме програма, логичките
вредности кои се јавуваат на адресната линија ќе се копираат во шифт регистерот, предадени
до крај со секој такт, и случајно можат да испаѓаат на крајот. (види слика 18.7).
Слика 18.7
Сега ако имаме четири вакви регистри, може да собериме податоци од било кои четири дела
од колото во исто време. На пример, може да ги следиме долните четири адресни линии, А0,
А1, А2 и А3.
Ако, на слика 18.8, четирите регистри ги користевме за следење на четири адресни линии,
можеме да се сомневаме во линијата која ни покажува дека има константна вредност од
логичка 1. Ово може да укажува на тоа дека оваа линија кратко се споила со позитивното
напојување, или се откачила и е „лебдички“ висок. Не скокајте од стол поради возбудување
237
Вовед во Микропроцесорите и Микроконтролерите
бидејќи ова е само едно објаснување. Може да бидат овие причини, или пак може да е
очекуван резултат на дел од програмата.
Слика 18.8 Четири шифт регистри можат да направат едноставен логички анализатор
Па зошто е прозорецот?
Во прозорецот, логичкиот анализатор ќе „види“ дел од податоците во секој канал. Може да
пуштиме комбинација која што подоцна ќе ја бараме. За позгодно да ни е нас, внесуваме
хексадецимални броеви и како што пристигнува такт од микропроцесорот, податоците се
движат и постојано се споредуваат со внесениот број. Кога ќе бидат исти, се исклучува тактот и
тогаш податоците се „заробени“. Сега можеме да се движиме назад и напред низ регистрите и
да ја видиме работата на микропроцесорот, „замрзнат“ во времето.
„Вистински“ логички анализатор има неколку додатни способности, како што е „заробување“,
но не при првиот пат кога ќе се појави нашиот влез, туку после, на пример, 200 појавување, за
да можеме да се погрижиме за повторувачките јамки во програмата. Тие исто така ни
овозможуваат „не се грижи“ услови, со кои можеме на влезовите на прозорците од 20 канален
логички анализатор да внесеме хексадецимален код 7ХХХ2, и да го „зароби“ секој податок што
почнува со 7Н (01112) и завршува со 2Н (00102).
Glitch (дефект/шилец) е пулс кој трае многу кратко и се појавува во логичките кола, или од
надворешна интерференција, или како резултат на слаб дизајн. Тој може да предизвика
несакано префрлање во логичкото коло и да „падне“, да ја „урне“, микропроцесорската
програма. Тие се изворендно кратки, само неколку наносекунди, со што нивното
забележување е многу тешко. Обично тие се пребмногу брзи за осцилоскоп, но некои логички
сонди имаат вграден „glitch-catcher“ (фаќач на шилци), но тие само ни кажуваат дека се
појавил glitch (шилец), но не кога се појавил. Оваа информација ќе ни биде потребна ако
бараме грешки во дизајнот.
238
Вовед во Микропроцесорите и Микроконтролерите
побрзо од системскиот такт, па така една логичка единица може да се прошири на 10 или 20
бити во регистерот и тогаш може ќе се сними шилец.
Квиз 18
Слика 18.10
239
Вовед во Микропроцесорите и Микроконтролерите
Слика 18.11
4 Логичката сонда:
a. Кажува дека без разлика која техника за изнаоѓање на грешки ја користите таа е
базирана на расудување по звук.
b. Може да открие разлика помеѓу неповрзана и заземјена конекција.
c. Може да смести „stream“ (поток, дел) од податоци.
d. Детектира присуство на статички електрицитет.
5 Логички анализатор, означен како 20 канали 1024 бити:
a. Ќе ни прикаже четири дигитен хексадецимален број во својот прозорец.
b. Може да ги следи било кои 1024 точки во исто време.
c. Ќе зачува вкупно 1044 бити податоци.
d. Може да ги следи било кои 20 точки во исто време.
240
Вовед во Микропроцесорите и Микроконтролерите
Addr Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Power-on
Reset
BANK 0
00H Uses contents of FSR to address data memory (not a physical register)
01H TMR0 8-bit real-time clock/counter xxxxxxxx
02H PCL Low order 8 bits of the program counter (PC) 00000000
03H Status IRP RP1 RP0 T0 PD Z DC C 00011xxx
04H FSR Indirect Data Memory Address Pointer xxxxxxxx
05H PortA – – – RA4/T-CKI RA3 RA2 RA1 RA0 ---x xxxx
06H PortB RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0/ xxxxxxxx
INT
07 – Unused
BANK 1
81H Option RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 11111111
85H TRISA – – – PortA data Direction ---11111
86H TRISB PortB data Direction 11111111
87H –
88H EECON 1 – – – EEIF WRERR WREN WR RD ---0x000
89H EECON 2 EEPROM control reg. (not a physical register) --------
Севкупните детали (85 страни) апсолутно се за PIC16F84A (или за друг PIC) може да се преземе од www.microchip.com
241
Вовед во Микропроцесорите и Микроконтролерите
242
Вовед во Микропроцесорите и Микроконтролерите
243
Вовед во Микропроцесорите и Микроконтролерите
Одговори на квизовите
244