Главная
Новости рынка
Рубрикатор



Архив новостей -->



www.dvorick.ru детский игровой комплекс своими руками

 



   

В. Бродин, А. Калинин

Учебные классы микропроцессорной техники и ПЛИС

Разработанные на кафедре микроэлектроники МИФИ лабораторные практикумы и учебные классы позволяют в короткий срок освоить практические навыки разработки микропроцессорных систем управления на основе микроконтроллеров 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 “Реализация таймерных функций”:

Выполнение работы

  1. Изучить функционирование таймеров-счётчиков микроконтроллера AT90mega103.
  2. Запустить на инструментальном компьютере интегрированную систему
    программирования “ТурбоАссемблер-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].

Литература

  1. Бродин В.Б., Шагурин И.И. МИКРОКОНТРОЛЛЕРЫ: архитектура, программирование, интерфейс. — М.: ЭКОМ. — 1999.
  2. Козаченко В.М. Микроконтроллеры Intel MCS-196/296. — М.: ЭКОМ. — 1997.
  3. Бродин В., Калинин А., Хохлов Л., Шагурин И. Комплекс средств для обучения проектированию цифровых устройств на ПЛИС Altera с использованием системы Max+plusII // Chip News. — 2000. — № 3. — С. 16–18.

    Тел.: 323 9357
    E-mail: mpsis@d406.micro.mephi.ru







Реклама на сайте
тел.: +7 (495) 514 4110. e-mail:admin@eust.ru
1998-2014 ООО Рынок микроэлектроники