Методчне забезпечення для сам.роботи Мікропроцесорні пристрої


Самостійна робота № 1
Тема: Загальні поняття мікропроцесорних пристроїв
План
1. Основи мікропроцесора
2. Основні історичні відомості про розвиток мікропроцесорів
3. Мікропроцесор – основа ЕОМ
4. Мікропроцесорні системи
1. ОСНОВИ МІКРОПРОЦЕСОРА
Щоб зрозуміти, що таке мікропроцесор (МП) і як він працює, потрібно засвоїти декілька понять.
Автомат – пристрій, що виконує деякий обмежений набір функцій самостійно по заданій програмі.
Програма – набір команд виконуваних автоматом.
Команда – завдання на виконання автоматом відповідної дії.
Пам'ять програм – пристрій який зберігає програму автомата.
Розглянемо роботу шарманки – музичного автомата. Шарманка складається з набора регістрів, кожних з яких здатний при його збудженні видавати звук відповідної тональності. Порядок і число збуджень в кожний момент часу визначаються міткою на спеціальному диску, що обертається по колу. Значить, змінюючи число і положення міток, ми можемо отримувати різні мелодії.
Отже, шарманка - це автомат, диск – це пам'ять програм, мітка – це команда для автомата. Тепер не складно зрозуміти, що таке мікропроцесор.
Як вже згадувалося, мікропроцесор виконує відповідний набір команд, наприклад читання/запис пам'яті програм і даних, пересилку і завантаження даних, у пам'ять ЕОМ. Правда на ранніх етапах розвитку обчислювальної техніки програми існували у вигляді отворів в перфокартах або перфострічках і заносилися на спеціальні складальні поля. Зараз, як правило, зберігаються на магнітних носіях - гнучких і жорстких магнітних дисках.
2. ОСНОВНІ ІСТОРИЧНІ ВІДОМОСТІ ПРО РОЗВИТОК МІКРОПРОЦЕСОРІВ
Перший універсальний мікропроцесор 4004 фірми Intel з’явився у 1971р. Він міг виконувати будь яку програму із системи своїх команд, яких, до речі, було усього 45. Міг ввести дані, обробити їх і вивести результати. Довжина слова цього мікропроцесора складала усього 4 біта, а адресний простір обмежувалося 4,5 Кбіт. Він був орієнтований на прийняття в калькуляторах. Мікропроцесор містив коло 1000 транзисторів і виконував 8000 операцій у секунду.

1972 1973 1974 1975 1976 1982 1985 1992 1993 1997 1998 1999 2001-2002 2004 2006 2007 Рік
мал. 2.1. Основні мікропроцесорні сімейства фірми Intel
Через кілька років фірма Intel випустила мікропроцесор 8008 (аналог 4004) з довжиною слова 8 біт і 8080 – досить потужний для створення невеликого комп'ютера. Мікропроцесор I8080 може виконувати десяткові і 16-бітові арифметичні операції, викликати підпрограми і адресувати пам'ять до 64 Кбайт. Шина даних має розрядність 8, а шина адреси – 16 біт. У Росії аналогом такого процесора став мікропроцесор КР580ИК80.
У наступні 10 років число транзисторів в мікропроцесорі збільшилося в 70 разів, розмір слова склав 16 біт, а швидкодія зросла в 100 разів. Хоча вже були досягнуті деякі фізичні обмеження для кристалів, ринок стимулював аналогічний розвиток і в 1980-е рр. з'являється мікропроцесор I80386.
Подальшою еволюцією у розвитку мікропроцесорів стала поява першого процесора з вбудованим математичним співпроцесором I80486 в 1989 р. і Pentium 1993-м.
У 1995 р. був розроблений процесор Pentium Pro (150 МГц, 512 Кб кеш), що позиціонується як серверний. Він відрізнявся від аналогів великим кешем і архітектурою, частково запозиченої у процесорів з архітектурою RISC. У Pentium Pro Intel вперше включив технологію динамічного виконання (Dynamic Execution), тобто інструкції можуть виконуватися не тільки послідовно, але і паралельно з допомогою передбачення гілок коду і упорядкованого виконання інструкцій. Тим самим значно підвищилася ефективність процесора – кількість команд, виконуваних за такт.
У 1998 році був випущений процесор Pentium II Xeon. Системи, засновані на цьому процесорі, могли бути налаштовані з 4, 8 і більше процесорів.
В кінці лютого 1999 р були анонсовані Pentium III. Виготовлені за технологічним процесом 0,25 мкм, ядро ​​Katmai, доданий набір інструкцій SSE, розмір L1 кеш - 32 Кб (16 + 16), L2 кеш - 512 Кб (працює на половині частоти ядра, розташований поруч з мікросхемою процесора в картриджі).
В кінці листопада 2000 р Intel представляє процесор Pentium 4 (кодова назва Willamette), архітектура NetBurst якого докорінно відрізняється від своєї попередниці Р6. Основною відмінністю було збільшення конвеєра до 20 стадій, що дозволило сильно збільшити частоту процесора. Тактова частота перших примірників склала 1.4 і 1.5 ГГц. Цікавий факт: арифметико-логічний пристрій даного процесора працює на частоті, в два рази перевищує частоту ядра! У новому процесорі також оновився блок інструкцій SSE, доповнився ще 144 інструкціями і став іменуватися SSE2. Зазнав змін і кеш першого рівня, його обсяг скоротився до 8 Кб для даних, для зберігання інструкцій з'явився новий перероблений кеш (Trace Cache).
Подальший розвиток процесорів Intel було пов'язано з переходом на 64бітну архітектуру - IA-64 (Intel Architecture-64 bit). Основною ідеологією нових процесорів стала технологія EPIC (Explicitly Parallel Instruction Computing - обробка команд з явним паралелізмом). Само собою, подібностей між RISC і EPIC залишилося достатньо, проте EPIC технологічно виглядає набагато більш досконалою і по праву може вважатися повноцінною еволюцією ідеології RISC. Паралельність виконання команд, яка є одним з ключових переваг IA-64, досягається завдяки тому, що команди тепер надходять групами по три штуки (так званий пучок команд), причому потужний процесор здатний за один цикл обробити відразу кілька подібних пучків. Всередині процесора виконання команд розподіляється між відповідними функціональними блоками, багато з яких для забезпечення ідеальної паралельності дублюють можливості один одного (тобто присутні кілька блоків для цілочисельних обчислень, кілька для обчислень з плаваючою точкою і т. д.). Перше втілення архітектури IA-64 з'явилося на світ у травні 2001 року, ним став процесор Itanium.
В даний час збільшення продуктивності процесорів, в основному, ведеться за рахунок застосування багатоядерної архітектури Multi-core Intel Processors. Одним з представників такої архітектури є лінійка процесорів Intel Xeon Processor 5400 вироблених по 45-нанометровій технології. На базі даних процесів можлива побудова сучасних високопродуктивних масштабованих багатопроцесорних систем.
3. МІКРОПРОЦЕСОР – ОСНОВА ЕОМ
Мікропроцесор, як і будь-який обчислювальний пристрій, складається з двох основних блоків: керуючого і операційного.
Мікропроцесор є найважливішою складовою частиною ЕОМ. Розглянемо склад і функції основних елементів ЕОМ.
До складу ЕОМ входять процесор, оперативна пам'ять і зовнішні пристрої.
Процесор служить для управління всіма елементами системи і організовує роботу щодо виконання заданої програми (перетворення даних).
Пам'ять поділяється на оперативний пристрій (ОЗУ) і пасивний пристрій (ПЗУ) і служить для зберігання програм і даних.
Зовнішні пристрої забезпечують введення / виведення програм і даних в ЕОМ.
У складі ЕОМ є центральний процесорний елемент, з'єднаний з усіма елементами системи за допомогою системної магістралі. Системна магістраль, в свою чергу, складається з трьох шин: адреси, даних і управління.
Шина адреси призначена для передачі поточної адреси, до якої йде звернення, всіх елементів ЕОМ.
Шина даних призначена для передачі даних між центральним процесором, пам'яттю і зовнішніми пристроями, а також між оперативною пам'яттю (ОП) і зовнішнім пристроєм (ВУ) в режимі прямого доступу в пам'ять (ПДП).
Шина управління призначена для передачі сигналів управління між МП і іншими елементами ЕОМ.
Вся робота ЕОМ - це виконання будь-якої програми, будь то програма операційної системи або програма користувача. Досить розглянути порядок виконання програми процесором для того, щоб зрозуміти, як працює ЕОМ.
Робота ЕОМ починається з програми початкової установки (BIOS), яка готує всі елементи до роботи. У IBM PC програмують таймер, контролери дисків, адаптери паралельного і послідовного зв'язку і т. д. Потім завантажується ядро ​​операційної системи (з диска або дискети) і управління передається цій програмі. Тепер ЕОМ готова до виконання програм.
4. МІКРОПРОЦЕСОРНІ СИСТЕМИ
Мікропроцесор – це мікросхема або сукупність мікросхем (або кристалів), що виконує арифметичні і логічні операції над даними та здійснює програмне керування обчислювальним процесом.
Мікропроцесорні засоби - це набори мікросхем (ВІС), комплекти сумісні за рівнями напруги, сигналам і переданої інформації до складу яких входять: МП, ОЗУ, ПЗУ, управління вводом / виводом і т. д.
Контрольні питання для самоконтролю:
1. Що таке автомат?
2. Що таке програма?
3. Що таке команда?
4. Що таке пам'ять програм?
5. З чого складається шарманка?
6. Який набір команд виконує мікропроцесор?
7. Що таке мікропроцесор?
8. Коли з’явився перший універсальний мікропроцесор 4004 фірми Intel?
9. З яких двох основних блоків складається мікропроцесор?
10. Що таке мікропроцесорні засоби?

Самостійна робота № 2
Тема: Класифікація мікропроцесорів
План
1. Поняття про розрядність і систему команд
2. Розрядність мікропроцесора
3. Команда і система команд мікропроцесора
4. Основні характеристики і критерії продуктивності мікропроцесора
1. ПОНЯТТЯ ПРО РОЗРЯДНІСТЬ І СИСТЕМА КОМАНД
Взагалі кажучи, поняття класифікації мікропроцесорів досить суб'єктивно. Кожен, хто вважає себе посвяченим у суть питання, може запропонувати власну (на відмінну від інших) класифікацію. Класифікація необхідна для упорядкування всього різноманіття існуючих МП, вироблення критеріїв їх оцінки. В силу цих причин на перший план можуть виступати різні критерії класифікації. Розглянемо найбільш поширені.
За зазначенням:
- універсальні, призначені для виконання функцій і обчислення;
- спеціалізовані, виконують тільки вузькоспеціалізовані функції обчислення або управління (обчислення складних функцій алгебри або управління конкретним пристроєм - верстатом, автомобілем і т. д.).
По виду оброблюваної інформації:
- цифрові, працюють з бінарними (2-рівневим) сигналами, які позначають логічний нуль і одиницю. Зазвичай має сенс посилання на тип цифрового сигналу: ТТЛ, ЕСЛ або КМОП-рівень;
- аналогові, працюють з аналоговими (безперервними) рівнями сигналів. У разі аналогового сигналу мають сенс граничні значення вхідної напруги або струму.
По розрядності даних:
- фіксовані, в разі фіксованої розрядності вказується конкретне значення довжини інформації (біт, байт, слово і т. д.);
- змінні, в разі змінної розрядності вказується значення кванта, на який можливо нарощування розрядності (2, 4 або 8 біт).
По тактовій частоті:
- статичні, мають нижню межу тактової частоти рівний нулю, т. е. за відсутності тактової частоти МП перейде в стан "Очікування", а по її появі продовжить свою роботу;
- динамічні, мають нижню межу тактовою частоти не рівний 0, тобто при зниженні частоти синхронізації нижче граничного рівня МП перестає нормально функціонувати.
По виду синхронізації:
- синхронні;
- асинхронні.
Пропонована класифікація багато в чому повторює попередню.
По компоновці:
- однокристальні;
- багатокристальні;
- багатокристальні секційні.
По числу керуючий магістралей:
- суміщені;
- роздільні.
По системі команд:
- фіксована;
- змінна.
2. РОЗРЯДНІСТЬ МІКРОПРОЦЕСОРА
Під розрядністю мікропроцесора слід розуміти величину його розрядної сітки, яка визначається співвідношенням розрядності шини даних і адреси. Строго кажучи, не існує точного визначення розрядності, але, як правило, під розрядністю розуміють ширину поля даних. У літературі можна часто зустріти так звані 8-, 16-, 32 × 64 або 8 / 16- розрядні процесори. Так, МП Intel 8080 (І8080) має 8- розрядну шину даних і 16-розрядну шину адреси, але за типом оброблюваних даних відноситься до 8- розрядному процесору. МП Intel 80386 (І80386) прийнято називати 32- розрядним процесором, так як він має 32 розрядні роздільні шини адреси і даних. Існують також поняття розрядності машинного слова, розрядності внутрішніх пристроїв МП, але під будь-яким визначенням розрядності слід розуміти максимально можливу величину оброблюваних даних, виражену в бітах (іноді в байтах, словах або подвійних словах). Слід зауважити, що існують мікропроцесорні системи (МПС) із змінною розрядністю даних.
3. КОМАНДА І СИСТЕМА КОМАНД МІКРОПРОЦЕСОРА
Під командою слід розуміти завдання на виконання мікропроцесором певної дії. Система команд МП - це набір функцій, визначених для мікропроцесора. Найбільш істотними для ознайомлення з особливостями системи команд є три ознаки: довжина команди, функціональний ознака і спосіб адресації.
По довжині (або за величиною займаних байтів) команди поділяють на однобайтові, двобайтові, трьохбайтові і т. д. При цьому перший байт (або слово - в більш потужних процесорах) завжди відводиться під код команди, а наступні містять або адреса, за якою він зберігаються в пам'яті.
За функціональними ознаками тобто по виду виконуваних дій, команди поділяють на такі групи: група команд пересилання, група арифметичних команд, група логічних команд, група команд переходів, група управління і роботи зі стеком, груп команд вводу / виводу, група команд управління процесором, група спеціалізованих команд.
За способом адресації (т. е. по виду звернення до пам'яті або внутрішніх пристроїв МП) розрізняють наступні види команд: реєстрова адресація (команди звернення до внутрішніх регістрів МП), команди безпосереднього звернення до пам'яті, команди непрямого звернення (команди, в яких адреса комірки пам'яті зазначений не явно, а через покажчик, що зберігається у внутрішньому регістрі процесора або в комірці пам'яті). Існують також всілякі комбінації адресації в різних МП.
Розглянемо одну з найпростіших функцій МП - складання двох чисел.
Припустимо, що структура командного слова МП має такий вигляд:
Код операції Адреса операнда Адреса наступної команди
Таблиця 1. 1.
Дамп пам'яті
Комірка ОЗУ Команда Подія
2051 01 0641 2052 Запис вмісту комірки 0641 в акумулятор
2052 15 0642 2053 Складання вмісту комірки 0642 в акумуляторі
2053 02 0643 2054 Запис вмісту акумулятора в комірку 0643
2054 00 0000 0000 Стоп
0641 Доданок А 0642 Доданок В 0643 Результат Тоді структура програми буде мати такий вигляд:
1-й крок-читання доданків з ОЗУ;
2- й крок - запис доданків в арифметико логічний пристрій (АЛП);
3-й крок - складання;
4-й крок - запис результату в ОЗУ;
5-й крок-зупинення.
Припустимо, коди операцій наступні:
01 - виклик операнда з ОЗУ в акумулятор;
02 - запис вмісту акумулятора в ОЗУ;
15 - складання вмісту акумулятора з вмістом комірки ОЗУ;
00 - зупинення.
З табл. 1.1. бачимо, що кожній команді МП відповідає код операції (КОП). Кількість операцій мікропроцесора визначається величиною його внутрішнього регістра команд. Так, якщо регістр команд має розрядність 8 біт, то очевидно, що в системі команд такого мікропроцесора не може бути присутнім більш ніж 256 можливих операцій.
4. ОСНОВНІ ХАРАКТЕРИСТИКИ І КРИТЕРІЇ ПРОДУКТИВНОСТІ МІКРОПРОЦЕСОРА
До характеристик МП слід віднести в першу чергу такі: тип мікроелектронної технології, кількість кристалів і їх типорозміри, кількість транзисторів на кристалі, кількість висновків корпуса кристала. Ці технологічні характеристики визначають економічну доцільність випуску самого МП. Далі йдуть різновиди оброблюваного слова, швидкодія мікропроцесора (тактова частота на внутрішніх і зовнішніх шинах, кількість і час виконання основних операцій в секунду), ємність пам'яті, що адресується, тип керуючих пристроїв, ефективність системи команд, число рівнів переривання і прямого доступу у пам'яті, пропускна здатність інтерфейсів вводу / виводу, кількість і рівні живлячої напруги, номінальні параметри використовуваних сигналів, споживана потужність; число, склад і призначення додаткових пристроїв, що входять в мікропроцесорний комплект; підтримка проектування програмного забезпечення і деякі спеціалізовані характеристики.
Основною характеристикою будь-якої МПС - є її продуктивність, під якою в загальному випадку розуміють кількість виконуваних в одиницю часу елементарних операцій і час доступу до пам'яті і зовнішніх пристроїв. Критеріями максимальної продуктивності МПС слід вважати в першу чергу мінімальний час доступу до пам'яті і максимально можливу тактову частоту процесора.
Контрольні питання для самоконтролю:
1. Які мікропроцесори розрізняють за зазначенням?
2. Які мікропроцесори розрізняють по виду оброблюваної інформації?
3. Які мікропроцесори розрізняють по розрядності даних?
4. Які мікропроцесори розрізняють по тактовій частоті?
5. Які мікропроцесори розрізняють по виду синхронізації?
6. Які мікропроцесори розрізняють по компоновці?
7. Які мікропроцесори розрізняють по числу керуючий магістралей?
8. Які мікропроцесори розрізняють по системі команд?
9. Що таке система команд МП?
10. Основна характеристика МПС?
11. Назвіть три ознаки найбільш істотні для ознайомлення з особливостями системи команд?

Самостійна робота № 3-4 (4 години)
Архітектура мікропроцесорів
План
1. Архітектура найпростіших мікропроцесорних систем
2. Симетрична багатопроцесорна архітектура SMP
3. Масивно-паралельна архітектура MPP
1. АРХІТЕКТУРА НАЙПРОСТІШИХ МІКРОПРОЦЕСОРНИХ СИСТЕМ
У МПС всі зв'язки між окремими функціональними блоками здійснюються, як правило, шинами.
Під шиною мається на увазі фізична група передачі сигналів, що володіють функціональною спільністю (по кожній лінії передається один двійковий розряд інформації).

мал. 1.1. Найпростіша мікропроцесорна система
Фізично шини реалізуються у вигляді паралельних провідних ділянок друкованої плати або джгутів. Крім шини даних (ШД), як правило, розрізняють шину адреси (ША) і шину керування (ШУ). Передані по ША адреси формуються в МП. Вони необхідні для визначення шляху передачі даних усередині МПС, в тому числі для вибору комірки пам'яті, куди необхідно занести або звідки необхідно зчитати інформацію. Визначення такту передачі можуть брати участь і керуючі сигнали, під'єднуючі або, навпаки, блокують ті або інші пристрої МПС. На відміну від ША і ШУ шина даних є шиною двобічної. Дані по цій шині можуть передаватися від мікропроцесора до якого-небудь пристрою МПС або пересилатися в МП від якогось пристрою, доступ до якого забезпечують сигнали адресної шини. Природно, що в кожен момент часу дані можуть передаватися лише в одному напрямі, який визначається режимом роботи мікропроцесора.
До основних режимів роботи слід віднести: 1) запис даних в пам'ять машини; 2) читання даних з пам'яті машини; 3) пересилання даних в пристрій вводу / виводу; 4) читання даних з пристрою введення / виводу; 5) виконання операцій з вмістом внутрішній регістрів мікропроцесора. При реалізації останнього режиму зовнішні по відношенню до МП шини МПС не використовуються, т. е. Все дії відбуваються всередині МП. Реалізація перших чотирьох режимів справляє визначальний вплив на роботу шини даних. Робота по реалізації будь-якої програми МПС, побудованої за типом архітектури з трьома шинами, полягає у виконанні наступних дій для кожної команди програми:
1. Мікропроцесор формує адресу, за якою зберігається код операції команди, переводячи в відповідні стан шину адреси.
2. Код операції зчитується з пам'яті по сформованому адресою і пересилається в мікропроцесор.
3. Мікропроцесор дешифрує (ідентифікує) команду.
4. Мікропроцесор налаштовується на виконання одного з перерахованих вище п'яти основних режимів відповідно до результатів дешифрування ліченого з пам'яті коду команди.
Перераховані вище п'ять режимів є основними, але не єдино можливими. Існують і інші, але вони будуть розглянуті при вивченні конкретного мікропроцесора.
2. СИМЕТРИЧНА БАГАТОПРОЦЕСОРНА АРХІТЕКТРУРА SMP
Головною особливістю систем з архітектурою SMP (symmetric multiprocessing) є наявність загальної фізичної пам'яті, що розділяється всіма процесорами.

мал. 2.1. Архітектура SMP
Пам'ять служить, зокрема, для передачі повідомлень між процесорами, при цьому всі обчислювальні пристрої при зверненні до неї мають рівні права і одну і ту ж адресацію для всіх елементів пам'яті. Тому SMP- архітектура називається симетричним. Остання обставина дозволяє дуже ефективно обмінюватися даними з іншими обчислювальними пристроями. SMP - система будується на основі високошвидкісної системної шини (SGI PowerPath, Sun Gigaplane, DEC TurboLaser), до слотів якої підключаються функціональні блоки типів: процесори (ЦП), підсистема вводу/ виводу (I/O). Для побудови до модулів I/O використовуються вже повільніші шини (PCI, VME64). Найбільш відомими SMP- системами є SMP- сервери і робочі станції на базі процесорів Intel (IBM, HP, Compaq, Dell, ALR, Unisys, DG, Fujitsu та інші). Вся система працює під управлінням єдиної OC (зазвичай UNIX-подібній, але для Intel- платформ підтримується Windows NT). OC автоматично (у процесі роботи) розподіляє процеси по процесорам, але іноді можлива і явна прив'язка.
Основні переваги SMP- систем:
- простота і універсальність для програмування. архітектура
SMP не накладає обмежень на модель програмування, використовувану при створенні програми: зазвичай використовується модель паралельних гілок, коли всі процесори працюють незалежно один від одного. Однак можна реалізувати і моделі, що використовують міжпроцесорний обмін. Використання загальною пам'яті збільшує швидкість такого обміну, користувач також має доступ відразу до всього об'єму пам'яті. Для SMP-систем існують досить ефективні засоби автоматичного розпаралелювання;
- простота експлуатації. Як правило, SMP-системи використовують систему кондиціонування, засновану на повітряному охолодженні, що полегшує їх технічне обслуговування;
- відносно невисока ціна.
Недолік SMP-систем - системи із загальною пам'яттю погано масштабуються.
Цей істотний недолік SMP-систем не дозволяє вважати їх по-справжньому перспективними. Причиною поганої масштабованості є то, що в даний момент шина здатна обробляти тільки одну транзакцію, внаслідок чого виникають проблеми вирішення конфліктів при однотимчасовому зверненні декількох процесорів до одних і тих же областях загальної фізичної пам'яті. Обчислювальні елементи починають один одному заважати. Коли відбудеться такий конфлікт, залежить від швидкості зв'язку та від кількості обчислювальних елементів. В даний час конфлікти можуть відбуватися при наявності 8-24 процесорів. Крім того, системна шина має обмежену (хоч і високу) пропускну здатність (ПС) і обмежене число слотів. Все це очевидно перешкоджає продуктивності при збільшенні числа процесорів і числа підключаються користувачем. У реальних системах можна задіяти не більше 32 процесорів. Для побудови масштабованих систем на базі SMP використовуються кластерні або NUMA-архітектури. При роботі з SMP-системами використовують так звану парадигму програмування з пам'яттю (Shared memory paradigm).
3. МАСИВНО – ПАРАЛЕЛЬНА АРХІТЕКТРУРА MPP
Головна особливість масивно-паралельної архітектури (MPP - massive parallel processing) полягає в тому, що пам'ять фізично розділена. В цьому випадку система будується з окремих модулів, що містять процесор, локальний банк операційної пам'яті (ОП), комунікаційні процесори (Рутер) або мережеві адаптери, іноді - жорсткі диски і / або інші пристрої введення / виводу. По суті такі модулі представляють собою повнофункціональні комп'ютери. Доступ до банку ОП з даного модуля мають тільки процесори (ЦП) з цього ж модуля. Модулі з'єднуються спеціальними комунікаційними каналами. Користувач може визначити логічний номер процесора, до якого він підключений, і організувати обмін повідомленнями з іншими процесорами. Використовуються два варіанти роботи операційної системи (ОС) на машинах MPP-архітектури. В одному повноцінна операційна система (ОС) працює тільки на керуючу машину (front-end), на кожному окремому модулі функціонує сильно урізаний варіант ОС, що забезпечує роботу тільки розташованої в ньому гілки паралельного застосування. У другому варіанті на кожному модулі працює повноцінна UNIX-подібна ОС, що встановлюється окремо.

мал. 3.1. Архітектури з роздільною пам'яттю MPP
Головною перевагою систем з роздільною пам'яттю є хороша масштабованість: на відміну від SMP-систем в машинах з роздільною пам'яттю кожен процесор має доступ тільки до своєї локальної пам'яті, у зв'язку з чим не виникає необхідності в потактовой синхронізації процесорів. Практично всі рекорди по продуктивності на сьогодні встановлюються на машинах саме такої архітектури, що складаються з декількох тисяч процесорів (ASCI Red, ASCI Blue Pacific).
Недоліки:
- відсутність спільної пам'яті помітно знижує швидкість міжпроцесорного обміну, оскільки немає загального середовища для зберігання даних, призначених для обміну між процесорами. Потрібна спеціальна техніка програмування для реалізації обміну повідомленнями між процесами;
- кожен процесор може використовувати тільки обмежений обсяг локального банку пам'яті;
- внаслідок зазначених архітектурних недоліків потрібні значні зусилля для того, щоб максимально використовувати системні ресурси. Саме цим визначається висока ціна програмного забезпечення для масивно-паралельних систем з роздільною пам'яттю.
Контрольні питання для самоконтролю:
1. Що слід віднести до основних режимів роботи?
2. Назвіть п'ять режимів для виконання роботи по реалізації будь-якої програми МПС
3. Головна особливість систем з архітектурою SMP?
4. Назвіть основні переваги SMP- систем
5. Назвіть засоби автоматичного розпаралелювання
6. Назвіть недолік SMP-систем

Самостійна робота № 5
Тема: Система команд мікропроцесора
План
1. Багатоядерні мікропроцесорні системи
2. Перші двоядерні мікропроцесори
1. БАГАТОЯДЕРНІ МІКРОПРОЦЕСОРНІ СИСТЕМИ
Для вирішення завдань, що вимагають розробки систем з підвищеною продуктивністю, широкого поширення набули багатоядерні мікропроцесорні системи. Причиною появи таких процесорів стало зростання вимог до продуктивності мікропроцесорних систем. До останнього часу одним з основних методів підвищення продуктивності було підвищення тактової частоти процесорів при одночасному вдосконаленні систем буферизації обміну даними з основною пам'яттю. Це зростання частот ставало можливим у міру зменшення розмірів окремих елементів мікросхем при переході до нових техпроцесами.
Однак в даний час такий шлях розвитку став досить важким завданням в силу дії обмежень, визначених законами фізики. Наприклад, швидкість доступу до пам'яті зростає не так швидко, як швидкість роботи обчислювальних пристроїв, що може звести нанівець переваги від підвищення частоти процесора.
Практично єдиним вирішенням цього завдання в рамках існуючих технологій є розпаралелювання обчислень, суть якого полягає в тому, що програма на рівні вихідного програмного коду може бути розділена на кілька незалежних потоків команд, виконуваних на самостійних обчислювальних блоках. Варіанти побудови таких систем були відомі і опрацьовані досить давно. Зараз же ці варіанти переносяться з рівня закінчених процесорних блоків на рівень мікросхем процесорів; при цьому багатопроцесорність доповнюється суперскалярністю.
2. ПЕРШІ ДВОЯДЕРНІ МІКРОПРОЦЕСОРИ
Першою в технологічній гонці на шляху створення двоядерних мікропроцесорів виявилася фірма IBM, почавши в 2001 р продаж двоядерного процесора IBM Power4 для серверів. У 2002 р майже одночасно AMD і Intel оголошують про перспективи створення своїх двоядерних процесорів, і в цьому ж році з'являються процесори Intel Xeon і Intel Pentium 4 з технологією Hyper-Threading. У 2004 р свій двоядерний процесор випустила Sun (UltraSPARC IV), а також ARM (MPCore). У тому ж році IBM випустила друге покоління своїх двоядерних процесорів IBM Power5.
У 2005 р Intel випустила перший в світі двоядерний процесор архітектури x86. Майже одночасно AMD анонсувала повну лінійку двоядерних процесорів Opteron і Athlon 64 X2.
Контрольні питання для самоконтролю:
1. Причина появи багатоядерних мікропроцесорів?
2. Назвіть один з основних методів підвищення продуктивності
3. В якому році фірма Sun (UltraSPARC IV) випустила свій двоядерний процесор?
Самостійна робота № 6
Тема: Структура мікропроцесорів
План
1. Структура однокристального МП
2. Склад і призначення елементів МП
1. СТРУКТУРА ОДНОКРИСТАЛЬНОГО МП
Структура однокристального МП приведена на мал. 1.1. Доступні блоки МП (виділені на малюнку товстої рамкою):
- регістр-акумулятор,
- лічильник команд,
- блок регістрів B, C, D, E,
- регістр ознак.
Недоступні блоки МП:
- регістр адреси,
- схема управління,
- арифметико-логічний пристрій,
- блок регістрів тимчасового зберігання даних,
- регістр команд.
При роботі з мікропроцесором програмісту необхідно мати інформацію про кількість і призначення всіх регістрів, спеціальних покажчиків, регістра прапорів, системи команд. Число і призначення регістрів, прапорів і команд програміст, як правило, змінити не може. Він може змінити тільки вміст регістрів і використовувати команди в будь-якої потрібної йому комбінації. Як відомо, під регістром мається на увазі спеціальний пристрій (ЗУ), що складається з елементів (тригерів) з двома стійкими станами. Число елементів 8 відповідає одному байту. Існують 8-, 16-, 32-, 64- і т. д. розрядні регістри. Всі регістри розбиті на групи і розрізняються функціональним призначенням.

мал. 1.1. Структура однокристального МП
2. СКЛАД І ПРИЗНАЧЕННЯ ЕЛЕМЕНТІВ МП
Основними блоками МП є: блок регістрів загального призначення (РЗП) зі схемою вибірки регістрів; регістр команд з дешифратором команд і формувачем машинних циклів; арифметико-логічний пристрій з регістром-акумулятором, який виконує арифметичні і логічні операції; регістри тимчасового зберігання даних W і Z; прапоровий регістр; пристрій управління і синхронізації.
Регістри загального призначення використовуються для зберігання даних і проміжних результатів обчислень, що виконуються за допомогою арифметико-логічного пристрою. Вони дозволяють адресуватися як до всього регістру, так і до окремих байтів або слів.
Акумулятор – спеціальний реєстр, як правило, одно- або двобайтовий. При виконанні арифметичних і логічних операцій служить джерелом одного з операндів і місцем зберігання результатів виконання операцій.
Регістр команд – регістр, в якому зберігається код виконуваної команди. Цей регістр, як вказувалося вище, є недоступним регістром. Це означає, що не існує команди, яка могла б змінити його вміст. Після виконання чергової команди в регістр автоматично заноситься код наступної команди з осередку оперативної пам’яті, адрес якої знаходиться в лічильнику команд.
Лічильник команд – регістр (PC – Program Counter), який зберігає адресу наступної команди, яка повинна бути виконана слідом за попередньою. Лічильник команд автоматично бере зріст зберігається в ньому адреси в залежності від того, яку по тривалості команду мікропроцесор зчитує з пам’яті, вказуючи завжди на перший байт наступної команди. На вміст регістра можна вплинути тільки за допомогою команд, що змінюють послідовне виконання програми (наприклад, команд переходу або виклику підпрограм).
Покажчик стека – регістр (SP – Stack Pointer), який зберігає адресу чергового осередка стека. Стеком називається особливим чином організовану ділянку пам’яті, що виділяється програмістом для тимчасового зберігання вмісту внутрішніх регістрів МП, зі спеціальним режимом доступу. Ця область оперативної пам’яті необхідна в тому випадку, коли потрібно припинити виконання реалізованої послідовності команд і повернутися до неї пізніше. Наприклад, для негайного виконання спеціальної підпрограми або при перериванні програми дані від МП надходять у верхню частину стекової пам’яті. Вміст покажчика стека зменшується на одиницю (2, 4, в залежності від формату заносяться даних), щоб завжди вказувати на адресу останньої заповненої комірки стека (дно вільного простору стека). Коли ж дані вибираються (зчитуються) з стека, вміст покажчика стека збільшується з кожним обраним байтом (словом, подвійним словом). Операції зі стеком називаються стековими. З їх допомогою легко організовуються багаторівневі (вкладені) переривання: апаратні і програмні.
Прапоровий регістр – регістр, в найпростішому випадку містить 5 двійкових розрядів, званих прапорами по числу збережених в ньому спеціальних ознак результатів деяких операцій. Іноді його називають регістром ознак, або регістром прапорів. Значення прапора вказує на результат виконання операцій. Наприклад, в процесорі I8080 прапоровий регістр містить 5 прапорів (мал. 2.1.):

S – знак (Sign)
Z – нуль (Zero)
AC – допоміжне перенесення (Auxiliary Carry)
P – парність (Parity)
C – перенесення (Carry)
мал. 2.1. Регістр прапорів МП I8080
Прапори завжди встановлюються або скидаються автоматично після виконання чергової команди, що впливає на прапори, в залежності від результату операції. Прапор вважається встановленим, якщо прапоровий розряд приймає значення 1, і скинутим, якщо значення розряду 0. Стан прапорів використовується в командах умовного переходу. Результати виконання арифметичних і логічних операцій над вмістом акумулятора і регістрів загального призначення або вмістом осередків пам’яті впливають на прапори таким чином:
- Прапор нуля встановлюється в стан 1, якщо після виконання будь-якої команди отриманий нульовий результат, і скидається в 0 в разі ненульового результату.
- Прапор переносу встановлюється в 1, якщо в результаті операцій додавання і зсуву з’являється одиниця переносу зі старшого розряду після виконання операцій віднімання або порівняння, в іншому випадку прапор скидається в 0.
- Прапор знака встановлюється в 1, якщо в результаті виконання операцій з’являється логічна одиниця в старшому розряді байта даних (вказівка на негативний результат), і скидається в 0 в разі нульового значення старшого розряду (вказівка на позитивний результат).
- Прапор парності встановлюється в 1, якщо після виконання операцій сума одиниць в байті даних, підраховуваних за допомогою операції складання по модулю 2 (значення суми по модулю 2 дорівнює 0), і скидається в 0 в іншому випадку (число одиниць непарне).
- Прапор додаткового перенесення встановлюється в 1, якщо в результаті виконання команди з’являється сигнал перенесення з третього розряду в четвертий в байті даних результату. Якщо такого перенесення немає, то прапор додаткового перенесення скидається в 0. Сигнал цього прапора використовується в багатьох схемах обчислень, однак він особливо необхідний для складання чисел в двійковій-десяткового формі.
Контрольні питання для самоконтролю:
1. Що таке покажчик стека?
2. Що таке прапоровий регістр?
3. Що таке лічильник команд?
4. Що таке регістр команд?
5. Що таке акумулятор?

Самостійна робота № 7
Тема: Методи і способи організації пам'яті
План
1. Загальні поняття про пам'ять
2. Перші моделі персональних комп'ютерів
1. ЗАГАЛЬНІ ПОНЯТТЯ ПРО ПАМ'ЯТЬ
Під пам'яттю цифрових обчислювальних пристроїв розуміють пристрій, що запам'ятовує, призначене для прийому (записи), зберігання та видачі (зчитування) інформації, представленої двійковим кодом. Основними характеристиками ЗУ є:
- інформаційна ємність, яка визначається максимальним об'ємом інформації, що зберігається в бітах або байтах;
- швидкодія, що характеризується часом вибірки інформації з ЗУ і часом циклу звернення до ЗУ з довільним доступом або часом пошуку і кількістю переданої в одиницю часу інформації в ЗУ (або з ЗУ) з послідовним доступом;
- енергоспоживання, яке визначається електричною потужністю, споживаної ЗУ від джерела живлення в кожному з режимів роботи, а також надійність, вартість, маса, габаритні розміри і ін.
З часу появи великих (за розмірами) комп'ютерів склалося розподіл пам'яті на внутрішню і зовнішню:
- внутрішня пам'ять - електронна (напівпровідникова) пам'ять, що встановлюється на системній платі або на платах розширення;
- зовнішня пам'ять - пам'ять, реалізована у вигляді пристроїв з різними принципами збереження інформації і зазвичай з рухомими носіями.
Зазвичай цей пристрій магнітної (дискової і стрічкової) пам'яті, оптичної і магнітооптичної пам'яті.
Для процесора безпосередньо доступною є внутрішня (оперативна) пам'ять.
Основна, або оперативна, пам'ять (Main Memory) комп'ютера використовується для оперативного обміну інформацією (командами та даними) між процесором, зовнішньою пам'яттю (наприклад, дискової) і периферійними підсистемами (графіка, введення / висновок, комунікації і т. п.). її інша назва - ОЗУ - приблизно відповідає англійському терміну RAM (Random Access Memory) - пам'ять з довільним доступом. Довільність доступу на увазі можливість операцій запису або читання будь осередком ОЗУ в довільному порядку.
Вимоги, що пред'являються до основної пам'яті:
- великий (для електронної пам'яті) обсяг, який обчислюється одиницями, десятками і навіть сотнями мегабайт;
- швидкодія і продуктивність, що дозволяють реалізувати вичислівники потужність сучасних процесорів;
- висока надійність зберігання даних - помилка навіть в одному бите, в принципі, може привести і до помилок обчислень, і до спотворення, і втрати даних.
Оперативна пам'ять є одним з трьох основних елементів, на яких тримається «комп'ютерний світ» (процесор, пам'ять і периферійні пристрою).
Оперативне зберігання інформації виконує динамічна пам'ять, має найкраще поєднання обсягу, щільності упаковки, енергоспоживання і ціни. Однак їй притаманне невисока (за характеристиками сучасних процесорів) швидкодію. Динамічну пам'ять заміщає статична, швидкодія якої вище, але досяжна ємність принципово нижче, ніж у динамічній.
Обговоримо основні параметри оперативної пам'яті - швидкодія, продуктивність, достовірність зберігання і методи їх поліпшення.
Час доступу (access time) визначається як затримка появи дійсних даних на виході пам'яті щодо початку циклу читання.
Загальна тривалість циклу визначається як мінімальний період наступних один за одним звернень до пам'яті, причому цикли читання і запису вимагають різних витрат часу.
Продуктивність пам'яті характеризується швидкістю потоку записуваних або зчитувальних даних і вимірюється в мегабайтах в секунду. Продуктивність підсистеми пам'яті залежить від типу і швидкодії застосовуваних запам'ятовуючих елементів, розрядності шини пам'яті і деяких особливостей архітектури.
Розрядність шини пам'яті - це кількість байт (або біт), з якими операція читання або запису може бути виконана одночасно. Розрядність основний пам'яті зазвичай узгоджується з розрядністю зовнішньої шини процесора (1 байт - для I8088; 2 байта - для I8086, I80286, I386SX; 4 байта - для I386DX, I486; 8 байт - для Pentium і вище). Цілком очевидно, що при однаковому швидкодії мікросхем або модулів пам'яті продуктивність блоку з більшою розрядністю буде вище, ніж у малоразрядного. Саме з метою підвищення продуктивності у 32-бітного (по внутрішніх регістрів) процесора Pentium зовнішня шина, що зв'язує його з пам'яттю, має розрядність 64 біта.
Банком пам'яті називають комплект мікросхем, або модулів (а також їх посадочних місць - «ліжечок» для мікросхем, слотів для SIMM або DIMM), що забезпечує необхідну для даної системи розрядність збережених даних. Працездатним може бути тільки повністю заповнений банк. Всередині одного банку практично завжди повинні застосовуватися однакові (по типу і обсягу) елементи пам'яті.
Якщо встановлюється обсяг пам'яті набирається декількома банками, з'являється резерв для підвищення продуктивності за рахунок застосування чергування банків (bank interleaving). Ідея чергування полягає в тому, що суміжні блоки даних (розрядність такого блоку даних відповідає розрядності банку) розташовуються по черзі в різних банках. Чим більше банків беруть участь у чергуванні, тим вище (теоретично) гранична продуктивність. Найчастіше використовується чергування двох або трьох банків (two way interleaving, three way interleaving).
Застосування тіньової пам'яті (shadow memory) дозволяє підвищити продуктивність комп'ютера при інтенсивному зверненні до відносно повільної пам'яті модулів ROM BIOS і відеопам'яті. Ідея методу полягає в «затемненні» повільного модуля спеціальної пам'яті блоком швидкодіючої оперативної пам'яті.
При використанні Shadow ROM вміст затінюють області (ROM) копіюється в RAM і при подальшому зверненні за цими адресами підставляється фізична область RAM, а запис в цю область блокується. При використанні Shadow RAM запис проводиться одночасно в фізичну пам'ять затінюють області і в оперативну пам'ять (RAM), а причитанні звернення йде тільки до оперативної пам'яті. Shadow RAM зазвичай застосовується для прискорення роботи графічних адаптерів.
Колективна пам'ять адаптера - пам'ять, вміст якої може змінюватися як з боку системної шини (з ініціативи процесора або інших її абонентів), так і з боку адаптера, складовою частиною якого вона є. Прикладами розділяється пам'яті є буферна пам'ять комунікаційних адаптерів (вона в довільний момент часу може бути заповнена прийнятим з мережі пакетом) і відеопам’ять адаптерів з графічними сопроцесорами (бітове розкладання графічного примітиву будується в ній внутрішнім процесором графічного адаптера).
Тіньова пам'ять дає подвійний ефект підвищення продуктивності: затінювати області зазвичай мають малу розрядність (ROM BIOS - 8 біт, відеопам'ять невеликого обсягу - 8 або 16 біт) і низька швидкодія (ROM має час доступу понад 100 нс, а звернення до відеопам'яті гальмується конкуруючим процесом - регенерацією зображення).
У процесорах I486 і старше для підвищення продуктивності обміну даними з послідовно розташованими осередками пам'яті введений так званий пакетний цикл обміну - Burst Cycle. Звичайний цикл обміну має фазу адреси і фазу даних. Пакетний цикл призначений для послідовного обміну зазвичай з чотирма сусідніми елементами (байт, слово, подвійне слово, ...) пам'яті. При цьому фаза адреси існує тільки на початку циклу, а наступні три передачі здійснюються без неї: мається на увазі автоматичну зміну адреси за певними правилами.
У будь-який з багатьох мільйонів осередків пам'яті можливий випадковий збій або остаточну відмову, що приводить до помилки. Імовірність помилки, природно, зростає при збільшенні обсягу пам'яті.
Відмова осередки пам'яті - втрата її працездатності, зазвичай вимагає заміни елемента пам'яті. Відмова може бути стійким, але можливо і мимовільне відновлення працездатності, наприклад після повторного включення живлення. Часто причиною відмов є несправність контакту або порушення умов експлуатації.
Випадковий збій може відбутися й у справної мікросхемі пам'яті, наприклад при прольоті через неї іонізуючої частинки (з цієї причини в умовах високого рівня радіації звичайні електронні елементи непрацездатні). Після збою такий запис в осередок відбудеться нормально.
2. ПЕРШІ МОДЕЛІ ПЕРСОНАЛЬНИХ КОМПЬЮТЕРІВ
У перших моделях персональних комп'ютерів (РС) обов'язково застосовувався контроль парності. При його використанні кожен байт пам'яті супроводжувався бітом паритету (Parity bit), що доповнює кількість одиниць в байті до непарного. При виявленні помилки паритету схемою контролю виробляється немасковане переривання (NMI) і його обробник зазвичай виводить на екран повідомлення Parity Error Check (помилка паритету) із зазначенням адреси збійної осередки і зупиняє процесор командою Halt.
У комп'ютерах особливо відповідального застосування використовують пам'ять з виявленням і виправленням помилок - ЕСС Memory (Error Checking and Correcting). В цьому випадку для кожного записуваного інформаційного слова пам'яті (а не байта, як при контролі паритету) за певними правилами обчислюється функція згортки, результат якої розрядністю в кілька біт також зберігається в пам'яті. Функцію контролю та виправлення виконує чіпсет, його реакцію на помилки зазвичай можна задати опціями BIOS Setup. Можуть бути різні варіанти поведінки, наприклад:
- автоматично виправляти помилки, не повідомляючи про це систему;
- виправляти одноразові помилки, повідомляючи систему тільки про багаторазові;
- не поліпшувати помилки, а тільки повідомляти про їх виявленні (самий
достовірний контроль).
На відміну від пам'яті з контролем паритету, що допускає побайтне звернення, до ЕСС-пам'яті можна звертатися тільки повнорозрядними словами.
Контрольні питання для самоконтролю:
1. Назвіть основні характеристики ЗУ
2. Для чого використовується основна або оперативна пам'ять?
3. Назвіть вимоги, що пред'являються до основної пам'яті
4. Що таке розрядність шини пам'яті?
5. Як визначається час доступу?
6. Чим характеризується продуктивність пам'яті?
7. Що називають банком пам'яті?
8. Що дозволяє застосування тіньової пам'яті?
Самостійна робота № 8
Тема: Принципи дії елементів пам'яті
План
1. Динамічна пам'ять
2. Статична пам'ять
3. Енергозалежна пам'ять
4. Постійна пам'ять – ROM, FROM, EPROM
5. Пам'ять з електричним стиранням - EEPROM і флеш-пам'ять
1. ДИНАМІЧНА ПАМ'ЯТЬ
Динамічна пам'ять - DRAM (Dynamic RAM) - отримала свою назву від принципу дії її запам'ятовуючих осередків, які виконані у вигляді конденсаторів, утворених елементами напівпровідникових мікросхем. З деяким спрощенням опису фізичних процесів можна сказати, що під час запису логічної одиниці в осередок конденсатор заряджається, при записі нуля - розряджається. Схема зчитування розряджає через себе цей конденсатор і, якщо заряд був ненульовим, виставляє на своєму виході середнє арифметичне значення, потім заряджає конденсатор до колишнього значення. При відсутності звернення до осередку з часом за рахунок струмів витоку конденсатор розряджається і інформація втрачається, тому така пам'ять вимагає постійного періодичного підзаряду конденсаторів (звернення до кожної осередку) - пам'ять може працювати тільки в динамічному режимі. цим вона принципово відрізняється від статичної пам'яті, яка реалізується на тригерних осередках і зберігає інформацію без звернень до неї як завгодно довго (при увімкненому живленні). Завдяки відносній простоті осередки динамічної пам'яті на одному кристалі вдається розміщувати мільйони осередків і отримувати найдешевшу напівпровідникову пам'ять досить високого швидкодії з помірним енергоспоживанням, використовувану в якості основної пам'яті комп'ютера.
Запам'ятовуючі осередки мікросхем DRAM організовані у вигляді двовимірної матриці. Адреса рядка і стовпця передається по мультиплексованої шині адреси (МА, Multiplexed Address) і стробірується по спаду імпульсів. Оскільки звернення (запис або читання) до різних осередків пам'яті зазвичай відбуваються у випадковому порядку, то для підтримки збереження даних застосовується регенерація (Memory Refresh - «освіження» пам'яті) -регулярний циклічний перебір її осередків (звернення до них) з холостими циклами. Регенерація в мікросхемі відбувається одночасно по всій рядку матриці при зверненні до будь-якої з її осередків.
Динамічна пам'ять, яка використовується в відеобуфер графічних адаптерів, спеціальних циклів регенерації, як правило, не вимагає, оскільки частота її читання для регенерації зображення цілком достатня для збереження інформації.
Динамічна пам'ять в даний час є практично незамінною в якості основної (оперативної) пам'яті комп'ютерів. Найбільш часті зміни конфігурації PC пов'язані саме з оперативною пам'яттю - зазвичай прагнуть до збільшення її обсягу і підвищення продуктивності. З цим видом пам'яті, однак, пов'язано і більшість проблем, що виражаються в нестійкої роботи комп'ютера.
Мікросхеми або (і) модулі динамічної пам'яті, призначені для роботи в якості ОЗУ, в переважній більшості випадків встановлюються на системній платі з метою максимального наближення до процесора і чипсету. Це наближення (і фізичне, і логічне) перш за все спрямована на підвищення продуктивності оперативної пам'яті.
2. СТАТИЧНА ПАМ'ЯТЬ
Статична пам'ять - SRAM (Static Random Access Memory), як випливає з її назви, здатна зберігати інформацію в статичному режимі, т. е. як завгодно довго при відсутності звернень (але при наявності напруги живлення). Елементи статичної пам'яті реалізуються на тригерах-елементах з двома стійкими станами. У порівнянні з динамічною пам'яттю ці осередки більш складні і займають більше місця на кристалі, проте вони простіше в управлінні і не вимагають регенерації. Швидкодію і енергоспоживання статичної пам'яті визначається технологією їй виготовлення і схемотехнікою запам'ятовуючих осередків. сама економічна КМОП-пам'ять (CMOS Memory) має час доступу понад 100 наносекунд, але зате придатна для тривалого зберігання інформації при харчуванні від маломощної батареї, що і застосовується в пам'яті конфігурації PC. Сама швидкодіюча статична пам'ять має час доступу в кілька наносекунд, що дозволяє їй працювати на частоті системної шини процесора, не вимагаючи від нього тактів очікування. Типовий обсяг пам'яті сучасних мікросхем SRAM досягає 1 Мбіт. Відносно висока питома вартість зберігання інформації і енергоспоживання при низькій щільності упаковки не дозволяють використовувати SRAM в якості основної пам'яті комп'ютерів.

мал. 2.1. Тимчасові діаграми читання і запису асинхронної статичної пам'яті
Мікросхеми цього типу мають найпростіший асинхронний інтерфейс, що включає шину адреси, шину даних і сигнали управління CS #, ОЕ # і WE #. Мікросхема вибирається низьким рівнем сигналу CS # (Chip select). Низький рівень сигналу ОЕ # (Output Enable) відкриває вихідні буфери для зчитування даних, WE # (Write Enable) низьким рівнем дозволяє запис. При операції запису управління вихідними буферами може проводитися як сигналом ОЕ # (цикл 1), так і сигналом WE # (цикл 2). Для зручності об'єднання мікросхем внутрішній сигнал CS # може збиратися за схемою «І» з декількох зовнішніх, наприклад: CSO #, CS1 і CS2 #. В такому випадку мікросхема буде обрана при поєднанні логічних сигналів 0, 1, 0 на відповідних входах.
Час доступу - затримка появи дійсних даних на виході щодо моменту встановлення адреси. У стандартних мікросхем SRAM складає 12, 15 або 20 наносекунд, що дозволяє процесору виконувати пакетний цикл читання 2-1-1-1 (т. Е. Без тактів очікування) на частоті системної шини до 66 МГц. На більш високих частотах цикл буде не краще 3-2-2-2.
3. ЕНЕРГОЗАЛЕЖНА ПАМ'ЯТЬ
Незалежна пам'ять зберігає записані дані і при відсутності напруги живлення на відміну від статичної та динамічної напівпровідникової пам'яті. Існує безліч типів незалежної пам'яті: ROM, PROM, EPROM, EEPROM, Flash Memory, що розрізняються за споживчими властивостями, способам побудови запам'ятовуючих осередків і сферам застосування. Запис інформації в незалежну пам'ять, яка називається програмуванням, зазвичай виявляється значно складнішим і вимагає великих витрат часу і енергії, ніж зчитування. Основним режимом роботи такої пам'яті є зчитування даних, а деякі типи після програмування допускають тільки зчитування, що й обумовлює їх загальна назва ROM (Read Only Memory - пам'ять тільки для читання) або ПЗУ (постійний запам'ятовуючий пристрій).
Існує і полупостійна пам'ять, яка в основному використовується для зберігання інформації про конфігурацію комп'ютера. Традиційна пам'ять конфігурації разом з годинником - календарем (CMOS Memory і CMOS RTC) - має об'єм кілька десятків байт; ESCD (Extended Static Configu-ration Data) - область незалежної пам'яті, яка використовується для конфігурації пристроїв Plug & Play, має обсяг кілька кілобайт. Збереження даних полупостійної пам'яті при відключенні живлення комп'ютера забезпечується малопотужної внутрішньої батарейкою або акумулятором. В якості полупостійної застосовується і незалежна пам'ять - NV RAM (Non-Volatile RAM), яка зберігає інформацію і при відсутності живлення.
Запам'ятовуючі осередку незалежної пам'яті зазвичай несиметричні за своєю природою і дозволяють записувати тільки нулі (рідше – тільки одиниці) в попередньо стерті (чисті) осередки. Лише один раз програмовані мікросхеми дозволяють змінювати тільки вихідне (після виготовлення) стан осередків. Стирання осередків виконується або для всієї мікросхеми, або для певного блоку, або для одного осередку (байта). Стирання приводить все біти стирається області в один стан (зазвичай – у всі одиниці, рідше - в усі нулі). Процедура стирання зазвичай істотно довше записи. Залежно від способу стирання розрізняють:
- мікросхеми, стираються ультрафіолетовим опроміненням, їх зазвичай називають просто EPROM (Erasable PROM - прані мікросхеми), або UV-EPROM (Ultra-Violet EPROM, УФРПЗУ);
- електрично стираються мікросхеми EEPROM (Electrical Erasable PROM, ЕСПЗУ), в тому числі і флеш-пам'ять.
Незалежна пам'ять в основному застосовується для зберігання незмінної (або рідко змінною) інформації - системного програмного забезпечення (BIOS), таблиць (наприклад, знакогенераторів графічних адаптерів), пам'яті конфігурації пристроїв (ESCD, EEPROM адаптерів). Ця інформація зазвичай є ключовою для функціонування PC (без BIOS комп'ютер являє собою тільки коробку з дорогими комплектуючими).
Важливими параметрами незалежній пам'яті є час зберігання та стійкість до електромагнітних впливів, а для пере програмованої пам'яті ще й гарантовану кількість циклів перепрограмування. Незалежну пам'ять, запис до якої виробляють при регулярній роботі, називають NVRAM (Non Volatile Random Access Memory).
4. ПОСТІЙНА ПАМ'ЯТЬ – ROM, FROM, EPROM
Масочні постійні запам'ятовуючі пристрої - ПЗУ (ROM) - мають найвищу швидкодію (час доступу 5-70 нс). Ці мікросхеми в МПС широкого поширення не отримали через складність модифікації вмісту.
Лише один раз програмовані постійні запам'ятовувальні пристрої - ППЗУ (PROM) - мають аналогічні параметри і завдяки можливості програмування виробником обладнання (а не мікросхем) знаходять більш широке застосування для зберігання кодів BIOS. Програмування цих мікросхем здійснюється тільки за допомогою спеціальних програматорів, в цільові пристрої яких вони встановлюються в «ліжечка» або запаюються. Як і масочні, ці мікросхеми практично нечутливі до електромагнітних полів (в тому числі і до рентгенівського опроміненню), і несанкціонованих змін їх вмісту в пристрої виключено (звичайно, не рахуючи відмови).
Репропрограмовані постійні запам'ятовуючі пристрої – РПЗУ (EPROM) - до недавніх пір були найпоширенішими носіями BIOS як на системних платах, так і в адаптерах, а також використовувалися в якості знакогенераторів.
Мікросхеми EPROM теж програмуються на програматорах, але відносно простий інтерфейс запису дозволяє їх програмувати і в пристрої (але не в штатному його режимі роботи, а при підключенні зовнішнього програматора). Стирання мікросхем здійснюється ультрафіолетовим опроміненням протягом декількох хвилин. Спеціально для стирання мікросхеми мають скляні віконця. Після програмування ці віконця заклеюють для запобігання стирання під дією сонячного або люмінесцентного опромінення. Час стирання залежить від відстані до джерела опромінення, його потужності і об'єму мікросхеми (більш ємні мікросхеми стираються швидше).
У PC найчастіше застосовують мікросхеми EPROM.
Відзначимо основні властивості EPROM:
- Стирання інформації відбувається відразу для всієї мікросхеми під впливом опромінення і займає кілька хвилин. стерті осередки мають одиничні значення всіх біт.
- Запис може проводитися в будь-яку частину мікросхеми побайтно, в межах байта можна маскувати запис окремих біт, встановлюючи їм одиничні значення даних.
- Захист від запису здійснюється подачею низького (5 В) напруги на вхід Vpp в робочому режимі (тільки читання).
- Захист від стирання виробляється заклеювання вікна.
5. ПАМ'ЯТЬ З ЕЛЕКТРИЧНИМ СТИРАННЯМ - EEPROM І ФЛЕШ-ПАМ'ЯТЬ
Стирання мікросхем постійної пам'яті можливо і електричним способом. Однак цей процес вимагає значної витрати енергії. Інтерфейс традиційних мікросхем EEPROM має тимчасову діаграму режиму записи з великою тривалістю імпульсу, що не дозволяє безпосередньо використовувати сигнал записи системної шини. Крім того, перед записом інформації в осередок зазвичай потрібна попередня стирання, теж досить тривалий. Мікросхеми EEPROM відносно невеликого обсягу широко застосовуються в якості незалежної пам'яті конфігурації різних адаптерів. Сучасні мікросхеми EE-PROM мають більш складну внутрішню структуру, в яку входить керуючий автомат. Це дозволяє спростити зовнішній інтерфейс, роблячи можливим безпосереднє підключення до мікропроцесорної шині, і приховати специфічні (і непотрібні користувачеві) допоміжні операції типу стирання і верифікації.
Флеш-пам'ять, за визначенням, відноситься до класу EEPROM, але використовує особливу технологію побудови запам'ятовуючих осередків. Стирання у флеш-пам'яті проводиться відразу для цілої області осередків: блоками або повністю всієї мікросхеми. Це дозволило істотно підвищити продуктивність в режимі запису (програмування). Флеш-пам'ять володіє поєднанням високої щільності упаковки (її осередки на 30% менше осередків DRAM), енергонезалежного зберігання, електричного стирання і записі, низького споживання, високої надійності і невисокої вартості.

мал. 5.1. Флеш-пам'ять - основні показники

мал. 5.2.Розташування висновків мікросхем флеш-пам'яті з 8-бітної організацією в корпусах DIP і PLCC: а - DIP-32, б - PLCC-32
Інтерфейс мікросхем флеш-пам'яті добре поєднується зі стандартними сигналами, використовуваними в мікропроцесорних системах. Внутрішні цикли стирання, записи і верифікації виконуються автономно від шинних циклів зовнішнього інтерфейсу, що є істотною перевагою перед мікросхемами EPROM і EEPROM. У режимі читання вони повністю сумісні з EPROM, збігаючись з ними і по розташуванню основних висновків.
Контрольні питання для самоконтролю:
1. Назвіть основні властивості EPROM
2. До якого класу відноситься флеш-пам'ять?
3. Що таке масочні постійні запам'ятовуючі пристрої?
4. Що таке репропрограмовані постійні запам'ятовуючі пристрої?
5. Що таке статична пам'ять?
6. Що таке динамічна пам'ять?

Самостійна робота № 9
Тема: Кешування. Карта пам'яті
План
1. Основні поняття кешування
2. Архітектура кеш- пам'яті
1. ОСНОВНІ ПОНЯТТЯ КЕШУВАННЯ
Кеш-пам'ять (Cache Memory) – понадоперативна пам'ять (СОЗУ), є буфером між ОЗУ і його «клієнтами» - процесором (одним або декількома) і іншими абонентами системної шини. У перекладі слово кеш (cache) означає «склад» або «тайник» («заначка»). «Таємниця» цього складу полягає в його «прозорості» - для програми він не представляє собою додаткової адресується області пам'яті. Кеш-пам'ять є додатковим і швидкодіючим сховищем копій блоків інформації основний пам'яті, до якої, ймовірно, найближчим часом буде звернення. Кеш не може зберігати копію всієї основної пам'яті, оскільки його обсяг у багато разів менше обсягу основної пам'яті. Він зберігає лише обмежена кількість блоків даних і каталог (cache directory) - список їх поточного відповідності областям основний пам'яті. Крім того, кешуватись може не вся пам'ять, доступна процесору: зазвичай кешується тільки основна динамічна пам'ять системної плати (пам'ять, встановлена на адаптерах, що не кешується) і з цієї пам'яті кешується тільки частина (поширені версії чіпсетів для Pentium часто дозволяють кешувати лише перші 64 Мбайт ОЗУ).
Кеш в сучасних комп'ютерах будується по двох (і більше) – рівневою схемою.
Первинний кеш, або L1 Cache (Level I Cache), - кеш 1-го рівня, внутрішній (Internal, Integrated) кеш процесорів класу I486 і старше, а також деяких моделей I386.
Вторинний кеш, або L2 Cache (Level 2 Cache), - кеш 2-го рівня. Зазвичай це зовнішній (External) кеш, встановлений на системній платі. У Pentium Pro і Pentium II вторинний кеш розташований в одному корпусі з процесором. Додатковий кеш на системну плату вже не встановлюється. Кеш, встановлений на системній платі комп'ютера з процесором I386, які не мають внутрішнього кеша, є первинним (і єдиним).
При кожному зверненні до кешованої пам'яті контролер кеш-пам'яті по каталогу перевіряє, чи є дійсна копія затребуваних даних в кеші. Якщо вона там є, то це випадок кеш-попадання (cache hit), і звернення за даними відбувається тільки до кеш-пам'яті. Якщо дійсної копії там немає, то це випадок кеш-промаху (cache miss), і дані беруться з основної пам'яті.
Кеш-контролер повинен забезпечувати когерентність (coherency) - узгодженість даних кеш-пам'яті обох рівнів з даними в основний пам'яті, причому звернення до цих даних може здійснюватися як з боку процесора (процесорів може бути і кілька і у кожного може бути свій внутрішній кеш), але і з боку інших активних (bus-master) адаптерів, підключених до шин (PCI, VLB, ISA ...).
Контролер кеша оперує рядками (cache line) фіксованої довжини. Рядок може зберігати копію блоку основної пам'яті, розмір якого, природно, збігається з довжиною рядка. З кожним рядком кеша пов'язані інформація про адресу скопійованого в неї блоку основної пам'яті і ознаки її стану. Рядок може бути дійсною (valid) - в поточний момент часу вона достовірно відображає відповідний блок основної пам'яті, або недійсною (порожній). Інформація про те, який саме блок займає даний рядок (т. Е. Старша частина адреси або номер сторінки), а також її стан називається тегом (tag), який зберігається в пов'язаної з даної рядком осередку спеціальної пам'яті тегів (tag RAM).
Можливий і варіант сектованого (sectored) кеша, при якому один рядок містить кілька суміжних осередків - секторів, розмір яких відповідає мінімальній порції обміну даних кеша з основною пам'яттю. При цьому в записі каталогу, що відповідає кожному рядку, повинні зберігатися біти дійсності для кожного сектора даного рядка. Сектування дозволяє економити пам'ять, необхідну для зберігання каталогу при збільшенні обсягу кешу.
Поведінка кеш-контролера при операції запису в пам'ять, коли копія затребуваної області знаходиться в деякій рядку кеша, визначається його політикою запису (Write Policy). Існують два основних алгоритму запису даних з кеша в основну пам'ять: наскрізна запис WT (WriteThrough) і зворотний запис WB (Write Back).
Алгоритм WT передбачає виконання кожної операції запису (навіть однобайтному), що потрапляє в кешований блок, одночасно і в рядок кеша, і в основну пам'ять.
Алгоритм WB дозволяє зменшити кількість операцій запису на шині основної пам'яті. Якщо блок пам'яті, в який повинна проводитися запис, відображений і в кеші, то фізична запис спочатку буде проведена в цю дійсну рядок кеша і відзначена як брудна (dirty), або модифікована, т. е. що вимагає вивантаження в основну пам'ять. Тільки після цієї вивантаження (записи в основну пам'ять) рядок стане чистою (clean) і її можна буде використовувати для кешування інших блоків без втрати цілісності даних.
2. АРХІТЕКТУРА КЕШ- ПАМ'ЯТІ
Розрізняють три архітектури кеш-пам'яті: кеш прямого відображення (direct-mapped cache), повністю асоціативний кеш (fully associative cache) і їх комбінація - частково або набірний-асоціативний кеш (set-associative cache).
У кеш-пам'яті прямого відображення адресу пам'яті, по якому відбувається звернення, однозначно визначає рядок, в якій може перебувати відображення необхідного блоку.
Набірний-асоціативна архітектура кеша дозволяє кожному блоку кешованої пам'яті претендувати на одну з кількох рядків кеша, об'єднання в набір (set). Цю архітектуру можна розглядати як кілька паралельно і узгоджено працюючих каналів прямого відображення, де контролеру кешу доводиться ще й приймати рішення про те, в яку з рядків набору поміщати черговий блок даних.
На відміну від попередніх у повністю асоціативного кеша будь-яка його рядок може відображати будь-який блок пам'яті, що істотно підвищує ефективність використання його обмеженого обсягу. При цьому всі біти адреси кешованого блоку за вирахуванням біт, що визначають положення (зміщення) даних в рядку, зберігаються в пам'яті тегів. У такій архітектурі для визначення наявності затребуваних даних в кеш-пам'яті необхідно порівняння зі старшою частиною адреси тегів всіх рядків, а не однієї чи кількох.
Контрольні питання для самоконтролю:
1. Що таке кеш-пам'ять?
2. На які три архітектури розрізняють кеш-пам'ять?
3. Що передбачає алгоритм WT?
4. Що дозволяє алгоритм WB?
5. Що таке когерентність?

Самостійна робота № 10-11 (4 години)
Тема: Структура 8-ми бітного мікроконтролеру
План
1. Короткий огляд 8-розрядних контролерів
2. Мікроконтролери фірми Motorola
3. Мікроконтролери фірми Microchip.
4. Контролери фірма Atmel.
5. Контролери фірми ScenixSemiconductor
6. Контролери фірми Zilog
7. Контролери фірми Holtek
8. Контролери фірми Analog Devices
9. Основні області застосування 8-розрядних МК
1. КОРОТКИЙ ОГЛЯД 8-РОЗРЯДНИХ КОНТРОЛЕРІВ
Розглянемо сімейства найбільш поширених 8-розрядних мікроконтролерів (МК), що мають невисоку вартість і придатних для використання у виробах різного призначення. Такі мікроконтролери випускає велику кількість фірм.
Мікроконтролери сімейства MCS-51. Перший контролер 8051АН цього сімейства розробила і випустила фірма Intel в 1980 р Мікроконтролер містив ПЗУ обсягом 4 Кбайта, ОЗУ в 128 байт, 4 порту введення / виведення, 2 таймера і асинхронний порт. На його кристалі розміщувалося 128 тисяч транзисторів. частота внутрішньої шини становила 1 МГц. У наступних моделях мікроконтролерів були збільшені частота внутрішньої шини (до 3 МГц) і обсяг пам'яті програм (8, 16 і 32 Кбайта), до складу контролерів введені нові периферійні вузли (АЦП, сторожовий таймер і ін.).
Сімейство контролерів MCS-51 виконано на основі гарвардської архітектури. Процесорний ядро ​​MCS-51 виявилося настільки вдалим, що протягом двох десятиліть стало по суті справи стандартом в області 8-розрядних контролерів. У Росії широке поширення отримав мікроконтролер 1816ВЕ51 - аналог контролера 8051АН. Одночасно ряд фірм (Philips, Infineon, Atmel та ін.) Розробив контролери, програмно сумісні з сімейством MCS-51, що володіють сучасними типами пам'яті програм і даних (Flash і EEPROM), що мають розширений набір периферійних модулів, що працюють в широкому діапазоні напруги живлення.
2. МІКРОКОНТРОЛЕРИ ФІРМИ MOTOROLA
Фірма Motorola має найширшу в світі номенклатурою мікроконтролерів (близько 300 моделей - від найпростіших дешевих 8-розрядних до високопродуктивних 32-розрядних мікроконтролерів з RISC-ядром і потужною периферією), що охоплює практично всі сфери застосування. Тому користувач має можливість вибрати для свого застосування оптимальну модель мікроконтролера, як по набору вбудованих функцій, так і за економічними параметрами. Важливою особливістю мікроконтролерів є їхня висока якість і надійність, оскільки фірма Motorola відноситься до основних постачальниках військово-промислового та аерокосмічного комплексів.
Перший МК популярного до теперішнього часу сімейства НС05 з'явився одночасно з контролером 8051АН. При випуску контролерів цього сімейства використовується стратегія «замовних» МК, згідно з якою конфігурація контролера замовляється споживачем під конкретну продукцію. В даний час сімейство НС05 налічує близько 180 різних типів контролерів, виконаних на основі прінстонської архітектури. Завдяки різноманітності периферійних модулів при незмінному і дуже простому процессорном ядрі НС05 перед розробником відкриваються широкі можливості по реалізації різних технічних рішень при повному задоволенні вимог, що пред'являються (високої продуктивності, низької вартості виробу та ін.) Без надмірних ресурсів в архітектурі.
Пізніше з'явилися універсальні і більш продуктивні МК (близько 40 моделей) сімейства НС11 як доповнення до дешевих «замовним» контролерам сімейства НС05.
Відмінними рисами сімейства НС11 є:
- можливість виконання операцій над 16-розрядними операндами;
- додаткові способи адресації;
- підвищена частота внутрішньої шини (до 4 МГц);
- три типи пам'яті на кристалі: одноразово програмованого ПЗУ програм, статичного ОЗУ даних і ПЗУ даних з електричним способом програмування і стирання.
Представлене в кінці 1990-х років фірмою «Motorola» нове 8-розрядний сімейство НС08 має поступово замінити МК сімейства НС05 і стати новим «промисловим стандартом» 8-розрядних МК фірми. Основні переваги сімейства НС08:
- програмна сумісність «знизу вгору» з процесорним ядром сімейства НС05 (на рівні початкового тексту і об'єктних кодів);
- наявність 8-розрядної АЛУ, що дозволяє підвищити продуктивність центрального процесора НС08 в 6 разів у порівнянні з процесором сімейства НС05. Це стало можливим завдяки:
1. підвищення частоти обміну внутрішньої шини до 8,0 МГц;
2. поєднанню циклів виконання і вибірки наступної команди;
3. введенню спеціальних команд перегляду таблиць і організації циклів;
4. збільшення способів адресації операндів.
- використання FLASH-технології для ПЗУ програм користувача. Розроблено дві моделі повністю ідентичних МК, що відрізняються тільки технологією занесення інформації в ПЗУ програм (maskROM або FLASH). Контролери з пам'яттю програм типу FLASH дозволяють реалізувати режим програмування в системі, в цьому режимі прикладна програма заноситься в пам'ять контролера, який стаціонарно розташований на платі вироби. Коди програми передаються по послідовному інтерфейсу від персонального комп'ютера;
- наявність розширеного набору контролерів послідовного обміну в бібліотеці периферійних модулів сімейства. Крім стандартних портів асинхронного (SCI) і синхронного (SPI) обміну, розроблені контролери для роботи в промислових мережах з протоколом CAN і для перспективної шини обчислювальної техніки USВ;
- поліпшені можливості налагодження МК: вбудований монітор і спеціальний порт дозволяють виробляти налагодження прикладних програм управління безпосередньо на платі кінцевого вироби без використання дорогих схемних емуляторів;
- використання спеціальних схемотехнічних рішень для підвищення надійності роботи МК в умовах електромагнітних перешкод.
3. МІКРОКОНТРОЛЕРИ ФІРМИ MICROCHIP.
Випускаються цією фірмою МК сімейств PIC12 і PIC16 / 17 (Peripheral Interface Controller) об'єднують всі передові технології мікроконтролерів: електрично програмовані користувачем ППЗУ, мінімальне енергоспоживання, високу продуктивність, добре розвинуту RISC-архітектуру, функціональну закінченість і мінімальні розміри. Широка номенклатура виробів забезпечує використання мікроконтролерів в пристроях, призначених для різноманітних сфер застосування.
В кінці 1980-х років фірма Microchip випустила МК Р1С16С5х, які заснували широко поширене нині сімейство PIC16. Завдяки високій продуктивності, малому споживанню і низької вартості це сімейство з RISC-архітектурою склало серйозну конкуренцію випускається в той час 8-розрядних МК з CISC-архітектурою. В основу концепції PIC була покладена RISC-архітектура з системою простих однослівних команд, які виконуються за один машинний цикл (команди переходу виконуються за два цикли). В процесі виконання поточної команди відбувається вибірка з пам'яті наступної команди. Система команд базового сімейства PIC16C5X містить тільки 33 команди. Продуктивність Р1С16С5х при частоті тактирования в 20 МГц становить 5 MIPS (мільйонів інструкцій у секунду).
В даний час фірма Microchip випускає п'ять сімейств МК з RISC-архітектурою:
- PIC15C5X включає недорогі контролери з мінімальним набором периферійних пристроїв;
- Р1С12Сххх містить МК в мініатюрному 8-вивідному корпусі з вбудованим тактовим генератором і модулем 8-розрядного АЦП (для деяких моделей);
- Р1С16х / 7х / 8х / 9х об'єднує МК з розвиненою периферією (таймери-лічильники з опціями захоплення / порівняння, широтно-імпульсні модулятори, аналогові компаратори, АЦП, контролери послідовних інтерфейсів);
- Р1С17С4х / 5хх включає високопродуктивні контролери з розширеною системою команд і великої периферією. Мікроконтролери цього сімейства мають вбудований апаратний помножувач 8x8, що виконує операцію множення за один машинний цикл;
- Р1С18Сххх - нове сімейство МК з оптимізованим під використання Сі-компілятора з RISC-ядром і частотою внутрішньої шини до 10 МГц.
4. КОНТРОЛЕРИ ФІРМИ ATMEL
Ця фірма виробляє два сімейства мікроконтролерів: сімейство АТ89, сумісний з фактичним промисловим стандартом MCS-51, і сімейство високопродуктивних RISC-мікроконтролерів АТ90 власної архітектури.
Характерною особливістю мікроконтролерів фірми Atmel є Flash пам'ять програм, що забезпечує швидкість програмування і зменшення циклу розробки додатків.
Представлені в 1997 р контролери сімейства AVR AT90S містять:
- потужний RISC-процесор з Гарвардської архітектурою, що забезпечує роздільний доступ до пам'яті програм і даних;
- АЛУ з апаратним помножувачем, 32 регістра загального призначення, паралельні порти, таймери-лічильники, послідовні інтерфейси, АЦП, аналогові компаратори;
- базовий набір з 120 команд, більшість яких виконується за один машинний цикл. Продуктивність ряду моделей становить 20 MIPS.
Мікроконтролери AVR поділяються на три серії:
1. tiny AVR - МК в 8-вивідному корпусі низької вартості;
2. classic AVR - основна серія контролерів з продуктивністю до 16 MIPS, що мають Flash пам'ять програм обсягом до 8 Кбайт і статичне ОЗУ даних 128 ... 512 байт;
3. mega AVR - МК з продуктивністю до 6 MIPS для складних додатків, що вимагають великого обсягу пам'яті (Flash ПЗУ до 128 Кбайт), ОЗУ до 4 Кбайт.
5. КОНТРОЛЕРИ ФІРМИ SCENIXSEMICONDUCTOR
Продукцією цієї фірми є високошвидкісні 8-розрядні мікроконтролери SX з внутрішньої Flash пам'яттю програм обсягом 2К слів. Вони виконані з використанням статичної КМОП технології, що забезпечує роботу при тактових частотах від 0 до 50 МГц. Їх продуктивність досягає 50 MIPS. Апаратні периферійні пристрої можуть бути замінені програмними модулями. Такі модулі, звані віртуальними периферійними пристроями, дозволяють зменшити число компонентів і час розробки, збільшити гнучкість проектів і, в кінцевому рахунку, вартість системи.
6. КОНТРОЛЕРИ ФІРМИ ZILOG
Фірма Zilog випускає розвинене сімейство універсальних мікроконтролерів Z8, а також спеціалізовані мікроконтролери для дистанційного керування на інфрачервоних променях, контролери клавіатури / миші, контролери обробки голосу, цифрові телевізійні контролери, контролери з цифровими сигнальними процесорами (DSP) і ін. Мікроконтролери фірми Zilog з DSP є недорогим варіантом для цілого ряду завдань по обробці сигналів.
7. КОНТРОЛЕРИ ФІРМИ HOLTEK
Мікроконтролери базуються на високоефективному RISC-подібному ядрі і орієнтовані на використання в якості контролерів вентиляторів, світильників, пральних машин, іграшок та інших пристроїв. Контролери мають невисоку вартість. Однією з основних відмінних рис ряду мікроконтролерів є наявність моделей з вбудованими драйверами РКІ, що забезпечує можливість побудови оптимальних пристроїв з дисплейними функціями.
8. КОНТРОЛЕРИ ФІРМИ ANAlOG DEVICES
Сімейство мікроконтролерів MicroConverterM цієї форми, що з'єднують модулі АЦП, ЦАП і мікропроцесорний ядро, сумісне з MCS-51 ™ з Flash-пам'яттю програм, представляє собою ідеальне рішення для повноцінних систем збору даних.
9. ОСНОВНІ ОБЛАСТІ ЗАСТОСУВАННЯ 8-РОЗРЯДНИХ МК
Основні області застосування 8-розрядних МК:
- вбудовані системи управління побутовими приладами і механізмами;
- засоби забезпечення безпеки, системи охоронної сигналізації;
- засоби зв'язку, вимірювань, контролю, діагностики, відображення інформації;
- системи управління промисловим обладнанням, системами енергоживлення.
Сучасні 8-розрядні МК відповідає таким вимогам як:
- простота схемотехнік при великому наборі виконуваних функцій;
- мале енергоспоживання при високій швидкодії;
- малі витрати на підготовку виробництва при підготовці серійного випуску виробів;
- простота і доступність ціни технічних засобів для розробки і налагодження схем.
Контрольні питання для самоконтролю:
1. Назвіть найбільш поширеніші сімейства 8-розрядних мікроконтролерів
2. Назвіть відмінними риси сімейства НС11
3. Назвіть основні переваги сімейства НС08
4. Назвіть п'ять сімейств МК з RISC-архітектурою
5. Що містять в собі контролери сімейства AVR AT90S?
6. На які три групи поділяються мікроконтролери AVR?
7. Що випускає фірма Zilog?
8. Назвіть основні області застосування 8-розрядних МК
9. Яким вимогам відповідають сучасні 8-розрядні МК?

Самостійна робота № 12
Тема: Класифікація сучасних мікро-контролерів
План:
1. Вступ
2. Постановка задачі
3. Реалізація
4. Середовище розробки
1. ВСТУП
Сучасні мікроконтролери (МК) мають в своєму складі, крім основних функціональних блоків (порти, таймери, АЦП, ЦАП і ін.), чималий обсяг постійної пам'яті програм, що становить десятки і навіть сотні кілобайт. Причому розмір цієї пам'яті постійно збільшується зі створенням нових моделей мікроконтролерів, що дозволяє створювати для них програми нової якості, збагачені додатковими сервісами. Наприклад, озвучувати людським голосом режим роботи, подія, аварійні ситуації та дії оператора.
Звичайно, подібні програми можна було створювати і раніше, але для цього були потрібні додаткові компоненти і з'єднання. Це призводило до ускладнення і подорожчання пристрою. Сучасні мікроконтролери вже містять все необхідне для вирішення такого завдання і не вимагають додаткових компонентів. Тому впровадження додаткового сервісу не призводить до підвищення вартості пристрою.
2. ПОСТАНОВКА ЗАДАЧІ
Потрібно розробити пристрій, здатний озвучувати режими роботи і деякі події, пов'язані з діями оператора. Наприклад, при включенні повідомляти про готовність до роботи «Пристрій готовий!»; при натисканні цифрових кнопок озвучувати їх назви: «Один», «Два» і т.д.
Передбачається використовувати популярний АРМ мікроконтролер LPC2148 фірми NXP (Philips). Даний мікроконтролер містить все необхідне для вирішення даного завдання: вбудований 10-розрядний ЦАП, достатній обсяг пам'яті програм (512 Кб), два порти UART, порти введення виведення, таймери з широтно-імпульсними модуляторами, два інтерфейси I 2 C, інтерфейс SPI і SSP , 14-канальний 10-розрядний АЦП і порт USB. Такий багатий арсенал дозволяє створювати на основі МК безліч самих різноманітних пристроїв при досить скромною вартості.
3. РЕАЛІЗАЦІЯ
Оскільки для реалізації пристрою потрібно лише записати програму в мікроконтролер і вивести звуковий сигнал на зовнішній підсилювач, схема пристрою виходить простий. На ній показано підключення лише тих елементів, які забезпечують функціонування мікроконтролера і рішення поставленого завдання. Решта висновки мікроконтролера можуть використовуватися для інших цілей. Щоб мікроконтролер почав працювати, до нього необхідно підключити кварцовий резонатор, ланцюги скидання і харчування. оператор може впливати на мікроконтролер за допомогою органів управління. Це можуть бути звичайні кнопки або порт зв'язку з комп'ютером. Для програмування АРМ мікроконтролера необхідно організувати канал зв'язку з комп'ютером через послідовний порт. Цей порт буде посилати в контролер коди натискання клавіш, зроблене на клавіатурі комп'ютера. Через цей ж порт можна приймати інформацію від мікроконтролера і відображати її на екрані монітора. Всі зазначені компоненти присутні на наведеній схемі пристрою.
4. СЕРЕДОВИЩЕ РОЗРОБКИ
Необхідно створити тестову програму для нашого пристрою і запрограмувати мікроконтролер. Після цього він буде відтворювати звуки і фрази під впливом команд.
Для створення програми скористаємося пакетом Keil uVision 3 для АРМ. Це середовище розробки вільно поширюється виробником. Безкоштовні версії дозволяють створювати програми з 30-денним обмеженням і без обмеження за терміном використання, але з обмеженням розміру коду декількома десятками кілобайт. Обидва варіанти підходять для вирішення поставленого завдання. Завантажити пакет можна з інтернет сторінки розробників.
Після установки пакета, в каталозі, де він розміститься, буде створена папка з прикладами готових програм. Запустіть середу розробки і відкрийте в ній проект з найпростішої програмою, яка дозволяє виводити на екран монітора повідомлення «Hello world».
Команда виведення рядка прінт забезпечує висновок інформації в порт UART1 завдяки наявності програмного модуля Serial.c. Вміст цього модуля можна переглянути в середовищі розробки, клацнувши двічі лівою кнопкою миші по назві модуля в лівому вікні середовища. Даний модуль містить функції стандартного введення / виведення getchar і putchar, використовувані поточними функціями введення / виведення scanf і printf для перепризначення файлового введення / виводу на пристрій UART1. Крім цих файлів проект програми містить файл Startup.s, призначений для ініціалізації МК, який присутній в середовищі розробки в готовому вигляді і не вимагає редагування.
Компіляція програми виконується будь-яким з трьох способів: через головне меню Prject → Build Target, за допомогою кнопки на панелі інструментів або натисканням клавіші F7.
Запуск програми в отладочному режимі виконується також будь-яким з трьох способів: через головне меню Debug? Start / Stop Debug Session → Build Target, за допомогою кнопки на панелі інструментів або натисканням клавіш Ctrl + F5.
У цьому режимі можна виконувати програму повністю або по кроках, а також переглядати вміст змінних програми, пам'яті і регістрів МК. Крім того, в отладочному режимі можна контролювати стан всіх портів введення / виведення, таймерів, АЦП і ЦАП та ін. через закладку Peripherals в головному меню.
Середа налагодження дозволяє емулювати послідовний порт комп'ютера. Відкрити вікно з емулятором можна через головне меню View → Serial Window # 1 або за допомогою програмної кнопки на панелі інструментів. У вікні емулятора послідовного порту комп'ютера буде відображатися інформація, що виводиться в програмі через порт з номером, меншим на одиницю, тобто через UART0. Оскільки в даній програмі функції введення / виводу get char і putchar перенаправлені в програмному модулі Serial.c на порт UART1 мікроконтролера, необхідно відкрити вікно для симулятора цього порту за допомогою головного меню View → Serial Window # 2. В цьому вікні буде виводитися інформація з допомогою оператора printf, а що вводяться з клавіатури символи передаватимуться в програму через порт UART1. Зокрема, повідомлення програми «Hello world» буде відображено саме в цьому вікні. Таким чином, можна налагоджувати програму для МК без наявності самого пристрою.
Контрольні питання для самоконтролю:
1. З чого складаються сучасні мікроконтролери?
2. Що містить в собі мікроконтролер LPC2148 фірми NXP (Philips)?
3. Що необхідно для того що мікроконтролер почав працювати?
4. Як виконується компіляція програми?
5. Як виконується запуск програми?
6. Що забезпечує команда виведення рядка прінт?

Самостійна робота № 13
Тема: Цифровий процесор обробки сигналів
План:
1. Загальна характеристика цифрових процесорів обробки сигналів (ЦПОС) та область їх застосування
2. Організація обчислень в ЦПОС. Особливості архітектури
3. МАС-операція. Схеми реалізації в ЦПОС. Точність обчислень
4. Фізична організація пам'яті в ЦПОС. Гарвардська
архітектура та багатопортова пам'ять
5. Логічна організація пам'яті та режими адресації
6. Архітектура й призначення спеціалізованих модулів ЦПОС:
таймера, лічильника числа повторень, генераторів адреси
7. Архітектурні Особливості основних сімейств ЦПОСІ
(Motorola, Texas Instruments, Analog Devices)
8. Інструментальні засоби розробки систем на основі ЦПОС
1.ЗАГАЛЬНА ХАРАКТЕРИСТИКА ЦИФРОВИХ ПРОЦЕСОРІВ ОБРОЬКИ СИГНАЛІВ (ЦПОС) ТА ОБЛАСТЬ ЇХ ЗАСТОСУВАННЯ
Цифрова обробка сигналу (ЦОС) – це арифметична обробка в реальному масштабі часу послідовності значень амплітуди сигналу, визначених через рівні часові проміжки. Прикладами цифрової обробки є:
- фільтрація сигналу;
- згортка двох сигналів (змішування сигналів);
- обчислення значень кореляційної функції двох сигналів;
- підсилення, обмеження або трансформація сигналу;
- пряме/зворотне Фур’є-перетворення сигналу.
Аналогова обробка сигналу, що традиційно використовується в багатьох радіотехнічних пристроях, є у багатьох випадках дешевшим способом досягнення необхідного результату. Проте тоді, коли потрібна висока точність обробки, мініатюрність пристрою, стабільність його характеристик в різних температурних умовах функціонування, цифрова обробка виявляється єдиним прийнятним рішенням.
Приклад аналогової фільтрації сигналу наведено на мал. 1.1.

мал. 1.1. Аналогова обробка сигналу
Використаний у фільтрі операційний підсилювач дозволяє розширити динамічний діапазон сигналів, що обробляються. Форма амплітудно-частотної характеристики фільтра визначається значеннями величин Rf, Cf . Для аналогового фільтра складно забезпечити високе значення добротності, характеристики фільтра сильно залежать від температурного режиму. Компоненти фільтра вносять додатковий шум в результуючий сигнал. Аналогові фільтри важко перебудовувати в широкому діапазоні частот.
Аналогічні результати обробки сигналу можуть бути отримані за допомогою цифрової схеми, показаної на мал. 1.2.

мал. 1.2. Цифрова обробка сигналу
Компонентами схеми є фільтри низької частоти (ФНЧ), які виконують попереднє і подальше видалення з частотного спектру додаткових гармонік сигналу, аналого-цифровий (АЦП) та цифро-аналоговий (ЦАП) перетворювачі сигналу і власне цифровий фільтр з кінцевою імпульсною характеристикою. Амплітудно-частотна характеристика фільтра визначається значеннями коефіцієнтів фільтра С(к). Змінюючи кількість коефіцієнтів (довжину фільтра) і їх значення, можна отримати фільтр з будь-якою амплітудно-частотною характеристикою. Шуми, що вносяться (шуми квантування), залежать від частоти і розрядності АЦП і ЦАП, а також від точності обчислень.
Схема перетворення, що виконується над послідовністю відліків сигналу, яка задається математичною формулою, може бути також зображена графічно у вигляді структурної схеми цифрового фільтра.
Існує класифікація фільтрів за виглядом імпульсної характеристики: фільтри з кінцевою імпульсною характеристикою КІХ (FIR) і фільтри з безкінечною імпульсною характеристикою БІХ (IIR).
Структура цифрових фільтрів типу FIR і IIR наведена на мал. 1.3 і 1.4 відповідно. На цих рисунках прийняті такі позначення: Т – блок затримки на 1 такт; Х – блок множення; + – блок складання.

мал. 1.3. Структура каскаду фільтра типу FIR

мал. 1.4. Структура каскаду фільтра типу IIR
Для ефективної реалізації алгоритмів цифрової фільтрації необхідна апаратна підтримка базових операцій: множення з накопиченням (МАС); модульної адресної арифметики; нормування результатів арифметичних операцій.
Іншим перетворенням сигналу, часто виконуваним, є Фур’є-перетворення (пряме і зворотне).
Будь-який сигнал може бути зображений як в часовій області (сукупність графіків в координатах час-амплітуда), так і в частотній області (послідовність графіків в координатах частота-амплітуда). Залежно від складності реалізації обробки може бути вибране або частотне, або часове подання сигналу. Фур’є-перетворення дозволяє здійснювати перенесення сигналу з однієї форми подання в іншу.
Дискретне перетворення Фур’є (ДПФ) в аналітичному вигляді задається формулою

де χ(nT) – послідовність відліків сигналу.
Існує велика різноманітність реалізацій дискретного перетворення Фур’є. У ряді алгоритмів використовуються прийоми, що дозволяють скоротити обсяг необхідних обчислень. Ці алгоритми відомі під загальною назвою «швидке перетворення Фур’є» (ШПФ).
На практиці інтервал підсумовування обмежений деяким числом часових відліків N, залежним від необхідної точності перетворення. В цьому випадку формула набуває вигляду

N – називають числом точок перетворення.
Для зменшення числа операцій множення при виконанні ДПФ використовується метод, що отримав назву «проріджування за часом». Суть даного методу полягає у тому, що перетворення Фур’є за послідовністю з N точок може бути виражене через перетворення, що виконані за підпослідовностями цієї послідовності, кожна з яких має довжину N/2 точок. Оскільки число множень пропорційне числу точок перетворення, то процедура двократного перетворення по N/2 точках (з подальшим об'єднанням результатів) уявляється вигіднішою з погляду часу обчислення. Застосувавши до послідовності відліків процедуру проріджування рекурсивно, отримаємо схему обчислень, зображену на мал. 1.5.

мал. 1.5. Схема ШПФ по 8 точках
При реалізації даної схеми перетворення разом з операціями множення і складання використовуються бітові операції. Як видно з мал. 1.5, результуючі відліки розташовані в біт-реверсивному порядку, тобто такому, коли позиція елемента визначається реверсією двійкового подання індексу елемента. Для їх переупорядковування необхідно виконати або перестановку елементів масиву, або операцію бітової реверсії індексу при зверненні до елемента масиву. Другий підхід є більш економічним з погляду часу доступу, проте вимагає можливості маніпулювання адресами даних.
У більшості реальних додатків розглянуті базові алгоритми цифрової обробки сигналів повинні виконуватися в режимі реального часу, що ставить підвищені вимоги до продуктивності процесора, що їх реалізує. Апаратна підтримка базових операцій алгоритмів цифрової обробки сигналів є характерною особливістю сигнальних процесорів. Нижче будуть розглянуті основні сімейства сигнальних мікропроцесорів, представлені на світовому ринку.
2. ОРГАНІЗАЦІЯ ОБЧИСЛЕНЬ В ЦПОС. ОСОБЛИВОСТІ АРХІТЕКТУРИ
Процесори ЦПОС можна для зручності розділити на дві категорії: універсальні і спеціалізовані.
Існує два типи спеціалізованих пристроїв:
1. Апаратне забезпечення, розроблене для ефективного виконання спеціальних алгоритмів ЦОС, таких, як цифрова фільтрація, швидке перетворення Фур’є. Пристрої даного типу іноді називають алгоритмічними процесорами ЦОС.
2. Апаратне забезпечення, розроблене для спеціального додатку, наприклад, у сфері контролю, телекомунікацій або цифрового аудіо. Пристрої даного типу іноді називають процесорами ЦОС спеціального призначення (спеціалізованими).
В більшості випадків спеціалізовані процесори виконують такі алгоритми ЦОС, як кодування-декодування. Крім того, вони повинні виконувати інші операції, що відображають специфіку додатку.
Всі універсальні і спеціалізовані процесори можна побудувати за допомогою окремих мікросхем або блоків помножувачів, арифметико-логічних пристроїв (АЛП), елементів пам'яті та ін.
Розглянемо архітектурні особливості процесорів ЦОС, які дозволили
застосувати цифрову обробку у реальному часі в багатьох областях.
Більшість доступних зараз універсальних процесорів заснована на архітектурі фон Неймана, при якій операції виконуються послідовно. При
обробці інструкції в такому процесорі блоки процесора, не задіяні в кожній фазі інструкції, перебувають у стані очікування до передачі їм управління.
Підвищення швидкості процесора досягається за рахунок прискорення роботи окремих блоків.
Якщо пристрій має працювати у реальному часі, то архітектуру процесора ЦОС потрібно оптимізувати під виконання функцій ЦОС. Наприклад, на мал. 1.6 показана загальна апаратна архітектура цифрової
обробки сигналів у реальному часі. Вона характеризується такими особливостями:
- містить багатошинну структуру з роздільною пам'яттю для даних і інструкцій програми. Звичайно пам'ять для зберігання даних містить вхідні дані, проміжні значення і вихідні вибірки, а також фіксовані коефіцієнти, наприклад, для цифрової фільтрації або ШПФ. Команди програми зберігаються у спеціально відведених елементах пам'яті;
- порт вводу-виводу дозволяє обмінюватися даними із зовнішніми пристроями (АЦП, ЦАП) або передавати цифрові дані іншим процесорам. Прямий доступ до пам'яті (Direct Memory Access — DMA), якщо він є, дозволяє швидко обмінюватися блоками даних з пам'яттю (ОЗП) для зберігання даних, причому звичайно це відбувається під зовнішнім управлінням;
- містить арифметичні пристрої для логічних і арифметичних операцій, до числа яких виходять АЛП, апаратні помножувачі і схеми зсуву (або помножувачі-накопичувачі).

мал. 2.1. Стандартна універсальна апаратна архітектура обробки сигналів
Для цифрової обробки сигналів використовуються так звані сигнальні
мікропроцесори. До їх особливостей можна віднести малорозрядну (40 розрядів і менш) обробку чисел з плаваючою точкою, переважне використання чисел з фіксованою точкою розрядності 32 і менш, а також орієнтацію на нескладну обробку великих масивів даних.
Відмітною особливістю задач цифрової обробки сигналів є потоковий характер обробки великих обсягів даних в реальному режимі часу, який вимагає від технічних засобів високої продуктивності і забезпечення можливості інтенсивного обміну із зовнішніми пристроями. Відповідність до даних вимог досягається завдяки специфічній архітектурі сигнальних процесорів і проблемно-орієнтованій системі команд.
Сигнальні процесори мають високий ступінь спеціалізації. У них широко використовуються методи скорочення тривалості командного циклу, характерні і для універсальних RISC-процесорів, такі, як конвеєризація на рівні окремих мікроінструкцій і інструкцій, розміщення операндів більшості команд в регістрах, використання тіньових регістрів для збереження стану обчислень при перемиканні контексту, розділення шин команд і даних (гарвардська архітектура). У той же час для сигнальних процесорів характерною є наявність апаратного помножувача, що дозволяє виконувати множення двох чисел за один командний такт. В універсальних процесорах множення звичайно реалізується за декілька тактів, як послідовність операцій зсуву і складання. Іншою особливістю сигнальних процесорів є включення до системи команд таких операцій, як множення з накопиченням МАС (С:=АхВ+С з вказаним в команді числом виконань в циклі і з правилом зміни індексів елементів масивів А і В), інверсія біт адреси, різноманітні бітові операції. У сигнальних процесорах реалізується апаратна підтримка програмних циклів, кільцевих буферів. Один або декілька операндів витягуються з пам'яті в циклі виконання команди.
Реалізація однотактного множення і команд, що використовують як операнди вміст елементів пам'яті, обумовлює порівняно низькі тактові частоти роботи цих процесорів. Спеціалізація не дозволяє підіймати продуктивність за рахунок швидкого виконання коротких команд типу «регістр-регістр», як це робиться в універсальних процесорах. Цих команд просто немає в програмах обробки сигналів.
3. МАС-ОПЕРАЦІЯ. СХЕМИ РЕАЛІЗАЦІЇ В ЦПОС. ТОЧНІСТЬ ОБЧИСЛЕНЬ
Основними чисельними операціями в цифровій обробці сигналів є множення і складання. Множення в програмній формі сумно відоме своєю трудомісткістю, а якщо використовується арифметика з плаваючою точкою, складання виявляється навіть ще більш трудомісткою операцією. Щоб максимально прискорити цифрову обробку сигналів у реальному часі, рекомендується використовувати спеціалізовані апаратні помножувачі-накопичувачі для арифметики з плаваючою або фіксованою точкою. Таке апаратне забезпечення тепер стандартно використовується у всіх цифрових процесорах сигналів. У процесорі з фіксованою точкою апаратний помножувач за один такт (звичайно 25 нс) приймає два 16-бітові дробові числа, подані у формі доповнення до двох, і обчислює їх 32-бітовий добуток. Середній час виконання команди множення-накопичення можна значно зменшити, якщо використовувати спеціальні команди повторення. Типова конфігурація апаратного помножувача-накопичувача ЦОС зображена на мал. 3.1. У такій конфігурації помножувач має пару вхідних регістрів (Рг X та Рг Y), які містять входи помножувача, і 32-бітовий регістр добутку (Рг P), який містить результат множення. Вихід регістра Р (product - добуток) з'єднується з накопичувачем подвійної точності, в якому накопичуються добутки.
Подібна конфігурація застосовується в апаратних помножувачах-накопичувачах з плаваючою точкою, за винятком того, що входи і добутки –це нормовані числа, що подані у формі з плаваючою точкою. Помножувачі-накопичувачі з плаваючою точкою дозволяють швидко обчислювати результати алгоритмів ЦОС з мінімальним помилками.

мал. 3.1. Типова конфігурація апаратного помножувача-накопичувача ЦОС
Операції з плаваючою точкою дозволяють використовувати великий динамічний діапазон і знижують арифметичні помилки, хоча в багатьох додатках достатньо динамічного діапазону, який пропонує подання з фіксованою точкою.
Двома найпоширенішими типами арифметики, що використовуються в сучасних ЦПОС, є арифметики з фіксованою і плаваючою точками. Арифметика з плаваючою точкою – це природний вибір в додатках з широкими і змінними вимогами до динамічного діапазону (динамічний діапазон можна визначити як різницю між найбільшим та найменшим рівнем сигналу, який можна представити, або як різницю між найбільшим сигналом і мінімальним рівнем шуму, що вимірюються в децибелах). Процесори з фіксованою точкою переважні з погляду низької вартості, вони підходять для масового виробництва (наприклад, стільникові телефони і комп'ютерні дисководи). При використанні арифметики з фіксованою точкою виникають питання, пов'язані з обмеженнями динамічного діапазону. Взагалі процесори з плаваючою точкою дорожчі за процесори з фіксованою точкою, хоча останніми роками різниця в ціні істотно зменшилася. Більшість існуючих ЦПОС з плаваючою точкою також підтримує арифметику з фіксованою точкою.
Використання даних у форматі з плаваючою точкою в сигнальній обробці обумовлене декількома причинами. Для багатьох задач, пов'язаних з виконанням інтегральних і диференціальних перетворень, особливе значення має точність обчислень, забезпечити яку дозволяє експоненціальний формат подання даних. Алгоритми компресії, декомпресії, адаптивної фільтрації в ЦОС пов'язані з визначенням логарифмічних залежностей і досить чутливі до точності подання даних в широкому динамічному діапазоні.
Робота з даними у форматі з плаваючою точкою істотно спрощує і прискорює обробку, підвищує надійність програми, оскільки не вимагає виконання операцій округлення і нормалізації даних, відстежування ситуацій втрати значущості і переповнювання.
4. ФІЗИЧНА ОРГАНІЗАЦІЯ ПАМ'ЯТІ В ЦПОС. ГАРВАРДСЬКА
АРХІТЕКТУРА ТА БАГАТОПОРТОВА ПАМ'ЯТЬ
Фізично пристрої пам’яті в ЦПОС можна розподілити на внутрішні та зовнішні. До внутрішніх належать:
- оперативний запам’ятовуючий пристрій (ОЗП), присутній у всіх
типах ЦПОС;
- постійний запам’ятовуючий пристрій (ПЗП), присутній у деяких
типах ЦПОС;
- напівпостійний запам’ятовуючий пристрій (НПЗП), присутній у
деяких типах ЦПОС.
Ємність ОЗП, ПЗП та НПЗП залежить від типу ЦПОС і буде розглянута нижче для кожного типу процесора окремо.
Зовнішню пам'ять можна розподілити:
- на пам'ять для збереження даних;
- пам'ять для збереження програм.
Принципова особливість гарвардської (двошинної) архітектури полягає у тому, що пам'ять для зберігання даних і пам'ять для зберігання програми розташовуються в різних місцях, припускаючи повне поєднання в часі операцій виклику команди з пам'яті і її виконання. Стандартна гарвардська архітектура наведена на рис. 3.8. Звичайні мікропроцесори, такі, як Intel 6502, характеризуються одношинною структурою, через яку передаються і дані, і команди. У гарвардській архітектурі, де команди програми і дані зберігаються в різних областях пам'яті, виклик наступної команди може співпадати з виконанням поточної команди. Як правило пам'ять програми містить програмний код, тоді як пам'ять для зберігання даних включає змінні, наприклад, вибірки вхідних даних.
Стандартна гарвардська архітектура використовується лише в декількох процесорах ЦОС (наприклад, Motorola DSP56000), в більшості пристроїв застосовується модифікована гарвардська архітектура (наприклад, сімейство процесорів TMS320). У модифікованій архітектурі також виділяються роздільні області пам'яті для зберігання програми і даних, але на відміну від строгої гарвардської архітектури тут дозволений зв'язок між двома областями пам'яті.
Для взаємодії із зовнішніми пристроями (АЦП, ЦАП та ін.) або з іншими процесорами в ЦПОС передбачена система портів вводу-виводу. За способом передачі даних (послідовний чи паралельний) та за розрядністю номенклатура портів вводу-виводу залежить від конкретного типу ЦПОС.
5. ЛОГІЧНА ОРГАНІЗАЦІЯ ПАМ'ЯТІ ТА РЕЖИМИ АДРЕСАЦІЇ
Комбінація гарвардської архітектури з швидкодіючою та багатопортовою пам’яттю дозволяє реалізувати вимоги до ефективної організації взаємодії з пам’яттю, якої потребують алгоритми ЦОС.
Деякі ЦПОС мають спеціальний кеш команд, який є пам’яттю невеликого розміру, що входить до складу ядра процесора та призначається для збереження команд. Попереднє завантаження команд до кеша дозволяє звільнити шини процесора для доступу до даних. Найпростіші процесори мають кеш на одну команду. В більш складних ЦПОС ємність кеша складає 1К слів.

мал. 5.1. Стандартна гарвардська архітектура
При виконанні будь-якої команди процесор звертається до пам’яті програми або до пам’яті даних. Спосіб визначення адреси операнда в команді або адреси передачі управління називається режимом адресації. У ЦПОС використовують режими таких видів адресації: прямої, безпосередньої та різних видів непрямої адресації.
Пряма адресація. Абсолютна адреса операнда міститься в кодовому слові команди. Наприклад, команда ЦПОС ADSP-21xx
AX0=DM(0800)
завантажує значення, розташоване за абсолютною адресою 0800 пам’яті даних до регістру AX0.
Безпосередня адресація. Значення операнда міститься в команді. Наприклад, команда ЦПОС ADSP-21xx
AX0=1357
Значення константи 1357 завантажується до регістру AX0. Якщо значення константи перевищує довжину одного кодового слова команди, воно розміщується в наступному кодовому слові. Це призводить до читання з пам’яті двох слів, що підвищує час виконання програми.
Непряма адресація. Використовує регістри-покажчики, вміст яких є реальною адресою розміщення даних у пам’яті. У цьому випадку в команді міститься тільки посилання на регістр-покажчик. Кількість регістрів для непрямої адресації в ЦПОС невелика, тому довжина команди непрямої
адресації дорівнює одному слову. У ЦПОС використовуються такі види непрямої адресації: непряма регістрова адресація, непряма регістрова адресація з інкрементуванням, непряма регістрова адресація з модульною арифметикою, біт-інверсна адресація. Проілюструємо ці види адресації за допомогою операторів мови С++.
Непряма регістрова адресація. Відповідає наступній формі оператора
присвоєння: A=A+*R;
Відповідно до цього оператора значення, що зберігається за адресою пам’яті, яка міститься в регістрі R, додається до значення акумулятора A. Регістр R розглядається як покажчик.
Непряма регістрова адресація з інкрементуванням та декрементуванням. Відповідає наступним операторам:
A=A+(*R)++;
A=A+(*R)--;
Значення, що зберігається за адресою пам’яті, яка міститься в регістрі R, додається до значення акумулятора A. Після отримання значення з пам’яті вміст регістру-покажчика збільшується (++) або зменшується (--) на одиницю. Деякі ЦПОС дозволяють збільшувати або зменшувати вміст регістра-покажчика не на одиницю, а на іншу величину, значення якої зберігається в додатковому регістрі.
Непряма регістрова адресація з модульною арифметикою.
Використовується при організації в пам’яті кільцевого буфера. Буфер – послідовність однотипних елементів даних, що розташовані у суміжних комірках пам’яті. Якщо елементи даних обробляються в порядку їх запису у пам’ять, то буфер відповідає структурі даних, яка називається чергою. Для доступу до значень, що зберігаються в буфері, використовуються покажчики. Кожен раз після звертання до буфера значення покажчика змінюється з визначеним кроком. При досягненні кінця буфера значення покажчика змінюється на початкове. Цей механізм можна описати за допомогою умовного оператора
if(pointer+step<BkEnd);
pointer=pointer+step;
else pointer=BkBegin;

Змінна BkBegin визначає початкову адресу, а BkEnd – кінцеву адресу області пам’яті, в якій розміщено буфер. Змінна pointer – покажчик, а змінна step відповідає кроку, з яким змінюється значення покажчика. Ця схема адресації використовується, наприклад, в ЦПОС TMS320C5x.
Можливе використання іншого механізму адресації кільцевого буфера, який застосовується в ЦПОС ADSP21xx, ADSP21xxx, TMS320C3x, TMS320C4x. У цих ЦПОС не задається кінцева адреса області пам’яті, відведеної під буфер, а в спеціальному регістрі фіксується довжина буфера. Значення, що відповідає довжині буфера, називається модулем. При збільшенні початкової адреси на величину модуля здійснюється перехід до початкової адреси, що і складає суть непрямої адресації з модульною арифметикою.
Біт-інверсна адресація. Дозволяє змінювати впорядкованість вхідних або вихідних даних, що потрібно, наприклад, в алгоритмах ШПФ. Біт-інверсний порядок задається шляхом «дзеркального» відображення двійкових розрядів вхідної чи вихідної послідовності. Приклад реалізації наведено в табл. 5.1.
Таблиця 5.1 – Біт-інверсний порядок

6. АРХІТЕКТУРА Й ЗНАЧЕННЯ СПЕЦІАЛІЗОВАНИХ МОДУЛІВ ЦПОС:
ТАЙМЕРА, ЛІЧИЛЬНИКА ЧИСЛА ПОВТОРЕНЬ, ГЕНЕРАТОРІВ АДРЕСИ
Призначення та роботу спеціалізованих модулів розглянемо на прикладі ЦПОС сімейства TMS320C2x.
У складі ЦПОС є 16-розрядний таймер (TIM) та регістр періоду таймера (PRD). Таймер управляється відповідним сигналом (CLKOUT1). При скиданні таймера в нього та регістр періоду передається максимальне число FFFFh. Після дії сигналу скидання вміст таймера зменшується на одиницю при кожному надходженні сигналу CLKOUT1. Початкове значення таймера визначається вмістом регістру періоду. Як тільки значення в таймері стане дорівнювати нулю, формується переривання від таймера (TINT) і він перезавантажує те значення, що знаходиться в регістрі періоду. Це відбувається під час першого машинного циклу після формування переривання TINT. Таким чином, переривання будуть відбуватися через проміжки часу, що дорівнюють [(PRD)+1]*T CLKOUT1 , де T CLKOUT1 – період сигналу CLKOUT1.
Зазвичай переривання TINT використовується для зчитування вибірок вхідних даних, що обробляються процесором. Таймер та регістр періоду можуть бути проініціалізовані в будь-якому машинному циклі. Нульове значення регістру періоду не допускається.
Якщо переривання TINT не використовуються, то необхідно застосувати маску або заборонити переривання командою DINT. У цьому випадку регістр періоду може використовуватися як звичайна комірка пам’яті. Якщо знову виникне потреба у використанні переривання TINT, то регістр PRD та таймер необхідно попередньо ініціалізувати, а потім дозволити переривання TINT.
Лічильник числа повторень RPTC містить 8-розрядне число N, яке визначає повтори деякої команди. Кількість повторів дорівнює N+1. За допомогою команди RPT або RPTK лічильник числа повторень може бути завантажений значенням з діапазону від 0 до 255. Це дозволяє повторювати команду, що знаходиться за RPT або RPTK до 256 разів.
Лічильник числа повторень може використовуватися з командами: множення з накопиченням, пересилання блоків, вводу-виводу, читання-запису таблиць. Ті команди, що потребують для виконання декількох циклів, при запису їх після команди RPT або RPTK виконуються за один цикл.
Для формування адрес при звертанні до пам’яті в ЦПОС застосовуються генератори адреси, які можуть формувати одну чи декілька адрес даних за один цикл команди, не використовуючи для цього основного арифметичного пристрою, що займається обробкою даних. Це дозволяє обчислювати необхідні адреси даних паралельно з виконанням арифметичних операцій, що підвищує продуктивність ЦПОС.

7. АРЧІТУКТУРНІ ОСОБЛИВОСТІ ОСНОВНИХ СІМЕЙСТВ ЦПОСІ
(MOTOROLA, TEXAS INSTRUMENTS, ANALOG DEVSCES)
У числі найпоширеніших сигнальних процесорів можна відзначити вироби таких компаній: Мotorola (56002,96002), Intel (i960), Техаs Instruments (ТМ5320Схх), Analog Devices (21хх, 210хх). Велика продуктивність, що вимагається при обробці сигналів у реальному часі, спонукала дві останні з перелічених компаній випустити трансп’ютерні сімейства мікропроцесорів ТМS320С4х і АDSР2106х, що орієнтовані на використання в мультипроцесорних системах.
Вибір того або іншого процесора для реалізації конкретного проекту –багатокритеріальна задача, але слід зазначити перевагу процесорів компанії Analog Devices для додатків, що вимагають виконання великих обсягів математичних обчислень (таких, як цифрова фільтрація сигналу, обчислення кореляційних функцій і т.ін.), оскільки їх продуктивність на подібних задачах вища, ніж у процесорів компаній Мotorola і Техаs Instruments. У той же час для задач, що вимагають виконання інтенсивного обміну із зовнішніми пристроями (багатопроцесорні системи, різного роду контроллери), перевагу можна віддати використанню мікропроцесорів компанії Техаs Instruments, які обладнані високошвидкісними інтерфейсними підсистемами.
8. ІНСТРУМЕНТАЛЬНІ ЗАСОБИ РОЗРОБКИ СИСТЕМ НА ОСНОВІ ЦПОС
У число специфічних чинників, які слід розглянути при виборі процесора ЦОС для даного додатку, входять архітектурні особливості, швидкість виконання, тип арифметики і довжина слова.
Архітектурні особливості. Більшість доступних зараз ЦПОС має хорошу архітектуру. Ключовими характеристиками процесорів є розмір вбудованої пам'яті, наявність спеціальних команд і можливості вводу-виводу. Наявність вбудованої пам'яті – необхідна вимога в більшості додатків ЦОС реального часу, оскільки це означає швидкий доступ до даних і швидке виконання програми. Для додатків із суворими вимогами до пам'яті (цифрове аудіо, система Dolby, факс-модем, кодування-декодування MPEG) розмір внутрішньої пам'яті ОЗП може стати вирішальним чинником при виборі процесора. Якщо внутрішньої пам'яті недостатньо, її можна доповнити високошвидкісною зовнішньою пам'яттю, хоча це може призвести до збільшення вартості системи. Для додатків, що вимагають швидких і ефективних обчислень або обміну потоками даних із зовнішнім світом, досить важливі такі засоби вводу-виводу, як інтерфейси АЦП і ЦАП, можливість прямого доступу до пам'яті і підтримка багатопроцесорної обробки. Залежно від додатку важливий багатий набір спеціальних команд підтримки операцій ЦОС, наприклад, можливість організації циклів з нульовими службовими витратами, спеціалізовані команди ЦОС і колова адресація.
Швидкість виконання. Оскільки більшість задач ЦОС вимагає термінового розв’язання, то важливою мірою продуктивності є швидкість процесорів ЦОС. Традиційно двома основними одиницями вимірювання цієї величини є тактова частота процесора в мегагерцах або гігагерцах і число команд, що виконуються, в мільйонах команд за секунду (Million Instructions Per Second - MIPS) або, якщо використовуються процесори ЦОС з плаваючою точкою, в мільйонах операцій з плаваючою точкою за секунду (million floating-point operations per second - MFLOPS). Втім подібні методи вимірювання можуть в деяких випадках не надавати об’єктивної картини через значні відмінності в принципах роботи різних ЦПОС, більшість з яких може виконувати декілька операцій в одній машинній команді. Різні процесори також відрізняються числом операцій, що виконуються в кожному такті. Отже, порівнювати швидкості роботи процесорів на основі зазначених вище методів не коректно. Альтернативна міра порівняння заснована на швидкості виконання контрольних алгоритмів, наприклад основних алгоритмів ЦОС, таких, як ШПФ, КІХ- та БІХ-фільтрація. Вивчаючи та порівнюючи чи ці дані, можна отримати уявлення про відносну продуктивність різних популярних ЦПОС.
Тип арифметики. Критерії вибору арифметики з фіксованою або з плаваючою точками розглядалися вище.
Довжина слова. Ще одним важливим параметром в ЦОС є довжина слова даних процесора, оскільки вона може істотно впливати на якість сигналу. Цей параметр визначає, наскільки точно можна представити параметри і результати операцій ЦОС. Взагалі чим довше слово даних, тим менша помилка при цифровій обробці сигналу. У аудіообробці з фіксованою точкою, наприклад, для підтримки CD-якості довжина слова процесора повинна бути не менше 24 біт, що дозволить підтримати найменший рівень сигналу, достатньо вищий за мінімальний рівень шуму, що генерується обробкою сигналу. У процесорах ЦОС з фіксованою точкою використовуються різноманітні довжини слів процесорів, залежно від додатку. У процесорах ЦОС з фіксованою точкою, націлених на ринок телекомунікацій, звичайно використовуються слова 16-бітової довжини (наприклад, TMS320C54x), тоді як у процесорах, націлених на аудіододатки високої якості, використовуються слова довжиною 24 біта (наприклад, DSP56300). Останніми роками автори відзначають тенденцію довикористання більшого числа бітів для АЦП і ЦАП (наприклад, 24-бітовий аудіокодек Cirrus, CS4228), оскільки вартість подібних пристроїв постійно знижується. Таким чином, автори передбачають підвищення попиту на процесори для аудіообробки з великими довжинами слів. У накопичувачах процесорів з фіксованою точкою також можуть бути потрібні захисні біти (звичайно 1 – 8 біт) для запобігання арифметичному переповненню в процесі операцій множення і накопичення підвищеної точності. Додаткові біти ефективно розширюють динамічний діапазон, доступний для процесорів ЦОС. У більшості процесорів ЦПОС під арифметикою звичної точності розуміють використання 32-бітових даних (24-бітова мантиса і 8-бітова експонента). Більшість процесорів ЦОС з плаваючою точкою також дозволяє виконувати операції з фіксованою точкою і часто підтримує арифметику з фіксованою точкою із змінним розміром даних.
На практиці при виборі процесора можуть враховуватися і такі чинники, як досвід роботи з конкретним сімейством процесорів ЦОС, легкість використання, термін присутності на ринку і вартість.
Контрольні питання для самоконтролю:
1. Наведіть приклади найбільш поширених методів ЦОС.
2. Які особливості апаратної архітектури ЦОС?
3. Від яких чинників залежить точність обчислень ЦОС?
4. З яких основних структурних елементів складається ЦПОС?
5. Які типи арифметики застосовуються в ЦПОС? У чому їх
особливості?
6. Як апаратно реалізується операція множення з накопиченням
(МАС)?
7. Що таке гарвардська архітектура?
8. Які основні принципи вибору ЦПОС для розробки конкретного
додатку?
9. ЦПОС яких фірм набули найбільшого поширення?
10. За якими критеріями порівнюються ЦПОС щодо швидкодії?

Самостійна робота № 14-15 (4 години)
Тема: Програмовані логічні інтегральні схеми (ПЛІС)
План:
1. Особливості ПЛІС
2. Основні переваги
3. Загальна структура і зовнішній вигляд мікросхем ПЛІС
1. ОСОБЛИВОСТІ ПЛІС
Особливості:
На відміну від мікропроцесорів не виконують визначений набор команд, а налаштовуються (прошиваються) моделями цифрових пристроїв на спеціалізованих мовах опису (VHDL, Verilog).
Широкий діапазон можливих для реалізації цифрових пристроїв (від виконуючих елементарні керуючі функції до soft-процесорів і суперкомп’ютерів).
Дозволяють замінити досить коштовний і складний процес розробки цифрових пристроїв розробкою і реалізацією програмної моделі.
2. ОСНОВНІ ПЕРЕВАГИ
   Переваги ПЛІС:
1. Універсальність і низька вартість.
2. Висока швидкодія і надійність.
3. Наявність ефективних програмних засобів автоматизованого проектування, малий час проектування і налагодження проектів.
4. Простота модифікації проектів на будь-яких стадіях їхньої розробки.
3. ЗАГАЛЬНА СТРУКТУРА І ЗАВНІШНІЙ ВИГЛЯД МІКРОСХЕМ ПЛІС

Налаштування мікросхеми ПЛІС в середовищі Quartus II




Використання програмованих логічних інтегральних схем:





Реалізація soft-процесора NIOS II на лабораторному стенді з ПЛІС Altera Cyclone:



Контрольні питання для самоконтролю:
1. Назвіть основні переваги ПЛІС
2. Назвіть основні особливості ПЛІС

Самостійна робота № 16
Тема: Інструментальні засоби розробки і відладки для мікроконтролерів
План:
1. Інструментальні засоби розробки 
2. Емуляційна пам'ять 
3. Інтегровані середовища розробки 
1. ІНСТРУМЕНТАЛЬНІ ЗАСОБИ РОЗРОБКИ
Інструментальні засоби розробки ПО-це сукупність апаратно-програмних засобів, що дозволяють здійснити написання і налагодження програм для мікропроцесорних систем з великим ступенем вірогідності їх працездатності в реальних системах.
До них відносяться:
- Внутрісхемні емулятори;
- Програмні симулятори;
- Налагоджувальні монітори;
- Плати розвитку (оціночні плати);
- Емулятори ПЗУ;
- Інтегровані середовища розробки.
Внутрісхемний емулятор - найбільш потужне і універсальне налагоджувальне засіб. Це програмно-апаратний засіб, здатне заміщати процесор в реальній системі і робить процес функціонування налагоджуємого контролера прозорим, т. е. Легко контрольованим, довільно керованим і модифікується з волі розробника.
Функціонально внутрісхемні емулятори діляться на стикуються з зовнішньої ЕОМ і функціонують автономно.
Стиковка з налагоджуємою системою проводиться за допомогою спеціального кабелю з емуляційною головкою, яка вставляється замість налагоджуємого мікроконтролера або паралельно йому. В останньому випадку мікроконтролер повинен мати оцінний режим, при якому всі його висновки переводяться в третій стан.
Основні функціональні блоки емулятора:
- Відладчик;
- Вузол емуляції мікроконтролера;
- Емуляціона пам'ять;
- Підсистема точок зупину.
- Додаткові блоки:
- Процесор точок зупину;
- Трасировщик;
- Профілювальник (аналізатор ефективності програмного коду);
- Таймер реального часу;
- Програмно-апаратні засоби, що забезпечують можливість читання і модифікації емульованого процесора;
- Програмно-апаратні засоби, що забезпечують синхронне управління, необхідне для емуляції в мультипроцесорних системах.
Отладчик здійснює:
- Управління процесом емуляції (моделювання);
- Висновок на монітор стану і вмісту всіх регістрів і пам'яті і, при необхідності, їх модифікації (зміна їх вмісту).
Усунення несправностей дозволяє одночасно стежити за ходом виконання програми і бачити відповідність між вихідним текстом, образом програми в машинних кодах і станом всіх ресурсів емульованого мікроконтролера.
2. ЕМУЛЯЦІЙНА ПАМ'ЯТЬ
Емуляційна пам'ять може застосовуватися замість ПЗУ налагоджувати системи, а також дає можливість налагоджувати програму без реальної системи або її макета (не треба в перепрограмовані ПЗУ.) Емулювання можливо цілком або по блоках.
Трасувальник - це логічний аналізатор, який працює синхронно з процесором і фіксує потік виконуваних інструкцій і стану обраних зовнішніх сигналів.
Процесор точок зупину дозволяє зупиняти виконання програми або виконувати інші дії, наприклад, запускати або зупиняти трасировщик при виконанні заданих користувачем умов (будь-якого ступеня складності) без виведення з масштабу «реального часу» профілювальник дозволяє отримати за результатами прогону налагоджують програму наступну інформацію:
- Кількість звернень до різних ділянок програми;
- Час, витрачений на виконання різних ділянок програми.
Аналіз статистичної інформації, яка постачається профілювальником, дозволяє легко виявляти «мертві» або перенапружені ділянки програм і в результаті оптимізувати структуру налагоджують програму.
Інтегроване середовище розробки - це сукупність програмних засобів, що підтримує всі етапи розробки ПО - від написання вихідного тексту програми до її компіляції та відлагодження - і забезпечує просте і швидке взаємодія з іншими інструментальними засобами (програмним отладчиком-симулятором і програматором).
Наявність вбудованих редактора тексту, менеджера проектів і системи управління істотно допомагає розробнику, позбавляючи його від безлічі рутинних дій. Стирається грань між написанням, редагуванням і налагодженням програми.
Існують емулятори, призначені для емуляції мікроконтролерів сімейств Intel MCS 8051, MCS-196, Microchip PIC.
Програмний симулятор - програмний засіб, що імітує роботу мікроконтролера і його пам'яті. У його склад входять відладчик, модель центрального процесора і пам'яті. Більш складні симулятори містять також моделі вбудованих периферійних пристроїв (таймерів, АЦП і систем переривань). Завантаживши програму в симулятор, користувач може запускати її в покроковому або безперервному режимах, задавати умовні або безумовні точки зупинки, контролювати і вільно модифікувати вміст комірок пам'яті і регістрів мікроконтролера. З його допомогою можна швидко перевірити логіку виконання програми і правильність виконання арифметичних операцій.
Наявність інтерфейсу зовнішнього середовища дозволяє позбавити розробника від необхідності встановлювати і змінювати вручну вміст вхідних регістрів, т. Е. Можна створювати і гнучко використовувати модель зовнішнього середовища мікроконтролера, що функціонує і взаємодіє з налагоджуємої програмою за заданим алгоритмом.
Особливістю програмних симуляторів є та обставина, що виконання програм, завантажених в симулятор, відбувається в масштабі часу, відмінному від реального. Однак більш низька ціна, можливість ведення налагодження навіть в умовах відсутності макета налагоджуємого пристрою роблять програмні симулятори дуже ефективним засобом налагодження.
Налагоджувальний монітор - Спеціальна програма, що завантажується в пам'ять налагоджувати системи і змушує процесор виконувати, крім прикладної задачі, ще й налагоджувальні функції:
- Завантаження прикладних кодів в вільну від монітора пам'ять;
- Установку точок зупину;
- Запуск і установка завантаженої програми в реальному часі;
- Прохід програми користувача по кроках;
- Перегляд, редагування вмісту пам'яті і регістрів.
Програма монітора повинна бути пов'язана з зовнішнім комп'ютером або монітором для візуалізації процесу налагодження.
Основна перевага використання монітора - це малі витрати при збереженні можливості вести налагодження в реальному часі на мікроконтролері, що стоїть на платі. Недоліком є ??відволікання ресурсів мікроконтролера на налагоджувальні і зв'язкові процедури (пам'ять, переривання, послідовний канал).
Плати розвитку, Або оціночні плати, є своєрідними конструкторами для макетування прикладних систем. Випуск оціночних плат - це сучасний підхід до просування мікроконтролерів на ринку. Зазвичай на друкованій платі встановлюється вся необхідна апаратура для демонстрації можливостей мікроконтролера, забезпечується зв'язок з комп'ютером і надається поле для монтажу прикладних схем користувача. Такі плати можуть бути застосовані для установки в апаратуру малої серії (5 - 20 шт.).
Для зручності налагодження плати розвитку комплектуються найпростішими засобами налагодження на базі монітора налагодження для мікроконтролерів з зовнішньою шиною і без неї.
У першому випадку оцінний монітор поставляється у вигляді мікросхеми ПЗУ, яка встановлюється в роз'єм (ліжечко) на платі. На платі також є ОЗУ для програм користувача і канал зв'язку з комп'ютером. Приклад - плата фірми "INTEL" для мікроконтролера 8051.
Для мікроконтролерів без зовнішньої шини плата розвитку має вбудовані схеми програмування внутрішнього ПЗУ мікроконтролера, керовані від зовнішнього комп'ютера. У прикладній програмі повинні бути передбачені виклики налагоджувальних функцій і сам монітор. Після завантаження та запуску програми для внесення змін потрібно стирання ПЗУ і перезапис нового варіанту програми користувача.
Готова програма виходить шляхом видалення монітора і всіх викликів моніторних функцій. Прикладами можуть служити плати розвитку фірми "MICROCHIP" для своїх PIC-контролерів, а також плати розвитку для налагодження своїх контролерів 80С750 Philips і 89С2051 Atmel.
В цілому, можливості даного підходу (плата розвитку + монітор) не настільки універсальні, як можливості внутрісхемного емулятора, та й відволікання ресурсів контролера на режим налагодження слід враховувати. Проте, закінчений набір програмно-апаратних засобів, що дозволяють без втрат часу приступити до монтажу і налагодження прикладної системи, в багатьох випадках є вирішальним чинником, з урахуванням меншої вартості, в порівнянні з універсальним емулятором.
Емулятори ПЗУ - це програмно-апаратні засоби, що дозволяють заміщати ПЗУ на налагоджуємої платі і підставляють замість нього ОЗУ, куди завантажується програма з комп'ютера через один зі стандартних каналів зв'язку. В даному випадку намагаються уникнути багаторазових циклів перепрограмування ПЗУ. Метод придатний для мікроконтролерів, які в змозі звертатися до зовнішньої пам'яті програм. За складністю і вартості метод можна порівняти з використанням плат розвитку, але більш універсальний, тому що може застосовуватися з будь-якими типами мікроконтролерів.
В даний час є моделі «інтелектуальних» емуляторів ПЗУ, що дозволяють заглядати всередину мікроконтролера, т. е. Що працюють майже як внутрісхемний емулятор за рахунок швидкого перемикання шини. Створюється ефект, ніби-то монітор налагодження встановлений на платі користувача і при цьому не займає у мікроконтролера ніяких апаратних ресурсів, крім невеликої зони програмних кроків, приблизно 4К. Такий пристрій розробила фірма «Фітон» для всіх існуючих і майбутніх мікроконтролерів з ядром МК 8051, але додатково насичених різними пристроями введення / виводу. Воно підтримує безліч мікроконтролерів фірм "PHILIPS", "SIEMENS", "OKI".
3. ІНТЕГРОВАНІ СЕРЕДОВИЩА РОЗРОБКИ
Інтегровані середовища розробки (Integrated Development Environment, IDE) дозволяє програмісту:
- Використовувати вбудований файловий текстовий редактор, спеціально орієнтований на роботу з вихідними текстами програм;
- Виводити в багато віконному режимі результати діагностики виявлених при компіляції помилок і вихідний текст програми, доступний редагуванню;
- Організувати і вести паралельну роботу над декількома проектами.
Менеджер проектів дозволяє використовувати будь-який проект в якості шаблону для новостворюваного проекту, перекомпілювати тільки редагувати модулі, завантажувати налагоджуємою програму в наявні засоби налагодження і працювати з ними без виходу з оболонки і підключати до оболонки практично будь-які програмні засоби.
Подібні функціональні можливості в поєднанні з дружнім інтерфейсом істотно полегшують і прискорюють роботу програміста.
Контрольні питання для самоконтролю:
1. Що таке програмний симулятор?
2. Що дозволяє програмісту інтегровані середовища розробки?
3. Що таке інтегроване середовище розробки?
4. Назвіть основні функціональні блоки емулятора
5. Що таке налагоджувальний монітор?
6. Що таке випуск оціночних плат?
7. Що таке емулятори ПЗУ?
8. Назвіть налагоджувальні функції
9. Що таке трасувальник?
10. Що здійснює отладчик?
11. Назвіть основні функціональні блоки емулятора

Самостійна робота № 17-18 (4 години)
Тема: Вимірювання потоків рідини, газів та деформації
План:
1. Загальні відомості та класифікація засобів вимірювання тиску.
2. Рідинні та поршневі манометри.
3. Пружні чутливі елементи деформаційних манометрів.
4. Деформаційні прилади для вимірювання тиску.
5. Деформаційні вимірювальні перетворювачі тиску.
1. ЗАГАЛЬНІ ВІДОМОСТІ ТА КЛАСИФІКАЦІЯ ЗАСОБІВ ВИМІРЮВАННЯ ТИСКУ
Тиск характеризує напружений стан рідин та газів і визначається відношенням нормальної сили, яка діє на поверхню, до площі цієї поверхні. Вважається, що нормальна сила рівномірно розподілена по поверхні:

де р – тиск; N – нормальна сила, яка діє на поверхню; F – площа поверхні.
Тиск – одна з основних величин, яка характеризує термодинамічний стан речовин. Надзвичайно багатостороннє застосування тиску в науці, техніці і виробництві, а його вимірювання необхідне практично в будь-якій області науки і техніки.
Розрізняють наступні види тиску:
- абсолютний тиск – тиск, значення якого відраховується від тиску рівного нулю;
- атмосферний (барометричний) тиск – тиск повітряної оболонки Землі на її поверхню;
- надлишковий тиск – різниця тисків, один з яких, прийнятий за початок відліку, є атмосферним тиском:

- вакуум – стан середовища, абсолютний тиск якого менший від атмосферного тиску.
У Міжнародній системі одиниць (СІ) за одиницю тиску прийнято паскаль (Па), що є відношенням сили в 1 ньютон (Н) до площі в 1 м 2:
1 Па = 1 Н/м 2
Розмір одиниці тиску Па є дуже маленьким, відповідає тиску стовпа води висотою 0,1 мм. Тому на практиці використовують кілопаскалі (кПа), мегапаскалі (МПа), гектапаскалі (гПа): 1 кПа = 1· 10 3 Па; 1 МПа = 1· 10 6 Па; 1гПа = 1 · 10 2 Па.
Використовуються також позасистемні одиниці:
. 1 бар = 1 · 10 5 Па;
1 кГс/см 2 = 0,980665 · 105 Па ≈ 100 кПа, (кілограм-сила на квадратний сантиметр);
1 мм рт. ст. = 133,322 Па, (міліметр ртутного стовпа);
1 мм вод. ст. = 9,80665 Па, (міліметр водяного стовпа);
1 psi = 6, 89476 · 103
Па, (фунт-сила на квадратний дюйм);
1 Па = 0,102 мм вод. ст. = 7,5 · 10 -3 мм. рт. ст.
Тиск, зважаючи на його фізичну суть, може бути визначений як шляхом безпосереднього вимірювання, так і опосередковано – вимірюванням іншої фізичної величини, функціонально пов’язаної з тиском.
У першому випадку вимірюваний тиск діє безпосередньо на чутливий елемент приладу, який передає інформацію про значення тиску на наступні ланки вимірювального кола для перетворення її у необхідну форму. Цей метод визначення тиску відноситься до прямих вимірювань і є найпоширенішим у техніці вимірювання тиску. На ньому основані принципи дії більшості манометрів та вимірювальних перетворювачів тиску.
Широкий діапазон вимірювання тисків – від часток Па до майже 10 10 Па зумовив і велику різноманітність методів та засобів їх вимірювань. Значна частина методів основана на попередньому перетворенні тиску в механічне напруження, деформацію або переміщення за допомогою пружних перетворювальних елементів з наступним вимірюванням цих механічних величин.
За принципом дії прилади для вимірювання тиску поділяють на такі основні групи:
- рідинні – вимірюваний тиск врівноважується тиском стовпа рідини відповідної висоти;
- деформаційні – вимірюваний тиск визначається за величиною деформації різних пружних чутливих елементів;
- вантажопоршневі – вимірюваний тиск врівноважується тиском, який створюється масою поршня та вантажів;
- електричні – дія яких основана на залежності електричних параметрів манометричного перетворювача від вимірюваного тиску.
За видом вимірюваного тиску розрізняють наступні основні прилади:
- манометри – прилади для вимірювання тиску або різниці тисків (загальна назва);
- барометри – для вимірювання барометричного тиску атмосферного повітря;
- манометри надлишкового тиску – для вимірювання надлишкового тиску, рівного різниці між абсолютним і атмосферним тиском;
- вакуумметри – для вимірювання тиску нижчого за атмосферний, рівного різниці між барометричним і абсолютним тиском;
- мановакуумметри – для вимірювання надлишкового і вакууметричного тиску;
- диференціальні манометри – для вимірювання різниці двох тисків, ні один з яких не є тиском оточуючого середовища.
Манометри, вакуумметри і диференціальні манометри, призначені для вимірювання невеликих надлишкових і вакууметричних тисків або різниці тисків (до 40 кПа або 4000 мм вод. ст.) газових середовищ називають напоромірами, тягомірами або диференціальними тягонапоромірами.
2. РІДИННІ ТА ПОРШНЕВІ МАМОМЕТРИ
Дія рідинних приладів основана на гідростатичному принципі, за якого вимірюваний тиск врівноважується тиском стовпа робочої рідини. В якості робочої рідини використовується дистильована вода, ртуть, спирт, трансформаторне мастило. Прилади підрозділяють на трубні, чашкові, дзвонові, кільцеві та поплавкові.
В U-подібному рідинному манометрі значення вимірюваного тиску визначається висотою перепаду рівня рідини у трубці:

де 2 1h h H + = ; ρ – густина робочої рідини; g – прискорення вільного падіння.

мал. 2.1. . Рідинні манометри:
а) U-подібний; б) чашковий
Похибка показів в U-подібному манометрі може виникнути через неточність градуювання шкали (до 0,2 – 0,4 мм), вплив капілярних сил і поверхневого натягу (до 0,2 мм), відхилення від вертикального положення манометра і, головне, неточності відліку. Відлік необхідно виконувати по двох рівнях. Не можна відраховувати рівень в одній трубці і множити на два. Неоднаковий діаметр скляних трубок може призвести до великих додаткових похибок.
У чашковому манометрі (рис. 9.1, б) одна з частин виконана у вигляді чашки діаметром D, який є значно більшим від діаметра трубки d. У цьому випадку перепад робочої рідини легко визначити за зміною висоти Н:

де d, D – внутрішні діаметри трубки та чашки.
Перевага чашкового приладу, який ще називають однотрубним манометром, полягає у одному відліку положення меніску рідини у трубці. Але тут виникає похибка через зниження рівня рідини (h 2 ) у чашці, що змінює положення нуля шкали. Ця похибка буде прямо залежати від відношення площ трубки f і чашки F, та відповідно, діаметрів d і D. Площу перерізу трубки і чашки вибираються такими, щоб відношенням f/F можна було знехтувати. В основному для чашкових приладів вибирається відношення f/F ≤ 1/400.
Для вимірювання невеликих тисків іноді застосовуються однотрубні манометри з похилою трубкою. У манометрах такого типу кут нахилу трубки α можна встановлювати довільно на декілька значень. Цим розширюються границі вимірювання таких манометрів.
Верхня межа вимірювання стандартних манометрів з похилою трубкою складає від 60 до 240 кГс/м 2 з приведеною похибкою від 0,6 до 1,0%.
Для лабораторних вимірювань у якості зразкових засобів використовуються рідинні компенсаційні, вантажопоршневі та деформаційні манометри.
Принцип дії вантажопоршневих засобів вимірювання тиску заснований на врівноваженні зусилля, що створюється тиском, який вимірюється, на неущільненому поршні, силою ваги вантажу, що навантажує поршень. Неущільнений поршень – це поршень правильної циліндричної форми, поміщений у циліндр. Між стінками циліндра й поршня забезпечено рівномірний дуже незначний проміжок (1 – 5 мкм), заповнений робочою рідиною – трансформаторним або касторовим мастилом. У результаті поршень знаходиться у підвішеному стані і може проявляти на рідину тиск, зумовлений вагою поршня та вантажу, поміщеного на нього.
Поршневий манометр складається з циліндричного поршня 1, притертого до циліндра 2 мінімально можливим проміжком. Якщо на нижній торець поршня діє вимірюваний тиск р, то для його врівноваження до поршня повинна бути прикладена сила Р.

мал. 2.2. Схема поршневого манометра
Рівняння рівноваги з врахуванням сили тертя на бокову поверхню поршня, що виникає від протікання рідини чи газу через кільцевий проміжок між поршнем і циліндром під дією вимірюваного тиску, має вигляд:

де F – геометрична площа перерізу поршня; Т – сила рідинного тертя на бокову поверхню поршня.
Теоретичні та експериментальні дослідження показують, що сила рідинного тертя Т пропорційна діючому тиску. Тому ефективна площа не залежить від тиску, а відповідно вимірюваний тиск прямо пропорційний силі, яка його врівноважує.
Найчастіше вимірюваний тиск врівноважується вагою вантажів, що є важливою перевагою з огляду на досягнення високої точності вимірювань. Рівняння вимірювань у цьому випадку має вигляд:

На мал. 2.3. показано схему установки з вантажопоршневим манометром, оснащеним простим поршнем. Установка включає вантажопоршневий манометр І та гідравлічний прес ІІ. Вантажопоршневий манометр – це посудина циліндричної форми 1, заповнена робочою рідиною. У внутрішній порожнині циліндра розташовано поршень 2 з вантажоутримуючою тарілкою 6.

мал. 2.3. Схема установки з вантажопоршневим манометром
Гідропрес складається з поршня 11, що має манжетне ущільнення. Внутрішня порожнина преса з’єднується з вантажопоршневим манометром І і приладом, який повіряється 9, через канали, що перекриваються вентилями 7 і 10. Для заповнення гідравлічної системи робочою рідиною передбачено бачок 8 з запірним вентилем.
Під час вимірювання тиску Р, що створюється гідропресом, вантажоутримуючу тарілку навантажують вантажами 5 до того моменту, доки поршень 2 не прийде в стан рівноваги. Про досягнення рівноваги судять по співпадінні рисок 4 на поршні і обмежувачі ходу 3 поршня. В стані рівноваги поршня буде справедливою рівність:

де т р, т в – маса поршня та вантажів; ρ п, ρ в – густина повітря і матеріалу вантажів; F np – приведена площа поршня.
На практиці F np визначається експериментально і є основним метрологічним параметром вантажопоршневих манометрів. Приведена площа поршня – 0,5 см 2. Класи точності вантажопоршневих манометрів з простим поршнем – 0,02; 0,05; 0,2.
Найбільш важлива перевага поршневих манометрів полягає в тому, що вони безпосередньо відтворюють тиск за визначенням: тиск рівний силі, поділеній на площу поршня. Цей метод, як і метод врівноваження тиску стовпом рідини, є фундаментальним, тобто вимірювання тиску у кінцевому підсумку зводиться до вимірювання маси, довжини та часу.
3. ПРУЖІ ЧУТЛИВІ ЕЛЕМЕНТИ ДЕФОРМАЦІЙНИХ МАНОМЕТРІВ
Висока точність, простота конструкції, надійність та невисока вартість – це основні фактори, які обумовлюють широке використання деформаційних приладів для вимірювання тиску в промисловості та в наукових дослідженнях. Ці прилади призначені для вимірювання надлишкового тиску рідин та газів. Принцип дії деформаційних приладів ґрунтується на використанні пружної деформації чутливого елемента або сили, яка ним створюється.
Основні типи пружних чутливих елементів: мембрани, мембранні коробки, сильфони і трубчаті пружини.
Мембрана – це пружна пластина у формі диска, жорстко закріплена по контуру, прогин якої визначається тиском, що діє на неї .
Мембранна коробка складається з двох гофрованих мембран, які герметично з’єднані по зовнішньому контуру, що суттєво збільшує її прогин під дією тиску.
Сильфон має форму тонкостінного циліндра, бокова поверхня якого гофрована з метою збільшення його видовження під дією тиску.
Для великої глибини витягування гофр сильфона стає ідентичним батареї послідовно з’єднаних мембранних коробок.
Трубчата пружина – це сплюснута тонкостінна трубка, яка зігнута за формою кільцевої дуги і під дією тиску розгинається, а її вільний кінець переміщується по дузі.

мал. 3.1. Основні типи пружних чутливих елементів
Залежно від призначення та області застосування основні типи пружних чутливих елементів мають чисельні різновиди:
- мембрани – плоскі тонкостінні та товстостінні, з жорстким центром, гофровані, з попереднім натягом;
- мембранні коробки – зварні за грибковою схемою, складні, блоки мембранних коробок;
- сильфони – безшовні, зварні, одношарові та багатошарові;
- трубчаті пружини – одновиткові кругові, багатовиткові гвинтові та спіральні, S-подібні, виті, з ексцентричним внутрішнім отвором.
Основні метрологічні характеристики пружних чутливих елементів: пружна характеристика, нелінійність пружної характеристики, чутливість та жорсткість (штивність), гістерезис та постійність пружної характеристики.
У залежності від типу та конструкції пружного чутливого елементу його пружна характеристика може бути лінійною або нелінійною. Під час проектування завжди прагнуть досягти лінійності характеристики, тому що у цьому випадку за допомогою простого передатного механізму можна отримати шкалу, яка буде рівномірною на всьому діапазоні вимірювання. Але на практиці, особливо для точних вимірювань, завжди має місце відхилення реальної пружної характеристики від лінійності.
4. ДЕФОРМАЦІЙНІ ПРИЛАДИ ДЛЯ ВИМІРЮВАННЯ ТИСКУ
Найпоширенішим типом манометрів, які використовуються у різних галузях техніки, є деформаційні манометри з одновитковою трубчатою пружиною (мал. 4.1). Їх часто називають технічними манометрами.
Вимірювальна система манометра складається з одновиткової трубчатої пружини 1, один кінець якої герметично з’єднаний з утримувачем 7, а на іншому кінці з наконечником 5 змонтована тяга 6, яка шарнірно з’єднана з зубчатим сегментом 4. Переміщення наконечника трубчатої пружини перетворюється в обертання осі стрілочного вказівника 2 з допомогою насадженої на вісь трубки 3 шестерні, що входить у зачеплення з зубчатим вінцем сегмента 4. Від зростання тиску, що подається всередину трубчатої пружини, вона розгинається, істрілочний вказівник повертається за часовою стрілкою відносно шкали 9, нанесеної на циферблат, закріплений в корпусі 10 манометра. Для коректування кута повороту вказівника відносно шкали довжини пліч шарнірно-важільного механізму, що складається з тяги 6 й зубчатого сегмента 4, юстируються затискними гвинтами. До пристрою відбору тиску манометр під’єднується за допомогою штуцера 8.

мал. 4.1. Деформаційний манометр
з одновитковою трубчатою пружиною
Переміщення вільного кінця трубчатої пружини пропорційне тиску, що вимірюється, до певної межі kp = ∆ . При подальшому підвищенні тиску лінійна залежність порушується – деформація починає зростати швидше за збільшення тиску. Граничний тиск, за якого ще зберігається лінійна залежність між переміщення кінця трубки і тиском, називається границею пропорційності трубки.
Механічні властивості трубки, тобто, границя пропорційності і величина переміщення вільного кінця, залежать від ряду чинників, з яких найважливішими є відношення осей перерізу приплюснутої (овальної) трубки, товщина її стінок, модуль пружності матеріалу і радіус дуги згину трубки.
Збільшення відношення осей за інших рівних умов підвищує чутливість та знизити границю пропорційності. Переважно відношення осей трубок, розрахованих на малий та середній тиск, знаходиться в межах 5,4 ... 5,1 / = b a . Збільшення товщини стінок різко підвищує границю пропорційності.
У манометрах високого тиску застосовують товстостінні із легованої сталі трубчаті пружини круглого перерізу з каналом, вісь якого зміщена відносно осі пружини в сторону центру кривизни (мал. 4.2). Завдяки ексцентричному каналу надлишковий тиск, що діє на заглушку вільного кінця трубки, створює момент, який викликає зменшення кривизни трубки і переміщення її вільного кінця.

мал. 4.2 Поперечний переріз трубчатої пружини
манометра високого тиску
Залежно від необхідної точності вимірювань та призначення ступінь складності передатного механізму і габаритні розміри манометра можуть змінюватись у широких межах. Наприклад, для забезпечення необхідної точності відліку довжина шкали манометрів типу МО класу 0,15 – 0,25 складає не менше 500 мм для діаметра корпусу 250 мм, тоді як у манометрів класу 2,5 – 4 діаметр корпусу рівний 40 – 60 мм. Для усунення люфту у зубчатій передачі на осі стрілки монтуються натяжні спіральні пружинки. У найбільш точних приладах передбачено часткову компенсацію впливу температури. Суттєво також відрізняються вимоги щодо якості виготовлення деталей та матеріалів.
5. ДУФОРМАЦІЙНІ ВИМІРЮВАЛЬНІ ПЕРЕТВОРЮВАЧІ ТИСКУ
Деформаційні перетворювачі тиску, основані на методі прямого перетворення, розрізняють як за видом деформаційного чутливого елемента, так і за способом отримання сигналу вимірювальної інформації.
У техніці використовують індуктивні, ємнісні, п’єзоелектричні, тензорезистивні та деякі інші елементи перетворення.
Контрольні питання для самоконтролю:
1. Які одиниці використовуються для означення величини тиску?
2. На якому принципі ґрунтується дія рідинних манометрів?
3. У чому полягає основна перевага поршневих манометрів?
4. Чутливі елементи якого типу застосовуються у приладах тиску?
5. Для яких тисків використовуються п’єзоелектричні перетворювачі?
6. У чому полягає особливість тензорезистивного методу вимірювання?
7. Для яких вимірювань найчастіше використовуються дифманометри?

Самостійна робота № 19-20 (4 години)
Тема: Датчики температури
План
1. Загальні відомості
2. Термопари і компенсація холодного спаю
3. Резистивні датчики температури
4. Термістори
5. Напівпровідникові датчики температури
6. Датчики температури з цифровим виходом
7. Термореле і регулятори з установкою температури
8. Аналого-цифрові перетворювачі з датчиком температури на одному
кристалі
1. ЗАГАЛЬНІ ВІДОМОМОСТІ
Розрізняють такі датчики і напрямки при побудові температурних контрольно-вимірювальних пристроїв:
- портативного обладнання,
- температури центрального процесора,
- температури акумуляторної батареї,
- температури навколишнього середовища;
для компенсації
- дрейфу генератора в стільникових телефонах,
- температури холодного спаю термопар;
для керування
- зарядом акумуляторної батареї,
- процесом утримання температури.
Практично всі температурні датчики досить нелінійні, виняток становлять інтегральні датчики. Резистивні датчики досить точні, але вимагають зовнішнього струму збудження і, отже, оптимальною схемою включення такого датчика буде бруківка схема. Термістори найбільш чутливі, але і найбільш нелінійні. Напівпровідникові датчики температури є найточнішими, але мають вузький діапазон застосування (від -55 ° С до + 150 ° С).
Таблиця 1.1.
Типи датчиків температури
Термопари РДТ Термістори Напівпровідникові
датчики
температури
Найширший
діапазон температур
(від -184 ° С до +2300 ° С)
Висока точність
і повторюваність
Необхідність
компенсації холодного спаю
Низька вихідна
напруга Діапазон
від -200 ° С
до +850 ° С
Висока
лінійність
Вимагає зовнішнього збудження
Низька вартість Діапазон
від 0 ° С
до +100 ° С
Низька
лінійність
Вимагає зовнішнього збудження
Висока
чутливість Діапазон
від -55 ° С
до +150 ° С
Лінійність 1 ° С
точність 1 ° С
Вимагає зовнішнього
Збудження
Типовий вихідний
сигнал 10 мВ / К,
  20 мВ / К або 1 мА / К
У табл. 1.1. наведені найбільш популярні типи температурних датчиків.
2. ТЕРМОПАРИ КОМПЕНСАЦІЯ ХОЛОДНОГО СПАЮ
Термопари є відносно недорогими датчиками, причому вони функціонують в широкому діапазоні температур, а при вимірюванні високих температур (до + 2300 ° С) і в агресивних середовищах термопари практично незамінні. Проте вони дають на виході мілівольтні сигнали і вимагають точного посилення для проведення подальшої їх обробки. Ще одним недоліком при застосуванні термопар є компенсація температури холодного спаю. Як правило, термопари достатньо лінійні. Найбільш відомі термопари наведені в табл. 2.1., а на мал. 2.1. показані криві залежності напруги від температури для трьох широко використовуваних термопар.
Термопари виготовляють з наступних металів: залізо, платина, родій, реній, вольфрам, мідь, алюмель (сплав нікелю і алюмінію), хромель (сплав нікелю і хрому) і константан (сплав міді та нікелю).
Розглянемо основи функціонування термопар. Відомо, що при з'єднанні двох різнорідних металів при температурі вище абсолютного нуля між ними з'являється різниця потенціалів (термоЕРС), яка є функцією температури спаю (з'єднання) (мал. 2.1.). Іншими словами, кожна пара різнорідних металів, що знаходяться в контакті один з одним, генерує термоелектричний ЕРС.
Таблиця 2.1.
Термопари
Матеріал контакту Типовий
температурний
діапазон, ° С Номінальна
чутливість,
мкв / ° С Позначення
по ANSI
Платина (6%)
Родій-платина (30%)
Родій
Вольфрам (5%)
Реній-вольфрам (26%)
Реній
Хромель-константан
Залізо-константан
Хромель-алюмель
Платина (13%)
Родій-платина
Платина (10 %)
Родій-платина
Мідь-константан Від 38 до 1800
Від 0 до 2300
Від 0 до 982
Від 0 до 760
Від –184 до 1260
Від 0 до 1593
Від 0 до 1538
Від 184 до 400
7.7
16
76
55
39
11,7
10,4
45 B
C
E
J
K
R
S
T

мал. 2.1. Основи роботи термопари: а - термоелектричне напруга; б - термопара; в - вимірювання за допомогою термопари; г - вимірювання за допомогою термопари
Для того щоб сформувати два спаяний (мал. 2.1. б), з'єднаємо між собою два термопарних дроти з обох кінців. Якщо обидва спаяний знаходяться при різних температурах, то в ланцюзі з'явиться результуюча ЕРС і потече струм, який визначається величиною ЕРС і повним опором ланцюга. Якщо розірвати один з проводів, то напруга в точках розриву дорівнюватиме величині результуючої термоЕРС в ланцюзі, і якщо виміряти цю напругу, то можна використовувати його для розрахунку різниці температур двох спаїв (мал. 2.1.в)
Примітка. Термопара вимірює різницю температур двох спаїв, а не абсолютну температуру одного з спаїв.
Замір температури на вимірювальному спаї можна проводити тільки в тому випадку, якщо відома температура іншого спаю (званого часто опорним або холодним спаєм).
Підключимо вольтметр до ланцюга термопар (мал. 2.1., г). У місцях підключення утворюються додаткові термопари з проводів вольтметра і проводів ланцюга. Якщо ці підключення знаходяться при різних температурах, то вони будуть вносити помилки.
Отже, необхідно, щоб всі пари контактів в ланцюзі, що містить термопару, перебували при одній і тій же температурі, крім, зрозуміло, вимірювальних контактів термопар.
Термопари не вимагають зовнішнього збудження. Як правило, для вимірювання використовуються два спаяний (мал. 2.2): Т1 - вимірювальний спай і Т2 - опорний (холодний) спай. Якщо Т1 = T2, то V1 = V2 і вихідна напруга V = 0.
Вихідні напруги термопар визначаються по відношенню до температури опорного спаю при 0 ° С.
Саме звідси стався термін холодний спай або спай точки танення льоду. З вищевикладеного випливає, що термопара дає вихідну напругу 0 В при температурі вимірювального спаю 0 ° С. Однак необов'язково мати температуру холодного спаю, що дорівнює 0 ° С. Досить знати його поточну температуру (мал. 2.3.). На малюнку показано, що замість ванни таїть льоду використовується інший температурний датчик, який вимірює температуру холодного спаю, і його сигнал використовується для введення напруги в вимірювальну ланцюг термопари. Цей сигнал компенсує різницю між дійсною температурою холодного спаю і її ідеальною величиною (0 ° С).
На практиці використовують компенсаційні коефіцієнти термопар для визначення величини вихідної напруги (V = K · Т2). Таким чином, розрахунок напруги термопари з температурою її вимірювального спаю Т ° С і опорного спаю при температурі 0 ° С проводиться за допомогою полінома V = K1 · Т + K2 · -Т 2  + K3 · Т 3 + .... Слід врахувати, що величини коефіцієнтів K2, K3 і т. д. Дуже малі для більшості відомих типів термопар.
Як правило, для компенсації холодного спаю вільні кінці термопари встановлюються в спеціальному ізотермічному блоці (мал. 2.4.).

мал. 2.2. Класична компенсація температури холодного спаю
при використанні опорного спаю, що знаходиться
при температурі танення льоду (0 ° С)

мал. 2.3. Використання датчика температури
для компенсації холодного спаю
Розглянемо схему сполучення мікропроцесорної системи з термопарою типу К (рис. 2.5). Тут забезпечується компенсація холодного спаю для температур від 0 ° С до 250 ° С [9]. Схема працює від одного джерела живлення від +3,3 В до +12 В і формує передавальний характеристику вихідної напруги 10 мВ / ° С. Термопара типу К має коефіцієнт Зеєбека приблизно 41 мкВ / ° С (див. нижче), тому на холодному спаї встановлюється датчик температури з температурним коефіцієнтом 10 мВ / ° С - мікросхема ТМР35. Він використовується спільно з подільником R1 і R2 для того, щоб ввести компенсуючий температурний коефіцієнт холодного спаяного протилежного знаку величиною -41мкВ / ° С.

мал. 2.4. Установка термопарних провідників
безпосередньо в ізотермічному блоці
Зазначене включення перешкоджає появі помилки вимірювання температури, обумовленої безпосереднім з'єднанням між провідниками термопари і трасами друкованих провідників плати. Дана компенсація працює виключно добре в діапазоні температур навколишнього середовища від 20 ° С до 50 ° С.
За діапазоном вимірювання 250 ° С термопара дає зміна вихідного напруги в 10.151 мВ. Оскільки необхідну зміну вихідного сигналу по верхній межі становить 2.5 В, посилення в ланцюзі буде 246.3. вибір R4 = 4.99 кОм дасть величину К5 = 1.22 MОм. Оскільки найближча величина 1% резистора R5 складає 1.21 MОм, використовується додатковий потенціометр 50 кому для точної настройки вихідного напруги за верхньою межею. Інтегральна схема ОР193 є операційним підсилювачем з однополярним живленням, його вихідний каскад не працює в режимі від харчування до харчування, і його вихідний сигнал доходить тільки до потенціалу +0.1 В щодо землі. З цієї причини для зміщення вихідної напруги приблизно на 0.1 В встановлюється додатковий резистор R3 на джерело живлення 5 В. Ця напруга зсуву (10 ° С) віднімається при розрахунках результатів вимірювань. Резистор R3 також забезпечує визначення обриву ланцюга термопари, встановлюючи величину вихідної напруги більше 3 В, якщо термопара обірвана. Резистор R7 балансує вхідний імпеданс операційного підсилювача ОР193, а плівковий конденсатор 0.1 мкФ зменшує величину шуму на неінвертуючому вході.
Зарубіжної промисловістю випускаються інтегральні схеми інструментальних підсилювачів з компенсацією холодного спаю. Наприклад, ІС AD594 / AD595 від Analog Devices (мал. 2.6.). Він включає в себе компенсатор холодного спаю на температуру танення льоду і калібрований підсилювач з безпосереднім підключенням до виходу термопари і вихідним сигналом високого рівня (10 мВ / ° С). Перемикання перемичок на висновках установки режиму дозволяє використовувати ІС в якості лінійного підсилювача-компенсатора або релейного регулятора температури, що використовує фіксоване значення або дистанційне керування точкою установки температури. ІС можна використовувати для прямого посилення напруги компенсації, отримуючи тим самим окремий перетворювач температури в градусах Цельсія з вихідним сигналом 10 мВ / ° С. Важливо пам'ятати, що ЧІП ІС був при тій же самій температурі, що і холодний спай термопари, що зазвичай досягається установкою їх обох в безпосередній близькості один від одного і ізолюванням від джерел тепла.

мал. 2.5. Використання датчика температури (ТМР35)
для компенсації холодного спаю термопари
Більш досконалі ІС AD596 / AD597 є релейними регуляторами з установкою температури, які використовуються при високих температурах, наприклад в пристроях, пов'язаних з управлінням печами. Для отримання внутрішнього сигналу, пропорційного температурі, пристрій виконує компенсацію холодного спаю і підсилює сигнали термопар типу J / K.

мал. 2.6. Монолітні підсилювачі термопар AD594 / AD595
з компенсацією холодного спаю

мал. 2.7. АЦП сімейства AD77XX,
використовуваний спільно з температурним датчиком ТМР35
для компенсації температури холодного спаю

мал. 2.8. Вихідні напруги для термопар типів J, К, S

мал. 2.9. Залежність коефіцієнта Зеєбека для термопари від температури
Однак перераховані вище пристрої не виробляють компенсацію нелінійності термопар (мал. 2.8.). Для компенсації нелінійності термопари рекомендується використовувати високоточний АЦП і подальшу програмну обробку сигналу. На мал. 2.7. представлена мікропроцесорна система, призначена для квантування напруги з термопари. Для аналізу виходу температурного датчика холодного спаю використовуються два мультиплексних входу АЦП. Вхідний підсилювач програмується на посилення від 1 до 128, а дозвіл АЦП становить від 16 до 22 розрядів (в залежності від обраного конкретного АЦП). Мікроконтролер виконує арифметичні дії по компенсації температури холодного спаю і лінеаризації характеристики термопари.
Відомо, що коефіцієнт Зеєбека (зміна вихідної напруги при зміні температури чутливого спаяний) змінюється з температурою вимірювального спаю, тому при виборі термопари для виконання вимірювань в заданому діапазоні температур необхідно вибирати термопару, коефіцієнт Зеєбека якої в меншій мірі змінюється в заданому робочому діапазоні (мал.2.9.).
Наприклад, для вимірювання температури в діапазоні від 200 ° С до 500 ° С необхідно застосовувати термопару J-типу, так як вона має коефіцієнт Зеєбека, мінливий менш ніж на 1 мкВ / ° С в даному проміжку.
3. РЕЗЕСТИВНІ ДАТЧИКИ ТЕМПЕРАТУРИ
У резистивних датчиків температури (РДТ) опір змінюється зі зміною температури. Не слід плутати РДТ з терморезисторами, про які йтиметься нижче. Для виготовлення РДТ застосовується дорогий платиновий дріт, намотуваний на керамічний каркас. Резистивні датчики температури мають величину опору від 100 Ом до 1000 Ом. Типовий температурний коефіцієнт РТД становить близько 0.385 Ом / ° С для 100 Ом платинового РДТ. РДТ більш точні і лінійні, ніж термопари. На мал. 3.1. для порівняння показаний температурний коефіцієнт 100 Ом РДТ і коефіцієнт Зеєбека термопари типу S. Як видно з малюнка, за діапазоном від 200 до 800 ° С РДТ більш лінійні.

мал. 3.1. Резистивні датчики температури (РДТ)
Резистивні датчики температури є пасивними датчиками і вимагають наявності струму збудження. Оскільки струм, поточний через РТД, нагріває його, саморозігрів змінює температуру РДТ і проявляється помилка вимірювання. Таким чином, при розробці схем сполучення з РДТ слід враховувати величини саморозігріва. Вона не повинна перевищувати 0.5 ° С.
Виробники розрізняють помилки, пов'язані з саморозігріва для різних номіналів і розмірів РДТ в повітряному потоці і без нього. Для того щоб зменшити помилки через саморозігріва, слід використовувати мінімально можливі струми збудження для досягнення необхідного дозволу прийнятний за величиною тимчасової відгук.

мал. 3.2. Підключення ПТ РДТ до АЦП з високою роздільною здатністю
Як правило, РДТ підключають по бруківці схемою. Вихід моста посилюється. На мал. 3.2. показаний ПТ РДТ 100 Ом, що живиться струмом від джерела струму збудження 400 мкА. Вихідний сигнал датчика квантуется АЦП сімейства AD77XX. Відзначимо, що джерело струму збудження РДТ також створює опорну напругу 2.5 В для АЦП, використовуючи резистор 6.25 кОм. Зміна струму збудження не впливає на точність схеми, оскільки як вхідна напруга, так і опорна напруга вимірюються відносним чином. У той же час резистор 6.25 кОм повинен володіти якомога меншим температурним коефіцієнтом, з тим, щоб уникнути помилок вимірювання. Застосування АЦП з високою роздільною здатністю, в складі якого є підсилювач з програмованим посиленням (посилення від 1 до 128), виключає необхідність використання додаткової унормує ланцюга.
4. ТЕРМІСТОРИ
Термістори - це недорогі температурно-чутливі резистори. Їх виготовляють з напівпровідникових матеріалів, які мають як позитивний, так і негативний температурний коефіцієнт. На мал. 4.1. показана залежність опору термістора з негативним температурним коефіцієнтом (ВТК) [Negative Temperature Coefficient - NTC] від температури. Термістор є найбільш нелінійним пристроєм з розглянутих раніше, але в той же час він найбільш чутливий.

мал. 4.1. Поведінка опору термістора 10 кому з ВТК

мал. 4.2. Температурний коефіцієнт 10 кому термістора з ВТК
Оскільки термістори мають високу чутливість, вони практично незамінні для високошвидкісного визначення температури. Проте слід враховувати, що термістор досить нелінієн (мал. 2.29), з цієї причини слід дотримуватися лінеаризації для всіх величин температури, виключаючи тільки дуже вузьке діапазон вимірювань. Як наслідок, термістори застосовуються у вузькому діапазоні вимірювань.
Найпростіший метод лінеаризації термісторів - установка паралельного шунтирующего резистора (мал. 4.3., мал. 4.4.).
Величина цього дискретного резистора розраховується з рівності

де RT1 - опір термістора при температурі Т1, нижня межа
температурного діапазону;
RT3 - опір термістора при температурі Т3, верхня межа
температурного діапазону;
RT2 - опір термістора при температурі Т2, середня точка температурного діапазону, Т2 = (Т1 + Т3) / 2.
Наприклад, для термістора 10 кому з ВТК RT1 = 32650 Ом при 0 ° С; RT2 = 6532 Ом при 35 ° С і RT3 = 1 752 Ом при 70 ° С. Це призводить до величини R = 5.17 кОм.

мал. 4.3. Лінеаризація термістора з ВТК шляхом підключення паралельного резистора 5.17 кОм

мал. 4.4. Підсилювач з лінеаризованим термістором
Точність, необхідна для унормує схеми, залежить від лінійності ланцюга. Для наведеного вище прикладу ланцюг дає нелінійність від -2.3 ° С до + 2.0 ° С. Для подальшої лінеаризації сигнал з виходу подається на АЦП (мал. 4.4.). Відзначимо, що вихідний сигнал ланцюга з термістором має величину близько -10 мВ / ° С, при цьому дозволу 12-розрядного АЦП більш ніж достатньо.
5. НАПІВПРОВІДНИКОВІ ДАТЧИКИ ТЕМПЕРАТУРИ
Інтегральні напівпровідникові датчики температури мають саму високу точність і лінійність, однак обмежені діапазоном робочих температур (від -55 ° С до + 150 ° С). Ці датчики мають вбудовані підсилювачі і можуть масштабувати вихідні сигнали, приводячи їх до зручних величинам (наприклад, 10 мВ / ° С). Прикладом таких датчиків може служити ІС AD592 від Analog Devices або ІС ТМР17 від Texas Instruments (мал. 5.1.). Це датчики з струмовим виходом, які мають коефіцієнт перетворення 1 мкА / К, вони не вимагають зовнішньої калібрування і мають кілька градацій по точності.
На мал. 5.2. представлена мікропроцесорна система, яка використовує в якості датчика температури ІС ADT45 (або ADT50), що має вихід у вигляді відносного напруги.

мал. 5.1. Датчики з струмовим виходом: AD592, ТМР17

мал. 5.2. Датчики з виходом у вигляді відносного напруги
Для зниження рівня високочастотних перешкод (оскільки датчики температури працюють з дуже малим струмом споживання) висновки підключення харчування даного датчика заблоковані керамічним конденсатором 0.1 мкФ, які мають вельми короткі висновки (переважно елемент поверхневого монтажу), він повинен бути розташований настільки близько до висновків харчування, наскільки це можливо.
6. ДАТЧИКИ ТЕМПЕРАТУРИ З ЦИФРОВИМ ВИХОДОМ
Датчики температури з цифровим виходом мають вбудований на кристал АЦП. Прикладом такого датчика може служити датчик ТМР03 / ТМР04, який містить опорний джерело напруги, сигма-дельта АЦП і тактовий генератор (мал. 6.1.) . Вбудований АЦП забезпечує 12-розрядну точність при досить малих розмірах схеми. Вихідний сигнал сигма-дельта модулятора кодується, використовуючи відповідну схему, яка дає на виході послідовний цифровий код у вигляді частотно-модульованого сигналу (мал. 6.2.). Даний сигнал вельми просто декодується за допомогою будь-якого мікропроцесора, в значеннях температури в градусах Цельсія або Фаренгейта, і завжди передається по одному дроту. Номінальна вихідна частота становить 35 Гц при +25 ° С. Пристрій працює з фіксованою тривалістю імпульсу Т1, що становить10мс.

Номінальна тривалість імпульсу Т1 10 мс
Помилка в діапазоні температур ± 1.5 ° С
Типова нелінійність ± 0.5 ° С
Робочий діапазон від -40 ° С до + 100 ° С
Номінал відносини Т1 / Т2 при 0 ° С 60%
Номінальна частота при +25 ° С 35 Гц
Потужність по 5 В 6.5 МВт
Тип корпусу: ТО-92 SO-8 або TSSOP
мал. 6. 1. Датчики з цифровим виходом ТМРОЗ / 04

мал. 6. 2. Форми вихідного сигналу для ТМРО3 / 04
Вихідний сигнал ТМРОЗ / ТМР04 є потік імпульсів, температура визначається виразами:

Розглянемо підключення вищеописаного датчика до мікропроцесорної системі управління. В якості такої системи може використовуватися будь-мікроконтролер, що має в своєму складі таймери, за допомогою яких можна дуже просто декодувати частотно-модульований сигнал з ТМРОЗ / ТМР04. Типовий інтерфейс до мікроконтролеру Intel 80С51 показаний на мал. 6.3.

мал. 6. 3. Інтерфейс ТМР04 до мікроконтролеру
Два таймера, позначені як таймер 0 і таймер 1, мають 16 розрядів. Системна частота мікроконтролера, поділена на 12, є входом для таймерів. Мікроконтролер налаштовує порт Р1.0 і запускає таймер 0 по позитивному перепаду вихідного сигналу датчика. Мікроконтролер зупиняє таймер 0 і запускає таймер 1 по негативному перепаду вихідного сигналу датчика.
Коли вихідний сигнал знову прийде в високе стан, вміст таймерів Т1 і Т2 переписується в регістри таймер 0 і таймер 1 відповідно. Далі для розрахунку температури підпрограми використовують рівності, наведені вище.
7. ТЕРМОРЕЛЕ І РЕГУЛЯТОРИ З УСТАНОВКОЮ ТЕМПЕРАТУРИ
Якщо датчик температури підключити до компаратору, то ми отримаємо термореле. Термореле спрацьовує при досягненні температурного порога. Прикладом термореле можуть служити недорога ІС ADT05 або ADT22 / 23, ADT14 від Analog Devices або ТМР01 від Texas Instruments. ADT05 за допомогою єдиного зовнішнього резистора дозволяє встановлювати температуру перемикання з точністю до 2 ° С в діапазоні від -40 ° С до + 150 ° С (мал. 7. 1.). ADT05 призначена для роботи з однополярним живленням в діапазоні від +2.7 В до +7 В, що дозволяє використовувати її в додатках на батарейках, а також в індустріальних системах управління. Внаслідок низької потужності, що розсіюється (200 мкВт при 3.3 В) помилки через саморозігріва мінімальні, а час роботи навіть від акумуляторної батареї максимально. В ІС включений резистор підключення виходу до харчування для управління такими навантаженнями, як входи КМОП.

Точність установки
±2 °С
Внутрішній гістерезис
4 °С
Специфікований робочий діапазон від -40 ° С до + 150 ° С
Потужність, що розсіюється
200 мкВт при 3.3 В
мал. 7.1. Регулятор термостата
Величина резистора установки робочої температури визначається рівністю:

8. АНАЛОГО-ЦИФРОВІ ПЕРЕТВОРЮВАЧІ З ДАТЧИКОМ ТЕМПЕРАТУРИ НА ОДНОМУ КРИСТАЛІ
Цифрові датчики температури крім вбудованого температурного датчика і АЦП мають, як правило, контролер послідовного обміну даними (SPI ™ і QSPI ™ і MICROWIRE ™ фірми National Semiconductor), наприклад, датчики серії AD7816 / 7817/7818. Функціональні блок-схеми AD7816, AD7817, AD7818 показані на мал. 8.1., мал. 8 .2., мал. 8.3.

мал. 8.1. 10-розрядний цифровий датчик температури з послідовним інтерфейсом (AD7816)

мал. 8.2. 10-розрядний АЦП
з мультиплексованими входами і датчиком температури (AD7817)

мал. 8.3. 10-розрядний АЦП
з одним входом і датчиком температури (AD7818)
10-розрядний АЦП з часом перетворення 10 мкс;
гнучкий послідовний інтерфейс (Intel 8051, SPI ™, QSPI ™, MICROWIRE ™);
наявність на кристалі датчика температури від -55 ° С до +125 ° С;
точність вимірювання температури + 2 ° С (від -40 ° С до +85 ° С);
наявність вбудованого опорного джерела 2.5 В ± 1%;
діапазон напруги живлення від (+2.7 В до +5.5 В);
розсіює потужність 4 мВт на частоті вибірок 10 Гц;
режим автопониження живлення після завершення перетворення;
вихід «переривання» по перегріву; аналогові входи, чотири для AD7817, один для AD7818;
AD7416 / AD7417 / AD7418 подібні перерахованим, але мають 12С інтерфейс.
Контрольні питання для самоконтролю:
1. Що таке термістори?
2. Як визначається величина резистора установки робочої температури?
3. Що таке холодний спай?
4. На які групи розрізняють датчики і напрямки при побудові температурних контрольно-вимірювальних пристроїв?

Самостійна робота № 21
Тема: Мережі датчиків, інтелектуальні датчики
План
1. Мережі датчиків
2. Струмова петля
3. Об'єднання датчиків в мережу
4. MicroConverter ™
1. МЕРЕЖІ ДАТЧИКІВ
Технології об'єднання мікропроцесорних систем з датчиками в обчислювальну мережу відкривають ширші можливості для систем збору і аналізу даних. Такі системи управління використовують в якості ліній передачі даних різні промислові стандарти: струмовий петлю 4-20 мА, інтерфейси і протоколи 1-Ware, CAN, I2C, Ehternet, Lonwork та ін.
Різні датчики і виконавчі пристрої мають вбудовані на кристал або конструктив контролери цих інтерфейсів. Їх створюють спеціально під даний режим управління.
2. СТРУМОВА ПЕТЛЯ
На мал. 2.1. показано, як дистанційний виконавчий механізм управляється за допомогою струмового петлі з боку приміщення центрального пульта управління. Відзначимо, що вихід передавача на виконавчий механізм управляється ЦАП, в даному випадку AD420. Весь процес знаходиться під управлінням центрального комп'ютера, який підключається до мікроконтролеру і AD420. На цій схемі показаний тільки один виконавчий механізм, проте реальна система індустріального управління містить зазвичай значне число виконавчих механізмів і датчиків. Відзначимо, що вихід нуля шкали ЦАП складає 4 мА (а не нуль), а його верхня межа (за повною шкалою) - 20 мА. Вибір ненульового вихідного струму для нульової точки дозволяє передавача визначати факт розриву ланцюга і одночасно дозволяє живити дистанційний перетворювач через ту ж саму петлю, якщо струм останнього менше 4 мА.

мал. 2.1. Використання струмової петлі 4-20 мА
для управління дистанційним виконавчим механізмом
Багато з ланцюгів в приміщенні пульта управління харчуються безпосередньо від джерела живлення петлі, напруга якого лежить в межах від 12 до 36 В. Однак часто це напруга необхідно стабілізувати для харчування таких пристроїв, як підсилювачі, АЦП і мікроконтролери. Струм петлі вимірюється за допомогою резистора RSENSE, який фактично входить до складу ІС AD420. Внутрішній ЦАП AD420 є 16-розрядний сигма-дельта ЦАП. Наявність послідовного цифрового інтерфейсу дозволяє легко сполучати його з мікро контролером.
На мал. 2.2 показаний інтелектуальний датчик з виходом 4-20мА з живленням від петлі. Для того щоб дана схема працювала, повний сумарний струм всіх елементів її схеми повинен бути не більше 4 мА. Ядром цієї схеми є ІС AD421, 16-розрядний ЦАП, який живиться від струмового петлі. Струм внутрішнього ЦАП 4-20мА, а також решта струму повернення, яка потрібна для харчування AD421 і інших елементів схеми, протікає через вимірювальний резистор RSENSE. Вимірювальна ланцюг компенсує цю частину струму повернення і гарантує, що повний струм повернення буде дорівнює струму ЦАП, який відповідає коду, встановленому на ньому мікро контролером. Вихід датчика квантуется сигма-дельта АЦП AD7714 / AD7715. Відзначимо, що повний струм, споживаний ланцюгом, менш необхідного максимуму 4 мА. Пристрій AD421 містить ланцюг стабілізатора живлення, який управляє затвором зовнішнього ДМОП – польового транзистора і встановлює напруга живлення з ряду 3, 3.3 або 5 В. Таким чином, максимальна напруга в петлі обмежується тільки напругою пробою ДМОП транзистора.

мал. 2.2. Інтелектуальний датчик, що живиться від струмового петлі 4-20 мА

мал. 2.3. Дистанційний інтелектуальний передавач
з протоколом HART, який використовує AD421 ЦАП зі струмовим петлею 4-20 мА
Протокол HART використовує метод частотної модуляції відповідно до комунікаційним стандартом (Веll202), який є одним з декількох стандартів, які використовуються при створенні систем передачі цифрових сигналів по телефонних лініях. Цей метод використовується для накладення сигналів цифрового зв'язку на струмовий петлю 4-20 мА, що сполучає приміщення пульта управління з дистанційним передавачем. Для уявлення двійковій 1 і 0 в протоколі використовуються дві різні частоті 1200 і 2200 Гц відповідно. Ці гармонійні сигнали низького рівня з середньою величиною, рівною нулю, накладаються на сигнал постійного струму. Дана схема дозволяє одночасно використовувати аналогову і цифрову підсистеми зв'язку.
При цьому ніяких компонент постійного струму не додається до існуючого току петлі 4-20 мА, не рахуючи цифрових даних, які передаються по даній лінії. Фаза сигналу частотної модуляції неперервна. Таким чином, в петлі 4-20 мА НЕ буде наведених високочастотних компонент (зобов'язаних процесу модуляції). Отже, наявні аналогові схеми будуть продовжувати нормально працювати в системі, яка використовує протокол HART, оскільки низькочастотна фільтрація (і без того зазвичай існуюча) ефективно режектирує (виключає) цифровий сигнал. Низькочастотний однополюсний фільтр з частотою зрізу 10 Гц зменшує величину наведень від зв'язкового сигналу до ± 0.01% від верхньої межі шкали. Протокол HART наказує, щоб провідні пристрої (головна система управління) передавали в лінію сигнал напруги в той час, як ведене (або локальне, периферійне, цехове) пристрій повинен повертати струмовий сигнал. Токовий сигнал перетвориться в відповідну напругу резистором навантаження петлі в приміщенні пульта управління. На мал. 2.3. показана блок-схема інтелектуального інформаційно-вимірювального передавача. Інформаційно-вимірювальний передавач - це такий передавач, в якому функції його мікропроцесора діляться між виконанням первинних вимірювань з генерацією вимірювального сигналу і управлінням підсистемою зв'язку, яка дозволяє встановлювати двосторонній зв'язок по тим же самим лініям, за якими передається вимірювальна інформація. Інтелектуальний передавач, який містить протокол HART, є прикладом такого інтелектуального інформаційно-вимірювального передавача.
Дані, що передаються відповідно до HART-протоколом в струмовий петлю, показану на мал. 2.3, приймаються передавачем з використанням смугового фільтра і модему і далі надходять в асинхронний послідовний порт мікроконтролера або в порт модему. У зворотному напрямку тони дзвінків з HART-модему формуються і через розділовий конденсатор С з подаються на вихід AD421. Блок, що містить модем BELL202, формувач сигналу і смуговий фільтр, випускається у вигляді закінченої конструкції фірмою Symbios Logic, фірмою Inc - модель 20С15 і фірмою SMAR Research Corporation - модель НТ2012.
3. ОБ'ЄДНАННЯ ДАТЧИКІВ В МЕРЕЖУ
Розглянемо мережеве об'єднання датчиків. Зрозуміло, що в даному випадку розглядати не дискретні датчики, а системи на кристалі (SOC), тобто інтелектуальні датчики (мал. 3.1.)

мал. 3.1. Індустріальний ланцюг
Такі індустріальні мережі можуть приймати різні конфігурації. Цехова мережа на мал. 3.1. є широкосмугова розподілена мережа, наприклад Ethernet або Lonwork. Ця цехова мережу в звичайному вигляді не призначена для прямого підключення інтелектуальних датчиків. Більшість приладових мереж (таких як ASI-bus, CAN-bus і HART), крім того, подають живлення на інтелектуальні датчики по тій же самій лінії, по якій передаються послідовні дані.
Деякі з стандартів індустріальних мереж, найбільш популярних в даний час, перераховані нижче. Кожен з них володіє власними перевагами і недоліками і кожен має свою власну апаратуру і послідовний протокол обміну. Це означає, що інтелектуальний датчик, призначений для роботи в одній індустріальної мережі, не обов'язково буде працювати в інший.


Так як підприємства та багато інших об'єктів з мережами часто мають набір різних мереж і підмереж, для них найбільш правильним (гнучким) рішенням буде використання датчиків в режимі автоматичної конфігурації («встанови і працюй»), сумісних з різними цеховими і приладовими мережами. Заслуга інтерфейсного стандарту IEEE 1451.2 полягає в тому, що він зробив реальністю існування датчиків, незалежних від мережі.
На мал. 3.2. показані основні компоненти системи, сумісної з IEEE 1451.2. Інтелектуальний датчик (або інтелектуальне виконавчий пристрій) тут називається як STIM (Smart Transducer Interface Module) (інтерфейсний модуль інтелектуального перетворювача - ІМІП). Він містить один або більше датчиків і / або виконавчих пристроїв з пристроями нормування сигналів, АЦП або ЦАП для узгодження датчиків / виконавчих пристроїв саморозміщуваних мікро контролером. Мікроконтролер має доступ до неруйнівного пам'яті, яка містить в собі поле TEDS (Transducer Electronic Data Sheet) (електронне опис перетворювача - ЕОП), яке містить опису датчиком-ка / виконавчого пристрою і яке можна прочитати через мережу. NCAP (Network Capable Application Processor) (мережевий прикладний процесор - СПП) являє собою вузол мережі, в який буде підключатися STIM.

мал. 3.2. Стандарт підключення датчика IEEE1451.2

мал. 3.3. Режим автоконфігурації, plug & play
Основою IEEE1451.2 є стандартний 10-провідний послідовний інтерфейс між датчиком і вузлом мережі, званий ТП (Trans-ducer Independent Interface) (інтерфейс незалежний від перетворювача - ІНП). На об'єктах з розгалуженими мережами інтерфейс (ТП) дозволяє встановлювати будь- який модуль STIM на будь-який вузол NCAP будь-якої мережі, як показано на мал. 3.3. Коли модуль STIM перший раз підключається до нового вузлу NCAP, цифрова інформація модуля, включаючи його таблиці TEDS, стає доступною для даної мережі. Мережа ідентифікує, який тип датчика або виконавчого пристрою був тільки що підключений, які з його даних доступні і які розмірності вхідних і вихідних даних (кубічні метри в секунду, градуси Кельвіна, кілопаскалі і т. Д.), Яка специфіковані точність пристрою (наприклад, ± 2 ° С), та іншу інформацію, що стосується датчика або виконавчого пристрою. Такий прийом виключає необхідність виконання програмних кроків по конфігурації мережі, які потрібні при заміні або додаванні датчика в систему, реалізуючи тим самим роботу в режимі «встановлюй і працюй» незалежно від мережі.
Більшість інтелектуальних датчиків (необмежених модулями під 1451.2) містять такі основні компоненти:
- мікроконтролер,
- АЦП з високою роздільною здатністю,
- прецизійний підсилювач,
датчики.
4. MICROCONVERTER ™
Сімейство виробів MicroConverter ™ від фірми Analog Devices - перші пристрої, які містять всі зазначені компоненти на одному кристалі (табл. 4.1.)
Таблиця 4.1.
Мікроконвертери Analog Devices
ADuC816 ADuC812 AduC810
Здвоєний ZA АЦП
РПП
> 1. 6 розрядів
С / Ш (р-р)> 100 дБ
Диферент. входи
Підсилювач з ПУ
Самокалібровка 8-канальний АЦП з РПП
12 розрядів, 5 мкс
<1/2 МЗР INL
Наявність режиму ПДП
Самокалібровка 8-канальний АЦП з
10 розрядів
<1/2 МЗР INL
12-розрядний ЦАП
вольта вихід
<1/2 МЗР DNL Два 12-розрядних ЦАП
вольта вихід
<1/2 МЗР DNL 12-розрядний ЦАП
вольта вихід
<1/2 МЗР DNL
Наявність вбудованого
ИОН Наявність вбудованого
ИОН Наявність вбудованого
ИОН
Наявність вбудованого
датчика температури Наявність вбудованого
датчика температури Наявність вбудованого
датчика температури
Три основні складові кожного пристрою з серії MicroConverter ™: висока роздільна здатність при аналого-цифровому і цифроаналогових перетворенні, наявність неруйнівного постійної пам'яті (FLASH EE-PROM) програм і даних і наявність мікроконтролера. Всі три пристрої містять 12-розрядний ЦАП з виходом у вигляді напруги, прецизійний джерело опорного напруги по забороненій зоні і вбудований датчик температури.
Контрольні питання для самоконтролю:
1. Що є основою IEEE1451.2?
2. Назвіть три основні складові кожного пристрою з серії MicroConverter ™
3. Які основні компоненти містить більшість інтелектуальних датчиків?
4. Що використовує протокол HART?
5. Що компенсує вимірювальна ланцюг?

Самостійна робота № 22
Тема: Директиви Асемблера
План
1. Директиви AVR асемблера
2. CSEG - програмний сегмент
3. DSEG - сегмент даних
4. ENDMACRO - кінець макросу
5. MACRO - початок макросу
1. ДИРЕКТИВИ AVR АСЕМБЛЕРА
Компілятор підтримує ряд директив, які не транслюються безпосередньо в код. Замість цього вони використовуються для вказівки положення в програмній пам'яті, визначення макросів, ініціалізації пам'яті і т. д. Список директив наведено в табл. 1.1.
Таблиця 1.1.
Директиви AVR асемблера
Директива Опис
BYTE Зарезервувати байти в ОЗУ
CSEG Програмний сегмент
DB Визначити байти у флеш або EEPROM
DEF Призначити регістру символічне ім'я
DEVICE Визначити пристрій для якого компілюється програма
DSEG Сегмент даних
DW Визначити слова у флеш або EEPROM
ENDM, ENDMACRO Кінець макросу
EQU Встановити постійний вираз
ESEG Сегмент EEPROM
EXIT Вийти з файлу
INCLUDE Вкласти інший файл
LIST Включити генерацію лістингу
LISTMAC Включити розгортання макросів в лістингу
MACRO Початок макросу
NOLIST Вимкнути генерацію лістингу
ORG Встановити положення в сегменті
SET Встановити змінний символічний еквівалент вираження
BYTE - зарезервувати байти в ОЗУ.
Директива BYTE резервує байти в ОЗУ. Якщо Ви хочете мати можливість посилатися на виділену область пам'яті, то директива BYTE повинна бути випереджу міткою. Директива приймає один обов'язковий параметр, який вказує кількість виділених байт. ця директива може використовуватися тільки в сегменті даних (див. директиви CSEG і DSEG). Виділені байти не ініціалізуються.
Синтаксис:
МІТКА: .BYTE вираз
Приклад:

2. CSEG – ПРОГРАМНИЙ СЕГМЕНТ
Директива CSEG визначає початок програмного сегмента. Вихідний файл може складатися з декількох програмних сегментів, які об'єднуються в один програмний сегмент при компіляції. Програмний сегмент є сегментом за замовчуванням. Програмні сегменти мають свої власні лічильники положення, які вважають не побайтно, а по немов. Директива ORG може бути використана для розміщення коду і констант в необхідному місці сегмента. Директива CSEG не має параметрів.
Синтаксис:
CSEG
Приклад:
      .DSEG; Початок сегмента даних
vartab: .BYTE 4; Резервує 4 байта в ОЗУ
    .CSEG; Початок кодового сегмента
const: .DW 2; Розмістити константу 0x0002 в пам'яті програм
     mov r1, r0; виконати дії
DB - визначити байти у флеш або EEPROM.
Директива DB резервує необхідну кількість байт в пам'яті програм або в EEPROM. Якщо Ви хочете мати можливість посилатися на виділену область пам'яті, то директива DB повинна бути випереджу міткою. Директива DB повинна мати хоча б один параметр. Дана директива може бути розміщена тільки в сегменті програм (CSEG) або в сегменті EEPROM (ESEG).
Параметри, що передаються директиві, - це послідовність виразів, розділених комами. Кожен вираз має бути або числом в діапазоні (-128..255), або в результаті обчислення повинно давати результат в цьому ж діапазоні, в іншому випадку число усікається до байта, причому без видачі попереджень.
Якщо директива отримує більше одного параметра і поточним є програмний сегмент, то параметри упаковуються в слова (перший параметр - молодший байт), і якщо число параметрів непарній, то останній вираз буде усечено до байта і записано як слово зі старшим байтом, рівним нулю, навіть якщо далі йде ще одна директива DB.
Синтаксис:
МІТКА: .DB список_виразів
приклад:
      .CSEG
consts: .DB 0, 255, 0b01010101, -128, 0xaa
.ESEG
const2: .DB 1,2,3
DEF - призначити регістру символічне ім'я.
Директива DEF дозволяє посилатися на регістр через деякий символічне ім'я. Призначене ім'я може використовуватися у всій нижче наступній частині програми для звернень до даного регістру. регістр може мати кілька різних імен. Символічне ім'я може бути перепризначено пізніше в програмі.
Синтаксис:
.DEF Сімволічне_ім’я = Регістр
Приклад:
.DEF Temp = R16
.DEF Ior = R0
.CSEG
ldi temp, 0xf0; Завантажити 0xf0 в регістр temp (R16)
in ior, 0x3f; Прочитати SREG в регістр ior (R0)
eor temp, ior; Регістри temp і ior складаються по виключає або
DEVICE - визначити контролер, для якого компілюється програма.
Директива DEVICE дозволяє вказати, для якого контролера компілюється програма. При використанні даної директиви компілятор видасть попередження, якщо буде знайдена інструкція, яку не підтримує даний мікроконтролер. Також буде видано попередження, якщо програмний сегмент або сегмент EEPROM перевищать розмір, що допускається пристроєм. Якщо ж директива не використовується, то всі інструкції вважаються допустимими, і відсутні обмеження на розмір сегментів.
Синтаксис:
.DEVICE AT90S1200 | AT90S2313 | AT90S2323 | AT90S2333 |
AT90S2343 | AT90S4414 | AT90S4433 | AT90S4434 | AT90S8515 |
AT90S8534 | AT90S8535 | ATtiny11 | ATtiny12 | ATtiny22 | ATmega603 |
ATmega103
приклад:
.DEVICE AT90S1200; використовується AT90S1200
.CSEG
push r30; Ця інструкція викличе попередження
                     ; оскільки AT90S1200 її немає
3. DSEG – СЕГМЕНТ ДАНИХ
Директива DSEG визначає початок сегмента даних. Вихідний файл може складатися з декількох сегментів даних, які об'єднуються в один сегмент при компіляції. Сегмент даних зазвичай складається тільки з директив BYTE і міток. Сегменти даних мають свої власні побайтное лічильники положення. Директива ORG може бути використана для розміщення змінних в необхідному місці ОЗУ. Директива не має параметрів.
Синтаксис:
.DSEG
приклад:
    .DSEG; Початок сегмента даних
var1: .BYTE 1; зарезервувати 1 байт для var1
table: .BYTE tab_size; зарезервувати tab_size байт.
.CSEG
ldi r30, low (var1); Завантажити молодший байт регістра Z
ldi r31, high (var1); Завантажити старший байт регістра Z
ld r1, Z; Завантажити var1 в регістр r1
DW - визначити слова у флеш або EEPROM.
Директива DW резервує необхідну кількість слів у пам'яті програм або в EEPROM. Якщо Ви хочете мати можливість посилатися на виділену область пам'яті, то директива DW повинна бути випереджу міткою. Директива DW повинна мати хоча б один параметр. Дана директива може бути розміщена тільки в сегменті програм (CSEG) або в сегменті EEPROM (ESEG). Параметри, що передаються директиві, - це послідовність виразів, розділених комами. Кожен вираз має бути або числом в діапазоні (-32768..65535), або в результаті обчислення повинно давати результат в цьому ж діапазоні, в іншому випадку число усікається до слова, причому без видачі попереджень.
Синтаксис:
МІТКА: .DW expressionlist
приклад:
.CSEG
varlist: .DW 0, 0xffff, 0b1001110001010101, -32768, 65535
.ESEG
eevarlst: .DW 0,0xffff, 10
4. ENDMACRO – КІНЕЦЬ МАКРОСУ
Директива визначає кінець макроозначення і не приймає ніяких параметрів. Для інформації щодо визначення макросів см. Директиву
MACRO.
Синтаксис:
.ENDMACRO
Приклад:
.MACRO SUBI16; Початок визначення макросу
subi r16, low (@ 0); Відняти молодший байт першого параметра
sbci r17, high (@ 0); Відняти старший байт першого параметра
.ENDMACRO
EQU - встановити постійне вираження.
Директива EQU привласнює мітці значення. Ця мітка може пізніше використовуватися у виразах. Мітка, якій присвоєно значення даної директиви, не може бути перепризначено і її значення не може бути змінено.
Синтаксис:
.EQU Мітка = вираз
приклад:
.EQU Io_offset = 0x23
.EQU Porta = io_offset + 2
.CSEG; Початок сегмента даних
clr r2; Очистити регістр r2
out porta, r2; Записати в порт A
ESEG - сегмент EEPROM.
Директива ESEG визначає початок сегмента EEPROM. Початковий файл може складатися з декількох сегментів EEPROM, які об'єднуються в один сегмент при компіляції. Сегмент EEPROM зазвичай складається тільки з директив DB, DW і міток. Сегменти EEPROM мають свої власні побайтнє лічильники положення. Директива ORG може бути використана для розміщення змінних в необхідному місці EEPROM. Директива не має параметрів.
Синтаксис:
.ESEG
Приклад:
    .DSEG; Початок сегмента даних
var1: .BYTE 1; зарезервувати 1 байт для var1
table: .BYTE tab_size; зарезервувати tab_size байт.
.ESEG
eevar1: .DW 0xffff; проинициализировать 1 слово в EEPROM
EXIT - вийти з файлу.
Зустрівши директиву EXIT, компілятор припиняє компіляцію даного файлу. Якщо директива використана у вкладеному файлі (див. Директиву INCLUDE), то компіляція триває з рядка, наступній після директиви INCLUDE. Якщо ж файл не є вкладеним, то компіляція припиняється.
Синтаксис:
.EXIT
Приклад:
.EXIT; Вийти з даного файлу
INCLUDE - вкласти інший файл.
Зустрівши директиву INCLUDE, компілятор відкриває вказаний в ній файл, компілює його, поки файл не закінчиться або не трапиться директива EXIT, після цього продовжує компіляцію початкового файлу з рядка, наступної за директивою INCLUDE. Вкладений файл може також містити директиви INCLUDE.
Синтаксис:
.INCLUDE "Имя_файла"
Приклад:
; файл iodefs.asm:
.EQU Sreg = 0x3f; регістр статусу
.EQU Sphigh = 0x3e; Старший байт покажчика стека
.EQU Splow = 0x3d; Молодший байт покажчика стека
; файл incdemo.asm
.INCLUDE Iodefs.asm; Вкласти визначення портів
in r0, sreg; Прочитати регістр статусу
LIST - включити генерацію лістингу.
Директива LIST вказує компілятору на необхідність створення лістингу. Лістинг являє собою комбінацію ассемблерного коду, адрес і кодів операцій. За замовчуванням генерація лістингу включена, проте дана директива використовується спільно з директивою NOLIST для отримання листингів окремих частин вихідних файлів.
Синтаксис:
.LIST
Приклад:
.NOLIST; Відключити генерацію лістингу
.INCLUDE "Macro.inc"; Вкладені файли не будуть
.INCLUDE "Const.def"; відображені в лістингу
.LIST; Включити генерацію лістингу
LISTMAC - включити розгортання макросів в лістингу.
Після директиви LISTMAC компілятор буде показувати в лістингу вміст макросу. За замовчуванням в лістингу показується тільки виклик макросу і передані параметри.
Синтаксис:
.LISTMAC
 
Приклад:
.MACRO MACX; визначення макросу
add r0, @ 0; тіло макросу
eor r1, @ 1
.ENDMACRO; кінець макроозначення
.LISTMAC; Включити розгортання макросів
MACX r2, r1; Виклик макроса (в лістингу буде показано тіло
макросу)
5. MACRO – ПОЧАТОК МАКРОСУ
З директиву MACRO починається визначення макросу. Як параметр директиві передається ім'я макросу. При зустрічі імені макросу пізніше в тексті програми компілятор замінює це ім'я на тіло макросу. Макрос може мати до 10 параметрів, до яких в його тілі звертаються через @ 0- @ 9. При виклику параметри перераховуються через коми. Визначення макросу закінчується директивою ENDMACRO. За замовчуванням в лістинг включається тільки виклик макросу, для розгортання макросу необхідно використовувати директиву LISTMAC. Макрос в лістингу показується знаком +.
Синтаксис:
.MACRO макроімен
Приклад:
.MACRO SUBI16; початок макроозначення
subi @ 1, low (@ 0); Відняти молодший байт параметра 0 з параметра 1
sbci @ 2, high (@ 0); Відняти старший байт параметра 0 з
параметра 2
.ENDMACRO; кінець макроозначення
.CSEG; Початок програмного сегмента
SUBI16 0x1234, r16, r17; Відняти 0x1234 з r17: r16
NOLIST - вимкнути генерацію лістингу.
Директива NOLIST вказує компілятору на необхідність припинення генерації лістингу. Лістинг являє собою комбінацію асемблерного коду, адрес і кодів операцій. За замовчуванням генерація лістингу включена, однак може бути відключена даної директиви. Крім того, дана директива може бути використана спільно з директивою LIST для отримання лістингів окремих частин вихідних файлів.
Синтаксис:
.NOLIST
 
Приклад:
.NOLIST; Відключити генерацію лістингу
.INCLUDE "Macro.inc"; Вкладені файли не будуть
.INCLUDE "Const.def"; відображені в лістингу
.LIST; Включити генерацію лістингу
ORG - встановити положення в сегменті.
Директива ORG встановлює лічильник положення рівним заданої величиною, яка передається як параметр. Для сегменту даних вона встановлює лічильник положення в SRAM (ОЗУ), для сегмента програм це програмний лічильник, а для сегмента EEPROM це положення в EEPROM. Якщо директиві передує мітка (в тому самому рядку), то вона розміщується за адресою, вказаною в параметрі директиви. Перед початком компіляції програмний лічильник і лічильник EEPROM дорівнюють нулю, а лічильник ОЗУ дорівнює 32 (оскільки адреси 0-31 зайняті регістрами). Зверніть увагу на те, що для ОЗУ і EEPROM використовуються побайтнє лічильники, а для програмного сегмента - послівний.
Синтаксис:
.ORG вираз
Приклад:
        .DSEG; Початок сегмента даних
.ORG 0x37; Встановити адресу SRAM рівним 0x37
variable: .BYTE 1; Зарезервувати байт за адресою 0x37H
        .CSEG
        .ORG 0x10; Встановити програмний лічильник рівним 0x10
        mov r0, r1; Дана команда буде розміщена за адресою 0x10
SET - встановити змінний символічний еквівалент вираження.
Директива SET привласнює імені деяке значення. Це ім'я пізніше може бути використано в виразах. Причому на відміну від директиви EQU значення імені може бути змінено інший директивою SET.
Синтаксис:
.SET Ім'я = вираз
Приклад:
.SET Io_offset = 0x23
.SET Porta = io_offset + 2
.CSEG; Початок кодового сегмента
clr r2; Очистити регістр 2
out porta, r2; Записати в порт A
Контрольні питання для самоконтролю:
1. Що підтримує компілятор?
2. Що починається з директиву MACRO?
3. Що визначає директива DSEG?
4. Що визначає директива CSEG?
5. Що резервує директива BYTE?

Самостійна робота № 23
Тема: Оператори і функції
План:
1. Оператори
2. Функції
3. Приклади програм
1.ОПЕРАТОРИ
Компілятор підтримує ряд операторів, які перераховані в табл. 1.1. (чим вище становище в таблиці, тим вище пріоритет оператора). Вирази можуть полягати в круглі дужки, такі вирази обчислюються перед виразами за дужками.
Таблиця 1.1.
Оператори
Пріоритет Символ Опис
1 2 3
14
14
14
13
13
12
12
11
11
10
10
10
10
9
9
8
7
6
5
4
!
~
-
*
/
+
-
<<
>>
<
<=
>
>=
==
!=
&
^
|
&&
|| Логічне заперечення
Побітове заперечення
Мінус
Множення
Ділення
Підсумовування
Віднімання
Зрушення вліво
Зрушення вправо
Менше ніж
Менше або дорівнює
Більше ніж
Більше або дорівнює
Дорівнює
Не дорівнює
Побітове І
Побітове, що виключає АБО
Побітове АБО
Логічне І
Логічне АБО
2. ФУНКЦІЇ
Чи можливо застосувати наступні функції:
- LOW (вираз) повертає молодший байт вираження;
- HIGH (вираз) повертає другий байт вираження;
- BYTE2 (вираз) те саме, що і функція HIGH;
- BYTE3 (вираз) повертає третій байт вираження;
- BYTE4 (вираз) повертає четвертий байт вираження;
- LWRD (вираз) повертає біти 0-15 вираження;
- HWRD (вираз) повертає біти 16-31 вираження;
- PAGE (вираз) повертає біти 16-21 вираження;
- EXP2 (вираз) повертає 2 певною мірою (вираз);
- LOG2 (вираз) повертає цілу частину log2 (вираз).
Приклад найпростішої програми на асемблері для процесора i8080:
MVI B, 1Eh 1. Помістити в регістр B число 1Еh
MVI A, 00h 2. Помістити в регістр А число 00h
INR B 3. Збільшити вміст B на 1.
ADD B 4. Скласти А і В.
DCR A 5. Зменшити вміст А на 1.
3. ПРИКЛАДИ ПРОГРАМ
; Тестова програма. Використання світлодіодів і кнопок
; Підключіть PORTB до LEDS і PORTD до SWITCHES. LEDS.
.include "8515def.inc"
.def Temp = r16; Регістр тимчасового зберігання даних
.def Delay = r17; Мінлива подільника 1
.def Delay2 = r18; Мінлива подільника 2
; ***** Ініціалізація
RESET:
  ser Temp
  out DDRB, Temp; Встановити PORTB на висновок
; **** Опитування портів
LOOP: out PORTB, temp; перевстановити LEDS
  sbis PIND, 0x00; Якщо (Port D, pin0 == 0)
  inc Temp; то лічильник инкрементируются.
  sbis PIND, 0x01; Якщо (Port D, pin1 == 0)
  dec Temp; то лічильник деінкрементіров.
  sbis PIND, 0x02; Якщо (Port D, pin2 == 0)
  ror Temp; то обертати в право
  sbis PIND, 0x03; Якщо (Port D, pin3 == 0)
  rol Temp; то обертати в ліво
  sbis PIND, 0x04; Якщо (Port D, pin4 == 0)
  com Temp; то маскувати
  sbis PIND, 0x05; Якщо (Port D, pin5 == 0)
  neg Temp; то інвертувати
  sbis PIND, 0x06; Якщо (Port D, pin6 == 0)
  swap Temp; то поміняти тетради; **** Затримки для сприйняття людським оком.
DLY:
dec Delay
brne DLY
dec Delay2
   brne DLY
   rjmp LOOP; повтор циклу
; Програма імітує роботу "Драйвера" стандартної РС клавіатури
; Клавіатуру приєднано до порту D
; пін1 клавіатури (синхронізація) підключений на вхід INT0
; ПІН2 клавіатури (дані) підключений до піну 4 порту D
; пін3 клавіатури (скидання) не використовується
; пін4 клавіатури (земля) підключений до STK
; пін5 клавіатури (+ 5В) підключений до STK
; у відповідності з приходом запиту на переривання
; з вхідного Піна даних зчитується інформація і формується
; прийнята посилка.
; з посилки виділяється код натиснутою клавіші і виводиться на світлодіоди
; світлодіоди підключені до порту В
; вся посилка-32 біта стартовий байт Е0
; потім скан код 1-байт і стоп байт F0
; кожен псевдо "байт" в посилці 11-біт (1-старт, 8-код, 1-парність, 1-стоп
; програма не враховує останній 33-й стоповий біт
.include "8515def.inc"; Модуль опису змінних
.def tmp1_r = r19; Оперативний регістр 1
.def Count_bit = r20; Лічильник прийнятих біт в байті
.def Main_count = r21; Основний лічильник прийнятих біт в посилці
.dseg; сегмент даних RAM
Store_bytes: .byte 4; тут зберігається прийнята посилка 32 біта
.cseg; сегмент команд ROM
.org $ 0000; сегмент команд починається з таблиці ВП
  rjmp START; таблиця векторів переривань вектор 0 старт
  rjmp W_int0; вектор зовнішнього переривання Int0
  reti; інші вектора не використовуються
  reti
  reti
  reti
  reti
  reti
  reti
  reti
  reti
  reti
  reti
; ------------ Настройка основних параметрів ---------------------------------- -------
START:
   ldi tmp1_r, LOW (RAMEND); Установка стека
out spl, tmp1_r
           ldi tmp1_r, HIGH (RAMEND)
           out sph, tmp1_r
           ldi r25, $ ff; настройка портів введення-виведення
   out DDRB, r25; порт В на висновок до нього підключені
           ; індикатори
   ldi r25,0; порт D на введення на нього подається переривання
   out DDRD, r25; і дані
         ; настройка процесора
     ldi r16,0b00101010; режим sleep - включений, int1 і int0 по
           ; падаючому фронту
out MCUCR, r16
  ldi r16,0b11000000; дозвіл int0 int1
  out GIMSK, r16
  clr r20; очистити лічильник прийнятих біт в байті
  clr r21; очистити лічильник прийнятих біт в посилці
  ldi r30, low (Store_bytes); установка буфера
  ldi r31, high (Store_bytes); для прийому посилки
  ldi r17,0b10000000; підготовка маски прийнятих біт
  sei; дозвіл всіх переривань
m1: rjmp m1; очікування переривання від клавіатури
; ------------- Обробка переривання ----------------------------------- ----------
W_int0: cpi main_count, 32; посилка прийнята повністю?
  brlo go_1; немає продовжуємо приймати
  sbis PIND, 0x04
  nop
  nop
; і вихід прийнятого скан-коду на індикатори
ldi r30, low (Store_bytes); установка буфера
  ldi r31, high (Store_bytes)
  inc ZL; перший стартовий байт пропускаємо
; ------------ Виділення коду з посилки ---------------------------------- ----
  ld r1, z; завантажити в регістр R1 прийняті дані
    lsl r1; необхідно пропустити перші 4 біта даних
  lsl r1; в них зберігається 8 біт стартового байта
  lsl r1; стоп і порітет біти стартового байта
  lsl r1; а також старт біт коду натиснутоюклавіші разом 4
  inc ZL; завантажити дані містять другу тетраду коду
  ld r2, z
  lsr r2; підготувати 2-ю тетраду до об'єднання з першої
  lsr r2
  lsr r2
  lsr r2
  or r1, r2; об'єднати тетради тобто сфоміровать код клавіші
      ; підготовка коду до висновку на індикатори
clr r2; очистимо R2 він використовується далі
  clc; очистити біт З регістра прапорів він ПОНАБ
  rol r1; код в регістрі r1 зберігається в зворотному напрямку
  ror r2; оскільки з лінії надходить спочатку мл. біт
  rol r1; а за тим старший
  ror r2; тому необхідно "перевернути" регістр
  rol r1; для правильного виведення на індикатори
  ror r2; для цього висуваємо регістр R1 в регістр R2
  rol r1; через біт З регістра прапорів
  ror r2
  rol r1
  ror r2
  rol r1
  ror r2
  rol r1
  ror r2
  rol r1
  ror r2
  out PORTB, r2; "Правильний" байт виводимо на індикатори
  clr r21; останнім стоповим байтом
  clr r20; можна знехтувати
  ldi r30, low (Store_bytes); установка буфера
  ldi r31, high (Store_bytes); для прийому наступної посилки
  reti
go_1: cpi r20,8; всі біти в байті прийняті?
  brlo go_2; немає продовжуємо приймати
  st Z +, r25; да зберігаємо прийнятий байт він в R25
  clr r20; за адресою в Z і збільшуємо Z
  clr r25; очищення проміжних регістрів
  ldi r17,0b10000000; новий біт приймаємо готуємо
        ; маску "змінна" 1 в регістрі R17
  reti
; ------------------ Установка біта в регістрі приймачі --------------------------- -
go_2: sbis PIND, 0x04; якщо на піне 4 порту D
  rjmp to0; 0 - то встановити 0 в бите приймача
  rjmp to1; інакше встановити 1
to0: lsr r17; 0-на вході даних просто предвігаем маску
  inc r21; збільшити лічильник прийнятих біт в посилці
  inc r20; збільшити лічильник прийнятих біт в байті
  reti; вихід з переривання біт прийнятий
to1: or r25, r17; установка 1 у відповідному бите приймача
  lsr r17; зрушити маску
  inc r21; збільшити лічильники
  inc r20
  reti; вихід з переривання біт прийнятий
Контрольні питання для самоконтролю:
1. В чому можуть полягати вирази?

Самостійна робота № 24
Тема: Команди передачі управління
План:
1. Команди передачі управління 
2. Формат команди CMP
1. КОМАНДИ ПЕРЕДАЧІ УПРАВЛІННЯ  Ці команди реалізують зміна природного порядку виконання команд програми. Їх можна розділити на 3 підгрупи, опис яких зведено в таблицю 1.1. 
Таблиця 1.1.

Мнемокод Формат
Команди безумовної передачі керування 
CALL  CALL ім'я
RET  RET [число видаляються з стека значень] 
JMP  JMP ім'я 
Команди умовної передачі управління 
JA / JNBE  JA / JNBE близька мітка 
JAE / JNB  JAE / JNB близька мітка 
JNC  JNC близька мітка 
JB / JNAE  JB / JNAE близька мітка 
JC  JC близька мітка 
JBE / JNA  JBE / JNA близька мітка 
JCXZ  JCXZ близька мітка 
JE / JZ  JE / JZ близька мітка 
JG / JNLE  JG / JNLE близька мітка 
JGE / JNL  JGE / JNL близька мітка 
JL / JGNE  JL / JGNE близька мітка 
JLE / JNG  JLE / JNG близька мітка 
JNE / JNZ  JNE / JNZ близька мітка 
JNO  JNO близька мітка 
JNP / JPO  JNP / JPO близька мітка 
JNS  JNS близька мітка 
JO  JO близька мітка 
JP / JPE  JP / JPE близька мітка 
JS  JS близька мітка 
Команди управління циклами
 LOOP  LOOP близька мітка 
LOOPE / LOOPZ  LOOPE / LOOPZ близька мітка 
LOOPNE / LOOPNZ  LOOPNE / LOOPNZ близька мітка 
У наведеній таблиці через слеш '/' перераховуються ідентичні команди, дія яких абсолютно однаково і застосування конкретної з них залежить від пристрастей програміста. Наявність ідентичних команд пояснюється тим фактом, що якщо чісло_1> чісло_2, то можна з упевненістю стверджувати, що чісло_1 не (менше або дорівнює) чісло_2. 
Звернемося тепер до командах умовного переходу. У їх мнемонічні позначення входять літери, які визначають умови відповідно до нижченаведеної таблицею: 
Буква мнемокода Умова Тип операндів
Е  одно  будь 
N  Не дорівнює  будь 
G  більше  Числа зі знаком 
L  менше  Числа зі знаком 
А  Вище, в сенсі "більше"  Числа без знака 
В  нижче, в сенсі "менше"  Числа без знака 
Операнд "мітка переходу" або "близька мітка" відображає той факт, що мітка поміченої команди повинна знаходитися в межах поточного сегмента коду і на відносному відстані від команди переходу> -128 і <127 байтів. Обмеження -128:127 байтів знято у процесорів, починаючи з моделі 80386, однак обмеження передачі управління в межах поточного сегментного коду діє і в моделях Пентіум. 
Рішення про те, куди буде передано управління командою умовного переходу, приймається на підставі умови. Джерелами таких умов можуть бути: - будь-яка команда, яка зраджує стан арифметичних прапорів (нижче ці прапори будуть перераховані); 
- команда порівняння CMP. 
В останніх публікаціях з програмування на Асемблері серед команд передачі управління розглядають команду порівняння CMP, хоча ця команда ближче до арифметичним операціям. Пояснюється це тим, що, як правило, команди безумовного переходу в програмах слідують за командою порівняння, бо саме порівняння лежить в основі рішення (символу процесу). 
2. ФОРМАТ КОМАНДИ CMP
Формат команди CMP: 
CMP приймач, джерело або 
CMP операнд1, операнд2
Ця команда здійснює по суті віднімання операнд_1 - операнд_2 або приймач - джерело, однак результат нікуди не записує, а тільки встановлює прапори у відповідність з нижчеподаній таблиці.

Порівнювані операнди Прапори
OF  SF  ZF  CF 
Операнди без знака 
Джерело <приймач  Н  Н  0  0 
Джерело = приймач  Н  Н  1  0 
Джерело> приймач  Н  Н  0  1 
Операнди зі знаком 
Джерело <приймач  0/1  0  0  H 
Джерело = приймач  0  0  1  H 
Джерело> приймач  0/1  1  0  H 
У цій таблиці прийняті наступні позначення:  - "H" означає, що 'не має значення "чи інакше, на цей прапор операція не впливає;  - 0/1 означає, що прапор встановлюється або в 1 або в 0 залежно від значень операндів (негативні або позитивні або різнознакові операнди порівнюються).  Наведемо ще одну таблицю, в якій відбивається дія команд умовного переходу за значеннями аналізованих цими командами прапорів: 

Тип операндів Мнемокод команди Критерій переходу Значення прапорів для переходу
будь  JE  Операнд_1 = операнд_2  ZF = 1 
Будь  JNE  Операнд_1 <> операнд_2  ZF = 0 
Зі знаком  JL / JNGE  Операнд_1 <операнд_2  SF <> OF 
Зі знаком  JLE / JNG  Операнд_1 <= операнд_2  SF <> OF або ZF = 1
Зі знаком  JG / JNLE  Операнд_1> операнд_2  SF = OF і ZF = 0 
Зі знаком  JGE / JNL  Операнд_1> = операнд_2  SF = OF 
Без знака  JB / JNAE  Операнд_1 <операнд_2  CF = 1 
Без знака  JBE / JNA  Операнд_1 <= операнд_2  CF = 1 або ZF = 1 
Без знака  JA / JNBE  Операнд_1> операнд_2  CF = 0 і ZF = 0 
Без знака  JAE / JNB  Операнд_1 => операнд_2  CF = 0 
У наведеній таблиці по суті присутні 3 групи команд умовного переходу, які названі "будь", "без знака" і "зі знаком". Беззнакове число увазі, що всі його біти - біти даних. Типові приклади таких чисел - порядкові номери елементів у списку, коди символів, телефонні номери і т.п. Знакові числа натякають, що старший розряд (перший зліва) відповідає знаку (значення біта 0 відповідає знаку '+', а значення 1 - знаку '-'. Припустимо, CL містить 11000110, а DL -00101100. Команда CMP CL, DL порівнює вміст регістрів. Якщо інтерпретувати вміст регістрів як беззнакові числа, то значення в CL більше, а якщо в регістрах числа зі знаком, то DL більше, оскільки як число із знаком значення в CL є негативним. 
Контрольні питання для самоконтролю:
1. Який факт відображає "мітка переходу" або "близька мітка"?
2. Що реалізують команди передачі управління?

Самостійна робота № 25-26 (4 години)
Тема: Переривання операційної системи DOS
План:
1. Система переривань
2. Основні функції DOS
1. СИСТЕМА ПЕРЕРИВАНЬ
Основним механізмом функціонування MS DOS є система переривань. Переривання - це процедури, що комп'ютер викликає для виконання певної задачі. Існують апаратні, логічні і програмні переривання. Апаратні переривання ініціюються апаратурою, наприклад сигналом від принтера, натисканням клавіші на клавіатурі, сигналом від таймера й інших причин. Логічні переривання виникають при нестандартних ситуаціях у роботі мікропроцесора, наприклад ділення на нуль, переповнення регістрів і ін. Програмні переривання ініціюються програмами, тобто з'являються, коли одна програма хоче одержати сервіс з боку іншої програми, наприклад доступ до певних апаратних засобів. Кожне переривання має унікальний номер, і з ним зв'язана певна підпрограма. Коли викликається переривання, процесор залишає свою роботу і виконує переривання. Потім завантажується адреса програми обробки переривання і їй передається керування. Після закінчення її роботи керування передається основній програмі, що була перервана. Апаратні переривання відносяться до переривань нижчого рівня, їм привласнені молодші номери, і обслуговує їх базова система вводу-виводу. Логічні і програмні переривання відносять до верхнього рівня, вони мають великі номери, і їх обслуговує в основному базовий модуль DOS.
2. ОСНОВНІ ФУНКЦІЇ DOS
Всі основні функції DOS викликаються за допомогою переривання INT 21h, проте DOS використовує і інші переривання: 
INT 20h  завершення роботи програми; 
INT 25h/26h  читання / запис на диск з абсолютною адресацією секторів; 
INT 27h  завершення роботи програми з залишенням її резидентною в пам'яті; 
INT 28h  переривання зарезервоване для DOS, може бути використано для складання резидентних програм; 
INT 2Eh  виконання команди DOS; 
INT 2Fh  переривання мультиплексора, використовується для спулера друку PRINT.COM. 
Функції переривання INT 21h можна розділити на наступні групи: 
- отримання системної інформації;
- символьний введення / виводу;
- робота з файловою системою;
- управління програмами;
- управління пам'яттю;
- зв'язок з драйверами пристроїв;
- інший системний сервіс.
У даному огляді ми коротко розглянемо ці групи, роблячи акцент в основному на складі функцій. Повністю інформація про використання функцій переривання DOS INT 21h (і інших переривань DOS) буде приводитися у відповідних розділах книги.
Номер функції задається при виклику переривання INT 21h в регістрі AH. 
Контрольні питання для самоконтролю:
1. На які групи можна розділити функції переривання INT 21h?
2. Назвіть основний механізм функціонування MS DOS
3. Що таке переривання?
4. Які переривання бувають?
5. За допомогою чого викликаються всі основні функції DOS?
Самостійна робота № 27
Тема: Макровизначення
План:
1. Макровизначення, основні поняття
2. Програмування макровизначень
3. Проблема міток у макровизначеннях4. Ім'я макровізначення, Список фактичність параметрів
1. МАКРОВИЗНАЧЕННЯ, ОСНОВНІ ПОНЯТТЯ
Одним із самих могутніх мов засобів асемблера являється - макровизначення. Макровизначенням (або макросом) називається ділянка програми, якому привласнене ім’я і який асемблерується щоразу, коли асемблера зустрічає це ім’я в тексті програми. Макрос починається директиви MACRO и закінчується ENDM. Наприклад: нехай опис макровизначення hex2ascii, що переводити шістнадцятерічне число, що находиться в регістрі AL, у ASCII-код відповідної шістнадцятерічної цифри:
hex2ascii macro
cmp al, 10
sbb al, 69h
das
endm
Тепер у програмі можна використовувати слово hex2ascii, як Якби це Було ім’я командировку, и асемблера замінить Кожне таке слово на три командировку, що утримуються в макровизначенні. Зрозуміло, можна Оформити ця ж ділянка коду у виді процедури и викликані йо командою CALL - якщо процедура викликається більш ніж один раз, цей варіант програми позику менше місця, но варіант Із макровизначенням стані Виконувати швидше, тому що в ньому не буде зайве команд CALL и RET . Однак швидкість виконання- не головніше перевага макросів. На Відміну Від процедур макровизначення можуть викликані з параметрами, отже, у залежності від ситуації, що включається код буде небагато розрізнятись, наприклад:
s_mov macro register1, register2
push register1
pop register2
endm
Тепер можна використовувати S_MOV замість командировку MOV для того, щоб скопіювати значення з одного сегментного регістра в іншій.
Наступний важливий засіб, що використовується в макровизначеннях, - директиви умовно асемблерування. Наприклад: напишемо макрос, що Виконує множення регістра аж на число, причому, якщо множник - степінь двійки, то множення буде Виконувати більш швидка командою зрушення вліво.
fast_mul macro number
if number eq 2
shl ax, 1; Множення на 2
elseif number eq 4
shl ax, 2; Множення на 4
elseif number eq 8
shl ax, 3; Множення на 8
...; Аналогічно аж до:
elseif number eq 32768
shl ax, 15; Множення на 32768
else
2. ПРОГРАМУВАННЯ МАКРОВИЗНАЧЕНЬ
При програмуванні досить серйозного завдання, з'являються повторювані ділянки коду. Вони можуть бути невеликими, а можуть займати і досить багато місця. В останньому випадку ці фрагменти будуть істотно ускладнювати читання тексту програми, знижувати її наочність, ускладнювати налагодження і служити невичерпним джерелом помилок. У мові асемблера є кілька засобів, які вирішують проблему дублювання ділянок програмного коду. До них відносяться:
- макроасемблер;
- механізм процедур;
- механізм переривань.
Макрокоманда являє собою рядок, що містить деякий символічне ім'я - ім'я макрокоманди, призначену для того, щоб бути заміщений однією або декількома іншими рядками. Ім'я макроси може супроводжуватися параметрами. Для написання макрокоманди спочатку необхідно задати її шаблон-опис, який називають макровизначення.
Синтаксис макровизначення наступний:
Ім'яМакрокоманди macro СписокФормальнихАргументів
ТілоМакровизначення
Endm
Макровизначення обробляється транслятором в такий спосіб. Для того щоб використовувати описане макровизначеннями в потрібному місці програми, воно повинно бути активізовано за допомогою макрокоманди зазначенням наступної синтаксичної конструкції:
Ім'яМакрокоманди СписокФактичнихАргументів
Результатом застосування даної синтаксичної конструкції в початковому тексті програми буде її заміщення рядками з конструкціі Тіло Макровизначеннями. Але це не проста заміна. Зазвичай макрокоманда містить деякий список аргументів - СписокФактичнихАргументів, якими коригується макровизначеннями. Місця в тілі макровизначеннями, які будуть заміщатися фактичними аргументами з макрокоманди, позначаються за допомогою так званих формальних аргументів. Таким чином, в результаті застосування макроси в програмі формальні аргументи в макровизначеннями заміщуються відповідними фактичними аргументами; в цьому і полягає облік контексту. Процес такого заміщення називається макрогенерація, а результатом цього процесу є макророзширення.
Дії в асемблері схожі з директивою #define в мові Сі. Існує три варіанти розміщення макровизначень:
- на початку вихідного тексту програми, до коду і даних з тим, щоб не погіршувати читаність програми. Цей варіант слід застосовувати у випадках, якщо визначаються макроси актуальні тільки в межах однієї цієї програми;
- в окремому файлі. Цей варіант підходить при роботі над кількома програмами однієї проблемної області. Щоб зробити доступними ці макроозначення в конкретній програмі, необхідно на початку вихідного тексту цієї програми записати директиву include имяфайла, наприклад:
.586
.model flat, stdcall
include show.inc; сюди вставляється текст файлу show.inc
- в макробібліотеке. Універсальні макрокоманди, які використовуються практично у всіх програмах доцільно записати в так звану макробібліотеку. Зробити актуальними макрокоманди з цієї бібліотеки можна також за допомогою директиви include. Недолік цього і попереднього способів в тому, що в вихідний текст програми включаються абсолютно всі макроозначення. Для виправлення ситуації можна використовувати директиву purge, в якості операндів якої через кому перераховуються імена макрокоманд, які не повинні включатися в текст програми. Наприклад:
include iomac.inc
purge outstr, exitВ даному випадку в вихідний текст програми перед початком трансляції MASM замість рядка include iomac.inc вставить рядки з файлу iomac.inc. Але вставлений текст буде відрізнятися від оригіналу тим, що в ньому будуть відсутні макроозначення outstr і exit.
Кожен фактичний аргумент є рядком символів, для формування якої застосовуються такі правила:
- Рядок може складатися:
- з послідовності символів без пробілів, крапок, ком, крапок з комою;
- з послідовності будь-яких символів, укладених в кутові дужки: <...>. У цій послідовності можна вказувати як прогалини, так і крапки, коми, крапки з комою.
- Для того щоб вказати, що деякий символ всередині рядка, що представляє фактичний параметр, є власне символом, а не чимось іншим, наприклад, деяким роздільником або обмежує дужкою, застосовується спеціальний оператор!. Цей оператор ставиться безпосередньо перед описаним вище символом, і його дія еквівалентно висновку даного символу в кутові дужки.
- Якщо потрібно обчислення в рядку деякого константного виразу, то на початку цього виразу потрібно поставити знак %:
% КонстантнийВираз
Значення КонстантнийВираз обчислюється і підставляється в текстовому вигляді відповідно до поточної системою числення.
В процесі генерації макророзширення транслятор асемблера шукає в тексті тіла макровизначення послідовності символів, що збігаються з тими послідовностями символів, з яких складаються формальні параметри. Після виявлення такого збігу формальний параметр з тіла макровизначення заміщається відповідним фактичним параметром з макрокоманди. Цей процес називається підстановкою аргументів. У загальному випадку список формальних аргументів містить не тільки перерахування формальних елементів через кому, а й деяку додаткову інформацію. Повний синтаксис формального аргументу наступний:
Ім'яФормальногоАргумента: Тип,
де Тип може приймати значення:
- REQ - потрібне обов'язкове явне завдання фактичного аргументу при виклику макрокоманди;
- = <ЛюбаяСтрока> - якщо аргумент при виклику макрокоманди не заданий, то у відповідні місця в макророзширенні буде вставлено значення за замовчуванням, що відповідає значенню Будь-якаСтрока. Символи, що входять в Будь-якаСтрока, повинні бути укладені в кутові дужки.
Але не завжди асемблер може розпізнати в тілі макровизначення формальний аргумент. Це, наприклад, може статися в разі, коли він є частиною деякого ідентифікатора. У цьому випадку послідовність символів формального аргументу відокремлюють від решти контексту за допомогою спеціального символу &. Цей прийом часто використовується для завдання модифікуються ідентифікаторів і кодів операцій. наприклад,
686p
.model flat, stdcall
def_table macro t: REQ, len: = <1>
tabl_ & t d & t len dup (5)
endm
.data
def_table d, 10
def_table b
.code
main proc
mov al, [tabl_b]
mov ah, [tabl_b + 1]
mov ebx, [tabl_d]
ret
main endp
end main
Після трансляції тексту програми, що містить рядки сегмента даних, вийде
def_table d, 10; tabl_d dd 10 dup (5)
def_table b; tabl_b db 1 dup (5)
Зауважимо, що рядок програми
mov ah, [tabl_b + 1]
помістить в ah число відмінне від 5, оскільки пам'ять для tabl_b розподілена тільки під 1 елемент масиву довжиною 1 байт із значенням 5.
Символ & можна застосовувати і для розпізнавання формального аргументу в рядку, укладеної в лапки "".
Якщо тіло макровизначення містить мітку або ім'я в директиві резервування та ініціалізації даних, і в програмі дана макрокоманда викликається кілька разів, то в процесі макрогенерації виникне ситуація, коли в програмі один ідентифікатор буде визначено кілька разів, що, природно, буде розпізнано транслятором як помилка. Для виходу з подібної ситуації застосовують директиву local, яка має наступний синтаксис:
local СписокІдентифікаторів
Цю директиву необхідно ставити безпосередньо за заголовком макровизначення. Результатом роботи цієї директиви буде генерація в кожному примірнику макророзширення унікальних імен для всіх ідентифікаторів, перерахованих в CписокІдентифікаторів. Ці унікальні імена мають вид ?? хххх, де хххх - шістнадцяткове число. Для першого ідентифікатора в першому примірнику макророзширення хххх = 0000 для другого - хххх = 0001 і т. Д. Контроль за правильністю розміщення та використання цих унікальних імен бере на себе транслятор.
При використанні макровизначень код програми стає більш читабельним.
Функціонально макровизначення схожі на процедури. Подібність їх в тому, що і ті, і інші досить один раз описати, а потім викликати їх багаторазово спеціальним чином. Відмінності макровизначень і процедур в залежності від цільової установки можна розглядати і як гідності, і як недоліки:
- на відміну від процедури, текст якої є незмінним, макровизначеннями в процесі макрогенерації може змінюватися відповідно до набором фактичних параметрів. При цьому корекції можуть піддаватися як операнди команд, так і самі команди. Процедури в цьому відношенні менш гнучкі;
- при кожному виклику макрокоманди її текст у вигляді макророзширення вставляється в програму. При виклику процедури мікропроцесор здійснює передачу управління на початок процедури, що знаходиться в деякій області пам'яті в одному екземплярі. Код в цьому випадку виходить більш компактним, хоча швидкодія дещо знижується за рахунок необхідності здійснення переходів.
3. ПРОБЛЕМА МІТОК У МАКРОВИЗНАЧЕННЯХ
В одній програмі одне й те саме макровизначення може бути використано декілька разів. Якщо макровизначення містить мітку, то при його багаторазовому використанні у відповідних макророзширеннях з’являються оператори з однаковими мітками. З точки зору мови це є синтаксичною помилкою.
Для запобігання дублювання міток вони описуються за допомогою директиви (оператора) LOCAL, наприклад:
LOCAL МЕТ1, МЕТ2
У цьому випадку транслятор замість вказаної мітки записує число, а при кожному зверненні до макровизначення це число збільшується на 1.
4. ІМ'Я МАКРОВИЗНАЧЕННЯ, СПИСОК ФАКТИЧНИХ ПАРАМЕТРІВ
Для нашої програми приклади макрокоманд:
CALC A, B, C
CALC M, N, P
Ім’я макрокоманди повинно збігатись з іменем макровизначення, до якого звертається макрокоманда.
У макрокоманді фактичні параметри записуються у тому самому порядку, в якому перераховані формальні параметри у відповідному макровизначенні.
У середині макровизначення може бути розташоване звернення до іншої макрокоманди, яка в цьому випадку носить назву вкладеної макрокоманди.
Під час трансляції програми макрокоманда заміняється командами з відповідного макровизначення. Цей процес називається макророзширенням.
Контрольні питання для самоконтролю:
1. Що називається макровизначенням?
2. Назвіть три варіанти розміщення макровизначень
3. Що таке макрогенерація?
4. Які засоби вирішують проблему дублювання ділянок програмного коду?

Самостійна робота № 28
Тема: Використання функцій на мові Асемблер у програмах на мові Сі
План:
1. Основна мета
2. Основні концепції
3. Особливості використання
1. ОСНОВНА МЕТА
Основною метою творців мови Сі була розробка такої мови програмування високого рівня, який можна було б використовувати замість мови асемблера для системного програмування. Мова Сі цілком відповідає своєму призначенню. Однак в окремих випадках (наприклад, в спеціальних апаратно-залежних додатках або для оптимізації продуктивності програми) програмісту може знадобитися і мова асемблера. У конкретній програмі такі випадки зазвичай складають невелику частину її коду. Якщо це має місце, то програміст намагається користуватися мовою Сі для написання основних модулів програми, а невеликі, але критичні фрагменти програми виконує у вигляді функцій на мові асемблера, які викликаються з програми на мові Сі. Ця тема обговорюється в цьому розділі.
При вивченні цієї теми Ви повинні врахувати, що компілятори мови Сі організовують вказане взаємодія не зовсім однаково. У цьому розділі представлені загальні концепції взаємодії на прикладі компілятора Lattice С. Це допоможе Вам порівняти організацію взаємодії з функціями на мові-асемблера, що забезпечується Вашим компілятором, з тієї, що описана в цьому розділі. Дана глава допоможе Вам отримати достатні відомості, що дозволяють прочитати і зрозуміти, що поставляється разом з компілятором документацію, а також розібратися у відмінностях Вашого компілятора від показаних тут прикладів.
Глава не розрахована на те, щоб пояснити, як писати програми на мові асемблера для IBM PC. У ній представлені тільки ті коди на мові асемблера, які необхідні для здійснення взаємодії з програмою на мові Сі. Щоб розуміти мову асемблера для мікропроцесорів 8088 чи 8086, радимо читачеві звернутися до літератури (див. Lemone, 1985; Scanlon, 1983).
При кодуванні представлених тут функцій на мові асемблера передбачається, що використовується модель розподілу пам'яті з малими (до 64 Кбайт) кодами (моделі розподілу пам'яті описані в гл. 2). У розд. 12.9 описані ті зміни, які треба внести в приклади, якщо викликає функція написана для моделі великих кодів. Використаний в цьому розділі мова асемблера відповідає макроассемблера MASM для IBM PC.
2. ОСНОВНІ КОНЦЕПЦІЇ
Асемблер є програмою, яка перетворює текст на мові асемблера в об'єктні модулі. На IBM PC вихідні файли на мові асемблера створюються за допомогою програми обробки тексту або редактора текстів, подібно до того як створюються вихідні програми на мові Сі. Після обробки вихідного файлу асемблером виходить об'єктний файл, який може бути використаний при завантаженні програми, що виконується поряд з іншими об'єктними файлами. В ідеалі Ви можете програмувати модуль на будь-якій мові (Сі, мови асемблера або будь-якому іншому мовою), оскільки в кінцевому рахунку програма утворюється саме з об'єктних модулів.
Щоб використовувати асемблер для IBM PC, треба спочатку ввести в файл текст програми за допомогою редактора або програми обробки текстів. За угодою імені такого файлу дається розширення ASM. Нехай, наприклад, підпрограма на мові асемблера міститься в файлі FIRST.ASM. Тоді для отримання об'єктного файлу FIRST.OBJ треба в такий спосіб викликати макроасемблер MASM:
Використання макроасемблера фірми IBM
A> masm
Source filename [.ASM]: FIRST
Object filename [FIRST.OBJ]:
Source listing [NUL.LST]: FIRST.LST
Cross Reference [NUL.CRF]:
Warning Severe Errors Errors 0 0
При цьому може бути створено до трьох файлів: об'єктний, роздруківки і перехресних посилань. У наведеному вище прикладі створюються об'єктний файл FIRST.OBJ (за замовчуванням) і файл роздруківки FIRST.LST. Роздруківка простий функції на мові асемблера має наступний вигляд:
The IBM Personal Computer MACRO Assembler 02-07-85 Page 1-1
1
2 PGROUP GROUP PROG
3 0000 PROG SEGMENT BYTE PUBLIC 'PROG'
4 ASSUME CS: PGROUP
5 PUBLIC FIRST; Зробити це ім'я глобальним
6.
7 0000 FIRST PROC NEAR; Мала модель
8 0000 C3 RET; Повернутися в зухвалу програму
9 0001 FIRST ENDP; кінець програми
10 0001 PROG ENDS; кінець сегмента
11 END; кінець файлу
3. ОСОБЛИВОСТІ ВИКОРИСТАННЯ
Програма, яка викликається:
1. Ім’я процедури (функції) повинна бути задана в директиві public:
public ім’я процедури (функції)
2. Якщо процедура (функція) використовує дані, пам’ять під які виділена в іншій програмі, то в цій програмі використовується директива extrn, визначення 1, визначення 2, ...
Загальний вид визначення для даних, що передаються:
ім’я – тип: кількість, де
ім’я - ім’я даного, пам’ять під яке виділена в іншому модулі;
тип – тип даного, використовується для визначення довжини даного в байтах, для задання використовуються ключові слова: byte, word, dword, ford, gword, tbyte або ім’я структури для 1-, 2-, 4-, 8-, 10 – байтових даних та даних визначених користувачем. Якщо в якості зовсім іншого імені використовується ім’я, визначене в директиві equ, його тип – аbs;
кількість – задає кількість елементів даного типу, використовується, якщо в якості зовнішнього передається масив, дозволяє застосовувати в процедурі (функції) операції SIZE, LENGTN.
Таким чином, імена використаних, але не визначених даних повинні визначатися директивою estrn, а імена визначених даних, які можуть використовуватися іншими модулями, визначаються директивою public. Щоб забезпечити можливість однаково задавати дані в різних модулях, використовується директива global. Загальний вигляд директиви:
global визначення 1, визначення 2, ...
Визначення задаються так само, як для директиви extrn.
Щоб визначити функцію global, транслятор “дивиться” чи виділена пам’ять для даного в цьому модулі. Якщо виділена, директива еквівалентна директиві local, в противному випадку – estrn. Використання global дає можливість зробити загальним визначення для декількох модулів. Загальна частина може бути поміщена в файл, який підключається до модулів за допомогою директиви include.
Загальний вигляд директиви:
incude ім’я файла.
Для файла може бути задане його повне ім’я.
Зовнішня процедура (функція) може використовуватися іншими програмами, про які розробник заздалегідь може не знати, ця програма не повинна “псувати” зміст ресурсів загального користування.
З врахуванням вищевказаних вимог загальний вигляд зовнішньої процедури (функції) слідуючий:
MODEL ім’я
......................
CODE
ім’я проц. proc
public ім’я
; Збереження використаних регістрів
.......................
; реалізація алгоритма
; відновлення використаних регістрів
.......................
ret
ім’я endp
end
В процедурі, на відміну від головної програми, в директиві end адреса тачки входу не задається.
Загальний вигляд викликаючої програми:
MODEL ім’я
......................
extrn ім’я – проц. proc
......................
CODE
begin
...................
end begin
Директиви public та extrn в цих програмах можна замінити директивою global ім’я – проц: proc. Але все-таки рекомендується використовувати директиви public та extrn, так як вони дозволяють більш глибоко вивчити механізм зв’язку модулів. Саме ці директиви найбільш часто використовуються в програмах. Після впевненого використання цих директив, їх можна замінити директивою global.
Для створення програми з декількох модулів, виконується роздільна трансляція для кожного модуля (tasm ім’я – модуля 1, tasm ім’я – модуля 2, ...) і компоновка всіх модулів разом (tlink ім’я – модуля 1, ім’я модуля 2...) Для формування налагодженої інформації використовуються ті ж ключі, що і для одномодульних програм.
Самостійна робота № 29
Тема: Використання функцій на мові Сі у програмах на мові Асемблер
План:
1. Функції на мові Сі
2. Взаємодія мов Сі та Асемблер
1. ФУНКЦІЇ НА МОВІ Сі
Найчастіше доводиться викликати підпрограми на мові асемблера з функцій на мові Сі. Однак можна викликати функції на мові Сі з програм на мові асемблера. Для цього треба оголосити ім'я функції на мові Сі в програмі на мові асемблера, використовуючи псевдооператор EXTERN, який повинен слідувати за псевдооператор SEGMENT. Якщо ім'я функції на мові Сі -myfunct, то для моделей розподілу пам'яті з малими кодами її оголошення матиме вигляд
EXTERN MYFUNCT: NEAR
Щоб викликати функцію на мові Сі, її кожен аргумент потрібно помістити в стек, починаючи з останнього аргументу (в наших прикладах), а потім викликати функцію за допомогою команди CALL. Після повернення з функції на мові Сі програма на мові асемблера повинна очистити стек, видаливши з нього всі раніше поміщені аргументи. Для цього можна за допомогою команди POP витягти їх один за іншим. Але найлегше просто збільшити вміст покажчика стека на ціле значення, яка дорівнює кількості байтів, раніше поміщених в стек (нагадаємо, що команда PUSH зменшує вміст покажчика стека). Наведемо приклад виклику з програми на мові асемблера функції на мові Сі, якій потрібні три цілих аргументу: Виклик функції на мові Сі з програми на мові асемблера.
PGROUP GROUP PROG
PROG SEGMENT BYTE PUBLIC 'PROG'
EXTERN MYFUNCT: NEAR; Ім'я функції на мові Сі
ASSUME CS: PGROUP
PUBLIC ASMFUNCT ASMFUNCT PROC NEAR
AX; Передбачається, що значення аргументів
PUSH BX; знаходяться в регістрах АХ, ВХ і СХ PUSH СХ
CALL MYFUNCT; Викликати функцію на мові Сі
ADD SP.6; Очистити стек від значень аргументів
У цьому прикладі перед виконанням команди CALL виконуються три команди PUSH, в результаті чого вміст покажчика стека зменшується на шість байтів. Збільшуючи покажчик стека SP на шість після виконання команди CALL, відновлюємо його початковий вміст.
Якщо дані визначені всередині програми на мові асемблера, то їх можна зробити доступними функцій на мові Сі, оголосивши їх загальнодоступними за допомогою псевдооператор PUBLIC в сегменті даних програми на мові асемблера і зовнішніми за допомогою службового слова extern в функції на мові Сі.
2. ВЗАЄМОДІЯ МОВ Сі ТА АСЕМБЛЕР
Перша вимога, яку необхідно виконати при сумісного завантаження об'єктних файлів, створених асемблером і компілятором мови Сі, полягає в тому, що всі ці об'єктні файли повинні мати однаковий формат - той, який потрібен завантажувачу. Наприклад, компілятор Lattice С, асемблер і завантажувач для IBM PC використовують один і той же формат об'єктних файлів, розроблений фірмами Microsoft і Intel. З іншого боку, до складу програмного середовища фірми De Smet (ще одного постачальника компіляторів мови Сі) входять компілятор, асемблер і завантажувач, що використовують сумісні об'єктні файли, формат яких, однак, відрізняється від формату об'єктних модулів, використовуваного фірмою Microsoft. У цьому розділі показані приклади застосування асемблера і завантажувача для IBM PC. Ті ж концепції справедливі і для інших програмних середовищ.
Інша вимога до взаємодії полягає в тому, що функцію на мові асемблера треба кодувати так, щоб виконувалися угоди за викликом функцій, які використовуються компілятором мови Сі. Для цього програміст повинен засвоїти ряд деталей, які можна почерпнути або з документації компілятора, або аналізуючи машинний код, який видається компілятором. (Деякі компілятори дають можливість отримувати роздруківку на мові асемблера; висновок інших треба аналізувати за допомогою відладчика, наприклад DEBUG, обговорюваного в гл. 16.) Описані в "цьому розділі угоди притаманні компілятору Lattice С і багато в чому близькі до тих, які використовуються іншими компіляторами для IBM PC.
Вивчаючи угоди за викликом функцій, будемо називати зухвалу функцію на мові Сі програмою, викликану функцію на мові асемблера - підпрограмою. Щоб програма на мові Сі могла викликати підпрограму на мові асемблера, обмінятися з нею даними і належним чином отримати управління назад, повинні бути виконані перераховані далі кроки.
Кроки, необхідні для взаємодії з підпрограм мовою Асемблер:
1. Програма повинна зберегти адресу команди, з якою буде продовжено її виконання після завершення виклику підпрограми. Потім програма передає управління підпрограмі. Програма і підпрограма повинні дотримуватися таких угод про використання машинних регістрів, щоб підпрограма не знищувала реєстрових значень програми (іноді званих середовищем).
2. Після завершення підпрограма повинна повернути управління за адресою, збереженому раніше програмою.
3. Програма і підпрограма повинні дотримуватися загальних угод про передачу даних з програми в підпрограму.
4. Повинні бути встановлені також угоди про повернення даних з підпрограми в програму.
Контрольні питання для самоконтролю:
1. Що потрібно зробити щоб викликати функцію на мові Сі?
2. Назвіть кроки, необхідні для взаємодії з підпрограм мовою Асемблер
Самостійна робота № 30
Тема: Огляд основних функціональних вузлів
План:
1. Функціональний огляд
2.Приймач
3. Регулятор напруги (VREG)
4. Механізм послідовного інтерфейсу (SIE)
5. Контролер програмного каналу кінцевої точки (EPC)
6. Мікроконтролерний інтерфейс
1. ФУНКЦІОНАЛЬНИЙ ОГЛЯД
Контролер вузлів USB сумісний зі специфікаціями USB версій 1.0 та 1.1. Пристрій поєднує на одній інтегральній схемі необхідний приймач USB з 3.3В регулятором, механізм послідовного інтерфейсу (SIE), FIFO кінцевих точок USB, універсальний (8-розрядний послідовний або паралельний) інтерфейс, тактовий генератор. Підтримуються сім програмних каналів кінцевих точок: один для примусового управління кінцевою точкою EP0 і шість для підтримки USB переривань, масових і одно тимчасових передач даних. 8-розрядний паралельний інтерфейс підтримує мультиплексовані і немультіплексірованние типи шин адреси / даних CPU. Синхронний послідовний інтерфейс MICROWIRE дозволяє зістиковуватися з CPU без зовнішніх шин адреси / даних. Вихідна схема програмованих переривань дозволяє настроїти пристрій для різних вимог передачі сигналів переривань.
2.ПРИЙМАЧ
Пристрій містить швидкодіючий приймач, який складається з 3 основних блоків:
- Диференціальний приймач
- Несиметричний приймач з джерелом опорного напруги на кристалі
- Передавач з джерелом струму на кристалі
Приймач задовольняє необхідним робочим характеристикам, описаним в розділі 7 специфікації USB, версії 1.1.
Для зменшення спотворення сигналу, добре збалансовані вихідні диференціальних-ні перепади передавача. Управління швидкістю наростання вихідної напруги використовується в драйвері для зниження випромінюваних перешкод і наведень. Драйвери підтримують тристабільні операції для застосування двобічної, полудуплексної роботи приймач.
Диференціальний приймач спрацьовує по завершенню амплітуди синфазного сигналу і має велику затримку, ніж такий же несиметричного приймача. Це дасть змогу уникнути потрапляння напруги в механізмі послідовного інтерфейсу (SIE) після несиметричних обнулень.
Несиметричні приймачі знаходяться на кожній з двох ліній даних. Вони потрібні на додаток до диференціального приймача, для виявлення абсолютного напруги з перемиканням порога між 0.8В і 2.0В (входи ТТЛ). Для збільшення придушення VCC без викидів, опорна напруга встановлюється для несиметричного перемикання. Зовнішній резистор 1.5 ± 5% КОм необхідний на D +, щоб показати, що це швидкодіючий вузол. Резистор повинен бути підключений до джерела напруги 3.0В ... 3.6В, а опорний рівень - локальна "земля", також як біля виходу передбаченого на контакті V3.3.
3. РЕГУЛЯТОР НАПРУГИ (VREG)
Регулятор напруги забезпечує 3.3В для інтегрованого приймач з пристрою харчування 5.0в або харчування шини USB. Цей вихід може бути використаний для харчування через резистор 1.5 КОм. Вихід повинен бути розв'язаний з "землею" через танталовий конденсатор 1 мкФ. Цей висновок може бути відключений програмно для використання в 3.3В системі.
4. МЕХАНІЗМ ПОСЛІДОВНОГО ІНТЕРФЕЙСУ (SIE)
SIE містить в собі модулі фізичного рівня (PHY) і контролера рівня мережевої архітектури, який здійснює мережевий доступ і виявлення конфліктів (MAC). Модуль PHY містить схему відновлення цифрової подачі тактових імпульсів, цифровий фільтр викидів, схему виявлення закінчення пакета (EOP), і логіку заповнення і незаповнення розрядів. Модуль MAC забезпечує форматування пакета, генерацію і перевірку CRC, виявлення адреси кінцевої точки. Він забезпечує необхідний контроль при формуванні відповідних сигналів NAK, ACK і STALL, як це визначено контролером програмного каналу кінцевої точки (EPC) для певного каналу кінцевої точки. SIE також відповідає за виявлення і формування звіту про специфічні USB подій, таких як NodeReset, NodeSuspend і NodeResume. Модуль видає сигнали приймач добре узгоджений (до 1 нс) для мінімізації фазових с382гов USB сигналів.
Специфікації USB визначають заповнення і незаповнення розрядів, як метод для вимірювання адекватних електричних переходів на лінії дозволу відновлення подачі тактових імпульсів на приймаючому кінці. Блок заповнення розрядів забезпечує те, що кожного разу, коли зустрічається рядок складається з одних "1", після кожної шостої "1" в потоці даних вставляється "0". Логіка незаповнення розрядів пряма протилежність цього процесу.
Блок відновлення подачі тактових імпульсів використовує дані, що надходять NRZI для виділення (12 МГц) тактових імпульсів даних з вхідних 48 МГц тактової частоти. Ця вхідні тактова частота виходить з 24 МГц осцилятора в кон'юнкції з схемою PLL (подвоєння частоти). Цей тактовий сигнал використовується в ланцюзі відновлення даних. На виході цього блоку двійкові дані (декодувати з потоку NRZI), які можуть використовувати дискретно тактову частоту 12 МГц. Характеристика нестійкою синхронізації і тимчасові характеристики відповідають вимогам, що стоять четвертими в главі 7 специфікації USB.

мал. 4.1. Блок схема USBN9603/4
5. КОНТРОЛЕР ПРОГРАМНОГО КАНАЛУ КІНЦЕВОЇ ТОЧКИ (EPC)
EPC забезпечує інтерфейс для функціональних кінцевих точок USB. Кінцева точка це остаточний джерело або ланка даних. Канал кінцевої точки здатний переміщати дані між USB і пам'яттю, і завершувати шлях між головною USB і функціональної кінцевою точкою. Відповідно до специфікації USB, до 31 такий кінцевої точки підтримується в будь-який момент часу. USB дозволяє сукупність з 16 односпрямованих кінцевих точок для прийому і 16 для передачі. Керуюча кінцева точка 0 завжди двунаправленная, загальне число 31. Сім каналів кінцевих точок підтримують однаковий функціональний адреса.
Функцією USB є те, щоб пристрій USB було здатне отримувати і відправляти дані по шині. Функція може мати одну або більше конфігурацій, кожна з яких визначає інтерфейс, який підтримує пристрій. Кожен інтерфейс, в свою чергу, складається з однієї або більше кінцевих точок.
Кожна кінцева точка - адресується об'єкт USB і для відповіді потрібні символи IN і OUT з головною USB (зазвичай PC). Символи IN показують, що головна USB має запит на отримання інформації з кінцевої точки, а символ OUT показує, що є запит на відправлення інформації в кінцеву точку.
При виявленні символу IN адресованого в кінцеву точку, канал кінцевої точки повинен відповісти пакетом даних. Якщо канал кінцевої точки зупинений в цей момент, то надсилається пакет STALL на базі скрипта. Якщо канал кінцевої точки доступний, але дані відсутні, то автоматично відправляється пакет NAK (невдалий прийом). Якщо канал кінцевої точки ізохронний і доступний, але дані відсутні, то на шину відправляється помилка заповнення розрядів наступна за закінченням пакета.
Так само, при виявленні символу OUT адресованого в кінцеву точку, канал кінцевої точки повинен прийняти пакет даних від головної USB і завантажити його в відповідне FIFO. Якщо канал кінцевої точки зупинений, то надсилається пакет STALL. Якщо канал кінцевої точки доступний, але немає буфера для зберігання даних, то відправляється пакет NAK. Якщо канал кінцевої точки ізохронний і доступний, але не може обробити дані, то пакет не відправляється.
При відключенні кінцевих точок немає відповіді на символи IN, OUT або SETUP.
EPC підтримує роздільну інформацію стану і управління для кожної кінцевої точки.
Для символів IN, EPC посилає дані з відповідного FIFO головною USB. Для символів OUT, EPC посилає дані в протилежному напрямку.
6. МІКРОКОНТРОЛЕРНИЙ ІНТЕРФЕЙС
Пристрій може бути приєднано до CPU або мікроконтролеру через 8-розрядний паралельний або MICROWIRE інтерфейс. Тип інтерфейсу вибирається за допомогою вхідних контактів MODE0 і MODE1. На додаток, передбачений конфігурується висновок переривань. Тип переривань може бути налаштований або як відкритий колектор з активним низьким рівнем, або як двотактний з активним рівнем високим або низьким.
Контрольні питання для самоконтролю:
1. З яких трьох основних блоків складається швидкодіючий приймач?
2. Що є функцією USB?
Самостійна робота № 31-32
Тема: Таймери / лічільники
План:
1. Таймери / лічильники
2. Попередні подільники частоти таймерів / лічильників
3. Регістр управління таймером / лічильником 0-ТССР0
4. Регістр даних таймера / лічильника 0-ТСНТ0
5. Керуючий регістр А таймера / лічильника 1-ТССR1A
6. Керуючий регістр B таймера / лічильника 1-ТССР1B
7. Таймер / лічильник 1 в режимі ШІМ
8. Сторожовий таймер (WDT)
1. ТАЙМЕРИ / ЛІЧИЛЬНИКИ
Пристрої AT90S4434 / 8535 оснащені трьома таймерами / лічильниками загального призначення - двома 8-розрядних і одним 16-розрядних. Таймер / лічильник 2 додатково може тактуватися асинхронно від зовнішнього генератора. Цей генератор оптимізований під використання кварцового кристала на частоту 32.768 кГц, що дозволяє використовувати таймер / лічильник 2 як годинник реального часу (RealTimeClock-RTC).
Таймери / лічильники 0 і 1 використовують загальний 10-розрядний попередній дільник опорної частоти. Таймер / лічильник 2 оснащений своїм власним попередніми дільником. Ці таймери / лічильники можна використовувати як таймери з вбудованою тимчасової базою або як лічильник, перемикається станом на зовнішньому виводі.
2. ПОПЕРЕДНІ ПОДІЛЬНИКИ ЧАСТОТИ ТАЙМЕРІВ/ ЛІЧИЛЬНИКІВ
Попередній дільник таймерів / лічильників 0 і 1 містить чотири ступені ділення: СК / 8, СК / 64, СК / 256 і СК / 1024, де СК - вхідний тактовий сигнал. Як джерела тактових сигналів можуть бути використані сигнали від зовнішніх джерел, тактовий сигнал СК і нульовий тактовий сигнал (stop).
8-розрядний таймер / лічильник 0 (T / C0)
Для Т / С0 джерелом тактування можуть бути обрані CK, масштабувати СК або СК від зовнішнього виведення. Таймер / лічильник може бути зупинений, як показано в описі регістрів управління таймерами / лічильниками TCCR0 (мал. 3.1.).
Прапор переповнення Т /С0 знаходиться в регістрі прапорів переривання таймерів (TIFR). Установки керуючих сигналів зберігаються в регістрах управління таймерами / лічильниками TCCR0. Установка дозволу / заборони переривань виробляється в регістрі масок переривань таймерів / лічильників TIMSK (Timer / Counter Interrupt Mask Register).
3. РЕГІСТР УПРАВЛІННЯ ТАЙМЕРОМ / ЛІЧИЛЬНИКОМ 0-ТССР0
На мал. 3.1. зображений регістр управління таймером / лічильником 0.
В табл. 3.1. наведені варіанти настройки таймера / лічильника 0.

мал. 3.1. Регістр управління таймером / лічильником 0
Біти 7 ... 3 - зарезервовані біти в 4434/8535 завжди читаються як 0.
Біти 2, 1, 0 - визначають джерело тактуванняT / C0.
Таблиця 3.1.
Налаштування таймера / лічильника 0
Cs02 cs01 cs00 Опис
0
0
0
0
1
1
1
1 0
0
1
1
0
0
1
1 0
1
0
1
0
1
0
1 Стоп
СK
СK/8
СK/64
СK/256
СK/1024
Зовнішній вхід Т0, падаючий фронт
Зовнішній вхід Т0, наростаючий фронт
Умова СТОП забезпечує функцію включення / вимикання таймера. Режими ділення СК масштабують безпосередньо імпульси тактового генератора. У режимi тактування від зовнішнього входу, відповідна установка повинна виконуватися у відповідному регістрі керування напрямком даних (DDRx) (скидання в нуль налаштовує пін на введення).
4. РЕГІСТР ДАНИХ ТАЙМЕРА/ЛІЧИЛЬНИКА 0-ТСНТ0
На мал. 4.1. зображений регістр даних таймера / лічильника 0.

мал. 4.1. Регістр даних таймера / лічильника 0
Т / С0 реалізований як лічильник, який вважає вгору, з доступом з читання і записи. Якщо в таймер / лічильник записано деяке значення і вибране джерело тактового сигналу, то він продовжить рахунок з записаного значення з тактовою частотою лічильника.
16-розрядний таймер / лічильник 1
16-розрядний таймер / лічильник 1 може отримувати тактовий сигнал від CK, CK після попереднього дільника і від зовнішнього виведення. У регістрах управління TCCR1A і TCCR1B знаходяться різні прапори, що вказують на переповнення, збіг при порівнянні і випадки захоплення подій. У регістрі масок переривань TIMSK встановлюються дозволу / заборони переривань таймера / лічильника 1. При зовнішньому тактування таймера / лічильника 1 зовнішній сигнал синхронізується частотою тактового генератора CPU. Таймер / лічильник 1 може бути використаний в якості 8-, 9- або 10-розрядної широтно-імпульсного модулятора. В цьому режимі лічильник і регістри OCR1A / OCR1B працюють як здвоєний самостійний ШИМ зі зцентрувати імпульсами, без формування помилкових імпульсів.
Функція захоплення входу таймера / лічильника 1 забезпечує захоплення вмісту таймера / лічильника 1 в регістр захоплення входу (ICR1), що запускається зовнішнім подією на виведенні входу захоплення (ICP). Реальні установки захоплення події визначаються регістром управління таймером / лічильником 1 TCCR1B (Timer / Counter1 Control Register). Крім того, для перемикання входу захоплення може бути використаний аналоговий компаратор.
Якщо дозволена функція придушення шуму, дійсні умови перемикання події захоплення тестуються чотирма вибірками, перш ніж захоплення буде активований. Тестування сигналу на вхідному виводі проводиться з частотою XTAL.
5. КЕРУЮЧИЙ РЕГІСТР А ТАЙМЕРА / ЛІЧИЛЬНИКА 1-ТССR1A
На мал. 5.1. зображений керуючий регістр A таймера / лічильника 1.

мал. 5.1. Керуючий регістр A таймера / лічильника 1
Біти 7, 6 - COM1A1, COM1A0; - Режим 1 A порівняння виходу. Керуючі біти COM1A1 і COM1A0 визначають характер сигналу виходу, наступного за збігом при порівнянні таймера / лічильника 1. Сигнал виходу надходить на висновок OC1A (Output Compare A). оскільки це альтернативна функція порту I / O, то відповідний біт управління напрямком повинен бути встановлений в 1 (висновок працює на вихід). Конфігурація управління представлено в табл. 5.1.
Біти 5, 4 - COM1B1, COM1B0; - Режим 1 B порівняння виходу. Керуючі біти COM1B1 і COM1B0 визначають характер сигналу виходу, наступного за збігом при порівнянні таймера / лічильника 1. Сигнал виходу надходить на висновок OC1B (Output CompareB). Оскільки це альтернативна функція порту I / O, то відповідний біт управління напрямком повинен бути встановлений в 1 (висновок працює на вихід). Конфігурація управління представлено в табл. 5.1.
Таблиця 5.1.
Вибір режиму порівняння 1
COM1X1 COM1X0 Опис
0
0
1
1
0
1
0
1
Таймер / лічильник 1 відключений від виведення виходу OC1X
Перемикання вихідний лінії OC1X
Очищення вихідний лінії OC1X (в 0)
Установка вихідний лінії OC1X (в 1)
Примітка. X = А або B.
Таблиця 5.2.
Налаштування режиму ШІМ
PWM1 PWM1 Опис
0
0
1
1
0
1
0
1
Коли таймер / лічильника 1 в режимі ШІМ заборонена
Коли таймер / лічильника 1 в 8-розрядному режимі ШІМ
Коли таймер / лічильника 1 в 9-розрядному режимі ШІМ
Коли таймер / лічильника 1 в 10-розрядному режимі ШІМ
У режимі ШІМ функції цих бітів розрізняються. Докладний опис наведений в табл. 5.2.
Біти 3..2 - зарезервовані біти.
Ці біти в мікроконтролерах AT90S4434 / 8535 зарезервовані і при зчитуванні завжди будуть 0.
Біти 1..0 - PWM11, PWM10: - біти вибору режиму ШІМ.
Дані біти визначають установку режиму ШІМ, як це показано в табл. 5.2.
6. КЕРУЮЧИЙ РЕГІСТР B ТАЙМЕРА / ЛІЧИЛЬНИКА 1-ТССР1B
На мал. 6.1. зображений керуючий регістр В таймера / лічильника 1.

мал. 6.1. Керуючий регістр В таймера / лічильника 1
Біт 7 - ICNC1: - установка режиму придушення шуму на вході захоплення 1. При скинутому в стан 0 бите ICNC1 функція придушення шуму
вхідного тригера захоплення заборонена. Вхід захоплення перемикається на першу наростаючому / падаючому фронту, що надійшов на висновок входу / захоплення (ICP).
При встановленому в стан 1 бите ICNC1 виконуються чотири послідовних опитування стану виводу (ICP) і всі чотири вибірки повинні мати однаковий (високий / низький), який визначається бітом ICES1, рівень. Частота опитування відповідає частоті XTAL Біт 6 - ICES1: - вибір фронту спрацьовування на вході захоплення 1.
При скинутому в стан 0 бите ICES1 вміст таймера / лічильника 1 по падаючому фронту на виведенні входу захоплення (ICP) пересилається в регістр захоплення входу ICR1. При встановленому в 1 бите ICES1 вміст таймера / лічильника 1 пересилається в регістр захоплення входу ICR1 по наростаючому фронті на виведенні входу захоплення (ICP).
Біти 5, 4 - зарезервовані біти.
Ці біти в мікроконтролерах AT90S4434 / 8535 зарезервовані і при зчитуванні завжди будуть 0.
Біт 3 - CTC1: - очищення таймера / лічильника 1 за випадковим збігом.
При встановленому в стан 1 бите CTC1 таймер / лічильник 1 скидається в стан $ 0000 протягом тактового циклу, наступного за збігом при порівнянні. Якщо біт CTC1 очищений, таймер / лічильник 1 продовжує відлік і не реагує на збіг при порівнянні. Оскільки збіг при порівнянні детектується протягом тактового циклу CPU, наступного за збігом, то поведінка функції буде відрізнятися при установці коефіцієнта попереднього розподілу таймера / лічильника більшому 1. При коефіцієнті попереднього розподілу 1 і встановленому в регістрі порівняння стані C таймер буде вважати відповідно до установкою CTC1:
... | C-2 | C-1 | C | 0 | 1 |...
При встановленому коефіцієнті попереднього розподілу 8 таймер вважатиме подібно:
... | C-2, C-2, C-2, C-2, C-2, C-2, C-2, C-2 | C-1, C-1, C-1, C-1, C-1, C-1, C-1, C-1| C, 0, 0, 0, 0, 0, 0, 0 |1,1,1,1,1,1,1,1|...
У ШІМ режимі стан біта CTC1 значення не має.
Біти 2,1,0 - CS12, CS11, CS10: - вибір джерела тактової частоти.
Установкою стану даних бітів проводиться вибір джерела тактового сигналу (в тому числі коефіцієнта попереднього розподілу). Stop виконує функцію дозволу / заборони таймера / лічильника 1. При використанні зовнішнього тактування необхідно виконати відповідні установки в регістрі керування напрямком (очищення переводить висновок в режим входу). Режими настройки бітів наведені в табл. 6.1.
Таблиця 6.1.
Вибір джерела тактової частоти
Cs02 cs01 cs00 Опис
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
Стоп
СK
СK/8
СK/64
СK/256
СK/1024
Зовнішній вхід Т1, падаючий фронт
Зовнішній вхід Т1, наростаючий фронт
16-розрядний регістр даних T / C1 - TCNT1H і TCNT1L
На мал. 6.2. зображений 16-розрядний регістр даних таймера / лічильника 1. 16-розрядний регістр містить поточне значення 16-розрядної таймера / лічильника 1. Для того щоб CPU могло зчитувати / записувати і старший і молодший байти цього регістра одночасно, звернення реалізовано за допомогою 8-розрядного регістра тимчасового зберігання (TEMP). Цей регістр використовується також при зверненні до OCR1A, OCR1B і ICR1.

мал.6.2. 16-розрядний регістр даних таймера / лічильника 1
Якщо основна програма і підпрограми обробки переривань використовують звернення до регістрів за допомогою TEMP, то переривання повинні бути заборонені на час звернення з основної програми.
Таймер / лічильник 1 виконаний у вигляді вгору вважає або реверсивного лічильника (в ШІМ режимі) з можливістю читання / запису. Якщо в таймер / лічильник 1 занесено деяке значення і вибране джерело тактового сигналу, то таймер / лічильник 1 продовжить відлік через один тактовий цикл після установки в ньому записаного значення.
16-розрядні регістри порівняння виходу c доступом з читання і записи OCR1AH і OCR1AL
Регістри порівняння виходу таймера / лічильника 1 зберігають дані, постійно порівнювані зі станом таймера / лічильника 1. Дія, що запускається збігом при порівнянні, визначається вмістом регістра управління
і стану таймера / лічильника 1. Збіг при порівнянні може статися, тільки якщо таймер / лічильник 1 дорахував до значення вмісту OCR.
Якщо в TCNT1 і OCR1A або OCR1B програмно будуть записані однакові значення, то збіг при порівнянні згенеровано не буде.
Збіг при порівнянні встановлює прапор переривання за випадковим збігом у тактовому циклі CPU, наступного за самим збігом. Запис в PORTD5 і PORTD4 встановлює відповідно значення OC1A і OC1B.
Оскільки регістри порівняння виходу OCR1A і OCR1B є 16- розрядними, то для забезпечення одночасного занесення старшого і молодшого байтів даних в регістри OCR1A / B використовується регістр тимчасового зберігання TEMP. Коли CPU записує старший байт, то дані тимчасово зберігаються в регістрі TEMP. Коли ж CPU записує молодший байт в OCR1AL або OCR1BL, то одночасно вміст регістра OCR1BH переписується в OCR1AH або OCR1BH. Отже, при 16-розрядних операціях старші байти регістрів OCR1A / B повинні записуватися першими.
Крім того, регістр TEMP використовується при зверненні до TCNT1 і ICR1. Якщо основна програма і підпрограми обробки переривань використовують звернення до регістрів за допомогою TEMP, то переривання повинні бути заборонені на час звернення з основної програми.
16-розрядний регістр захоплення входу c доступом з читання ICR1
При виявленні на виведенні захоплення входу (ICP) наростаючого хто падає фронту сигналу (визначається установкою ICES1) поточний стан таймера / лічильника 1 пересилається в регістр захоплення входу ICR1. Одночасно встановлюється в стан 1 прапор захоплення входу ICF1.
Оскільки регістр захоплення входу є 16-розрядним, то для забезпечення одночасного читання старшого і молодшого байтів даних регістра ICR1 використовується регістр тимчасового зберігання TEMP. При зчитуванні CPU даних молодшого байта вміст ICR1L пересилається в CPU, а вміст старшого байта ICR1H розміщується в регістрі TEMP, читання старшого байта полягає в перенесенні в CPU вмісту регістра тимчасового зберігання TEMP. Отже, при читанні всього 16-розрядного регістра операцію читання необхідно починати з молодшого байта ICR1L. Регістр TEMP використовується також при зверненні до TCNT1, OCR1A і OCR1B. Якщо основна програма і підпрограми обробки переривань, використовують звернення до регістрів за допомогою TEMP, то переривання повинні бути заборонені на час звернення з основної програми.
7. ТАЙМЕР/ ЛІЧИЛЬНИК 1 В РЕЖИМІ ШІМ
При встановленому режимі ШІМ таймер / лічильник 1 і регістри порівняння виходу A і B (OCR1A і OCR1B) утворюють здвоєний 8-, 9- або 10-розрядний автономний генератор ШИМ з правильним чергуванням фаз, відсутністю помилкових викидів і виходами на висновки PD5 (OC1A) і PD4 (OC1B). Таймер / лічильник 1 працює як реверсивний лічильник, який вважає від $ 0000 до ТОП (табл.7.1.), Де напрямок рахунку змінюється і відлік ведеться до нуля, після чого цикл повторюється. Коли стан лічильника співпаде з вмістом 10 молодших бітів OCR1A або OCR1B, висновки PD5 (OC1A) / PD4 (OC1B) встановлюються або очищаються, відповідно з установками бітів COM1A1 / COM1A0 або COM1B1 / COM1B0 в регістрі управління таймером / лічильником 1 TCCR1A.
Таблиця 7.1.
Значення TOP і частота ШИМ
Дозвіл ШІМ Значення TOP Частота
8-розрядне
9-розрядне
10-розрядне $00FF (255)
$01FF (511)
$03FF (1023) f TC1 /510
f TC1 /1022
f TC1 /2046
Примітка. Якщо регістр порівняння містить значення ТОР і попередній дільник частоти не використовується (CS12..CS10 = 001), на виході ШІМ чи не з'являться імпульси, тому що значення при рахунку вгору і вниз досягаються одночасно. Коли попередній дільник частоти використовується (CS12..CS10 001 або 000), на виході ШІМ з'являється акти вности, якщо лічильник досягає значення ТОР. За рахунку вниз досягнення збіги не інтерпретується, поки лічильник не досягне значення ТОР, отримуючи один період імпульсу ШІМ.
Таблиця 7.2.
Вибір режиму сравненія1 в режимі ШІМ
COM1X1 COM1X0 Вихідний сигнал на OCX1
0
0
1
1
0
1
0
1
Не підключений
Не підключений
Очищається за випадковим збігом за рахунку вгору. встановлюється
за випадковим збігом за рахунку вниз (неінвертований ШІМ)
Очищається за випадковим збігом за рахунку вниз. встановлюється
за випадковим збігом за рахунку вгору (інвертований ШІМ)
Примітка. X = A або B.
Відзначимо, що в режимі ШІМ молодші 10 розрядів OCR1A / OCR1B при запису пересилаються в осередку тимчасового зберігання. вони фіксуються після досягнення таймером / лічильником 1 значення TOP. Таким способом забезпечується захист від появи розширених імпульсів ШІМ (помилкових викидів - glitches) при несинхронної записи OCR1A / OCR1B.
У режимі ШІМ прапор переповнення таймера 1 (TOV1) встановлюється при зміні напрямку рахунки після досягнення значення $ 0000. переривання по переповнення таймера 1 працює так само, як і в звичайному режимі таймера / лічильника, т. е. воно виконується, коли TOV1 встановлений і дозволені переривання по переповнення таймера 1 та глобальні переривання. Це відноситься і до прапорів порівняння виходу таймера 1, і переривань.
8. СТОРОЖОВИЙ ТАЙМЕР (WDT)
Сторожовий таймер тактується окремим вбудованим генератором. Установкою коефіцієнта попереднього розподілу інтервал скидання сторожового таймера може бути налаштований, як показано в табл.8.1. Команда WDR (Watchdog Reset) скидає сторожовий таймер. Можна встановити вісім періодів тривалості тактового сигналу. Якщо період скидання завершується (протягом цього періоду не надійшов сигнал скидання сторожового таймера), то мікроконтролер AT90S4434 / 8535 скидається і його робота триває по вектору скидання. Щоб уберегти ненавмисне вимикання сторожового таймера, відключення сторожового таймера має супроводжуватися спеціальною послідовністю виключення.
Регістр управління сторожовим таймером – WDTCR
На мал.8.1. зображений регістр управління сторожовим таймером.
$21(41)

мал.8.1. Регістр управління сторожовим таймером
Біти 7 ... 5 - зарезервовані біти в 4434/8535 завжди читаються як 0.
Біт 4 - WDTOE: - дозвіл відключення сторожового таймера. Даний біт необхідно встановити в стан 1 при очищенні біта WDE. В іншому випадку сторожовий таймер не буде заборонений. встановлений біт апаратно очищається після чотирьох тактових циклів.
Біт 3 - WDE: - дозвіл сторожового таймера.
Якщо біт WDE встановлений в стан 1 (сторожовий таймер дозволений) і якщо біт WDE очищений, то функціонування сторожового таймера заборонено. Біт WDE може бути очищений, якщо встановлений біт WDTOE. Для заборони дозволеного сторожового таймера необхідно виконати наступну процедуру:
1. В одній операції записати логічну 1 в WDTOE і WDE. Логічна 1 повинна бути записана в WDE, навіть якщо цей біт був встановлений перед початком операції заборони сторожового таймера.
2. За час наступних чотирьох тактових циклів записати логічний 0 в WDE. Сторожовий таймер буде заборонений.
Біти 2..0 - WDP2, WDP1, WDP0: - біти установки коефіцієнта попереднього розподілу сторожового таймера.
Стану бітів WDP2, WDP1 і WDP0 визначають коефіцієнт попереднього ділення тактової частоти дозволеного сторожового таймера. Коефіцієнти і відповідні їм проміжки часу представлені в табл.8.1.
Таблиця 8.1.
Коефіцієнт попереднього розподілу сторожового таймера
WDP2 WDP1 WDP0 Кількість
циклів генератора
WDT Затримка
V CC = 3.0V Затримка
V CC = 5.0V
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
16K Циклів
32K Циклів
64K Циклів
128K Циклів
256K Циклів
512K Циклів
1024K Циклів
2048K Циклів
47 мс
94 мс
0.19 с
0.38 с
0.75 с
1.5 с
3.0 с
6.0 с 15 мс
30 мс
60 мс
0.12 с
0.24 с
0.49 с
0.97 с
1.9 с
Примітка. Частота тактового генератора сторожового таймера залежить від напруги живлення. Команда WDR (Watchdog Reset) повинна завжди бути виконана перед дозволом сторожового таймера. Це гарантує, що затримка буде відповідати налаштувань попереднього дільника частоти сторожового таймера. Якщо не зробити скидання перед дозволом сторожового таймера, то рахунок може початися не з нуля. Щоб уникнути ненавмисного скидання, сторожовий таймер повинен бути заборонений або скинутий перед зміною налаштувань попереднього дільника сторожового таймера.
Контрольні питання для самоконтролю:
1. Що забезпечує умова СТОП?
2. Від чого залежить частота тактового генератора сторожового таймера?
3. Що необхідно виконати для заборони дозволеного сторожового таймера?
4. Чим тактується сторожовий таймер?

Самостійна робота № 33-34
Тема: Послідовний периферійний інтерфейс
План:
1. Послідовний периферійний інтерфейс
2. Функціонування входу SS
3. Регістр управління SPI-SPCR
4. Регістр статусу SPI-SPCR
5. Регістр даних SPI-SPCR
1. ПОСЛІДОВНИЙ ПЕРИФЕРІЙНИЙ ІНТЕРФЕЙС
Послідовний периферійний інтерфейс (SPI) забезпечує високошвидкісний синхронний обмін даними між мікроконтролерами AT90S4434 / 8535 і периферійними пристроями або між декількома AVR-пристроями.
Основні характеристики SPI інтерфейсу:
- повнодуплексний 3-провідний синхронний обмін даними;
- режим роботи головний або підпорядкований;
- обмін даними з переданими першими старшим або молодшим
битами;
- чотири програмовані швидкості обміну даними;
- прапор помилки при запису;
- активація з Idle-режиму.
З'єднання між ведучим і веденим CPU, що використовують SPI-інтерфейс, показані на мал.1.1. Висновок PB7 (SCK) є виходом тактового сигналу ведучого мікроконтролера і входом тактового сигналу веденого.
За записом провідним CPU-даних в SPI-регістр починає працювати тактовий генератор SPI і записані дані зсуваються через висновок виходу PB5 (MOSI) провідного мікроконтролера на висновок входу PB5 (MOSI) веденого мікроконтролера. Після зсуву одного байта тактовий генератор SPI зупиняється, встановлюючи прапор закінчення передачі (SPIF). Якщо в регістрі SPCR буде встановлений біт дозволу переривання SPI (SPIE), то станеться запит переривання. Вхід вибору веденого PB4 (SS) для вибору індивідуального SPI-пристрої в якості веденого встановлюється на низький рівень.

мал.1.1. SPI-інтерфейс (підключення пристроїв)
Два зсувних регістра ведучого і веденого мікроконтролерів можна розглядати як один рознесений 16-розрядний циклічний зсувний регістр (мал.1.1). При зсуві даних з провідного мікроконтролера в ведений одночасно відбувається зрушення даних з веденого мікроконтролера в провідний, т. е. Протягом одного циклу зсуву відбувається обмін даними між ведучим і веденим мікроконтролерами.
В системі організовано одиночне буферізування сторони, яка передає і подвійне буферізування на приймальній стороні. Це означає, що передаються символи не можуть бути записані в регістр даних SPI, перш ніж буде повністю завершено цикл зсуву.
Проте, коли передаються дані, переданий байт повинен бути лічений з регістра даних SPI раніше, ніж наступного байт буде повністю переданий. В іншому випадку перший байт втрачений.
2. ФУНКЦІОНУВАННЯ ВХОДУSS
При роботі SPI ведучим (біт MSTR регістра SPCR встановлений) користувач має можливість встановити напрям роботи виведення SS. Якщо висновок SS налаштований як вихід, то висновок є висновком загального призначення і він не активується системою SPI. Якщо ж висновок SS налаштований як вхід, то для забезпечення роботи ведучого SPI він повинен утримуватися на високому рівні. Якщо в режимі ведучого висновок SS є входом і зовнішньої периферійної схемою на нього подано низький рівень, то SPI сприйме його як звернення іншого ведучого SPI до себе як до веденого. Щоб уникнути конфліктної ситуації на шині, система SPI виконує наступні дії:
1. Біт MSTR в регістрі SPCR очищається і SPI-система стає відомою. Результатом цього є те, що MOSI- і SCK-висновки стають входами.
2. Встановлюється прапор SPIF регістра SPSR і, якщо дозволено переривання SPI, почнеться виконання підпрограми обробки переривання.
Таким чином, коли керований перериванням передає SPI використовується в провідному режимі і існує ймовірність подачі на висновок SS керуючого сигналу низького рівня, переривання повинно завжди перевіряти, чи встановлений ще біт MSTR. Якщо ж біт MSTR був очищений вибором режиму веденого, то він повинен бути встановлений користувачем.
Якщо ж SPI працює в режимі веденого, то висновок SS постійно працює на вхід. Якщо на висновок SS подано низький рівень, то SPI активується і MISO, якщо це визначено користувачем, стає виходом. Всі інші висновки є входами. Якщо висновок SS утримується на високому рівні, то всі висновки є входами, SPI пасивний, що означає, що він не буде отримувати вхідні дані.
Відзначимо, що SPI-логіка буде скинута при приведенні піна SS в високий рівень. Якщо пін SS наведено в високий рівень протягом передачі, SPI зупиняє передачу і прийом даних негайно і отримані дані і послані повинні вважатися втраченими.
3. РЕГІСТР УПРАВЛІННЯ SPI-SPCR
На мал.3.1. зображений регістр управління SPI.

мал.3.1. Регістр управління SPI
Біт 7 - SPIE: - дозвіл переривання SPI.
Установка біта SPIE в стан 1 означає, що переривання будуть виконуватися, якщо встановлений біт SPIF регістра SPSR і дозволено глобальне переривання.
Біт 6 - SPE: - дозвіл SPI.
Установка біта SPE в стан 1 дозволяє SPI-операції.
Біт 5 - DORD: - порядок даних.
При встановленому в стан 1 бите DORD передача слова даних починається з LSB. При очищеному бите DORD першим передається MSB слова даних.
Біт 4 - MSTR: - вибір режиму провідний / ведений.
При встановленому в стан 1 бите MSTR SPI працює в провідному режимі і при очищеному бите - в підпорядкованому режимі. Якщо SS налаштований як вхід і на нього подано низький рівень при встановленому MSTR, то MSTR буде скинутий і буде встановлений біт SPIF в регістрі SPSR. Щоб знову дозволити провідний режим SPI, користувач повинен встановити MSTR.
Біт 3 - CPOL: - полярність тактового сигналу.
SCK в режимі очікування знаходиться на високому рівні при встановленому в стан 1 бите CPOL і на низькому рівні при скинутому бите CPOL.
Біт 2 - CPHA: - фаза тактового сигналу.
Біти 1,0 - SPR1, SPR0: - вибір частоти тактового сигналу, біти 1 і 0.
Таблиця 3.1.
Стан бітів і встановлений коефіцієнт ділення частоти
SPR1 SPR0 Частота SCK
0
0
1
1
0
1
0
1
f CL / 4
f CL / 16
f CL / 64
f CL / 128
Ці два біта керують частотою тактового сигналу приладу, працюючого в провідному режимі. У відомому режимі стану бітів впливу не роблять. Стану бітів і встановлюється коефіцієнт ділення частоти показані в табл.3.1.
4. РЕГІСТР СТАТУСУ SPI-SPCR
На мал.4.1. зображений регістр статусу SPI.

мал.4.1. Регістр статусу SPI
Біт 7 - SPIF: - прапор переривання по SPI.
По завершенні обміну послідовними даними біт SPIF встановлюється в стан 1 і, якщо біт SPIE в регістрі SPCR встановлений і дозволено глобальне переривання, генерується сигнал переривання. якщо SS вхід управляється низьким рівнем, коли SPI знаходиться в режимі ведучого, це встановить прапор SPIF. Біт SPIF очищається апаратно при виконанні підпрограми обробки відповідного вектора переривання. біт SPIF може бути очищений також при першому зчитуванні стану регістра статусу SPI з встановленим бітом SPIF, з подальшим зверненням до регістру даних SPI (SPDR).
Біт 6 - WCOL: - прапор помилки при запису.
Біт WCOL встановлюється в стан 1, якщо в процесі передачі даних виконувалася запис в регістр даних (SPDR). читання вмісту регістра даних, як і запис в нього, виконані під час пересилки даних, можуть привести до невірного результату. Біт WCOL (і біт SPIF) апаратно очищаються (скидаються в стан 0) при першому зчитуванні регістру статусу SPI зі встановленим WCOL, з подальшим зверненням до регістру даних SPI (SPDR).
Біти 5 ... 0 - Res: - зарезервовані біти.
Ці біти в мікроконтролерах AT90S4434 / 8535 зарезервовані. Інтерфейс SPI на AT90S4434 / 8535 також використовується для програмної пам'яті і EEPROM-або невдале завантаження.
5. РЕГІСТР ДАНИХ SPI-SPCR
На мал.5.1. зображений регістр даних SPI.

мал.5.1. Регістр даних SPI
Регістр даних SPI є регістр з можливістю читання / запису і призначений для пересилки даних між реєстрових файлом і зсувними регістром SPI. Запис в регістр SPDR ініціює передачу даних, зчитування регістра призводить до читання зсувного регістру прийому.
Контрольні питання для самоконтролю:
1. Що забезпечує послідовний периферійний інтерфейс?
2. Які дії виконує система SPI щоб уникнути конфліктної ситуації на шині?
3. Назвіть основні характеристики SPI інтерфейсу?

Самостійна робота № 35
Тема: Універсальний асинхронний приймач (UART)
План:
1. Мікроконтролери AT90S4434 / 8535
2. Управління UART
3. Регістр управління UART-UCR
4. Бод-генератор Baud Rate Generator
5. Регістр бод-генератора UART-UBRR
1. МІКРОКОНТРОЛЕРИ AT90S4434 / 8535
Мікроконтролери AT90S4434 / 8535 оснащені повнодуплексними універсальними приймачами (UART). Їх основні можливості наступні:
- генератор, що забезпечує безліч швидкостей передачі інформації в бодах;
- висока швидкість передачі при низькій частоті XTAL;
- 8-розрядний або 9-розрядний формати даних;
- фільтрація шуму;
- виявлення переповнення;
- виявлення помилок формування кадрів;
- детектування біта помилкового старту;
- три окремих переривання: по завершенні передачі (TX Complete), по порожньому регістру переданих даних (TX Data Register Empty) і по завершенні прийому (RX Complete);
- буферізована передача і прийом.
Передача даних ініціюється записом переданих даних в регістр даних I / O UART (UDR). Дані пересилаються з UDR в зсувний регістр передачі в наступних випадках:
- Новий символ записаний в UDR після того, як був виведений з регістру стоповий біт попереднього символу. Зсувний регістр завантажується негайно.
- Новий символ записаний в UDR перш, ніж був виведений стоповий біт попереднього символу. Зсувний регістр завантажується після виходу стопового біта переданого символу, який перебував у зсувному регістрі.
Якщо з 10 (11) -розрядним зсувного регістру передачі виведена вся інформація (зсувний регістр передачі порожній), дані з UDR пересилаються в зсувний регістр. У цей час встановлюється біт UDRE (UART Data Register Empty) регістру статусу UART (USR). При встановленому в стан 1 бите UDRE останній готовий прийняти наступний символ. У той самий час, коли дані пересилаються з UDR в 10 (11) розрядний зсувний регістр, біт 0 зсувного регістру скидається в стан 0 (стан 0 - стартовий біт), а біт 9 чи 10 встановлюється в стан 1 (стан 1 - стоповий біт). Якщо в регістрі управління UART (UCR) встановлено біт CHR9 (т. Е. Обраний режим 9-розрядної слова даних), то біт TXB8 регістра UCR пересилається в біт 9 зсувного регістру передачі.
Відразу після пересилки даних в зсувний регістр тактом бод-генератора стартовий біт зсувається на висновок TXD. За ним слідує LSB-біт даних. Коли буде виданий стоповий біт, зсувний регістр завантажується новою порцією даних, якщо вона була записана в UDR під час передачі. У процесі завантаження біт UDRE знаходиться в установленому стані. Якщо ж нові дані не будуть завантажені в UDR до видачі стопового біта, прапор UDRE залишається встановленим. У цьому випадку, після того як стоповий біт буде присутній на виведенні TXD протягом одного такту, в регістрі статусу UART (USR) встановлюється прапор завершення передачі TXC (TX Complete Flag).
Встановлений в стан 1 біт TXEN регістра UCR дозволяє передачу UART. При очищеному бите TXEN (скинутому в стан 0) висновок PD1 може бути використаний в якості висновку I / O загального призначення. При встановленому біті TXEN передавач UART підключається до PD1 і використовує його в якості виходу, незалежно від установки біта 1 в DDRD.
Прийом даних.
Логіка прийому даних виробляє вибірку станів виведення RXD з частотою, в 16 разів більшою, ніж частота Бодов. При знаходженні лінії в пасивному стані одиночна вибірка нульового логічного рівня буде інтерпретуватися як падаючий фронт стартового біта і буде запущена послідовність детектування стартового біта. Вважається, що перша вибірка виявила перший нульової логічний рівень ймовірного стартового біта. На вибірках 8, 9 і 10 приймач знову тестує висновок RXD на зміну логічних станів. Якщо дві або більше з цих трьох вибірок виявлять логічні 1, то даний ймовірний стартовий біт відкидається як шумовий сплеск і приймач почне виявляти і аналізувати наступні переходи з 1 в 0. Якщо ж був виявлений дійсний стартовий біт, то починає здійснюватися вибірка наступних за стартовим бітом інформаційних бітів. Ці біти також тестуються на вибірках 8, 9 і 10. Логічне стан біта приймається з двох і більше (з трьох) однаковим станам вибірок. Всі біти вводяться в зсувний регістр приймача з тим значенням, яке було визначено тестуванням вибірок.
При надходженні стопового біта необхідно, щоб не менше двох вибірок з трьох підтвердили прийом стопового біта (показали високий рівень). Якщо ж дві або більше вибірок покажуть стану 0, то в регістрі статусу UART (USR) встановлюється біт помилки кадру FE (Framing Error). Для виявлення помилки кадру перед читанням регістра UDR необхідно перевіряти стан біта FE.
Незалежно від того, прийнятий правильний стоповий біт чи ні, дані пересилаються в регістр UDR і встановлюється прапор RXC в регістрі статусу UART (USR). Регістр UDR фактично є двома фізично окремими регістрами, один з яких служить для передачі даних, а інший - для прийому. При зчитуванні UDR звернення ведеться до регістру прийому даних, при записі - до регістру передачі. Якщо обраний режим обміну 9-розрядними словами даних (встановлений біт CHR9 регістра UCR), при пересиланні даних в UDR біт RXB8 регістра UCR завантажується в біт 9 зсувного регістру передачі.
Якщо після отримання символу до регістру UDR не було звернення, починаючи з останнього прийому, в регістрі UCR встановлюється прапор переповнення (OR). Це означає, що останній байт даних, що пересилається в зсувний регістр, не може бути переданий в UDR і втрачений. Біт OR буферірован і доступний тоді, коли в UDR читається байт достовірних даних. Для виявлення переповнення необхідно завжди перевіряти прапор OR після зчитування вмісту регістру UDR.
При очищеному (скинутому в логічне стан 0) бите RXEN регістра UCR приймач заборонений. Це означає, що висновок PD0 може використовуватися в якості висновку I / O загального призначення. при встановленому бите RXEN приймач UART підключається до висновку PD0, який працює як висновок входу, незалежно від установки біта 0 в DDRD.
При установці UART виведення PD0 на роботу в якості входу біт PORTD0 може використовуватися для управління навантажувальним резистором виведення.
Коли біт CHR9 в регістрі UCR встановлено, що приймаються і передаються символи - 9-розрядні, плюс стартовий і стоповий біти. Дев'ятий біт даних, який повинен передаватися, - біт ТXB8 в регістрі UCR. Цей біт необхідно встановити в потрібну установку перед початком передачі, яка відбудеться за записом в регістр UDR. Дев'ятий біт приймається RXB8 в регістрі UCR.
2. УПРАВЛІННЯ UART
Регістр даних UART – UDR
На мал.2.1. зображений регістр управління UART.

мал.2.1. Регістр управління UART
Насправді регістр UDR є двома фізично розділеними регістрами – регістром передачі даних і регістром прийому даних, використовують одні і ті ж адреси введення / виводу. При записи в регістр запис виробляється в регістр передачі даних UART, при читанні відбувається читання вмісту регістра прийому даних UART.
Регістр статусу UART – USR
На мал.2.2. зображений регістр статусу UART.

мал.2.2. Регістр статусу UART
Регістр USR забезпечує тільки читання інформації про стан UART.
Біт 7 - RXC: - прийом завершено.
Даний біт встановлюється в стан 1 при пересиланні прийнятого символу з зсувного регістру прийому в UDR. Біт встановлюється незалежно від відсутності чи наявності помилок прийому кадру. При встановленому в UCR бите RXCIE і встановленому бите RXC виконується переривання по завершенні прийому UART. Біт RXC очищається при зчитуванні UDR. При прийомі даних, ініційованому перериванням, підпрограма обробки переривання по завершенні прийому UART повинна вважати UDR, щоб очистити RXC, інакше після закінчення підпрограми обробки переривання відбудеться нове переривання.
Біт 6 - TXC: - передача завершена.
Даний біт встановлюється в стан 1, коли весь символ (включаючи стоповий біт) виведений з зсувного регістру передачі і в UDR ні записані нові дані. Цей прапор використовується при напівдуплексному зв'язковому інтерфейсі, коли обладнання передачі повинно встановити режим прийому і звільнити комунікаційну шину відразу після завершення передачі.
При встановленому в регістрі UCR бите TXCIE установка TXC призведе до виконання переривання по завершенні передачі UART. прапор TXC очищається апаратно при виконанні обробки відповідного вектора переривання. Очистити біт TXC можна записом в біт логічної 1.
Біт 5 - UDRE: - регістр даних порожній.
Даний біт встановлюється в стан 1, коли символ, записаний в UDR, пересилається в зсувний регістр передачі. Установка цього біта означає, що передавач готовий до отримання нового символу для передачі.
Коли біт UDRIE в UCR встановлено, до тих пір поки встановлений UDRE, виконується переривання по завершенні передачі UART. біт UDRE очищається під час запису в UDR. При прийомі даних, ініційованому перериванням, підпрограма обробки переривання по порожньому регістру даних UART повинна вважати UDR, щоб очистити UDRE, інакше після закінчення підпрограми переривання відбудеться нове переривання. Під час скидання біт UDRE встановлюється в стан 1, щоб показати готовність передавача.
Біт 4 - FE: - помилка кадру.
Даний біт встановлюється в стан 1 при виявленні умов помилкового прийому кадру, т. е. коли стоповий біт вхідного символу в стані 0. Біт FE очищається при прийомі стопового біта з логічним рівнем 1.
Біт 3 - OR: - переповнення даних.
Біт OR встановлюється в стан 1 при виявленні умов переповнення, т. Е. Коли символ, вже знаходиться в регістрі UDR, не прочитано перед пересиланням нового символу з зсувного регістру прийому. Біт OR буферирован, що означає, що він буде залишатися встановленим, поки не будуть прочитані правильні дані з UDR. Біт OR очищається (скидається в 0), коли дані прийняті і переслані в UDR.
Біти 2 ... 0 - Res: - зарезервовані біти.
Ці біти в мікроконтролерах AT90S4434 / 8535 зарезервовані і при зчитуванні завжди покажуть стан 0.
3. РЕГІСТР УПРАВЛІННЯ UART-UCR
На мал.3.1. зображений регістр управління UART.

мал.3.1. Регістр управління UART
Біт 7 - RXCIE: - дозвіл переривання по завершенні прийому.
При встановленому в стан 1 бите RXCIE і встановленому вирішенні глобального переривання установка біта RXC в регістрі USR призведе до виконання переривання по завершенні прийому.
Біт 6 - TXCIE: - дозвіл переривання по завершенню передачі.
При встановленому в стан 1 бите TXCIE і встановленому вирішенні глобального переривання установка біта TXC в регістрі USR призведе до виконання переривання по завершенні передачі.
Біт 5 - UDRIE: - дозвіл переривання по порожньому регістру даних.
При встановленому в стан 1 бите UDRIE і встановленому вирішенні глобального переривання установка біта UDRE в регістрі USR призведе до виконання переривання по порожньому регістру даних UART.
Біт 4 - RXEN: - дозвіл приймача.
Встановлений в стан 1 біт RXEN дозволяє приймач UART. Якщо приймач заборонений, то прапори статусу TXC, DOR і FE встановити неможливо. Якщо ці прапори встановлені, то очищення біта RXEN не призведе до очищенні цих прапорів.
Біт 3 - TXEN: - дозвіл передавача.
Встановлений в стан 1 біт TXEN дозволяє передавач UART. При заборону передавача під час передачі символу передавач НЕ буде заблокований, перш ніж будуть повністю передані символ в зсувному регістрі і будь-який знаходиться в UDR наступний символ.
Біт 2 - CHR9: - режим 9-розрядних символів.
При встановленому в стан 1 бите CHR9 передаються і приймаються 9-розрядні символи плюс стартовий і стоповий біти. Дев'яті біти читаються і записуються з використанням бітів RXB8 і TXB8 (відповідно) регістра UCR. Дев'ятий біт даних може використовуватися як додатковий стоповий біт або біт контролю парності.
Біт 1 - RXB8: - прийом 8-розрядних даних.
При встановленому в стан 1 бите CHR9 біт RXB8 є дев'ятим бітом даних прийнятого символу.
Біт 0 - TXB8: - передача 8-розрядних даних.
При встановленому в стан 1 бите CHR9 біт TXB8 є дев'ятим бітом даних переданого символу.
4. БОД-ГЕНЕРАТОР Baud Rate Generator
Бод-генератор являє собою дільник, що генерує імпульси передачі з частотою, яка визначається виразом:

де BAUD - частота в бодах;
f CK - частота кварцового генератора;
UBRR - вміст регістра UBRR (Baud Rate register - 0-255).
При використанні стандартних кварцових кристалів найбільш часто використовувані швидкості передачі в бодах можуть бути отримані установками UBRR. При установках UBRR, зазначених в таблиці, реальні швидкості в бодах матимуть відмінності менше 2% від стандартних швидкостей. Однак використовувати при помилку більше 1% не рекомендується. Високі значення помилки зменшують опір шуму.
5. РУГІСТР БОД-ГЕНЕРАТОРА UART-UBRR
На мал.5.1. зображений регістр бод-генератора UART.

мал.5.1. Регістр бод-генератора UART
Таблиця 5.1.
Установки UBRR
при різних стандартних частотах кварцових кристалів

Регістр UBRR є 8-розрядним регістром з можливістю читання / запису, що визначає швидкість UART відповідно до настанов в табл.5.1.
Контрольні питання для самоконтролю:
1. Чим оснащені мікроконтролери AT90S4434 / 8535?
2. Що таке бод-генератор?
3. Основні можливості приймача (UART)?
4. В яких випадках дані пересилаються з UDR в зсувний регістр передачі?

Самостійна робота № 36
Тема: Аналоговий компаратор (AC)
План:
1. Аналоговий компаратор
2. Регістр статусу і управління аналогового компаратора – ACSR
1. АНАЛОГОВИЙ КОМПОРАТОР
Аналоговий компаратор порівнює рівні на позитивному висновку PB2 (AIN0) і негативному висновку PB3 (AIN1). При напрузі на позитивному висновку PB2 (AIN0), більшому, ніж напруга на негативному висновку PB3 (AIN1), вихід аналогового компаратора ACO встановлюється в стан 1. Вихід компаратора може бути використаний для управління входом захоплення таймера / лічильника 1. Крім того, компаратор може формувати свій запит переривання. Можна задати формування запиту на переривання по наростаючому чи падаючому фронту або з переключення.
2. РЕГІСТР СТУТУСУ І УПРАВЛІННЯ АНАЛОГОВОГО КОМПОРАТОРА– ACSR
На мал.2.1. зображений регістр статусу і управління аналогового компаратора.

мал.2.1 Регістр статусу і управління аналогового компаратора
Біт 7 - ACD: - заборона аналогового компаратора.
При встановленому в стан 1 бите ACD аналоговий компаратор заборонений. Для виключення аналогового компаратора установку даного біта можна виробляти в будь-який час. При зміні стану біта ACD необхідно забороняти переривання по аналоговому компаратору очищенням біта ACIE в регістрі ACSR. В іншому випадку при зміні стану біта ACD може відбутися переривання.
Біт 6 - Res: - зарезервований біт.
Цей біт в мікроконтролерах AT90S4434 / 8535 зарезервований і при зчитуванні завжди покаже стан 0.
Біт 5 - ACO: - вихід аналогового компаратора.
Біт ACO пов'язаний безпосередньо з виходом компаратора.
Біт 4 - ACI: - прапор переривання по аналоговому компаратору.
Даний біт встановлюється в стан 1 в разі формування
компаратором переривання, що визначається ACI1 і ACI0. Підпрограма обробки переривання по аналоговому компаратору буде виконуватися при встановленому бите ACIE і встановленому бите глобального переривання в регістрі SREG. Біт ACI очищається апаратно при виконанні відповідного вектора обробки переривання. Біт ACI можна очистити також записом у прапор логічного 1.
Біт 3 - ACIE: - дозвіл переривання по аналоговому компаратору.
При встановленому біті ACIE і встановленому бите глобального переривання регістра SREG активується переривання по аналоговому компаратору. При скинутому бите ACIE переривання заборонено. 
Біт 2 - ACIC: - дозвіл входу захоплення аналогового компаратора.
Встановлений в стан 1 біт ACIC дозволяє спрацьовування функції захоплення входу таймера / лічильника 1 по переключенню аналогового компаратора. У цьому випадку вихід аналогового компаратора під'єднується безпосередньо до вхідного ланцюга логіки захоплення входу, що забезпечує використання функцій придушення шуму і вибору виду спрацьовування переривання по захопленню входу таймера / лічильника 1. При очищеному бите ACIC з'єднання немає. Для запуску переривання по захопленню входу таймера / лічильника 1 біт TICIE1 в регістрі масок.
Біти 1,0 - ACIS1, ACIS0: - вибір режиму переривання по аналоговому компаратору.
Ці біти визначають характер події компаратора, при якому запускається переривання по аналоговому компаратору. Варіанти установок показані в табл.2.1.
Таблиця 2.1.
Варіанти установок переривання аналогового компаратора
ACIS1 ACIS0 Режим переривання
0
0
1
1
0
1
0
1
Переривання по переключенню виходу компаратора
Зарезервовано
Переривання по падаючому фронту на виході компаратора
Переривання по наростаючому фронті на виході компаратора
Примітка. При зміні стану бітів ACIS1 / ACIS0 переривання по аналоговому компаратору має бути заборонено очищенням біта дозволу переривання в регістрі ACSR. В іншому випадку при зміні стану бітів може відбутися переривання. Використання команд SBI або CBI над бітами, крім ACI, в цьому регістрі призведе до запису «1» назад в ACI, що очистить прапор.
Контрольні питання для самоконтролю:
1. Що таке аналоговий компаратор?

Самостійна робота № 37 (4 години)
Тема: Аналого-цифровий перетворювач (ADC)
План:
1. Основні характеристики
2. Функціонування аналогового-цифрового перетворювача
3. Регістр вибору мультиплексора ADC-ADMUX
4. Регістр управління і стану ADC – ADCSR
5. Сканування аналогових каналів
1. ОСНОВНІ ХАРАКТЕРИСТИКИ
Основні характеристики:
- дозвіл 10 розрядів;
- нелінійність 0.5;
- абсолютна точність ± 2;
- час перетворення 65-260 мс;
- до 15 kSPS з максимальною роздільною здатністю;
- 8 мультиплексованих каналів входу;
- режими циклічного і одноразового перетворення;
- переривання по завершенні перетворення;
- схемою зменшення шумів Sleep режиму.
Мікроконтролери AT90S4434 / 8535 оснащені 10-розрядних ADC послідовного наближення. ADC приєднаний до 8-канальному аналоговому мультиплексору, що дозволяє використовувати будь-який висновок порту A в якості входу ADC. ADC містить підсилювач вибірки / зберігання, що утримує напругу входу ADC під час перетворення на незмінному рівні.
Для живлення ADC використовуються два окремих виведення: AVCC і AGND. Висновок AGND повинен бути приєднаний до GND і напруга AVCC не повинно відрізнятися від напруги VCC більш ніж на 0,3 В.
Зовнішнє напруга порівняння повинно бути докладено до висновку AREF. Напруга має бути в діапазоні 2 В - AVCC.
2. ФУНКЦІОНУВАННЯАНАЛОГОВОГО-ЦИФРОВОГО ПЕРЕТВОРЮВАЧА
ADC перетворює аналогове вхідна напруга в 10-бітову цифрову величину методом проб і помилок.
Мінімальна величина являє AGND, максимальна величина - напруга на AREF-піне мінус один LSB.
Аналоговий вхідний канал вибирається записом в біти MUX в ADMUX, тим самим підключається один з восьми входів аналогового мультиплексора ADC7..0 до входу ADC.
Аналого-цифровий перетворювач може працювати в двох режимах: режимі однократного перетворення і режимі циклічного перетворення. У режимі однократного перетворення кожне перетворення ініціюється користувачем. У режимі циклічного перетворення ADC здійснює вибірку і оновлення вмісту регістра даних ADC безперервно. Вибір режиму здійснюється бітом ADFR регістра ADCSR.
Робота ADC дозволяється установкою в стан 1 біта ADEN в регістрі ADCSR. Вхідні канальні вибору не вступлять в роботу, поки АДЕН встановлено. ADC не поглинає потужність, коли АДЕН очищається, таким чином, рекомендується вимикати ADC перш, ніж ввести режим sleep.
Перетворення починається з установки в стан 1 біта початку перетворення ADSC. Цей біт знаходиться в стані 1 протягом всього циклу перетворення і скидається по завершенні перетворення, апаратно. Якщо в процесі виконання перетворення виконується зміна каналу даних, то ADC спочатку закінчить поточний перетворення і лише потім виконає перехід до іншого каналу.
Оскільки ADC формує 10-розрядний результат, то по завершенні перетворення результуючі дані розміщуються в двох регістрах даних ADCH і ADCL. Для забезпечення відповідності результуючих даних зчитувати рівню використовується спеціальна логіка захисту. Цей механізм працює наступним чином: при зчитуванні даних першим повинен бути лічений регістр ADCL. Як тільки ADCL лічений, звернення ADC до регістрів даних блокується. Таким чином, якщо після зчитування стану ADCL, але до зчитування ADCH, буде завершено наступне перетворення, жоден з регістру не буде оновлений і записаний раніше результат не буде спотворений. Звернення ADC до регістрів ADCH і ADCL дозволяється після закінчення зчитування вмісту регістру ADCH.
ADC має своє власне переривання, яке може бути активована по завершенні перетворення. Коли звернення ADC до регістрів заборонено, в процесі зчитування регістрів ADCL і ADCH переривання має використовуватися, навіть якщо результат буде втрачено.
У режимі однократного перетворення по завершенні процесу оцифровки відбувається скидання прапора ADSC. Знову встановлений програмним способом прапор ADSC викличе нове одноразове перетворення.
У режимі циклічного перетворення нове стартуватиме негайно після завершення попереднього перетворення, поки прапор ADSC залишається встановленим. Використання режиму циклічного перетворення і частоти оцифровки 200 kHz дає мінімальний час перетворення з максимальною роздільною здатністю 65 мкс.
3. РЕГІСТР ВИБОУ МУЛЬТИПЛЕКСОРА ADC-ADMUX
На мал.3.1. зображений регістр вибору каналу мультиплексора.

мал.3.1. Регістр вибору каналу мультиплексора
Біти 7 ... 3 - Res: - зарезервовані біти.
Ці біти в мікроконтролерах AT90S4434 / 8535 зарезервовані і при зчитуванні завжди покажуть стан 0.
Біти 2 ... 0 - MUX2 ... MUX0: - біти вибору аналогового каналу.
Вміст цих бітів визначає, який з восьми аналогових каналів (0-7) буде підключений до ADC (табл. 3.1).
Таблиця 3.1.
Визначення входу АЦП
MUX2.0 Вхід
000
001
010
011
100
101
110
111 ADC0
ADC1
ADC2
ADC3
ADC4
ADC5
ADC6
ADC7
4. РЕГІСТР УПРАВЛІННЯ І СТАНУ ADC – ADCSR
На мал.4.1. зображений регістр управління і стану ADC.

мал.4.1. Регістр управління і стану ADC
Біт 7 - ADEN: - дозвіл ADC.
Установка даного біта в стан 1 дозволяє ADC. очищення біта забороняє ADC. Заборона ADC в процесі перетворення припиняє перетворення.
Біт 6 - ADSC: - запуск перетворення ADC.
У режимі однократного перетворення для запуску кожного циклу перетворення необхідно встановлювати біт ADSC в стан 1. У циклічному режимі біт ADSC встановлюється в стан 1 тільки при запуску першого циклу перетворення. Щоразу після першої установки біта ADSC, виконаної після дозволу ADC або одночасно з дозволом ADC, буде виконуватися пусте перетворення, попереднє яка активується перетворення. Це порожнє перетворення активує ADC. ADSC буде зберігати стан 1 протягом всього циклу перетворення і скидається по завершенні перетворення. При виконанні порожнього перетворення, що передує яка активується, біт ADSC залишається встановленим до завершення активованого перетворення. Запис 0 в цей біт ефекту не надає.
Біт 5 - ADFR: - установка циклічного режиму роботи ADC.
При встановленому в стан 1 бите ADFR ADC буде працювати в циклічному режимі. В цьому режимі ADC виробляє вибірки і звернення до регістрів безперервно (одне за іншим). Очищення біта призводить до припинення циклічного режиму.
Біт 4 - ADIF: - прапор переривання ADC.
Даний біт встановлюється в стан 1 після завершення перетворення та оновлення регістрів даних. Переривання по завершенні перетворення ADC виконується, якщо в стан 1 встановлено біт ADIE і I - біт регістра SREG. Біт ADIF скидається апаратно при виконанні підпрограми обробки відповідного вектора переривання. Крім того, біт ADIF може бути очищений записом у прапор логічного 1.
Біт 3 - ADIE: - дозвіл переривання ADC.
При встановлених в стан 1 бите ADIE і I - бите регістру SREG активується переривання по завершенні перетворення ADC.
Біти 2 ... 0 - ADPS2 ... ADPS0: - вибір коефіцієнта попереднього ділення.
Таблиця 4.1.
Вибір коефіцієнта попереднього розподілу

Дані біти визначають коефіцієнт ділення частоти XTAL для отримання необхідної тактової частоти ADC (табл. 4.1).
5. СКАНУВАННЯ АНАЛОГОВИХ КАНАЛІВ
Оскільки зміна аналогових каналів відбувається після завершення циклу перетворення в циклічному режимі, зміна каналів (сканування каналів) може відбуватися без переривання перетворювача. зазвичай для виконання зміни каналу виконується переривання по завершенні перетворення. Однак необхідно прийняти до відома наступне міркування: переривання активується відразу по готовності результату до зчитування. У циклічному режимі наступне перетворення починається через один тактовий цикл ADC після активації переривання. Якщо вміст ADMUX буде змінено протягом цього одного тактового циклу, то нові установки будуть задіяні при початку нового перетворення.
Якщо ж зміна стану ADMUX відбудеться пізніше цього тактового циклу, то при активованому перетворенні будуть використовуватися передували установки.
Контрольні питання для самоконтролю:
1. Основні характеристики аналого-цифрового перетворювача (ADC)?
2. Чим оснащені мікроконтролери AT90S4434 / 8535?
3. Які два окремих виведення використовують для живлення ADC?
Самостійна робота № 38
Тема: Вивчення інтегрованого середовища розробки для МК AVR ATMEL AVR STUDIOПлан:
1. МК AVR ATMEL AVR STUDIO
2. Арифметичні і логічні інструкції
3. Інструкції розгалуження
4. Інструкції передачі даних
5. Інструкції роботи з бітами
1. МК AVR ATMEL AVR STUDIO
Компілятор транслює вихідні коди з мови асемблера в об'єктний код. Отриманий об'єктний код можна використовувати в симуляторі ATMEL AVR Studio або в емуляторі ATMEL AVR In-Circuit Emulator. Компілятор також генерує код, який може бути безпосередньо запрограмований в мікроконтролери AVR. Компілятор генерує код, який не вимагає лінковки. Компілятор працює під Microsoft Windows 3.11, Microsoft Windows95 і Microsoft Windows NT. Крім цього існує консольна версія для MS-DOS.
Набір інструкцій сімейства мікроконтролерів AVR описаний нижче коротко. Для повнішої інформації звертайтеся до інформації про продукт інструкцій і документації по конкретному мікроконтролеру.
Компілятор працює з файлами, що містять інструкції, мітки і директиви. Інструкції та директиви, як правило, мають один або кілька операндів.
Примітка. Рядок коду не повинна перевищувати 120 символів.
Будь-яка рядок може починатися з позначки, яка є набором символів, що закінчується двокрапкою. Мітки використовуються для вказівки місця, в яке передається управління при переходах, а також для завдання імен змінних. Вхідна рядок може мати одну з чотирьох форм:
[Позначка:] директива [операнди] [Коментар]
[Позначка:] інструкція [операнди] [Коментар]
коментар
Порожня стрічка
Коментар має наступну форму:
; [Текст]
Позиції в квадратних дужках необов'язкові. Текст після крапки з комою (;) і до кінця рядка ігнорується компілятором. Мітки, інструкції і директиви більш детально описуються нижче.
Приклади:
label: .EQU var1 = 100; Встановлює var1 рівним 100 (Це директива)
.EQU Var2 = 200; Встановлює var2 рівним 200
test: rjmp test; Нескінченний цикл (Це інструкція)
                                ; Рядок з одним тільки коментарем
; Ще один рядок з коментарем
Компілятор не вимагає, щоб мітки, директиви, коментарі або інструкції знаходилися в певній колонці рядка.
2. АРИФМЕТИЧНІ І ЛОГІЧНІ ІНСТРУКЦІЇ
Таблиця 2.1.
Арифметичні і логічні інструкції
Мнемо-ніка Операнди Опис Операція Прапори Цикли
ADD Rd,Rr Підсумовування без переносу Rd = Rd + Rr Z,C,N,V,H,S 1
ADC Rd,Rr Підсумовування без переносу Rd = Rd + Rr + C Z,C,N,V,H,S 1
SUB Rd,Rr Віднімання без переносу Rd = Rd + Rr Z,C,N,V,H,S 1
SUBI Rd,K8 Віднімання константи Rd = Rd - K8 Z,C,N,V,H,S 1
SBC Rd,Rr Віднімання з переносом Rd = Rd - Rr - C Z,C,N,V,H,S 1
SBCI Rd,K8 Віднімання константи з перенесенням Rd = Rd - K8 - C Z,C,N,V,H,S 1
AND Rd,Rr Логічне І Rd = Rd · Rr Z,N,V,S 1
ANDI Rd,K8 Логічне І з константою Rd = Rd · K8 Z,N,V,S 1
OR Rd,Rr Логічне АБО Rd = Rd V Rr Z,N,V,S 1
ORI Rd,K8 Логічне АБО з константою Rd = Rd V K8 Z,N,V,S 1
EOR Rd,Rr Логічне виключає АБО Rd = Rd EOR Rr Z,N,V,S 1
COM Rd Побітна інверсія Rd = $FF - Rd Z,C,N,V,S 1
NEG Rd Зміна знака (доп. Код) Rd = $00 - Rd Z,C,N,V,H,S 1
SBR Rd,K8 Встановити біт (біти) в регістрі Rd = Rd V K8 Z,C,N,V,S 1
CBR Rd,K8 Скинути біт (біти) в регістрі Rd = Rd · ($FF -
K8) Z,C,N,V,S 1
INC Rd Інкрементіровать значення регістра Rd = Rd + 1 Z,N,V,S 1
DEC Rd Декрементіровать значення регістра Rd = Rd -1 Z,N,V,S 1
TST Rd Перевірка на нуль або негативність Rd = Rd · Rd Z,C,N,V,S 1
CLR Rd Очистити регістр Rd = 0 Z,C,N,V,S 1
SER Rd Встановити регістр Rd = $FF None 1
ADIW Rdl,K6 Скласти константу і слово Rdh:Rdl =
Rdh:Rdl + K6 Z,C,N,V,S 2
SBIW Rdl,K6 Відняти константу з слова Rdh:Rdl =
Rdh:Rdl - K 6 Z,C,N,V,S 2
MUL Rd,Rr Множення чисел без знака R1:R0 = Rd * Rr Z,C 2
MULS Rd,Rr Множення чисел зі знаком R1:R0 = Rd * Rr Z,C 2
MULSU Rd,Rr Множення числа зі знаком з числом без знака R1:R0 = Rd * Rr Z,C 2
FMUL Rd,Rr Множення дрібних чисел без знака R1:R0 = (Rd *
Rr) << 1 Z,C 2
FMULS Rd,Rr Множення дрібних чисел зі знаком R1:R0 = (Rd *Rr)
<< 1 Z,C 2
FMUL-
SU Rd,Rr Множення дрібного числа зі
знайомий з числом без знака R1:R0 = (Rd *Rr)
<< 1 Z,C 2
3. ІНСТРУКЦІЇ РОЗГАЛУЖЕННЯ
Таблиця 3.1.
Інструкції розгалуження
Мнемоніка Операнди Опис Операція Прапори Цикли
1 2 3 4 5 6
RJMP k Відносний перехід PC = PC + k +1 None 2
IJMP НетНепрямий перехід на (Z) PC = Z None 2
EIJMP НетРозширений непрямий перехід на (Z) STACK = PC+1,
PC(15:0) = Z,
PC(21:16) = EIND None 2
JMP k Перехід PC = k None 3
RCALL k Відносний виклик підпрограми STACK = PC+1,
PC = PC + k + 1 None 3/4*
ICALL НетНепрямий виклик (Z) STACK = PC+1,
PC = Z None 3/4*
EICALL НетРозширений непрямий виклик
(Z) STACK = PC+1,
PC(15:0) = Z,
PC(21:16) =EIND None 4*
CALL k Виклик підпрограми STACK = PC+2,
PC = k None 4/5*
RET НетПовернення з підпрограми PC = STACK None 4/5*
RETI НетПовернення з переривання PC = STACK I 4/5*
CPSE Rd,Rr Порівняти, пропустити, якщо рівні if (Rd ==Rr) PC =
PC 2 or 3 None 1/2/3
CP Rd,Rr Порівняти Rd -Rr Z,C,N,V,H,
S 1
CPC Rd,Rr Порівняти з перенесенням Rd - Rr - C Z,C,N,V,H,
S 1
CPI Rd,K8 Порівняти з константою Rd - K Z,C,N,V,H,
S 1
SBRC Rr,b Підтвердити, якщо біт в регістрі очищений if(Rr(b)==0) PC =
PC + 2 or 3 None 1/2/3
SBRS Rr,b Підтвердити, якщо біт в регістрі встановлений if(Rr(b)==1) PC =
PC + 2 or 3 None 1/2/3
SBIC P,b Підтвердити, якщо біт в порту очищений if(I/O(P,b)==0) PC
= PC + 2 or 3 None 1/2/3
SBIS P,b Підтвердити, якщо біт в порту встановлений if(I/O(P,b)==1) PC
= PC + 2 or 3 None 1/2/3
BRBC s,k Перейти, якщо прапор в SREG очищений if(SREG(s)==0)
PC = PC + k + 1 None 1/2
BRBS s,k Перейти, якщо прапор в SREG встановлений if(SREG(s)==1)
PC = PC + k + 1 None 1/2
BREQ k Перейти, якщо рівно if(Z==1) PC = PC
+ k + 1 None 1/2
BRNE k Перейти, якщо не рівно if(Z==0) PC = PC
+ k + 1 None 1/2
BRCS k Перейти, якщо перенесення встановлений if(C==1) PC = PC
+ k + 1 None 1/2
BRCC k Перейти, якщо перенесення очищений if(C==0) PC = PC
+ k + 1 None 1/2
BRSH k Перейти, якщо дорівнює або більше if(C==0) PC = PC
+ k + 1 None 1/2
BRLO k Перейти, якщо менше if(C==1) PC = PC
+ k + 1 None 1/2
BRMI k Перейти, якщо мінус if(N==1) PC = PC
+ k + 1 None 1/2
BRPL k Перейти, якщо плюс if(N==0) PC = PC
+ k + 1 None 1/2
BRGE k Перейти, якщо більше або дорівнює (зі знаком) if(S==0) PC = PC
+ k + 1 None 1/2
BRLT k Перейти, якщо менше (зі знаком) if(S==1) PC = PC
+ k + 1 None 1/2
BRHS k Перейти, якщо прапор внутрішнього перенесення встановлений if(H==1) PC = PC
+ k + 1 None 1/2
BRHC k Перейти, якщо прапор внутрішнього перенесення очищений if(H==0) PC = PC
+ k + 1 None 1/2
BRTS k Перейти, якщо прапор T встановлено if(T==1) PC = PC
+ k + 1 None 1/2
BRTC k Перейти, якщо прапор T очищений if(T==0) PC = PC
+ k + 1 None 1/2
BRVS k Перейти, якщо прапор переповнення встановлений if(V==1) PC = PC
+ k + 1 None 1/2
BRVC k Перейти, якщо прапор переповнення очищений if(V==0) PC = PC
+ k + 1 None 1/2
BRIE k Перейти, якщо переривання дозволені if(I==1) PC = PC +
k + 1 None 1/2
BRID k Перейти, якщо переривання заборонені if(I==0) PC = PC +
k + 1 None 1/2
Примітка. Для операцій доступу до даних кількість циклів вказано за умови доступу до внутрішньої пам'яті даних і некоректно при роботі з зовнішнім ОЗУ. Для інструкцій CALL, ICALL, EICALL, RCALL, RET і RETI необхідно додати три цикли плюс по два циклу для кожного очікування в контролерах з PC меншим 16 біт (128 KB пам'яті програм). Для пристроїв з пам'яттю програм понад 128 KB додайте п'ять циклів плюс по три цикли на кожне очікування.
4. ІНСТРУКЦІЇ ПЕРЕДАЧІ ДАНИХ
Таблиця 4.1.
Інструкції передачі даних
Мнемоніка Операнди Опис Операція Прапори Цикли
1 2 3 4 5 6
MOV Rd,Rr Скопіювати регістр Rd = Rr None 1
MOVW Rd,Rr Скопіювати пару регістрів Rd+1:Rd =
Rr+1:Rr, r,d even None 1
LDI Rd,K8 Завантажити константу Rd = K None 1
LDS Rd,k Пряме завантаження Rd = (k) None 2*
LD Rd,X Непряме завантаження Rd = (X) None 2*
LD Rd,X+ Непряма завантаження з постинкрементом Rd = (X),
X=X+1 None 2*
LD Rd,-X Непряма завантаження з предекрементом X=X-1, Rd = (X) None 2*
LD Rd,Y Непряме завантаження Rd = (Y) None 2*
LD Rd,Y+ Непряма завантаження з постинкрементом Rd = (Y),
Y=Y+1 None 2*
LD Rd,-Y Непряма завантаження з предекрементом Y=Y-1, Rd = (Y) None 2*
LDD Rd,Y+q Непряма завантаження з заміщенням Rd = (Y+q) None 2*
LD Rd,Z Непряма завантаження Rd = (Z) None 2*
LD Rd,Z+ Непряма завантаження з предекрементом Rd = (Z), Z=Z+1 None 2*
LD Rd,-Z Непряма завантаження з предекрементом Z=Z-1, Rd = (Z) None 2*
LDD Rd,Z+q Непряме завантаження з заміщенням Rd = (Z+q) None 2*
STS k,Rr Пряме збереження (k) = Rr k) = Rr None 2*
ST X,Rr Непряме збереження (X) = Rr None 2*
ST X+,Rr Непряме збереження з постинкрементом (X) = Rr, X=X+1 None 2*
ST -X,Rr Непряме збереження з предекрементом X=X-1, (X)=Rr None 2*
ST Y,Rr Непряме збереження (Y) = Rr None 2*
ST Y+,Rr Непряме збереження з постинкрементом (Y) = Rr, Y=Y+1 None 2
ST -Y,Rr Непряме збереження з предекрементом Y=Y-1, (Y) = Rr None 2
ST Y+q,Rr Непряме збереження з заміщенням (Y+q) = Rr None 2
ST Z,Rr Непряме збереження (Z) = Rr None 2
ST Z+,Rr Непряме збереження з постінкрементом (Z) = Rr, Z=Z+1 None 2
ST -Z,Rr Непряме збереження з предекрементом Z=Z-1, (Z) = Rr None 2
ST Z+q,Rr Непряме збереження з заміщенням (Z+q) = Rr None 2
LPM НетЗавантаження з програмної пам'яті R0 = (Z) None 3
LPM Rd,Z Завантаження з програмної пам'яті Rd = (Z) None 3
LPM Rd,Z+ Завантаження з програмної пам'яті з постінкрементом Rd = (Z), Z=Z+1 None 3
ELPM НетРозширена завантаження з програмної пам'яті R0 =
(RAMPZ:Z) None 3
ELPM Rd,Z Розширена завантаження з програмної пам'яті Rd =
(RAMPZ:Z) None 3
ELPM Rd,Z+ Розширена завантаження з програмної пам'яті з постінкрементом Rd =
(RAMPZ:Z), Z =
Z+1 None 3
SPM НетЗбереження в програмній
пам'яті (Z) = R1:R0 None -
ESPM НетРозширене збереження в
програмної пам'яті (RAMPZ:Z) =
R1:R0 None -
IN Rd,P Читання порту Rd = P None 1
OUT P,Rr Запис в порт P = Rr None 1
PUSH Rr Занесення регістра в стек STACK = Rr None 2
POP Rd Витяг регістра з стека Rd = STACK None 2
Примітка. Для операцій доступу до даних кількість циклів вказано за умови доступу до внутрішньої пам'яті даних і некоректно при роботі з зовнішнім ОЗУ. Для інструкцій LD, ST, LDD, STD, LDS, STS, PUSH і POP необхідно додати один цикл плюс по одному циклу для кожного очікування.
5. ІНСТРУКЦІЇ РОБОТИ З БІТАМИ
Таблиця 5.1.
Інструкції роботи з бітами
Мнемоніка Операнди Опис Операція Прапори Цикли
1 2 3 4 5 6
LSL Rd Логічний зсув вліво Rd(n+1)=Rd(n),
Rd(0)=0, C=Rd(7) Z,C,N,V,H,S 1
LSR Rd Логічний зсув вправо Rd(n)=Rd(n+1),
Rd(7)=0, C=Rd(0) Z,C,N,V,S 1
ROL Rd Циклічний зсув вліво через
C Rd(0)=C,
Rd(n+1)=Rd(n),
C=Rd(7) Z,C,N,V,H,S 1
ROR Rd Циклічний зсув вправо через C Rd(7)=C,
Rd(n)=Rd(n+1),
C=Rd(0) Z,C,N,V,S 1
ASR Rd Арифметичний зрушення вправо Rd(n)=Rd(n+1),
n=0,...,6 Z,C,N,V,S 1
SWAP Rd Перестановка тетрадRd(3..0) =
Rd(7..4), Rd(7..4)=
Rd(3..0) None 1
BSET s Установка прапора SREG(s) = 1 SREG(s) 1
BCLR s Очищення прапора SREG(s) = 0 SREG(s) 2
SBI P,b Встановити біт в порту I/O(P,b) = 1 None 2
CBI P,b Очистити біт в порту I/O(P,b) = 0 None 1
BST Rd,b Зберегти біт з регістра в T T = Rr(b) T 1
BLD Rd,b Завантажити біт з T в регістр Rd(b) = T None 1
SEC НетВстановити прапор переносу C =1 C 1
CLC НетОчистити прапор переносу C = 0 C 1
SEN НетВстановити прапор негативного числа N = 1 N 1
CLN НетОчистити прапор негативного числа N = 0 N 1
SEZ НетВстановити прапор нуля Z = 1 Z 1
CLZ НетОчистити прапор нуля Z = 0 Z 1
SEI НетВстановити прапор переривань I = 1 I 1
CLI НетОчистити прапор переривань I = 0 I 1
SES НетВстановити прапор числа зі знаком S = 1 S 1
CLN НетОчистити прапор числа зі знаком S = 0 S 1
SEV НетВстановити прапор переповнення V = 1 V 1
CLV НетОчистити прапор переповнення V = 0 V 1
SET НетВстановити прапор T T = 1 T 1
CLT НетОчистити прапор T T = 0 T 1
SEH НетВстановити прапор внутрішнього перенесення H = 1 H 1
CLH НетОчистити прапор внутрішнього перенесення H = 0 H 1
NOP НетНі операції НетNone 1
SLEEP НетСпати (зменшити енергоспоживання) Дивіться опис інструкції None 1
WDR НетСкидання сторожового таймера Дивіться опис інструкції None 1
Примітка. Асемблер не розрізняє регістр символів.
Операнди можуть бути наступних видів:
Rr: Вихідний регістр в регістровому файлі.
b: Константа (3 біта), може бути константний вираз.
s: Константа (3 біта), може бути константний вираз.
P: Константа (5-6 біт), може бути константний вираз.
K6; Константа (6 біт), може бути константний вираз.
K8: Константа (8 біт), може бути константний вираз.
k: Константа (розмір залежить від інструкції), може бути константне
вираз.
q: Константа (6 біт), може бути константний вираз.
Rdl: R24, R26, R28, R30. Для інструкцій ADIW і SBIW.
X, Y, Z: Регістри непрямої адресації (X = R27: R26, Y = R29: R28,
Z = R31: R30).

Приложенные файлы


Добавить комментарий