|
В. Бродин, А. Калинин
Учебные классы микропроцессорной техники и ПЛИС
Разработанные на кафедре микроэлектроники МИФИ лабораторные практикумы и учебные классы позволяют в короткий срок освоить практические навыки разработки микропроцессорных систем управления на основе микроконтроллеров MCS-51, PIC 16/17 и AVR, ПЛИС фирмы Altera.
Современный виток развития микропроцессорных систем управления характеризуется комбинированным применением микроконтроллеров и ПЛИС. Значительно ускоряют проектирование и конструирование полноцикловые системы автоматизации проектирования типа EDA (Electronic Design Automation), пришедшие на смену традиционным системам типа CAD (Computer Aided Design), которые помогали разработчику на отдельных этапах, например, при проектировании печатных плат.
В области микроконтроллеров, на наш взгляд, наиболее широкий круг задач покрывают семейства MCS-51 и AVR. Архитектура MCS-51 получила в последнее время новый импульс развития с появлением таких изделий, как ADuC812 фирмы Analog Devices, W78 фирмы Winbond, 89С51 фирм Atmel и Philips, AN21 фирмы Cypress, P-51 фирмы Cybernetic Micro Systems и ряда других. В них на одном кристалле с ядром MCS-51 объединены 12-разрядные АЦП и ЦАП, flash-память объёмом до 64 Кбайт, интерфейсы USB и (E)ISA. Это даёт возможность разработчикам использовать при решении новых задач большой имеющийся задел. Дополнительные возможности предоставляют версии микроконтроллеров MCS-51 c пониженным до 1,8 В напряжением питания, а также приборы со сжатой тактовой сеткой и повышенной (до 40 МГц) тактовой частотой.
Микроконтроллеры семейства AVR фирмы Atmel, появившиеся на мировом рынке в 1997 г., имеют современную RISC-архитектуру, которая в сочетании с технологией flash-памяти обеспечивает очень хорошие показатели по таким критериям, как скорость выполнения кода программы, эффективность генерации кода при использовании языков высокого уровня (поддержка языков высокого уровня системой команд) и низкая цена.
Важным преимуществом микроконтроллеров AVR является их совместимость по функциям выводов с микроконтроллерами архитектуры MCS-51. Это позволяет во многих случаях увеличить производительность имеющейся системы управления посредством замены микроконтроллера, разработки и отладки рабочей программы.
Одним из наиболее известных производителей ПЛИС является фирма Altera. Её продукция стала одним из стандартов “де-факто”, микросхемы и САПР отличаются высокими характеристиками и весьма скромными требованиями к инструментальному компьютеру разработчика. Особенностью проектирования на ПЛИС в настоящее время является широкое использование высокоуровневых языков описания аппаратуры AHDL, VHDL.
Несмотря на публикации в периодической печати, издание нескольких монографий [1,2], ощущается значительный спрос на средства и методы обучения, позволяющие в достаточно короткий срок передать информацию и навыки, необходимые для разработки реальных современных систем управления на микроконтроллерах и ПЛИС. При создании рассматриваемых далее учебных классов мы исходили из следующих соображений:
- учебные методики и средства должны разрабатывать специалисты, имеющие большой опыт разработки систем проектирования и целевых систем управления;
- в качестве учебных средств должны использоваться версии профессиональных систем проектирования, поскольку использование чисто учебных средств искажает методику проектирования и приводит к необходимости последующего переучивания;
- ввиду большого объёма информации по элементной базе и сложности систем проектирования, основным принципом лабораторного практикума должен быть “делай как я”, то есть в каждой работе должно быть обязательное задание, процесс выполнения которого подробно описан. Это позволит не только передать знания и практические навыки, но и привить правильный стиль проектирования.
На основе этих принципов в лаборатории “Микропроцессорные системы” МИФИ созданы учебные классы, позволяющие в короткий срок передать практические навыки разработки микропроцессорных систем управления на основе микроконтроллеров и ПЛИС. Учебный класс включает аппаратные средства типа одноплатных контроллеров, программные средства в виде интегрированных систем программирования микроконтроллеров и систем автоматизированного проектирования цифровых устройств на ПЛИС, инструментальные средства в виде универсального программатора, методическое обеспечение в виде лабораторных практикумов. Классы позволяют изучать:
- 8-разрядные микроконтроллеры MCS-51 с традиционной (CISC) архитектурой;
- RISC-микроконтроллеры PIC16/17 фирмы MicroChip;
- RISC-микроконтроллеры AVR фирмы Atmel;
- проектирование цифровых систем с использованием ПЛИС фирмы Altera и САПР Max+PlusII.
Главным звеном каждого учебного курса является лабораторный практикум. Он состоит из введения, в котором описана архитектура рассматриваемого семейства БИС и методика проектирования, набора лабораторных работ и приложений, в которых приведены технические характеристики плат и элементной базы. Лабораторные работы практикума “Архитектура и программирование микроконтроллеров AVR mega103” фирмы Atmel включают следующие разделы:
- Методы адресации, команды передачи данных и управления.
- Команды обработки данных.
- Контроль внешних устройств через параллельные порты — работа с клавиатурой.
- реализация и обслуживание подсистемы прерываний.
- Реализация таймерных функций.
- Организация последовательного обмена данными между контроллерами.
- Обслуживание АЦП.
- Интегрированная система программирования “ТурбоАссемблер-AVR”.
- Учебный контроллер AVR mega103.
Описание каждой лабораторной работы содержит информационно-теоретическую часть, обязательное задание (включая фрагмент текста программы с комментариями и разбором реализации алгоритма) и варианты заданий для самостоятельного выполнения. Например, в работе 4 практикума по микроконтроллерам AVR описаны механизмы реализации прерываний, регистры управления микроконтроллеров. Затем приведён ассемблерный текст примера обязательного задания, формирующий таблицу переходов и инициализирующий указатель стека, разрешающий определённые прерывания и определяющий их приоритеты. Далее следуют процедуры обслуживания прерываний и программные заглушки вместо процедур замаскированных прерываний. Завершается работа набором самостоятельных заданий, которые выполняются посредством изменения текста разобранного задания.
В качестве примера выше приведён текст обязательного задания работы 6 “Реализация таймерных функций”:
Выполнение работы
- Изучить функционирование таймеров-счётчиков микроконтроллера AT90mega103.
- Запустить на инструментальном компьютере интегрированную систему
программирования “ТурбоАссемблер-AVR”. Создать новый файл и сохранить его с именем demo5.asm. В этот файл поместить следующий текст:
;**** Пpимер организации режима PWM****
;*******микроконтроллера ATmega103 *******.
; частота pезонатоpа 4.0 МГц.
;**** Описание констант ****
.EQU Rld0 = -125 ; Константа пеpезагpузки
; таймеpа T0
; для фоpмиpования вpеменного интеpвала = 4 ms
; при N = 128 (Prescaler, F = 4 MHz)
;**** Описание пеpеменных ****
.DEF PWL = r15 ; пеpеменная
; пеpезагpузки Comp
.DEF A = r16
.DEF B = r17
.DEF Flags = r23 ; Регистр флагов, бит 4 -
; флаг PwmDown
.DEF TimeL = r24 ; пpогpаммный таймеp,
; цена деления 1 ms
.DEF TimeM = r25 ;
.DEF TimeH = r26
.EQU PwmDown = 4 ; бит 4 - флаг PwmDown
;**** Основная часть пpогpаммы ****
.ORG 0 ; начало таблицы переходов
rjmp Start
.ORG $2 ; вектор Int0
reti
.ORG $4 ; вектор Int1 (не используется)
reti
.ORG $6 ; вектор Int2 (не используется)
reti
.ORG $8 ; вектор Int3 (не используется)
reti
.ORG $A ; вектор Int4 (не используется)
reti
.ORG $C ; вектор Int5 (не используется)
reti
.ORG $E ; вектор Int6 (не используется)
reti
.ORG $10 ; вектор Int7 (не используется)
reti
.ORG $12h ;вектор Timer2 Compare (не
reti ;используется)
.ORG $14 ;вектор Timer2 Overflow (не
reti ;используется)
.ORG $16 ;вектор Timer1 Capture (не
reti ;используется)
.ORG $18 ;вектор Timer1 CompareA (не
reti ;используется)
.ORG $1A ;вектор Timer1 CompareB (не
reti ;используется)
.ORG $1C ;вектор Timer1 Overflow
rjmp IntT1
.ORG $1E ;вектор Timer0 Compare (не
reti ;используется)
.ORG $20 ;вектор Timer0 Overflow
rjmp IntT0
.ORG $22h ;вектор SPI (не используется)
reti
.ORG $24 ;вектор приёмника UART (не
reti ;используется)
.ORG $26 ;вектор “буфер передатчика пуст”
reti ;UART (не используется)
.ORG $28h ;вектор передатчика UART (не
reti ;используется)
.ORG $2A ;вектор AD преобразователя (не
reti ;используется)
.ORG $2C ;вектор EEPROM (не используется)
reti
.ORG $2E ;вектор аналогового компаратора
reti ;(не используется)
.ORG $30 ; начальный адpес основной
;пpогpаммы
Start:
clr TimeL
clr TimeM
clr TimeH
clr Flags
clr PWL
ldi A,$0 ;указатель стека SP= $DF
out SPH,A
ldi A,$DF
out SPL,A
ldi A,$5 ;запускаем таймеp T0, CK/128
out TCCR0,A
ldi A,$21 ;таймеp T1, PWM 8 bit, очищается по
;совпадению при счёте вверх
out TCCR1A,A
ldi A,$1 ;запускаем таймеp T1, Ck/1
out TCCR1B,A
ldi A,$5 ;pазpешим пpеpывания от T0,T1
out TIMSK,A
sbi DDRB,6 ;OC1B – выход
ldi A,$FF
out DDRB,A ;debug
sei ;pазpешим все пpеpывания
;Рабочий цикл пpогpаммы, ничего не делаем.
Work:
rjmp Work
;******** Пpоцедуpа пpеpывания********
;******по пеpеполнению таймеpа T0 ******
IntT0:
push A
ldi A,Rld0
out TCNT0,A ;пеpезагpузим
in A,SREG ;сохранение SREG
adiw TimeL,4 ;Time:=Time+4 ms
brcc itN1
inc TimeH
itN1:
out PortB,TimeL ;debug
out SREG,A ;восстановление SREG
pop A
reti ;
;******** Пpоцедуpа пpеpывания********
;******по пеpеполнению таймеpа T1 ******
IntT1:
push A
push B
in A,SREG ; сохранение SREG
ldi B,1 ; один дискрет
sbrc Flags,PwmDown
rjmp itDec ;если PwmDown=1, будем
;уменьшать
add PWL,B ;если PwmDown=0, то наращи-
;ваем PWL на дискрет
mov B,PWL
cpi B, PWmax ;достигли верхней границы?
brcs itWr ;при PWL > PWmax
sbr Flags,(1<<PwmDown) ; то PwmDown:=1
ldi B,Pwmax ; PWL := PWmax
mov PWL,B
rjmp itWr
itDec: sub PWL,B
brcc itWr ; если PWL<0
cbr Flags,(1<<PwmDown) ; то PwmDown:=0
clr PWL
itWr: out OCR1BL,PWL
out SREG,A ; восстановление SREG
pop B
pop A
reti ;
Таймеры-счётчики микроконтроллеров используются для формирования временной сетки (как последовательности равных интервалов времени), отдельных временных интервалов различной длительности, а также ШИМ сигналов (широтно-импульсная модуляция). Кроме того, таймеры-счётчики являются инструментом анализа событий на основе механизмов захвата-сравнения.
Программа demo5 демонстрирует организацию программного таймера реального времени с 24-разрядным счётным регистром, который наращивается по прерыванию таймера 0. Кроме того, программа формирует ШИМ-сигнал с использованием таймера 1 и выдаёт на линию порта B.6 (PWM1B) импульсы с линейно изменяемой скважностью (“гармошка”). Если к этому выводу подключить интегратор, то на его выходе получится “пила” — аналоговый сигнал с линейно изменяющейся амплитудой.
В начале программы описаны константа и переменные, то есть значению константы и адресам регистров присвоены символические имена. В программе обращение к этой константе и переменным производится по присвоенным именам.
Основная часть программы начинается с таблицы переходов системы сброса и прерываний, которая аналогична приведённой в работе 4. Собственно программа начинается с адреса $30 обнулением используемых регистров и загрузкой в указатель стека исходного адреса $DF. Далее загрузкой регистров управления для таймера 0 указывается коэффициент деления тактовой частоты, а для таймера 1 — режим 8-разрядного ШИМ с низким уровнем выходного сигнала при совпадении (счётчика и уставки) и счёте вверх. Тактовая частота для таймера 1 определена равной CK (системная частота). Загрузка регистра TIMSK кодом $05 разрешает прерывания по переполнению таймеров 0 и 1, а установка бита 6 регистра направления DDRB определяет вывод PORTB.6 как выход. В конце основной программы выводы порта B определяются как выходы, и устанавливается общий флаг разрешения прерываний. Далее программа зацикливается, и все действия выполняются по запросам прерываний от таймеров 0 и 1.
Процедура обработки прерывания по переполнению таймера 0 начинается с сохранения в стеке регистра A (R16), затем через регистр A перезагружается счётный регистр таймера 0 (TCNT0) и далее в регистре A сохраняется содержимое SREG. После этого программный счётчик, включающий регистры TimeL, TimeM и TimeH, увеличивается на одно значение (4 мс). Командой ADIW к 16-разрядному слову в младших двух регистрах прибавляется значение дискрета, при возникновении переноса инкрементируется старший байт в регистре TimeH. При таком подходе программный счётчик, работающий очень долго, является действительно счётчиком реального времени, то есть в нём всегда находится текущее значение времени в миллисекундах от момента его запуска. Реальное время в миллисекундах обеспечивается соотношением тактовой частоты, коэффициента её деления для таймера 0 и константы перезагрузки таймера 0. В целях отладки значение TimeL выдаётся на порт B. В завершение процедуры восстанавливаются значения SREG и регистра A.
Процедура обработки прерывания по переполнению таймера 1 начинается с сохранения в стеке регистров A и B, далее в регистре A сохраняется содержимое SREG, а в регистр B помещается значение дискрета изменения порога (1). Управление ШИМ начинается с анализа флага PwmDown (R23.4). Если флаг установлен (“гармошка” сжимается), то осуществляется переход на метку itDec, где из значения PWL вычитается дискрет и при отсутствии заёма новое значение заносится в регистр сравнения OCR1B, изменяя порог и ширину импульса. При возникшем заёме флаг PwmDown сбрасывается, PWL обнуляется и заносится в регистр сравнения OCR1B. Если флаг PwmDown сброшен (“гармошка” растягивается), то к значению PWL прибавляется дискрет, новое значение сравнивается с верхней границей (если меньше границы, устанавливается флаг С) и, если значение меньше границы, новое значение заносится в регистр сравнения OCR1B, изменяя порог и ширину импульса. Если значение вышло за верхнюю границу, флаг PwmDown устанавливается (переход на уменьшение), значение PWL приравнивается к верхней границе (PWL=PWmax) и новое значение заносится в регистр сравнения OCR1B. В конце процедуры восстанавливаются значения SREG и регистров B и A.
3. Подключить к компьютеру плату лабораторного макета, выполнить трансляцию программы и загрузить исполняемый модуль во flash-память микроконтроллера командой RUN|Load+Run. Наблюдать с помощью осциллографа на разъёме XP4 (после интегратора) аналоговый сигнал с линейно изменяющейся амплитудой.
|
Обязательные задания практикума нарастают по сложности, и в последующих работах используются программные модули из предыдущих работ.
Структура практикума позволяет без привлечения дополнительной литературы подготовиться как преподавателю, так и студенту или слушателю курсов повышения квалификации. Имеется опыт и самостоятельного изучения предмета с его помощью.
На снимке показан лабораторный макет практикума по микроконтроллерам AVR фирмы Atmel. Он имеет типичную для наших учебных контроллеров структуру, которая включает ядро (в данном случае на основе микроконтроллера ATMega 103), модули последовательных интерфейсов SPI и RS232, стабилизатор питания, схему рестарта и синхронизации, 12-клавишную клавиатуру, блок семисегментных индикаторов и пьезодинамик. Плата выполнена с использованием элементов технологии поверхностного монтажа и демонстрирует современный подход к проектированию микропроцессорных контроллеров на основе функционально-топологических модулей.
Программирование микропроцессорных систем изучается с использованием интегрированных систем, для рассматриваемого практикума это “ТурбоАссемблер-AVR”. Система относится к классу профессиональных, объединяет редактор текста, транслятор, библиотеки периода выполнения, символический отладчик. Наличие программно-логической модели в составе системы позволяет использовать её в первых работах без платы контроллера, наблюдая состояние регистров на мониторе компьютера. Транслятор системы анализирует текст программы и выдаёт сообщения об обнаруженных ошибках, а наличие команды Help позволяет получить оперативную информацию о командах микроконтроллера, директивах ассемблера, библиотеках и так далее. Именно развитость инструментальной системы программирования и большой объём сервисных функций позволяет быстро освоить систему команд и разработку прикладных программ. Кроме того, в современных условиях важно, что после обучения специалист сразу может разрабатывать изделия с использованием освоенных инструментальных средств, без закупок новой техники и переучивания.
Состав лабораторных практикумов по микроконтроллерам MCS-51 и PIC16/17 в целом аналогичен. Лабораторный практикум по ПЛИС фирмы Altera подробно описан в [3].
Литература
- Бродин В.Б., Шагурин И.И. МИКРОКОНТРОЛЛЕРЫ: архитектура, программирование, интерфейс. — М.: ЭКОМ. — 1999.
- Козаченко В.М. Микроконтроллеры Intel MCS-196/296. — М.: ЭКОМ. — 1997.
- Бродин В., Калинин А., Хохлов Л., Шагурин И. Комплекс средств для обучения проектированию цифровых устройств на ПЛИС Altera с использованием системы Max+plusII // Chip News. — 2000. — № 3. — С. 16–18.
Тел.: 323 9357
E-mail: mpsis@d406.micro.mephi.ru
|