Побудова цифрових пристроїв на МК та ПЛІС
Таблиця. 2.1 — Конфігурація виводів портів Стан виведення мікроконтролера (незалежно від установок біта DDхn) може бути отримано шляхом читання біта PIN хn регістра PIN x. При цьому слід пам’ятати, що між дійсним зміною сигналу на виводі та зміною біта PINxn існує затримка. Ця затримка вноситься вузлом синхронізації, що складається, як показано на Рис. 6.1, з біта PINxn і додаткового… Читати ще >
Побудова цифрових пристроїв на МК та ПЛІС (реферат, курсова, диплом, контрольна)
" Побудова цифрових пристроїв на МК та ПЛІС"
Вступ
Для виконання курсової роботи, ми використовуємо мікроконтролер AVR сімейства Mega. Це 8-бітний мікроконтролер з RISC-архітектурою. Він має у своєму складі пам’ять, що електрично стирається для програм (FLASH) і даних (EEPROM), а також різноманітні периферійні пристрої. Слід зазначити, що набір периферійних пристроїв в мікроконтролерах сімейства Mega значно багатший, ніж в мікроконтролерах сімейства Tiny. Більш того, склад цих пристроїв від моделі до моделі практично не змінюється (змінюється тільки кількість однотипних модулів і їх функціональні можливості). В будь-якої моделі є хоча б по одному 8- і 16-бітному таймеру / лічильнику, хоча б по одному інтерфейсному модулю USART і SPI, аналоговому компаратору, сторожовому таймеру і, звичайно, порти введення / виводу. До пристроїв, які присутні не у всіх моделях сімейства Mega, відносяться АЦП, модуль двопровідного інтерфейсу TWI (TwoWireInterface, аналог шини 12С), а також модулі інтерфейсів JTAG і debugWire. Структурна схема мікроконтролера ATmega8515x приведена на Рис. 1. Його особливостями є: * 5 портів введення / виводу (порти A … D — 8-бітові, порт Е — 3-бітний);
* можливість підключення зовнішнього ОЗУ;
* один 8-бітний (ТО) і один 16-бітний (Т1) таймер / лічильник;
* 3 канали ШИМ;
* по одному інтерфейсному модулю USART і SPI.
Рис. 1 Структурна схема мікроконтролера ATmega8515x .
Як і всі мікроконтролери AVR фірми Atmel, мікроконтролери сімейства Mega є 8-бітними мікроконтроллерами, призначеними для використання у вбудованих додатках. Вони виготовляються за мало споживною КМОП-технологією, яка в поєднанні з удосконаленою RISC-архітектурою дозволяє досягти найкращого співвідношення вартість / швидкодія / енергоспоживання. Мікроконтролери описуваного сімейства є найбільш розвиненими представниками мікроконтролерів AVR загального застосування.
До особливостей мікроконтролерів AVR сімейства Mega можна віднести:
* FLASH-пам'ять програм обсягом від 8 до 256 Кбайт (число циклів стирання / запису не менше 10 000);
* оперативна пам’ять (статичне ОЗУ) об'ємом від 512 байт до 8 Кбайт;
* пам’ять даних на основі РПЗПЕС (EEPROM) обсягом від 256 байт до 4 Кбайт (число циклів стирання / запису не менше 100 000);
* можливість захисту від читання і модифікації пам’яті програм і даних;
* можливість програмування безпосередньо в системі через послідовні інтерфейси SPI і JTAG;
* можливість самопрограмування;
* можливість внутрішньосхемного налагодження відповідно до стандарту IEEE 1149.1 (JTAG), а також наявність власного однопровідного інтерфейсу внутрішньосхемною налагодження debugWire1 ;
різноманітні способи синхронізації: вбудований RC-генератор з внутрішньої або зовнішньої времязадающей RC-ланцюжком, вбудований генератор із зовнішнім кварцовим або п'єзокерамічним резонатором, зовнішній сигнал синхронізації;
* наявність декількох режимів зниженого енергоспоживання;
* наявність детектора зниженого напруги харчування (Brown-Out Detector — BOD);
* можливість програмного зниження частоти тактового генератора.
1.Архітектура ядра
Ядро мікроконтролерів AVR сімейства Mega виконано за вдосконаленою RISC-архітектурі (enhanced RISC) (Рис. 1.1), в якій використовується ряд рішень, спрямованих на підвищення швидкодії мікроконтролерів.
Арифметико-логічний пристрій (АЛП), що виконує всі обчислення, увімкнений у 32 робочих регістрів, об'єднаним в регістровий файл. Завдяки цьому, АЛУ може виконувати одну операцію (читання вмісту регістрів, виконання операції і запис результату назад в регістровий файл) за такт. Крім того, практично кожна з команд (за винятком команд, у яких одним з операндів є 16-бітний адресу) займає одну комірку пам’яті програм.
У мікроконтролерах AVR реалізована Гарвардська архітектура, що характеризується роздільною пам’яттю програм і даних, кожна з яких має власні шини доступу. Така організація дозволяє одночасно працювати як з пам’яттю програм, так і з пам’яттю даних. Поділ інформаційних шин дозволяє використовувати для кожного типу пам’яті шини різної розрядності, причому способи адресації і доступу до кожного типу пам’яті також різняться. У поєднанні з двох рівневим конвеєром команд така архітектура дозволяє досягти продуктивності в 1 MIPS на кожен МГц тактової частоти.
Рис. 1.1Архітектура ядра мікроконтролерів AVR
Таблиця. Центральний процесор
Варіант | Функція | A | B | C | Sgn | |
R9 | ||||||
Позачення: у — задана функція; х = 0 …7; А, В, С — константи; sgn — адреса зберігання знаків результату.
Рис. Алгоритм розв’язання задачі, результати обчислень у контрольних точках та програму для обчислення функції мовою асемблера При Х=2:
Рис. Результати транслювання і налагодження в пакеті AVR Studio з вікнами, які відображають отримані дані
Результати обчислень у контрольних точках збережені до комірок пам’яті 150.157, та регістрів R17. R10.
При Х=0:
При Х=1:
При Х=2:
При Х=3:
При Х=4:
При Х=5:
При Х=6:
При Х=7:
Рис. Графік функції з порівнянням результатів у контрольних точках
1.1 Використані команди з лістингу та приклади на їх застосування
Команди використані під час написання програми:
brpl — Branchifplus — Перейти, якщо плюс, інакше…
dec — Decrement — Декремент
mul — Multiply Unsigned — Множеннябеззнакове
st — Store Indirect — Запис непрямий по індексному регістру Z [або Y, або X] rjmp — Relative Jump — Відносний перехід
brge — Перехід (до позначки) якщо більше або дорівнює з урахуванням знаку інакше вихід з циклу.
lsr-Логычний зсув праворуч
neg — Two’s Complement — Доповнення
sub — Subtract with out Carry — Віднімання без перенесення
ldi — Load Immediate — Завантаження безпосереднє
or — Logical OR — Логічне АБО
mov — Move Betwen Registes — Копіювання регістра
nop — No Operation — Порожня команда.
Приклади:
brpl MEM
decxi
mul B, xi
stZ, R0
rjmp END
brge MAIN
lsrmsk neg R0
sub R0
tmp ldi A A0
orsgn, msk
movtmp, R0
2. Порти введення-виведення
мікроконтролер цифровий програма
Кожен порт мікроконтролерів складається з певного числа виводів, через які мікроконтролер може здійснювати прийом і передачу цифрових сигналів. Завдання напрямку передачі даних через будь-який контакт введення / виведення може бути вироблено програмно в будь-який момент часу.
Вихідні буфери всіх портів, маючи симетричні навантажувальні характеристики, забезпечують високу здатність навантаження при будь-якому рівні сигналу. Навантажувальної здатності досить для безпосереднього управління світлодіодними індикаторами.
Вхідні буфери всіх виводів побудовані по схемі тригера Шмітта. Для всіх входів є можливість підключення внутрішнього підтягуючого резистора між входом і шиною живлення Ксс.
Відмінною особливістю портів мікроконтролерів сімейства Mega (як і всіх мікроконтролерів AVR) при використанні їх як цифрових портів введення / виведення загального призначення є реалізація істинної функціональності «читання / модифікація / запис». Завдяки цьому можна виконувати операції над будь-яким виводом (за допомогою команд SBI і CBI), не впливаючи на інші виводи порту. Це відноситься до зміни режиму роботи контакту введення / виведення, до зміни стану вихідного буфера (для виводів) і до зміни стану внутрішнього підтягуючого резистора (для входів).
Мікроконтролери різних моделей сімейства мають різне число портів і відповідно контактів введення / виведення. Ці дані наведені в Табл. 2.
Звернення до портів проводиться через регістри введення / виведення. Під кожен порт в адресному просторі вводу / виведення зарезервовано по 3 адреси, за якими розміщені наступні регістри: регістр даних порту PORT *, регістр напрями даних DDRx і регістр виводів порту PIN *. Дійсні назви регістрів виходять підстановкою назви порту замість символах. Відповідно, регістри порту, А називаються PORTA, DDRA, PINA, порту В — PORTB, DDRB, PINB і т. Д. Оскільки за допомогою регістрів PINx здійснюється доступ до фізичним значенням сигналів на висновках порту, вони доступні тільки для читання, тоді як інші два регістра доступні і для читання, і для запису. Проте, в нових моделях мікроконтролерів (всі моделі, крім АТmega8515х / 8535х, АТmega8х / 16х / 32х / 64х / 128х і АТте§ а162х) запис 1 в біт регістра PINх призводить до перемикання стану відповідного біта регістра даних PORTх .
Табл. 2. — Порти введення-виведення мікроконтролерів сімейства Mega
2.1 Конфігурація портів введення / виведення
Спрощена структурна схема одного з каналів порту введення / виведення РХП при роботі його в якості цифрового входу / виходу загального призначення приведена на Рис. 2. Кожному виводу порту відповідають три біта регістрів вводу / виводу: PORTxn (реєстр PORTх), DDxn_ _ (реєстр _) і PINxn (реєстр PINx). Дійсні назви бітів регістрів виходять підстановкою назви порту замість символах і номера біта замість символу n. Порядковий номер виведення порту відповідає порядковому номеру біта регістрів цього порту. Тому, якщо розрядність порту менше восьми, регістрах порту використовується відповідне число молодших бітів. Незадіяні старші біти регістрів доступні тільки для читання завжди містять 0. Біт DDxn регістра DD x визначає напрямок передачі даних через контакт введення / виведення Якщо цей біт встановлений в 1, то n-й вивід порту є виходом, якщо ж скинутий в 0 — входом. Біт PORTxn регістра PORTх виконує подвійну функцію. Якщо висновок функціонує як вихід (DDxn = 1), то цей біт визначає стан виведення порту. Якщо біт встановлений в 1, на виводі встановлюється напруга високого рівня. Якщо біт скинуто в 0, на виводі встановлюється напруга низького рівня.
Рис. 2. Структурна схема каналу введення / виведення Якщо ж вивід функціонує як вхід (DDxn = 0), то біт PORTхn визначає стан внутрішнього підтягуючого резистора для даного виводу. При установці біта PORTхn в 1 підтягуючий резистор підключається між виводом мікроконтролера і лінією живлення.
Взагалі кажучи, управління підтягуючими резисторами у всіх мікроконтролерах сімейства здійснюється на двох рівнях. Загальне управління (для всіх виводів портів) здійснюється бітом PUD регістра спеціальних функцій SFIOR або регістра управління мікроконтролера MCUCR (залежно від моделі). В моделях ATmega64x і ATmegal28x регістр SFIOR розташовується за адресою $ 20 ($ 40), а в інших моделях — за адресою $ 30 ($ 50). Регістр MCUCR розташовується за адресою $ 35 ($ 55). Формати цих регістрів наведені на Рис. 2.1.
Рис. 2.1. — Регістри підтягування SFIOR (а) та MCUCR (б).
Якщо біт PUD скинутий в 0 (початковий стан), то стан підтягаючих резисторів буде визначатися станом бітів PORT n x для кожного входу порту. Якщо ж біт PUD встановлений в 1, підтягує резистори відключаються від всіх висновків мікроконтролера.
Зверніть увагу, що при перемиканні виведення між третім станом (DDхп = 0, PORTхn = 0) і станом ВИСОКОГО рівня (DDхn = 1, PORT x n= 1) відбувається перехід через одне з проміжних станів: або включається подтягивающий резистор (DDxn = 0, PORT x n = 1), або вихід перемикається в стан низького рівня (DDxn = 1, PORTxn = 0). Найбільш придатним є, як правило, перший варіант, оскільки для високоімпедансних систем байдуже, яким чином формується ВИСОКИЙ рівень. Якщо в якому-небудь випадку це не підходить, користувач може відключити підтягуючі резистори від усіх портів установкою біта PUD в 1.
Аналогічна ситуація виникає і при перемиканні між станом з включеним підтягуючим резистором (DDxn = О, PORTхn = 1) і станом низького рівня (DDхn = 1, РОЯТхn = 0). В цьому випадку проміжним станом є або високоімпедансное стан (DDx / j = 0, PORTx n = 0), або стан ВИСОКОГО рівня (DDxn = 1, PORTxn = 1).
Всі можливі поєднання станів керуючих бітів і відповідно конфігурації виводів портів приведені в Табл. 2.1.
Таблиця. 2.1 — Конфігурація виводів портів Стан виведення мікроконтролера (незалежно від установок біта DDхn) може бути отримано шляхом читання біта PIN хn регістра PIN x. При цьому слід пам’ятати, що між дійсним зміною сигналу на виводі та зміною біта PINxn існує затримка. Ця затримка вноситься вузлом синхронізації, що складається, як показано на Рис. 6.1, з біта PINxn і додаткового тригера-засувки. Значення сигналу на виводі мікроконтролера фіксується тригером-засувкою при низькому рівні тактового сигналу і переписується потім в біт РINxn по наростаючому фронту тактового сигналу. Відповідно, величина затримки може складати від 0.5 до 1.5 періодів системного тактового сигналу. З цієї ж причини між операціями зміни і повторного зчитування станів виводу необхідно вставляти команду NOP. Оскільки команда OUT встановлює сигнал «SYNC LATCH» в 1 по позитивному фронту тактового сигналу, затримка в цьому випадку дорівнює одному періоду тактового сигналу.
Таблиця
Варіант | SW | Rsw | LED | Режим | Rреж | Інд.реж | |
PE[2.0] | Rзовн | PВ[2.0] | РС0 | Rвнутр | РС7 | ||
Позначення:
SW — входи, з'єднані з кнопками керування світлодіодами для дослідження деренчання контактів; Rsw — підтягувальні резистори на цих входах;
LED — виходи, з'єднані зі світлодіодами для дослідження деренчання контактів;
Режим — вхід, з'єднаний з кнопкою для вибору режиму з деренчанням / без деренчання контактів; Rреж — підтягувальний резистор на цьому вході;
Інд.реж. — вихід, з'єднаний з СД індикації режиму з деренчанням / без деренчання контактів;
Rвнут — на входах внутрішні підтягувальні резистори.
Рис. Схема з'єднань входів МК з кнопками керування світлодіодами і режимом та виходів МК зі світлодіодами для дослідження деренчання контактів і для індикації режиму Рис. Програма мовою асемблера з ініціалізацією портів і дослідженням режимів з деренчанням та без деренчання контактів.
Результати налагодження в пакеті AVR Studio з вікнами, які відображають зміни в РВВ керування портами введення-виведення під час ініціалізації і дослідження режимів.
Рис. Режим з деренчанням контактів Рис. Режим без деренчання контактів
3. Нові (відносно п. 1) з використаних команд лістингу та приклади на їх застосування
Команди використані під час написання програми
sbi — SetBitinI/ORegister — Установлення біта в РВВ
sbrs — Skipif Bitin Registeris Set — Пропускання, якщо біт у регістрі встановлено in — InPort — Уведення до регістра з порту
out — OutPort — Виведення до порту з регістра
rjmp — Relative Jump — Відносний перехід
breq — Branchif Equal — Перехід до (.), якщо дорівнює
cbi — Clear BitinI/ ORegister — Очищення біта в РВВ
cpi — Compare with Immediate — Порівняння з константою
mov — Move Betwen Registes — Копіювання регістра
cpse — Compare Skipif Equal — Порівняння і пропускання, якщо дорівнює ser — Setallbitsin RegisterУстановлення регістра
Приклади:
sbi PORTE, 0 sbrsbut, 0 intmp, PIND
out PORTB, tmp rjmpL0
breq TEST
sbi PORTE, 0
cpitmp,$FF
movbut, tmp
cpsetmp, but
ser led
4. ОЗП, стек
Схему з'єднань входів МК з кнопками та виходів МК зі світлодіодами для відображення операцій.
Програму мовою асемблера з ініціалізацією стеку і дослідженням арифметичних і логічних операцій.
Таблиця
Варіант | Операція | Параметри | Області пам’яті | |
Установити і зінвертувати | nbt=105, і=1,3,5,7 | ОЗП-РФ | ||
Рис.
Рис.
4.1 Результати налагодження в пакеті AVR Studio з вікнами, які відображають зміни в області даних ОЗП і зокрема в області стеку та в РВВ портів під час виконання підпрограм і дослідження операцій
РВВ портів:
Рис.
4.2 Нові (відносно п. 1) з використаних команд лістингу та приклади на їх застосування
Команди використані під час написання програми:
andi — Logical AND with Immediate — Логічне Із константою
mul — Multiply Unsigned — Mноження без знакове
ori — Logical OR with Immediate — Логічне АБО з константою
sbrs — Skipif Bitin Registeris Set — Пропускання, якщо біт у регістрі встановлено
st — Store In direct — Запис непрямий по індексному регістру Z [або Y, або X]
comOne’s Complement — Інверсія
eor — Exclusive OR — Виключне АБО in — InPort — Уведення до регістра з порту
out — Out Port — Виведення до порту з регістра
rjmp — Relative Jump — Відносний перехід set — Set T
Flag — Установити прапор Т breq — Branchif Equal — Перехід до (.), якщо дорівнює
inc — Increment — Інкремент
pop — Pop Register from StackЗчитування регістра зі стеку ld — Load Indirect — Завантаження непряме по індексному регістру Z [або Y, або X]
neg — Two’s ComplementДоповнення
push — Push Registeron StackЗапис регістра до стеку
sbiw — Subtract Immediate from Word — Віднімання безпосереднє слова
clt — Установлення ознаки циклу
cpi — Compare with Immediate — Порівняння з константою
mov — Move Betwen Registes — Копіювання регістра
rcallRelative Callto Subroutine — Відносний виклик ПП
subi — Subtract Immediate — Віднімання безпосереднє
brne — Branchif Not Equal — Перехід, якщо не дорівнює (.), інакше вихід з циклу
ldi — Load Immediate — Завантаження безпосереднє
ret — Return from Subroutine — Поверненняз ПП
ser — Setall bitsin RegisterУстановлення регістра
Приклади:
Рис.
Висновок
При виконанні даної курсової роботи я освоїв таку мову програмування, як Assembler, навчився складати програми. Я дослідив функції центрального процесора, портів введення-виведення, ОЗП та стеку.
При виконанні курсової роботи я навчився складати програми різної складності та працювати з портами, які потрібні для зміни вхідних даних. При виконанні третього завдання я дослідив залежність вихідних даних у портах при зміні вхідних даних, а саме реакція центрального процесора на виконання логічної операції АБО-НЕ. В курсовій роботі я вказав результати налагодження в пакеті AVR Studio з вікнами, які відображають зміни в області даних ОЗП і окрема в області стеку та в РВВ портів під час виконання підпрограм і дослідження операцій, а також основні вікна інтерфейсу STK 500, налаштовані на запис до МК варіанту програми.
1.