4.  Выполните программу по шагам, задавая различные значения вводимых чисел.

5.  Поставьте контрольную точку по адресу безусловного перехода на ввод очередного числа. Выполните рестарт программы. Убедитесь в ее работоспособности, каждый раз задавая новое число и нажимая кнопку продолжить. Запишите в отчет вводимые числа и наблюдаемые результаты.

6.  Удалите контрольную точку и вновь запустите программу. Запишите в отчет наблюдаемое поведение программы.

Часть 2. Ввод информации с переключателей с опросом их готовности

1.  Остановите выполнение программы. Наблюдайте состояние регистров данных и захвата фронтов (edge-capture) PIO, соединенного с кнопками на стенде. Для этого используйте вкладку Memory приложения AMP. Установите галочку в окне Query all devices. Сначала нажмите и удерживайте некоторые из кнопок (KEY3-KEY1), затем наблюдайте состояние регистров в окне Memory, затем нажмите кнопку Refresh в окне AMP и снова наблюдайте состояние регистров. Отпустите кнопки, наблюдайте состояние регистров, нажмите Refresh и снова наблюдайте. Уясните принцип их работы и опишите в отчете.

2.  Модифицируйте программу из предыдущей части таким образом, чтобы ввод очередного числа осуществлялся только после нажатия кнопки KEY3 на стенде. Используйте соответствующий разряд регистра edge-capture соответствующего PIO как сигнал готовности. Программа опрашивает его непрерывно до тех пор, пока он не установится. После ввода числа не забудьте снять сигнал готовности, записав нулевое значение в регистр edge-capture.

НЕ нашли? Не то? Что вы ищете?

Часть 3. Вывод информации на семисегментные индикаторы

1.  Напишите программу, которая отображает содержимое 32-разрядного регистра процессора на семисегментных индикаторах HEX7-HEX0 в виде шестнадцатеричного числа. Оформите ее в виде процедуры HEX_Display, которой передается параметр через регистр.

2.  Модифицируйте программу из предыдущей части таким образом, чтобы накопленная сумма дополнительно отображалась на индикаторах HEX7-HEX0.

Часть 4. Ввод информации с переключателей в режиме прерывания

1.  Выполните задачу из предыдущей части. Используйте вместо опроса готовности устройства ввода формирование прерывания, которое инициируется нажатием кнопки KEY3 на стенде. Основная программа устанавливает все регистры, необходимые для формирования прерывания и выполняет бесконечный цикл. Программа обслуживания прерывания вводит число, вычисляет сумму и отображает ее на светодиодах и индикаторах.

2.  Проверьте экспериментально действия программы, выполняемые после формирования прерывания. Для этого поставьте контрольную точку по адресу обработчика прерываний (0x20). После достижения контрольной точки выполните программу по шагам. Фиксируйте в отчете Ваши наблюдения.

3.  Чтобы визуально наблюдать работу основной программы, реализуйте в ней вывод на индикатор LCD Вашей фамилии, имени и отчества в режиме бегущей строки. Заготовку программы возьмите из 1 лабораторной работы.

Часть 5. Реализация приоритетных прерываний

1.  Модифицируйте программу из предыдущей части таким образом, чтобы по кнопке KEY3 осуществлялось сложение нового числа с суммой, по кнопке KEY2 - вычитание нового числа из суммы, по кнопке KEY1 - обнуление суммы. Причем реализуйте приоритетность прерываний в соответствии с указанной последовательностью.

2.  Экспериментально определите действия программы при выполнении сброса процессорной системы. Для этого поставьте по нулевому адресу в ОП контрольную точку. Затем запустите программу и нажмите кнопку KEY0. Далее выполните программу по шагам. Фиксируйте в отчете Ваши наблюдения.

3.  Запрещайте прерывания от отдельных кнопок, изменяя содержимое регистра маски соответствующего PIO. Для этого поставьте контрольную точку в программе после команды записи соответствующего регистра. Затем модифицируйте регистр в регистровом окне. Далее продолжите выполнение программы.

4.  Разрешайте или запрещайте прерывания от кнопок, изменяя содержимое регистра ienable процессора. Для этого используйте прием из предыдущего пункта.

5.  Разрешайте или запрещайте прерывания от кнопок, изменяя содержимое бита pie регистра status процессора. Для этого используйте прием из 3 пункта.

Часть 6. Программное прерывание trap и невыполнимые команды

1.  Вставьте в текст программы команду trap. Экспериментально определите поведение программы при выполнении этой команды. Отразите в отчете. Модифицируйте обработчик прерываний таким образом, чтобы в случае обнаружения команды trap, он передал управление процедуре, которая выведет строку «trap» на экран LCD.

Для выполнения оставшихся пунктов задания требуется модифицировать процессорную систему, а именно отключить опцию аппаратной реализации команды умножения процессором NIOS II. Все необходимые файлы для реализации модифицированной системы в кристалле ПЛИС содержатся в папке lab3 на рабочем столе.

2.  Выполните загрузку модифицированной процессорной системы в кристалл ПЛИС на стенде.

3.  Вставьте в текст программы команду умножения mul. Экспериментально определите поведение программы при выполнении этой команды. Отразите в отчете. Следует напомнить, что в модифицированной процессорной системе не поддерживается аппаратное умножение.

4.  Модифицируйте обработчик таким образом, чтобы он передал управление процедуре, которая эмулирует выполнение команды mul. Для этого понадобится написать соответствующую процедуру.

Отчетные материалы

Отчетные материалы должны содержать:

1.  Цель лабораторной работы.

2.  Материалы, связанные с подготовкой к работе, включая теоретическую часть и заготовку программы. Обязательно включите в отчет описание регистров, влияющих на прерывания процессора.

3.  Информацию по выполнению каждого пункта задания. Причем в отчете должны содержаться выполняемые Вами действия, наблюдаемые результаты и Ваши объяснения.

4.  Написанные Вами фрагменты программ.

5.  Краткое заключение.

Приложение

В приложении содержится исходный файл тестовой программы interrupt_example.s. В программе используются прерывания от таймера и кнопок. Обработчик прерываний от таймера содержится в файле interval_timer.s. Обработчик прерываний от кнопок содержится в файле pushbutton_ISR.s. Обработчик исключений, задачей которого является определение причины прерывания и вызов соответствующей процедуры, содержится в файле exception_handler.s.

---

Листинг 4 Текст программы interrupt_example.s

---

.equ KEY1, 0

.equ KEY2, 1

/******************************************************************************** Эта программа демонстрирует использование прерываний на стенде

* DE2-70 Media Computer. Вначале запускается таймер, который генерирует

* прерывания каждые 33 мс. Затем разрешаются прерывания от таймера и кнопок.

* Процедура обработки прерывания таймера отображает текст на 7-сегментных

* индикаторах и сдвигает его влево или вправо. Направление сдвига определяется

* кнопками. При нажатии кнопки key1 текст сдвигается вправо, при нажатии

* key2 – влево, при нажатии key3 изменяется текст, используя данные с переключателей.****************************************************************************************************************************************/

text

.global _start

_start:

movia sp, 0x03FFFFFC /* Определяем адрес вершины стека */

movia r16, 0x10002000

/* Определяем период срабатывания интервального таймера */

movia r12, 0x190000 /* 1/(50 MHz) x (0x190000) = 33 msec */

sthio r12, 8(r16) /*определяем младшее полуслово как стартовое значение*/

srli r12, r12, 16

sthio r12, 0xC(r16) /* старшее полуслово как стартовое значение */

/* Запускаем таймер и разрешаем прерывания от него */

movi r15, 0b0111 /* START = 1, CONT = 1, ITO = 1 */

sthio r15, 4(r16)

/* Разрешаем прерывания PIO, к которому подсоединены кнопки */

movia r15, 0x10000050 /* Адрес регистра кнопок */

movi r7, 0b01110

stwio r7, 8(r15) /* Устанавливаем 3 бита регистра маски прерывания*/

/* Разрешаем прерывания NIOS 2 процессора */

movi r7, 0b011

wrctl ienable, r7 /*Разрешаем прерывания от кнопок*/

movi r7, 1

wrctl status, r7 /*Разрешаем процессору обрабатывать прерывания */

IDLE:

br IDLE /* Бесконечный цикл */

data

.global PATTERN

PATTERN:

.word 0x0000000F

.global KEY_PRESSED

KEY_PRESSED:

.word KEY2

.end

---

Листинг 5 Текст программы exception_handler. s

---

/* СЕКЦИЯ СБРОСА "ax" требуется для того, чтобы определить секцию как исполняемую. AMP автоматически размещает секцию сброса по адресу, определяемому в настройках процессора в SOPC Builder.*/

.section. reset, "ax"

movia r2, _start

jmp r2 /* Переходим в основную программу */

/***************************************************************************

СЕКЦИЯ ИСКЛЮЧЕНИЙ "ax" требуется для того, чтобы определить секцию как исполняемую. AMP автоматически размещает секцию сброса по адресу, определяемому в настройках процессора в SOPC Builder.***************************************/

section. exceptions, "ax"

.global EXCEPTION_HANDLER /*Определяем процедуру как глобальную*/

EXCEPTION_HANDLER: /*Процедура обработки прерываний*/

subi sp, sp, 16 /* Изменяем адрес указателя стека */

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11

Основные порталы (построено редакторами)

Домашний очаг

ДомДачаСадоводствоДетиАктивность ребенкаИгрыКрасотаЖенщины(Беременность)СемьяХобби
Здоровье: • АнатомияБолезниВредные привычкиДиагностикаНародная медицинаПервая помощьПитаниеФармацевтика
История: СССРИстория РоссииРоссийская Империя
Окружающий мир: Животный мирДомашние животныеНасекомыеРастенияПриродаКатаклизмыКосмосКлиматСтихийные бедствия

Справочная информация

ДокументыЗаконыИзвещенияУтверждения документовДоговораЗапросы предложенийТехнические заданияПланы развитияДокументоведениеАналитикаМероприятияКонкурсыИтогиАдминистрации городовПриказыКонтрактыВыполнение работПротоколы рассмотрения заявокАукционыПроектыПротоколыБюджетные организации
МуниципалитетыРайоныОбразованияПрограммы
Отчеты: • по упоминаниямДокументная базаЦенные бумаги
Положения: • Финансовые документы
Постановления: • Рубрикатор по темамФинансыгорода Российской Федерациирегионыпо точным датам
Регламенты
Термины: • Научная терминологияФинансоваяЭкономическая
Время: • Даты2015 год2016 год
Документы в финансовой сферев инвестиционнойФинансовые документы - программы

Техника

АвиацияАвтоВычислительная техникаОборудование(Электрооборудование)РадиоТехнологии(Аудио-видео)(Компьютеры)

Общество

БезопасностьГражданские права и свободыИскусство(Музыка)Культура(Этика)Мировые именаПолитика(Геополитика)(Идеологические конфликты)ВластьЗаговоры и переворотыГражданская позицияМиграцияРелигии и верования(Конфессии)ХристианствоМифологияРазвлеченияМасс МедиаСпорт (Боевые искусства)ТранспортТуризм
Войны и конфликты: АрмияВоенная техникаЗвания и награды

Образование и наука

Наука: Контрольные работыНаучно-технический прогрессПедагогикаРабочие программыФакультетыМетодические рекомендацииШколаПрофессиональное образованиеМотивация учащихся
Предметы: БиологияГеографияГеологияИсторияЛитератураЛитературные жанрыЛитературные героиМатематикаМедицинаМузыкаПравоЖилищное правоЗемельное правоУголовное правоКодексыПсихология (Логика) • Русский языкСоциологияФизикаФилологияФилософияХимияЮриспруденция

Мир

Регионы: АзияАмерикаАфрикаЕвропаПрибалтикаЕвропейская политикаОкеанияГорода мира
Россия: • МоскваКавказ
Регионы РоссииПрограммы регионовЭкономика

Бизнес и финансы

Бизнес: • БанкиБогатство и благосостояниеКоррупция(Преступность)МаркетингМенеджментИнвестицииЦенные бумаги: • УправлениеОткрытые акционерные обществаПроектыДокументыЦенные бумаги - контрольЦенные бумаги - оценкиОблигацииДолгиВалютаНедвижимость(Аренда)ПрофессииРаботаТорговляУслугиФинансыСтрахованиеБюджетФинансовые услугиКредитыКомпанииГосударственные предприятияЭкономикаМакроэкономикаМикроэкономикаНалогиАудит
Промышленность: • МеталлургияНефтьСельское хозяйствоЭнергетика
СтроительствоАрхитектураИнтерьерПолы и перекрытияПроцесс строительстваСтроительные материалыТеплоизоляцияЭкстерьерОрганизация и управление производством