16. Повторите выполнение предыдущего пункта, выполнив перед программным циклом запуск таймера, а после выхода из цикла – считывание его значения. Определите правильность работы Вашей программы, сравнив программную задержку с длительностью интервала, зафиксированную таймером.
17. Реализуйте в Вашей программе программный счетчик секунд и выведите его состояние на светодиоды. Проверьте правильность его работы, сверяя с наручными часами.
Часть 2. Использование интервального таймера в приложениях пользователя
1. Рассчитайте начальное значение счетчика таймера таким образом, чтобы он подсчитывал интервал длительностью 30 секунд и по окончанию формировал сигнал прерывания. Основная программа разрешает прерывания от таймера, задает длительность интервала для таймера и запускает его. Затем она выводит Ваши фамилию, имя и отчество на экран LCD в режиме бегущей строки. Обработчик прерывания зажигает светодиоды и выполняет возврат в основную программу. Экспериментально проверьте работу программы, сопоставив интервал с Вашими часами. Запишите в отчет значение регистра состояния таймера.
2. Рассчитайте длительность максимального интервала, формируемого таймером, с учетом того, что его тактовая частота равна 50 МГц (для стендов DiLab и miniDilab частота равна 25МГц). Проверьте экспериментально, сопоставив с Вашими часами.
3. Модифицируйте программу из первого пункта таким образом, чтобы прерывания от таймера формировались каждую секунду. Обработчик прерывания реализует счетчик секунд и выводит его значение на светодиоды и HEX-индикаторы в шестнадцатеричном виде. Используйте для этого процедуру из 3 лабораторной работы. Проверьте правильность работы программы, визуально наблюдая отображаемые значения и сопоставляя их с показаниями Ваших часов.
4. Модифицируйте процедуру из 2 лабораторной работы, в которой осуществляется вывод на дисплей LCD текстовой информации в режиме бегущей строки. Используйте для этого прерывания от таймера, формируемые через каждые 200 мс.
Часть 3. Создание часов реального времени
1. Модифицируйте программу таким образом, чтобы реализовать на устройствах отображения информации стенда часы реального времени. Причем, для задания текущего значения времени используйте переключатели и кнопки. Рекомендуется использовать переключатели SW для задания значения текущего часа и текущей минуты. Причем ввод их осуществите последовательно, используя двоично – десятичное кодирование (код D1), нажатием кнопок KEY3 и KEY2, соответственно. Для запуска часов, начиная с нулевой секунды иcпользуйте кнопку KEY1. Вывод текущего времени выполните на HEX-индикаторы для стендов DE0 и DE2-70, и на LCD-дисплей для других стендов. Вывод времени должен осуществляться в режиме прерываний на фоне работы другой программы, выполняющей, например, вывод Вашей фамилии имени и отчества на экране LCD в режиме бегущей строки.
Отчетные материалы
Отчетные материалы должны содержать.
1. Цель лабораторной работы.
2. Материалы, связанные с подготовкой к работе, включая теоретическую часть.
3. Информацию по выполнению каждого пункта задания. Причем в отчете должны содержаться выполняемые Вами действия, наблюдаемые результаты, и Ваши объяснения.
4. Написанные Вами фрагменты программ.
5. Краткое заключение.
Лабораторная работа №5
Использование интерфейсов JTAG , RS232 и инфракрасного порта в процессорной системе
Цель работы: использование интерфейса JTAG для сопряжения процессорной системы, реализованной на стенде, с инструментальным компьютером и интерфейса RS232 и инфракрасного порта для сопряжения двух процессорных систем.
Исходные файлы лабораторной работы
Программа, демонстрирующая использование JTAG UART порта в процессорной системе, является составной частью приложения AMP. Она доступна в разделе Sample program под именем JTAG UART.s.
Подготовка к лабораторной работе
Для выполнения лабораторной работы необходимо изучить по материалам лекций и предложенной литературе.
1. Организацию обмена данными между стендом и инструментальным компьютером.
2. Принцип работы и назначение регистров и отдельных полей JTAG UART порта. Эта информация содержится в описании процессорной системы «DE2-70 Media Computer»[9]. Включите ее в отчет.
3. Реализацию прерываний в процессорной системе с процессором NIOSII[8]. Используемые для этого регистры процессора и портов ввода – вывода.
4. Особенности использования вложенных прерываний.
5. Уясните принцип действия программы, работающей с интерфейсом JTAG из файла JTAG UART.s. Включите ее в отчет.
6. Уясните содержимое фрагмента программы TEST_DE2_70_Media_Computer из листинга 9 приложения и включите его в отчет.
7. Уясните пункты задания, выполняемого в текущей лабораторной работе, и напишите программные заготовки для их выполнения.
В лабораторной работе ASCII-коды символов, введенных в терминальном окне AMP, отправляются в процессорную систему, реализованную на стенде с использованием UART JTAG интерфейса, отображаются на светодиодах и 7-сегментных индикаторах, затем отправляются обратно в инструментальный компьютер, и отображаются в терминальном окне AMP. Выполняется сопряжение двух процессорных систем, реализованных на разных стендах, через их последовательные COM порты и инфракрасные порты.
Порядок выполнения лабораторной работы
Часть 1. Запись в UART JTAG (вывод информации)
1. Напишите программу, которая записывает символ z в порт UART JTAG. Предусмотрите в программе анализ поля WSPACE в регистре управления UART, отражающего наличие свободного места в буфере FIFO для записываемых символов. Реализуйте выход из программы, если свободного места нет.
2. Отладьте программу. По содержимому поля WSPACE определите размер буфера FIFO. Используйте для этого окно с содержимым регистров AMP. Измените символ z на другой символ.
3. Модифицируйте программу из предыдущего пункта таким образом, чтобы символы выводились многократно. Реализуйте программную задержку в цикле вывода. Подберите задержку таким образом, чтобы происходило следующее.
4. Программа завершалась по переполнению буфера FIFO, и при этом выводилось в терминальное окно AMP минимальное количество символов. Подсчитайте количество выведенных символов. Сравните со значением, полученным в пункте 2.
5. Буфер FIFO никогда не переполняется, и программа реализует бесконечный цикл.
6. Буфер FIFO успевает вывести некоторое количество символов до того, как он переполнится.
Запишите в отчет подобранные задержки.
7. Напишите программу, которая выводит в терминальное окно AMP некоторое сообщение. Сообщение поместите в сегменте данных программы. Для этого используйте директиву. ASCIIZ ассемблера. Программа должна анализировать выводимый байт, и если он равен нулю, то вывод должен прекращаться. Оформите эту программу в виде процедуры, которая в последующем может быть использована для вывода из NIOS II процессорной системы различных сообщений. Параметром, передаваемым этой процедуре, является адрес текстовой строки в сегменте данных. В качестве тестового примера выведите свою фамилию, имя и отчество.
Часть 2. Чтение из JTAG UART (ввод информации)
1. Напишите подпрограмму, которая выполняет чтение из порта UART JTAG. Подпрограмма должна анализировать бит RVALID в регистре данных UART. Если этот бит равен 1, считанные данные присутствовали в буфере FIFO и они достоверны. В противном случае, данных в буфере нет, и подпрограмма должна ожидать их появления. Принятый из UART JTAG символ, основная программа должна отобразить на светодиодах и двух 7-сегментных индикаторах, записать обратно в JTAG и так далее в цикле. Отладьте подпрограмму.
2. С помощью AMP откомпилируйте программу из предыдущего пункта и загрузите в память. Поставьте контрольную точку в программе после приема первого символа из UART JTAG. Проанализируйте поле RAVAIL. Запишите в отчет. Обратите внимание! Для анализа поля RAVAIL потребуется установить галочку Query all devices и нажать кнопку Refresh. Учтите, что при этом произойдет чтение регистра данных UART JTAG и, следовательно, удаление символа из вершины буфера FIFO и уменьшение поля RAVAIL на 1. Повторите эксперимент, но предварительно напечатайте в терминальном окне AMP несколько символов с клавиатуры. Проанализируйте поле RAVAIL. Уберите галочку Query all devices, уберите контрольную точку и продолжите выполнение программы. Сравните количество выведенных символов в терминальном окне AMP с содержимым поля RAVAIL. Повторите эксперимент. Экспериментально определите размер буфера FIFO для читаемых данных.
3. Модифицируйте программу таким образом, чтобы коды печатаемых символов отображались на светодиодах. Составьте таблицу кодов ASCII для десяти цифр, нескольких букв вашей фамилии. Получите код символа @. В этом пункте было бы полезно использовать вывод на два 7-сегментных индикатора. Получите коды ASCII для одной и той же клавиши прописными и заглавными буквами, в английской и русской раскладке.
4. Модифицируйте подпрограмму чтения из порта UART JTAG таким образом, чтобы ASCII-коды выводимых символов записывались в память побайтно. Ввод должен завершаться при получении специального символа, например @. В конец строки должен быть добавлен нулевой байт. Подпрограмма в последующем будет полезна для реализации ввода информации в NIOS II процессорную систему с клавиатуры инструментального компьютера. Отправьте сохраненную строку в UART JTAG порт, используя подпрограмму, написанную в пункте 7 первой части.
Часть 3. Ввод из UART JTAG в режиме прерывания
1. Модифицируйте программу таким образом, чтобы ввод текстовой строки из инструментального компьютера осуществлялся в режиме прерывания. Для этого основная программа разрешает прерывания по чтению от UART JTAG и выполняет вывод строки с Вашей фамилией, именем и отчеством на дисплей LCD в режиме бегущей строки. Ввод текста в терминальную строку приводит к прерыванию основной программы, и обработчик далее осуществляет ввод строки в ОП и вывод в UART JTAG всей строки, пока не обнаружит символ конца строки.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 |
Основные порталы (построено редакторами)
