Разработка микропроцессорной системы
Как видно из рис. 1.2 и 1.3, 32 регистра общего назначения (РОН) включены в сквозное адресное пространство ОЗУ данных и занимают младшие адреса. Хотя физически регистры выделены из памяти данных, такая организация обеспечивает гибкость в работе. Регистры общего назначения прямо связаны с АЛУ. Каждый из регистров способен работать как аккумулятор. Большинство команд выполняются за один такт, при… Читать ещё >
Разработка микропроцессорной системы (реферат, курсовая, диплом, контрольная)
Курсовая работа
" Разработка микропроцессорной системы"
Целью данного курсового проекта является углубление знаний по аппаратным принципам построения устройств микропроцессорной техники и приобретение практических навыков по разработке микропроцессорных систем и их программного обеспечения.
Проектирование микропроцессорной системы заключается в обеспечении управления необходимыми шинами микропроцессорного устройства с учетом требуемой нагрузочной способности. Нагрузочная способность обеспечивается буферными регистрами и шинными формирователями, при этом необходимо различать статистическую и динамическую нагрузки.
микропроцессорный система микросхема
Задание на курсовой проект
Исходные данные: спроектировать микропроцессорное устройство, содержащее: МП ATmega64.
Дополнительные требования: клавиатура, индикация — индикатора JE-AN16202.
1. Структура микроконтроллера ATMega
1.1. Назначение выводов
На рис. 1.1 изображен корпус и приведено назначениевыводов микроконтроллера. В скобках указана альтернативная функция вывода.
Микроконтроллер ATmega64 включает следующие функциональные блоки:
— 8-разрядное арифметическо-логическое устройство (АЛУ);
— внутреннюю флэш-память программ объемом 64 Кбайт с возможностью внутрисистемного программирования через последовательный интерфейс;
— 32 регистра общего назначения;
— внутреннюю EEPROM память данных объемом 4 Кбайт;
— внутреннее ОЗУ данных объемом 4 Кбайт;
— 6 параллельных 8-разрядных портов;
— 4 программируемых таймера-счетчика;
— 10-разрядный 8-канальный АЦП и аналоговый компаратор;
— последовательные интерфейсы UART0, UART0, TWI и SPI;
— блоки прерывания и управления (включая сторожевой таймер).
Рис. 1. Вид корпуса и обозначение выводов микроконтроллера ATmega64.
Port A (PA7.PA). 8-разрядный двунаправленный порт. К выводам порта могут быть подключены встроенные нагрузочные резисторы (отдельно к каждому разряду). Выходные буферы обеспечивают ток 20 мА и способность прямо управлять светодиодным индикатором. При использовании выводов порта в качестве входов и установке внешнего сигнала в низкое состояние, ток будет вытекать только при подключенных встроенных нагрузочных резисторах. Порт, А при наличии внешней памяти данных используется для организации мультиплексируемой шины адреса/данных.
Port B (PB7.PB0). 8-разрядный двунаправленный порт со встроенными нагрузочными резисторами. Выходные буферы обеспечивают ток 20 мА. При использовании выводов порта в качестве входов и установке внешнего сигнала в низкое состояние, ток будет вытекать только при подключенных встроенных нагрузочных резисторах. Порт В используется также при реализации специальных функций.
Port C (PC7.PC0). Порт С является 8-разрядным выходным портом. Выходные буферы обеспечивают ток 20 мА. Порт C при наличии внешней памяти данных используется для организации шины адреса.
Port D (PD7.PD0). 8-разрядный двунаправленный порт со встроенными нагрузочными резисторами. Выходные буферы обеспечивают ток 20 мА. При использовании выводов порта в качестве входов и установке внешнего сигнала в низкое состояние, ток будет вытекать только при подключенных встроенных нагрузочных резисторах.
Port Е (PЕ7.PЕ0). 8-разрядный двунаправленный порт со встроенными нагрузочными резисторами. Выходные буферы обеспечивают ток 20 мА. При использовании выводов порта в качестве входов и установке внешнего сигнала в низкое состояние, вытекающий через них ток обеспечивается только при подключенных встроенных нагрузочных резисторах. Порт E используется также при реализации специальных функций.
Port F (PF7.PF0). 8-разрядный входной порт. Входы порта используются также как аналоговые входы аналого-цифрового преобразователя.
#RESET. Вход сброса. Для выполнения сброса необходимо удерживать низкий уровень на входе более 50 нс.
XTAL1, XTAL2. Вход и выход инвертирующего усилителя генератора тактовой частоты.
TOSC1, TOSC2. Вход и выход инвертирующего усилителя генератора таймера/счетчика.
#WR, #RD. Стробы записи и чтения внешней памяти данных.
ALE. Строб разрешения фиксации адреса внешней памяти. Строб ALE используется для фиксации младшего байта адреса с выводов AD0-AD7 в защелке адреса в течение первого цикла обращения. В течение второго цикла обращения выводы AD0-AD7 используются для передачи данных.
AVCC. Напряжение питания аналого-цифрового преобразователя. Вывод подсоединяется к VCC через низкочастотный фильтр.
AREF. Вход опорного напряжения для аналого-цифрового преобразователя. На этот вывод подается напряжение в диапазоне между AGND и AVCC. AGND. Это вывод должен быть подсоединен к отдельной аналоговой земле, если она есть на плате. В ином случае вывод подсоединяется к общей земле.
#PEN. Вывод разрешения программирования через последовательный интерфейс. При удержании сигнала на этом выводе на низком уровне после включения питания, прибор переходит в режим программирования по последовательному каналу.
VСС, GND. Напряжение питания и земля.
1.2 Организация памяти и портов ввода/вывода
Микроконтроллеры AVR имеют раздельные пространства адресов памяти программ и данных (гарвардская архитектура). Организация памяти МК ATMega64 показана на рис. 1.2.
Рис. 2. Организация памяти микроконтроллера ATmega64
Высокие характеристики семейства AVR обеспечиваются следующими особенностями архитектуры:
* В качестве памяти программ используется внутренняя флэш-память. Она организована в виде массива 16-разрядных ячеек и может загружаться программатором, либо через порт SPI;
* 16-разрядные память программ и шина команд вместе с одноуровневым конвейером позволяют выполнить большинство инструкций за один такт синхрогенератора (50 нс при частоте FOSC=20 МГц);
* память данных имеет 8-разрядную организацию. Младшие 32 адреса пространства занимают регистры общего назначения, далее следуют 64 адреса регистров ввода-вывода, затем внутреннее ОЗУ данных объемом до 4096 ячеек. Возможно применение внешнего ОЗУ данных объемом до 60 Кбайт;
* внутренняя энергонезависимая память типа EEPROM объемом до 4 Кбайт представляет собой самостоятельную матрицу, обращение к которой осуществляется через специальные регистры ввода-вывода.
Как видно из рис. 1.2 и 1.3, 32 регистра общего назначения (РОН) включены в сквозное адресное пространство ОЗУ данных и занимают младшие адреса. Хотя физически регистры выделены из памяти данных, такая организация обеспечивает гибкость в работе. Регистры общего назначения прямо связаны с АЛУ. Каждый из регистров способен работать как аккумулятор. Большинство команд выполняются за один такт, при этом из регистров файла могут быть выбраны два операнда, выполнена операция и результат возвращен в регистровый файл. Старшие шесть регистров могут использоваться как три 16-разрядных регистра, и выполнять роль, например, указателей при косвенной адресации.
Рис. 3. Регистры общего назначения микроконтроллера ATmega64
Следующие 64 адреса за регистрами общего назначения занимают регистры ввода-вывода (регистры управления/состояния и данныхПри использовании команд IN и OUT используются адреса ввода-вывода с $ 00 по $3 °F. Но к регистрам ввода-вывода можно обращаться и как к ячейкам внутреннего ОЗУ. При этом к непосредственному адресу ввода-вывода прибавляется $ 20. Адрес регистра как ячейки ОЗУ приводится далее в круглых скобках. Регистры ввода-вывода с $ 00 ($ 20) по $1 °F ($ 3F) имеют программно доступные биты. Обращение к ним осуществляется командами SBI и CBI, а проверка состояния — командами SBIS и SBIC. В таблице B1 приведен список регистров ввода-вывода.
Таблица 1. Некоторые регистры ввода-вывода микроконтроллера ATmega64
Название | Функция | |
PORTG | Регистр данных порта G | |
DDRG | Регистр направления данных порта G | |
PING | Выводы порта G | |
PORTF | Регистр данных порта F | |
DDRF | Регистр направления данных порта F | |
SREG | Регистр состояния | |
SPH | Указатель стека, старший байт | |
SPL | Указатель стека, младший байт | |
TIMSK | Регистр маски прерываний от таймеров/счетчиков | |
TIFR | Регистр флагов прерываний от таймеров/счетчиков | |
MCUCR | Регистр управления микроконтроллером | |
MCUCSR | Регистр управления и состояния микроконтроллера | |
TCCR0 | Регистр управления таймером/счетчиком Т0 | |
TCNT0 | Счетный регистр таймера/счетчика Т0 | |
OCR0 | Регистр совпадения таймера/счетчика Т0 | |
ASSR | Регистр состояния асинхронного режима | |
TCCR1A | Регистр управления, А таймера/счетчика Т1 | |
PORTA | Регистр данных порта А | |
DDRA | Регистр направления данных порта А | |
PINA | Выводы порта А | |
PORTB | Регистр данных порта В | |
DDRB | Регистр направления данных порта В | |
PINB | Выводы порта В | |
PORTC | Регистр данных порта С | |
DDRC | Регистр направления данных порта С | |
PINC | Выводы порта С | |
PORTD | Регистр данных порта D | |
DDRD | Регистр направления данных порта D | |
PIND | Выводы порта D | |
SPDR | Регистр данных SPI | |
SPSR | Регистр состояния SPI | |
SPCR | Регистр управления SPI | |
ACSR | Регистр управления и состояния аналогового компаратора | |
ADMUX | Регистр управления мультиплексором АЦП | |
ADCSRA | Регистр управления и состояния АЦП | |
ADCH | Регистр данных АЦП, старший байт | |
ADCL | Регистр данных АЦП, младший байт | |
PORTE | Регистр данных порта Е | |
DDRE | Регистр направления данных порта Е | |
PINE | Выводы порта Е | |
PINF | Выводы порта F | |
Рис. 4 — Блок-схема микроконтроллера Atmega64
2. Микросхемы памяти
Микросхема ОЗУ приведена на рис. 13.
Рис. 13 УГО микросхемы КР565РУ1А
Назначение выводов
1 — напряжение питания (-Uп3);
2, 3, 4, 8, 9, 10, 13, 14, 15, 19, 20, 21 — входы адресные А0… А11;
5 — вход сигнала выбора микросхемы;
6 — вход информационный;
7 — выход информационный;
11 — напряжение питания (Uп2);
12— вход сигнала выбор режима;
16 — свободный;
17 — вход сигнала разрешения;
18 — напряжение питания (Uп1);
22 — общий.
ИС имеет три источника питания, первым подключают и последним отключают источник питания Uп3 = -5 В, так как он подается на подложку (кристалл), в противном случае может произойти тепловой пробой под воздействием двух других источников питания Uп1 и Uп2. Режим регенерации осуществляют по циклу считывания или считывания-модификации-записи при выполнении условия CS = 1, обеспечивающего блокировку информационных входов и выходов микросхемы и возможность работать ей «на себя». Выход микросхемы в это время находится в Z-состоянии. После включения питания нормальный режим функционирования устанавливается через восемь циклов.
Микросхема ПЗУ приведена на рис. 14.
Рис. 14 УГО микросхемы КР1601РР1
A0 ё A9 — входы адреса
D0 ё D3 — входы / выходы данных
CS — выбор кристалла
RD — вход сигнала считывания
PR — вход сигнала программирования
ER — вход сигнала стирания
UPR -вход напряжения программирования Режимы работы микросхемы представлены в таблице 1.
Таблица 1
CS | ER | PR | RD | A0ёA9 | UPR | D1/0 | Режим | |
X | X | X | X | X | Roff | Хранение | ||
X | — 33ё-31 B | X | Общее стирание | |||||
A | —//-; | X | Избирательное стирание | |||||
A | —//-; | D1 | Запись данных | |||||
A | — 33ё5 B | D0 | Считывание | |||||
2.1 Карта распределения адресного пространства памяти
B000h | ПЗУ | |
A000h | ||
9FFFh | ОЗУ | |
9ВFFh | ||
Рис. 15. Карта распределения адресного пространства Согласно приведенной карте адресного пространства 1 Кб ОЗУ расположен c адреса 9BFFh, а 4 Кб ПЗУ с адреса A000h.
2.2 Селектор ОЗУ
Таблица. Микросхема ОЗУ, объёмом 1Кбайт, будет занимать ячейки памяти с 9BFFдо 9FFF, что соответствует адресу 1001 1ххх хххх хххх.
A15 | A14 | A13 | А12 | А11 | А10 | А9 | А8 | А7 | А6 | А5 | А4 | А3 | А2 | А1 | А0 | |||
Х | Х | Х | Х | Х | Х | Х | Х | Х | Х | Х | ||||||||
в остальных случаях | ||||||||||||||||||
2.3 Селектор ПЗУ
ПЗУ объёмом 4Кбайт занимает ячейки памяти с A000 до B000, что соответствует адресу 101x xххх хххх хххх.
Таблица
A15 | A14 | A13 | А12 | А11 | А10 | А9 | А8 | А7 | А6 | А5 | А4 | А3 | А2 | А1 | А0 | |||
X | X | Х | Х | Х | Х | Х | Х | Х | Х | Х | Х | Х | ||||||
Адресное пространство ОЗУ и ПЗУ удобно сделать на дешифраторе 3 в 8 К555ИД7.
Рис. 16. Адресный селектор памяти Где на входы подаются сигналы PC5, PC6, PC7. Так как по ним можно точно определить какая именно микросхема будет задействована: вывод 11 — микросхема ОЗУ; вывод 10 — микросхема ПЗУ.
3. Индикация
JE-AN 16 202
Характеристики? Режим отображения: STN / TN, прямой / обратный тип отображения? Формат экрана: 16 символов * 2 строки? Метод передачи: 1/16 Duty, ¼ Bias? Направление обзора: 6 O `clock/12 O’clock? Заднее освещение: LED / EL блок Таблица. Механические характеристики
Параметр | Спецификация | Ед. изм. | |
Размер модуля (Ш х В х Г) | 80.0×36.0×15.0(10) Max. | мм | |
Видимая область (Ш х H/) | 64.5×13.8 | мм | |
Размер шрифта (Ш х В) | 5.0×7.0 | точка | |
Размер символа (Ш х В) | 2.95×3.8 | мм | |
Размер шага (Ш х В) | 3.65×5.05 | мм | |
Размер точки (Ш х В) | 0.55×0.5 | мм | |
Вес | Около 100 г | г | |
Таблица. Назначение контактов
Номер контакта | Символ | Уровень | Функция | |
VSS (GND) | 0 V | Земля | ||
VDD (VCC) | + 5V | Напряжение питания логики | ||
V0 | ; | Напряжения питания ЖК | ||
RS | H / L | H: Ввод данных L: Ввод инструкций | ||
R / W | H / L | H: Чтения данных L: Запись данных | ||
E | H, H L | Сигнал разрешения | ||
DB0 | H / L | Шина данных | ||
DB1 | H / L | |||
DB2 | H / L | |||
DB3 | H / L | |||
DB4 | H / L | |||
DB5 | H / L | |||
DB6 | H / L | |||
DB7 | H / L | |||
NC | ; | |||
NC | ; | |||
Блок схема Рис Схема подключения питания Рис. VDD — VO: Напряжение питания LCD
Таблица. Наборы инструкций
Инструкция | Код | Описание | Время запуска (макс.) | ||||||||||
RS | R/W | DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DB0 | ||||
Очистка дисплея | 1.52 мс | ||||||||||||
Сброс | * | Возвращает дисплей при переключении | 1.52 мс | ||||||||||
Режим записи | I/D | SH | 37 мкс | ||||||||||
Управление дисплеем Вкл / Выкл | D | C | B | 37 мкс | |||||||||
Отображение курсора или дисплея | S/C | R/L | * | * | 37 мкс | ||||||||
Начало работы | DL | N | F | * | * | 37 мкс | |||||||
Установить CG Ram адрес | ACG | 37 мкс | |||||||||||
Установить DD RAM адрес | ADD | 37 мкс | |||||||||||
Чтение флага «занят» и адреса | BF | 0 мкс | |||||||||||
Запись данных в CG или DD RAM | AC | 43 мкс | |||||||||||
Чтение данных из CG или DD RAM | чтение | 43 мкс | |||||||||||
Таблица
Замечания | |||||
I/D | увеличение | уменьшение | |||
SH | включить полный сдвиг | выключить полный сдвиг | |||
S/C | Сдвиг дисплея | Установка курсора | |||
R/L | сдвиг вправо | сдвиг влево | |||
DL | Биты | Биты | |||
N | Линии | Линии | |||
F | 5 х 11 Точек | 5 х 8 точек | |||
BF | Действующий внутренне | Может принимать инструкции | |||
DD RAM Отображение данных оперативной памяти CG RAM: Генератор символов RAM
ACG: CG RAM Адрес ADD: CG RAM Адрес: Соответствует адресу курсора AC: Используется счетчик адреса для DD и CG RAM адреса ?: никакого эффекта.
Таблица. Символы шрифта Рис
4. Расчет потребляемой устройством мощности
Таблица
Микросхема | Ток потребления, мА | Потребляемая мощность, мВт | Количество | |
ATmega64 | ||||
К555ИД7 | 9,7 | |||
КР1601РР1 | ||||
КР565РУ1А | ||||
JE-AN16202 | 1.4 | |||
КР580ИР82 | ||||
КР580ВА86 | ||||
К155ЛЕ1 | 64,8 | |||
К500ЛЕ106Е | 34,23 | |||
Для определения мощности, потребляемой устройством, необходимо просуммировать мощности, потребляемые каждым элементом в отдельности:
.
Максимальная мощность (клавиши нажаты), рассеиваемая на резисторах R1-R3, сопротивлением кОм:
мВт.
Значит мощность, потребляемая устройством:
мВт.
В качестве источника питающего напряжения можно применить любые маломощные трансформаторы на напряжения 220 / 3.3 V с использованием микросхемы-стабилизатора напряжения Б5−43, обеспечивающую максимальный ток на выходе до 1,99 А и позволяющей подключить нагрузку потребляющую до 150 Вт, что покрывает необходимые потребности.
Таблица. Спецификация
Поз. обозначение | Наименование | ||
DD1 | ATmega64 | ||
DD5 | К555ИД7 | ||
DD6 | КР1601РР1 | ||
DD7 | КР565РУ1А | ||
DD8 | JE-AN16202 | ||
DD2,DD3 | КР580ИР82 | ||
DD4 | КР580ВА86 | ||
Элементы 2ИЛИ-НЕ | К155ЛЕ1 | ||
Элементы ИЛИ-НЕ | К500ЛЕ106Е | ||
R1-R3 | С2−23−0,25−1 кОм ± 5% А-В-В | ||
5. Текст подпрограмм
Текст подпрограмм
В независимости от функционального назначения устройства алгоритм его работы содержит последовательность типовых операций: инициализация системы, чтение/запись памяти, чтение клавиатуры и портов ввода, вывод информации на индикаторы и порты вывода и др.
Рассмотрим примеры инициализации и работы с устройствами ввода-вывода разработанного устройства.
;ATmega64
.include «m64def.inc»
.def out_fig_code = r21 ;код выводимого символа для индикатора
.def out_seg = r22 ;номер текущего сегмента
.def d1 = r4
.def d2 = r5
.def d3 = r6
def d1 = r7
.def d2 = r8
.def d3 = r9
def d1 = r10
.def d2 = r11
.def d3 = r12
def d1 = r13
.def d2 = r14
.def d3 = r15
def d1 = r16
.def d2 = r17
def d1 = r18
.def d2 = r19
.equ out_seg16 = 7
.dseg
.org 0×100
.cseg
.org 0
rjmp reset
;——————;
; начало программы
reset:
clr out_fig_code
clr out_seg
ldi r20, out_seg16
; программирование портов F и С на вывод
ldi r20, 7
out ddrc, r20
ldi r20, $ff
sts ddrf, r20
start:
ldi out_seg, 1; на сегмент 1
ldi out_fig_code, LLHLHHHL; вывод .
rcall out_pp; вызов подпрограммы вывода
ldi out_seg, 2; на сегмент 2
ldi out_fig_code, LLHLHHHL; вывод .
rcall out_pp; вызов подпрограммы вывода
ldi out_seg, 3; на сегмент 3
ldi out_fig_code, LLHLHHHL; вывод .
rcall out_pp; вызов подпрограммы вывода
rcall delay05
ldi out_seg, 4; на сегмент 4
ldi out_fig_code, LLHLHHHL; вывод .
rcall out_pp; вызов подпрограммы вывода
ldi out_seg, 5; на сегмент 5
ldi out_fig_code, LLHLHHHL; вывод .
rcall out_pp; вызов подпрограммы вывода
ldi out_seg, 6; на сегмент 6
ldi out_fig_code, LLHLHLHL; вывод *
rcall out_pp; вызов подпрограммы вывода
rcall delay05
ldi out_seg, 7; на сегмент7
ldi out_fig_code, LHLLHLLL; вывод H
rcall out_pp; вызов подпрограммы вывода
ldi out_seg, 8; на сегмент 8
ldi out_fig_code, LHLLLHLH; вывод E
rcall out_pp; вызов подпрограммы вывода
ldi out_seg, 9; на сегмент 9
ldi out_fig_code, LHLLHHLL; вывод L
rcall out_pp; вызов подпрограммы вывода
rcall delay05
ldi out_seg, A; на сегмент 10
ldi out_fig_code, LHLLHHLL; вывод L
rcall out_pp; вызов подпрограммы вывода
ldi out_seg, B; на сегмент 11
ldi out_fig_code, LHLLHHHH; вывод O
rcall out_pp; вызов подпрограммы вывода
ldi out_seg, C; на сегмент 12
ldi out_fig_code, LLHLHLHL; вывод *
rcall out_pp; вызов подпрограммы вывода
rcall delay05
ldi out_seg, D; на сегмент 13
ldi out_fig_code, LLHLHHHL; вывод .
rcall out_pp; вызов подпрограммы вывода
ldi out_seg, E; на сегмент 14
ldi out_fig_code, LLHLHHHL; вывод .
rcall out_pp; вызов подпрограммы вывода
ldi out_seg, F; на сегмент 15
ldi out_fig_code, LLHLHHHL; вывод .
rcall out_pp; вызов подпрограммы вывода
rcall delay05
ldi out_seg, 10; на сегмент 16
ldi out_fig_code, LLHLHHHL; вывод .
rcall out_pp; вызов подпрограммы вывода
;——————;
; подпрограмма вывода на индикатор
out_pp:
out PORTC, r20
sts PORTF, out_fig_code
out PORTC, out_seg
ret
Рис.