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

Часть 4. Ввод из JTAG UART в режиме прерывания с использованием вложенного прерывания от таймера

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

2.  Модифицируйте программу из предыдущей части таким образом, чтобы основная программа разрешила прерывания по чтению от UART JTAG и выводила бегущую строку на LCD. При нажатии клавиши клавиатуры формируется прерывание основной программы. Обработчик прерывания UART JTAG разрешает прерывания от таймера каждые 500 мс и возвращает управление основной программе. Обработчик прерывания от таймера выводит символ в терминальное окно AMP каждые 500 мс, причем, если клавиша не нажата, выводится последний набранный символ.

Часть 5. Использование COM-порта для сопряжения двух процессорных систем, реализованных на разных стендах

1.  Соедините нуль-модемным кабелем два стенда, используя разъемы RS-232. Включите питание стендов. Обратите внимание, что светодиоды RXD и TXD, расположенные в правой верхней части стенда светятся. Это означает, что тестовая программа, выполняющаяся в процессорной системе на стенде после включения его питания, выполняет отправку и прием данных в/из COM-порта.

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

2.  Запустите приложение AMP и загрузите процессорную систему «DE2-70 Media Computer» в стенд. Выполните аналогичные действия на втором стенде. Используя вкладку Memory AMP, выполните пересылку данных в другую процессорную систему через com-порт. Наблюдайте принятые данные в другой процессорной системе. Следует напомнить, что для отображения содержимого регистров портов ввода/вывода следует установить галочку Query all devices, а для того, чтобы выполнить считывание из порта, следует нажать кнопку Refresh memory. Отразите в отчете значение полей RVALID, RAVAIL и WSPACE COM-порта. Экспериментально определите размер буфера FIFO, используемого на запись.

3.  Модифицируйте программу из пункта 2 части 3 так, чтобы реализовать следующий эксперимент. Процессорная система, реализованная на первом стенде, выполняет программу из пункта 2 части 3. Аналогичную программу выполняет вторая процессорная система, реализованная на втором стенде. Дополнительно программа, работающая в процессорной системе на первом стенде, должна передать набираемые в терминальном окне AMP символы в COM-порт. Также она должна разрешить прерывания по чтению при получении символов из com-порта. Обратите внимание! Прерывания будут формироваться при заполнении приемного буфера FIFO более чем на 3/4. Обработчик прерывания должен выполнить вывод принятых из com-порта символов на экран LCD. Чтобы визуально наблюдать вывод на LCD экран по одному символу, используйте в обработчике контрольную точку перед выполнением команды eret. Экспериментально определите порог заполнения входного буфера FIFO, при котором формируется прерывание. Программа на второй процессорной системе выполняет аналогичные действия. Продемонстрируйте совместную работу двух процессорных систем преподавателю.

Часть 6. Использование инфракрасного порта для беспроводной передачи данных между процессорными системами

Для выполнения этой части работы требуется модификация процессорной системы «DE2- 70 Media Computer». В её состав необходимо добавить контроллер инфракрасного порта, реализованный в виде IP ядра.

Соответствующая модификация системы выполнена и все файлы, необходимые для выполнения работы, помещены в папку lab5 на рабочем столе.

1.  Разместите два стенда таким образом, чтобы их приемопередатчики инфракрасного порта располагались друг напротив друга на небольшом расстоянии.

2.  Произведите запись значения в поле данных регистра инфракрасного порта. На второй процессорной системе выполните команду Refresh memory. Убедитесь, что данные получены. Обратите внимание! Отправляемые данные могут попадать во входной буфер инфракрасного порта первой процессорной системы.

3.  Модифицируйте программу из предыдущей части таким образом, чтобы вместо COM-порта использовался инфракрасный порт.

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

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

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

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

3.  Фрагменты программ JTAG UART. s и TEST_DE2_70_Media_Computer.

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

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

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

Приложение

В приложении содержится файл JTAG UART, встроенный в приложение AMP. В этой программе осуществляется вывод текстовой строки из процессорной системы в JTAG UART, и ввод текстовой строки, набираемой в терминальном окне AMP, через JTAG UART и вывод обратно.

В приложении также содержится фрагмент из файла Test_DE2_70_Media_Computer, который полностью приведен в приложении к первой лабораторной работе. В представленном фрагменте выполняется работа с регистрами UART JTAG и com-порта.

---

Листинг 8 Текст программы JTAG UART.s

---

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

* Программа выполняет следующее:

* 1. отправляет символьную строку из текстовой строки в JTAG UART

* 2. считывает данные из JTAG UART

* 3. отправляет считанные данные обратно в JTAG UART

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

.text

.global _start

_start:

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

movia r6, 0x10001000

movia r8, TEXT_STRING /* адрес текстовой строки в r8 */

LOOP:

ldb r5, 0(r8) /* из текстовой строки в r5*/

call PUT_JTAG /* вызываем процедуру, которая помещает символ в JTAG */

addi r8, r8, 1

br LOOP /* переходим на вывод очередного символа */

GET_JTAG:

ldwio r4, 0(r6) /*читаем регистр управления JTAG UART*/

andi r8, r4, 0x8000 /*проверяем есть ли новые данные*/

beq r8, r0, GET_JTAG /*если данных нет, то ожидаем их появления*/

andi r5, r4, 0x00ff /*получаем данные*/

call PUT_JTAG /*отправляем символ обратно в JTAG UART*/

call GET_JTAG

.end

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

* Подпрограмма, которая выводит символы в JTAG UART

* r5 = выводимый символ

* r6 = JTAG UART базовый адрес

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

.global PUT_JTAG

PUT_JTAG:

/* сохраняем используемые регистры */

subi sp, sp, 4 /* резервирум место в стеке*/

stw r4, 0(sp) /* сохраняем r4 в стеке */

ldwio r4, 4(r6) /* читаем регистр управления JTAG UART */

andhi r4, r4, 0xffff /* проверяем есть ли место для записи в буфере UART */

beq r4, r0, KONEC /* если места нет, то переполнение буфера */

stwio r5, 0(r6) /* отправляем символ в UART */

OVERFLOW:

/* восстанавливаем содержимое r4 */

ldw r4, 0(sp)

addi sp, sp, 4

ret

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

.data

TEXT_STRING:

.asciz "\nJTAG UART example code\n"

.end

---

Листинг 9 Фрагмент программы TEST_DE2_70_Media_Computer

---

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

* Процедура анализирует, имеются ли данные в буфере чтения JTAG порта.

* Если есть, то данные отправляются обратно в JTAG порт и дополнительно в

* COM-порт. Если новых данных нет, то выполняется проверка, имеются ли данные в буфере чтения com-порта. Если данные есть, то они отправляются обратно в com-порт и дополнительно в JTAG порт. А если нет, то происходит выход из процедуры.

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

.global UPDATE_UARTS

UPDATE_UARTS:

/* сохраняем регистры в стеке */

subi sp, sp, 28 /* резервируем область памяти в стеке*/

stw ra, 0(sp)

stw fp, 4(sp)

stw r15, 8(sp)

stw r16, 12(sp)

stw r17, 16(sp)

stw r18, 20(sp)

stw r19, 24(sp)

addi fp, sp, 28

movia r15, JTAG_UART_BASE /* помещаем в r15 адрес JTAG UART*/

movia r19, UART_BASE /* помещаем в r19 адрес com-порта*/

GET_CHAR:

ldwio r17, 0(r15) /* считываем слово из регистра данных JTAG UART*/

andi r18, r17, 0x8000 /* проверяем бит RVALID*/

beq r18, r0, GET_CHAR_UART /* если данных нет в буфере, то переходим на GET_CHAR_UART*/

andi r16, r17, 0x00ff /* выделяем байт данных из считанного из JTAG UART порта слова*/

PUT_CHAR:

ldwio r17, 4(r15) /* считываем слово из регистра управления JTAG UART*/

andhi r17, r17, 0xffff /* выделяем значение поля workspace*/

beq r17, r0, PUT_CHAR_UART /* если свободного места в буфере нет, то переходим на PUT_CHAR_UART*/

stwio r16, 0(r15) /* отправляем символ обратно в JTAG UART*/

PUT_CHAR_UART:

ldwio r17, 4(r19) /* считываем слово из регистра управления*/ com-порта*/

andhi r17, r17, 0xffff /* выделяем значение поля workspace*/

beq r17, r0, GET_CHAR_UART /* если свободного места нет в буфере, то переходим на GET_CHAR_UART*/

stwio r16, 0(r19) /* отправляем символ в com-порт*/

GET_CHAR_UART:

ldwio r17, 0(r19) /* считываем слово из регистра данных com-порта*/

andhi r18, r17, 0xFFFF /* выделяем значение поля RAVAIL*/

beq r18, r0, NO_CHAR * если новых данных нет, то переходим на NO_CHAR*/

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

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

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

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

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

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

Техника

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

Общество

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

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

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

Мир

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

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

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