37746

Ознайомлення з архітектурою мікроконтролерів фірми ATMEL

Лабораторная работа

Коммуникация, связь, радиоэлектроника и цифровые приборы

Основною ідеєю всіх RISC Reduced Instruction Set Computer як відомо є збільшення швидкодії за рахунок скорочення кількості операцій обміну з пам'яттю програм. Для цього кожну команду прагнуть вмістити в одну комірку пам'яті програм. При обмеженій розрядності елементу пам'яті це неминуче призводить до скорочення набору команд мікропроцесора. У VRмікроконтролерів відповідно до цього принципу практично всі команди крім тих у яких одним з операндів є 16розрядний адреса також упаковані в одну комірку пам'яті програм.

Украинкский

2013-09-25

111.5 KB

6 чел.

PAGE  2

Міністерство освіти України

Національний технічний університет України

Кафедра звукотехніки і реєстрації інформації

Лабораторна робота №10

з курсу Основи мікропроцесорної техніки

„Ознайомлення з архітектурою мікроконтролерів фірми ATMEL

Виконав:

         Перевірив:

ст. 4-го курсу

                              асист. Тітков Д.В.

група Д3-61

 асист. Крупченко А.А.

Зелінський О.Ю.

   

Київ 2009

Мета роботи

Вивчити основні апаратні можливості мікроконтролера АТMEL, ознайомитися з призначенням його виводів, архітектурою та основними експлуатаційними характеристиками

Виконання роботи

  1.  Архітектура мікропроцесорного ядра AVR-мікроконтролерів

Вдосконалена RISC (enhanced RISC) архітектура AVR-мікроконтролерів (рис. 1) об'єднує в собі комплекс рішень, спрямованих на підвищення швидкодії мікропроцесорного ядра AVR.

Арифметико-логічний пристрій (ALU), в якому виконуються всі обчислювальні операції, має доступ до 32-х оперативними регістрів, об'єднаним в регістровий файл. Вибірка вмісту регістрів, виконання операції та запис результату назад в регістровий файл виконуються за один машинний цикл. Для порівняння корисно згадати, що більшість вбудованих мікроконтролерів мають тільки один такий регістр, безпосередньо доступний ALU, - акумулятор, що вимагає включення до програми додаткових команд його завантаження і зчитування.

Рисунок 1. Архітектура AVR-мікроконтролерів.

Основною ідеєю всіх RISC (Reduced Instruction Set Computer), як відомо, є збільшення швидкодії за рахунок скорочення кількості операцій обміну з пам'яттю програм. Для цього кожну команду прагнуть вмістити в одну комірку пам'яті програм. При обмеженій розрядності елементу пам'яті це неминуче призводить до скорочення набору команд мікропроцесора.

У AVR-мікроконтролерів відповідно до цього принципу практично всі команди (крім тих, у яких одним з операндів є 16-розрядний адреса) також упаковані в одну комірку пам'яті програм. Але зробити це вдалося не за рахунок скорочення кількості команд процесора, а шляхом розширення комірки пам'яті програм до 16 розрядів. Таке рішення є причиною багатства системи команд AVR в порівнянні з іншими RISC-мікроконтролерами.

Організація пам'яті AVR виконана за схемою Гарвардського типу, в якій розділені не тільки Адреса простору пам'яті програм і вшанування пам'яті даних, але також і шини доступу до них.

Вся програмна пам'ять AVR-мікроконтролерів виконана за технологією FLASH і розміщена на кристалі. Вона являє собою послідовність 16-розрядних осередків і має ємність від 512 слів до 64K слів в залежності від типу кристалу.

Під FLASH-пам'ять, крім програми, можуть бути записані постійні дані, які не змінюються під час функціонування мікропроцесорної системи. Це різні константи, таблиці знакогенератора, таблиці лінеаризації датчиків і т. п.

Перевагою технології FLASH є високий ступінь упаковки, а недоліком те, що вона не дозволяє стирати окремі осередки. Тому завжди виконується повне очищення всієї пам'яті програм. При цьому для AVR гарантується, як мінімум, 1000 циклів перезапису FLASH-пам'яті.

Крім того, для зберігання даних AVR-мікроконтролери можуть мати, залежно від типу кристалу, внутрішню (від 0 до 4K байт) і зовнішню (від 0 до 64 Кбайт) SRAM оперативну пам'ять і незалежну внутрішню EEPROM пам'ять (від 0 до 4K байт) .

Поділ шин доступу (рис. 1) до FLASH пам'яті і SRAM пам'яті дає можливість мати шини даних для пам'яті даних і пам'яті програм різної розрядності а також використовувати технологію конвейеризації. Конвейеризації полягає в тому, що під час виконання поточної команди програмний код наступної вже вибирається з пам'яті і дешіфріруется.

Для порівняння згадаємо, що у мікроконтролерів сімейства MCS-51 вибірка коду команди і її виконання здійснюються послідовно, що займає один машинний цикл, який триває 12 періодів кварцового резонатора.

У разі використання конвеєра наведену тривалість машинного циклу можна скоротити. Наприклад, у PIC-мікроконтролерів фірми Microchip за рахунок використання конвеєра вдалося зменшити тривалість машинного циклу до 4 періодів кварцового резонатора. Загальна тривалість ж машинного циклу AVR становить один період кварцового резонатора. Таким чином, AVR здатні забезпечувати задану продуктивність при більш низькій тактовій частоті. Саме ця особливість архітектури і дозволяє AVR-мікроконтролерів мати найкраще співвідношення енергоспоживання / продуктивність, тому що споживання КМОП мікросхем, як відомо, визначається їх робочою частотою.

EEPROM блок електрично зтирається пам'яті AVR призначений для зберігання енергонезалежних даних, які можуть змінюватися безпосередньо на об'єкті. Це калібрувальні коефіцієнти, різні уставки, конфігураційні параметри системи. EEPROM-пам'ять має меншу, порівняно з FLASH, ємність (до 4К байт), але при цьому допускає можливість побайтно перезапису осередків, яка може відбуватися як під управлінням зовнішнього процесора, так і під управлінням власне AVR-мікроконтролера під час його роботи за програмою .

Програмування енергонезалежних блоків пам'яті AVR може здійснюватися як паралельно, так і послідовно через SPI (Serial Peripheral Interface) інтерфейс.

Управління та обмін даними з EEPROM-пам'яттю і з усіма периферійними вузлами здійснюється за допомогою регістрів введення / виводу, які є в кожному периферійному вузлі.

  1.  Система команд и программная модель AVR

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

Маючи 16-розрядну комірку пам'яті програм, AVR відрізняються багатством своєї системи команд в порівнянні з іншими RISC-мікроконтролерами.

Для зручності написання і аналізу програм всіх операціях з системи команд крім двійкового коду зіставлені мнемокоди асемблера (символічні позначення операцій), що використовуються при створенні вихідного тексту програми. Спеціальні програми-транслятори переводять потім символічні позначення в двійкові коди.

Система команд AVR мікроконтролерів, містить 121 інструкцію і застосовується без будь-яких застережень для мікроконтролера ATmega103.

Молодші моделі AVR не мають деяких команд з наведеного списку. Основна відмінність полягає в тому, що ті мікроконтролери (AT90S1200, ATtiny10/11), у яких відсутній SRAM, не містять та відповідних команд роботи з оперативною пам'яттю. Крім того, AT90S1200 не має команд ADIW, SBIW, IJMP, ICALL, LPM, а ATtiny10/11 - команд ADIW, SBIW, IJMP, ICALL.

Тільки MegaAVR мають двухсловние, що виконуються за три такти, команди абсолютних переходів JMP і CALL. Всім іншим типам AVR (Tiny і Classic) ці повільні команди не потрібні, тому що всі адресний простір обсягом до 4K слів можна досягти лише за допомогою команд відносних переходів RJMP, RCALL.

Також осібно стоїть команда ELPM сторінкового читання FLASH пам'яті, яка існує і необхідна тільки для ATmega103 через збільшення розмірів пам'яті програм у цього мікроконтролера до 128K байт.

Підраховуючи кількість інструкцій в системі команд AVR, мабуть слід звернути увагу на те, що для двох команд з групи арифметичних операцій існує по два мнемокода. Мнемокоди ANDI і CBR а також ORI і SBR дублюють один одного, тобто транслюються в один і той же двійковий код. Вибір між ними програміст може виконувати довільно в залежності від контексту програми.

Таким чином, AVR-мікроконтролери в залежності від типу мають 89 / 90 / 118 / 121 мнемокодов або 87 / 88 / 116 / 119 різних двійкових кодів команд.

Спеціальна директива асемблера

   . device <тіпAVR>

забезпечує контроль відповідності команд, що використовуються в тексті програми, типу зазначеного процесора.

При переході від молодших до старших моделями AVR існує сумісність у змісті системи команд, проте необхідно пам'ятати, що адреси векторів переривання одних і тих самих периферійних вузлів у різних типів AVR різні, що вимагає внесення відповідних змін до програми при її перенесення на інший тип AVR.

На малюнку 1 зображено програмна модель AVR-мікроконтролерів, що являє собою діаграму програмно доступних ресурсів AVR. Центральним блоком на цій діаграмі є регістровий файлу на 32 оперативних регістра (R0-R31), безпосередньо доступних ALU. Старші регістри (рис. 3) об'єднані парами і утворюють три 16-розрядних регістра, призначених для непрямої адресації комірок пам'яті (AVR без SRAM мають тільки один 16-бітний регістр Z).

Рисунок 2. Програмна модель AVR-мікроконтролерів.

Всі арифметичні та логічні операції а також частину операцій роботи з виконуються в ALU тільки над вмістом оперативних регістрів. Слід звернути увагу, що команди, які в якості другого операнда мають константу (SUBI, SBCI, ANDI, ORI, SBR, CBR), можуть використовувати як перший операнда тільки регістри з другої половини реєстрового файлу (R16-R31). Команди 16-розрядного складання з константою ADIW і віднімання константи SBIW як перший операнда використовують тільки регістри R24, R26, R28, R30.

Рисунок 3. Регістровий блок.

Під час виконання арифметичних і логічних операцій або операцій роботи з бітами ALU формує ті чи інші ознаки результату операції, тобто встановлює або скидає біти в регістрі стану SREG (Status Register) (рис.4).

Рисунок 4. Програмна модель AVR-мікроконтролерів.

  •  Біт С (carry) встановлюється, якщо під час виконання операції був перенесення із старшого розряду результату
  •  Біт Z (zero) встановлюється, якщо результат операції дорівнює 0;
  •  Біт N встановлюється, якщо MSB (Most Significant Bit - старший біт) результату дорівнює 1 (правильно показує знак результату, якщо не було переповнення розрядної сітки знакового числа);
  •  Біт V встановлюється, якщо під час виконання операції було переповнення розрядної сітки знакового результату;
  •  Біт S = N + V (правильно показує знак результату і при переповнення розрядної сітки знакового числа);
  •  Біт H встановлюється, якщо під час виконання операції був перенесення з 3-го розряду результату.

Ознаки результату операції можуть бути потім використані в програмі для виконання подальших арифметико-логічних операцій або команд умовних переходів.

Для зберігання оперативних даних програміст, крім реєстрового файлу, може використовувати внутрішню і зовнішню (якщо вони є) блоки SRAM (рис. 2).

Робота з зовнішньої SRAM може бути програмно дозволено / заборонено установкою / скиданням біта SRE в регістрі введення / виводу MCUSR.

Операції обміну з внутрішньої оперативною пам'яттю AVR-мікроконтроллер виконує за два машинних циклу. Доступ до зовнішньої SRAM вимагає одного додаткового циклу на кожен байт в порівнянні з внутрішньою пам'яттю. Крім того, установкою біта SRW в регістрі введення / виводу MCUSR можна програмно збільшити час обміну з зовнішнім SRAM ще на один додатковий машинний цикл очікування.

Виконувати арифметико-логічні операції та операції зсуву безпосередньо над вмістом комірок пам'яті не можна. Не можна також записати константу або очистити вміст комірки пам'яті. Система команд AVR дозволяє лише виконувати операції обміну даними між осередками SRAM та оперативними регістрами. Перевагою системи команд можна вважати різноманітні режими адресації комірок пам'яті. Як видно з Таблиці 1 (див. групу команд передачі даних), крім прямої адресації є наступні режими: непряма, непряма з пост-інкремент, непряма з пре-декремент і непряма зі зміщенням.

Оскільки внутрішня і зовнішня SRAM входять в єдиний адресний простір (разом з оперативними регістрами і регістрами введення / виводу), то для доступу до осередків внутрішньої і зовнішньої пам'яті використовуються одні й ті ж команди.

У комірках оперативної пам'яті організовується системний стек, який автоматично використовується для зберігання адрес повернення при виконанні підпрограм, а також може використовуватися програмістом для тимчасового зберігання вмісту оперативних регістрів (команди PUSH і POP). (Мікроконтролери, що не мають SRAM, містять трьох-рівневий апаратний стек)

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

Розмір стека, який організує в оперативній пам'яті, обмежений лише розмірами цієї пам'яті. Якщо мікроконтроллер містить на кристалі 128 байт внутрішньої SRAM і не має можливості підключення зовнішньої SRAM, то в якості покажчика вершини стека використовується регістр введення / виводу SPL. Якщо є можливість підключення зовнішньої пам'яті або внутрішня пам'ять має розміри 256 байт і більше, то покажчик стека складається з двох регістрів введення / виводу SPL і SPH.

При занесенні числа в стек автоматично виконуються наступні дії:

1. Число записується в комірку пам'яті за адресою, що зберігається в покажчику стека. (SPH: SPL) <- число;

2. Вміст покажчика стека зменшується на одиницю. SPH: SPL = SPH: SPL - 1.

Зворотні дії виконуються при витягу числа з стека:

1. Вміст покажчика збільшується на одиницю. SPH: SPL = SPH: SPL + 1;

2. Число витягується з комірки пам'яті з адресою, що зберігаються в покажчику стека. (SPH: SPL) -> число.

 Таким чином, стек росте від старших адрес до молодших, тому враховуючи, що початкове значення покажчика стека після скидання дорівнює нулю, програміст AVR обов'язково повинен у ініціалізує частини програми подбати про встановлення покажчика стека, якщо він передбачає використовувати хоча б одну підпрограму.

Регістри введення / виводу, також зображені на рис. 1, являють собою набір регістрів управління процесорного ядра і регістрів управління та даних апаратних вузлів AVR-мікроконтролера. Регістрами введення / виводу є згадувані регістри SREG, MCUSR і покажчик стека SPH: SPL а також регістри, що керують системою переривання мікроконтролера, режимами підключення EEPROM пам'яті, сторожовим таймером, портами введення / виводу та іншими периферійними вузлами. Вивчення даних регістрів зручно виконувати одночасно з вивченням конкретного периферійного вузла.

Всі регістри введення / виводу можуть читатися і записуватися через оперативні регістри за допомогою команд IN, OUT (див. групу команд передачі даних). Регістри введення / виводу, що мають адреси в діапазоні $ 00 - $ 1F (знак $ вказує на шістнадцяткову систему числення), мають можливість побітового адресації. Безпосередня установка і скидання окремих розрядів цих регістрів виконується командами SBI і CBI (див. групу команд роботи з бітами). Для ознак результату операції, які є бітами регістра введення / виводу SREG, є цілий набір команд установки і скидання. Команди умовних переходів в якості своїх операндів можуть мати як біти-ознаки результату операції, так і окремі розряди побітне адресуються регістрів введення / виводу.

Регістровий файл, блок регістрів введення / виводу і оперативна пам'ять, як показано на рис. 1, утворюють єдиний адресний простір, що дає можливість при програмуванні звертатися до 32 оперативними регістрів і до регістрів введення / виводу як до комірок пам'яті, використовуючи команди доступу до SRAM (у тому числі і з непрямою адресацією).

На рис. 1 показано розподіл адрес в єдиному адресному просторі. Молодші 32 адреси ($ 0 - $ 1F) відповідають оперативними регістрів. Наступні 64 адреси ($ 20 - $ 5F) зарезервовані для регістрів введення / виводу. Внутрішня SRAM у всіх AVR починається з адреси $ 60.

Таким чином, регістри введення / виводу мають подвійну нумерацію. Якщо використовуються команди IN, OUT, SBI, CBI, SBIC, SBIS, то слід використовувати нумерацію регістрів введення / виводу, що починається з нуля (назвемо її головний). Якщо ж до регістрів введення / виводу доступ здійснюється як до комірок пам'яті, то необхідно використовувати нумерацію єдиного адресного простору оперативної пам'яті даних AVR. Очевидно, що адреса в єдиному адресному просторі пам'яті даних виходить шляхом додавання числа $ 20 до основного адресою регістра введення / виводу.

Слід зазначити, що регістри введення / виводу не повністю використовують відведені для них 64 адреси. Невикористані адреси зарезервовані для майбутніх застосувань, додаткових комірок пам'яті за цими адресами не існує.

Слід також мати на увазі, що у різних типів AVR одні й ті ж регістри введення / виводу можуть мати різні адреси. Для того, щоб забезпечити переносимість програмного забезпечення з одного типу кристалу на інший, слід використовувати в програмі стандартні, прийняті в оригінальній фірмовій документації, символічні імена регістрів введення / виводу, а відповідність цих імен реальним адресами задавати, підключаючи на початку своєї програми (за допомогою директиви асемблера. INCLUDE) файл визначення адрес регістрів введення / виводу.

Файли визначення адрес регістрів введення / виводу мають розширення. Inc. Вони вже створені розробниками фірми ATMEL і вільно розповсюджуються разом з документацією на AVR-мікроконтролери. У цих файлах задається відповідність символічних імен основним адресами регістрів введення / виводу. Якщо для звернення до регістру введення / виводу використовуються команди обміну з SRAM, то до символічного імені необхідно додати число $ 20.

Крім оперативної пам'яті програмно доступними ресурсами мікроконтролера є енергонезалежні, електрично програмувальні FLASH і EEPROM блоки пам'яті, які мають окремі адресні простору.

Тому що всі команди AVR являють собою 16-розрядні слова, FLASH-пам'ять організована як послідовність 16-розрядних осередків і має ємність від 512 слів до 64K слів в залежності від типу кристалу.

Під FLASH-пам'ять, крім програми, можуть бути записані постійні дані, які не змінюються під час функціонування мікропроцесорної системи. Це різні константи, таблиці знакогенератора, таблиці лінеаризації датчиків і т. п. Дані з FLASH пам'яті можуть бути програмним чином лічені в регістровий файл за допомогою команд LPM, ELPM (див. групу команд передачі даних).

Молодші адреси пам'яті програм мають спеціальне призначення. Адреса $ 0000 є адресою, з якого починає виконуватися програма після скидання процесора. Починаючи з наступного адреси $ 0001, комірки пам'яті програм утворюють область векторів переривання. У цій області для кожного можливого джерела переривання відведено свою адресу, за яким (у разі використання даного переривання) розміщують команду відносного переходу RJMP на підпрограму обробки переривання (рис. 1). Слід пам'ятати, що адреси векторів переривання одних і тих же апаратних вузлів для різних типів AVR можуть мати різне значення. Тому для забезпечення переносимості програмного забезпечення зручно, так само як і у випадку з регістрами введення / виводу, використовувати символічні імена адрес векторів переривання, які визначені у відповідному inc-файлі.

EEPROM блок електрично зтирається пам'яті даних AVR призначений для зберігання енергонезалежних даних, які можуть змінюватися безпосередньо на об'єкті. Це калібрувальні коефіцієнти, різні уставки, конфігураційні параметри системи і т. п. EEPROM-пам'ять даних може бути програмним шляхом як зчитана, так і записана. Однак спеціальних команд звернення до EEPROM-пам'яті немає. Читання та запис осередків EEPROM виконується через регістри введення / виводу EEAR (регістр адреси), EEDR (регістр даних) і EECR (регістр управління).

Висновки

 При виконанні цієї лабораторній роботи ознайомилися з особливостями апаратної будови мікроконтролера фірми ATMEL, описом його виводів та експлуатаційними характеристиками.

Перелік посилань

1. ДСТУ 3008-95. Документація. Звіти у сфері науки і техніки. Структура і    правила оформлення. – К.: Видавництво стандартів, 1995. – 37 с.

2. Основи мікропроцесорної техніки: метод. вказівки до викон. лаборатор.       

робіт/ Уклад.: В.Б. Швайченко, К.О. Трапезон, О.П. Чеверда. – К.:     НТУУ “КПІ”, 2008. – 60 с.


 

А также другие работы, которые могут Вас заинтересовать

65027. О локализации золотоордынского города Керман 42.5 KB
  В науке утвердилось мнение о существовании в золотоордынское время города Керман располагавшегося якобы возле деревни Альменьево в нынешней Чувашии который недолгое время чеканил собственную монету. Об этом кладе известно следующее...
65029. К вопросу о генеалогии ханов Золотой Орды в период «Великой Замятни» 249 KB
  Доминантным в комплексе кризисных явлений являлся династический кризис связанный со смертью Бердибека последнего потомка Батухана. После смерти Бердибека теоретически отныне легитимным мог считаться любой правитель нёсший в себе кровь 4 старших сыновей Чингизхана.
65030. О древнейшем типе героя в эпосе тюрко-монгольских народов Сибири 109.5 KB
  В якутском олонхо так же как и в алтайских и бурятских поэмах за указанием эпического времени совпадающего с мифическим следует описание прекрасной страны в которой живет герой но здесь это не просто благодатный уголок земли с прекрасными пастбищами...
65031. Монеты в погребениях Золотой Орды 89 KB
  Аналогичные исследования проводились на материале погребений Древней Руси Потин В. И именно в золотоордынский период с появлением собственного монетного чекана количество погребений с монетами значительно увеличивается...
65032. Их-Засаг - «Великая Яса» 53 KB
  Великая Яса Монголы один из древнейших народов Центральной Азии имеющий богатую историю и внесший свой вклад в развитие мировой цивилизации. Одновременно на Великом курултае в том же году был принята Великая Яса Чингисхана...
65033. Аноним Искандара как генеалогический источник 83.5 KB
  Согласно Анониму в начале своего правления Узбек назначил Сасы Буку сына Нокая правителем улуса Орды. Также интерес вызывают новые данные о правителе улуса Ордаэджена: КалакКубак сын Мангитая Макидая стал правителем улуса в 1320-1321 и еще правил в 1327-1328...
65034. Концепция базы данных “Дипломатические документы постордынских государств Джучиева улуса” 31.5 KB
  Это позволяет рассматривать сохранившиеся архивные материалы как один документальный массив и следовательно пытаться анализировать не отдельные ярлыки и письма а их совокупность проводить формальный анализ именно комплекса документов.
65035. Как называть Золотую Орду? 49.5 KB
  Как называть Золотую Орду Под названием Золотая Орда обычно мы подразумеваем государство существовавшее в XIII XV веках на обширной территории с центром в Нижнем Поволжье. Золотая Орда в мировой геополитике играла ведущую роль.