2. Поставьте контрольную точку в конце программы. Запустите программу. Убедитесь, что возврат в основную программу не выполняется. Выясните причину и устраните ее.
3. Убедитесь в работоспособности модифицированной программы. Покажите результат ее работы преподавателю.
Часть 4. Использование файлов с исходными данными в AMP
1. Создайте файл и поместите в него исходные значения. Для этого используйте любой текстовый редактор и представление чисел в шестнадцатеричной форме. В качестве разделителя может использоваться любой символ. Загрузите файл в оперативную память, начиная с заданного адреса. Используйте команду Load file into memory из меню Action приложения AMP. В появившемся окне задайте имя файла с указанием пути к нему, в поле «формат файла» окна браузера задайте Delimited hexadecimal value file, символ разделителя и начальный адрес оперативной памяти. Убедитесь в правильности заполнения памяти.
2. Модифицируйте программу из предыдущей части таким образом, чтобы она передавала подпрограмме через стек число слов в списке, соответствующее подготовленному Вами файлу и начальный адрес ОП, куда был загружен файл. После получения результата через стек, основная программа выводит его на светодиоды. Покажите результат преподавателю.
3. Используя AMP, загрузите исполняемый код программы (файл c расширением.elf) из предыдущей части в оперативную память, начиная с заданного адреса. Для этого в поле «формат файла» окна браузера, выберите пункт Binary format. Чтобы убедиться в правильности загрузки программы, визуально сравните содержимое областей памяти, в которую вами загружена программа и той, в которой она изначально была загружена AMP. Обратите внимание! Изменения в окне дизассемблирования будут отсутствовать. Также, первые 0х74 байта загруженного кода будут содержать служебную информацию.
4. Выполните программу. Для этого поместите в PC стартовый адрес программы и используйте команду Action > Continue. Предварительно погасите светодиоды так, как это выполнялось в предыдущей лабораторной работе. Для того, чтобы проверить правильность выполнения команды call, поставьте по адресу этой команды контрольную точку. После достижения контрольной точки выполните следующие команды по шагам. Проверьте правильность перехода к процедуре Max. Отразите в отчете.
Индивидуальное задание
Напишите программу, которая решает какую-либо задачу из нижеприведенного списка. В качестве варианта используйте номер рабочего места. Соответствие номеров вариантов и заданий приводится в таблице 3.
1. Напишите программу, которая использует рекурсию для вычисления факториала числа N. N!=N(N-1)(N-2)…*3*2*1. Заметьте, что N!=N*(N-1)! Программа включает подпрограмму Factor, которая вызывает сама себя до тех пор, пока желаемый факториал не будет получен. Основная программа должна ввести параметр N, задаваемый с помощью переключателей, затем передать N как параметр, размещая его в стеке. Подпрограмма может вернуть результат через регистр R4, либо через стек. Программа Factor вызывает сама себя. Перед вызовом не забудьте сохранять адрес возврата (регистр ra) в стеке и восстанавливать после возврата. Покажите результат работы программы преподавателю.
2. Напишите программу, которая осуществляет вывод на LCD содержимого области памяти, представленного в шестнадцатеричном виде. Оформите ее в виде подпрограммы, которой передаются параметры: начальный адрес области памяти, количество байтов и номер позиции на LCD дисплее.
3. Напишите программу, которая осуществляет вывод на 7-сегментные индикаторы содержимого области памяти, представленного в шестнадцатеричном виде. Оформите ее в виде подпрограммы, которой передаются параметры: начальный адрес области памяти, количество отображаемых символов.
4. Напишите программу, которая осуществляет упорядочивание чисел в списке в убывающем порядке. Каждое число представляет собой 32-разрядное число без знака. Оформите ее в виде подпрограммы, которой передаются параметры: адрес списка в ОП, число слов в списке.
5. Напишите программу, вычисляющую первые n чисел Фибоначчи. Числа 32 – разрядные. Они вычисляются по формуле An=An-1+An-2 и и записываются в оперативную память. Первые числа выглядят следующим образом: 0,1,1,2,3,5,8…. Оформите в виде подпрограммы, которой передаются параметры: адрес ОП, число n.
6. Напишите программу, вычисляющую максимальное количество повторяющихся нулевых и единичных разрядов в числе, хранящемся в ОП. Адрес числа может быть произвольным. Оформите в виде подпрограммы, передав в качестве параметров: адрес ОП и размер числа в байтах (не более 4). Вывод найденных значений осуществите на красные и зеленые светодиоды.
7. Напишите программу, вычисляющую количество положительных и отрицательных фронтов в числе, хранящемся в ОП. Например, число 0b10010110 содержит 2 положительных и 3 отрицательных фронта. Адрес числа может быть произвольным. Оформите в виде подпрограммы, передав в качестве параметров адрес ОП и размер числа в байтах (не более 4). Вывод найденных значений осуществите на красные и зеленые светодиоды.
Таблица 3 Варианты заданий к лабораторной работе № 2
Номер рабочего места | Название стенда | Номер задания |
VT-L14 | NEEK | 4 |
VT-L13 | miniDiLab | 1 |
VT-L12 | DiLab | 5 |
VT-L11 | DE2-70 | 6 |
VT-L10 | DE2-70 | 7 |
VT-L9 | DE0 | 3 |
VT-L8 | DE0 | 2 |
Отчетные материалы
Отчетные материалы должны содержать:
1. Цель лабораторной работы.
2. Материалы, связанные с подготовкой к работе, включая теоретическую часть и заготовку программы.
3. Информацию по выполнению каждого пункта задания. Причем в отчете должны содержаться выполняемые Вами действия, наблюдаемые результаты, и Ваши объяснения.
4. Написанные Вами фрагменты программ, включая программу для выполнения индивидуального задания.
5. Краткое заключение.
Лабораторная работа №3
Реализация ввода/вывода информации в процессорной системе
Цель работы: изучение возможностей ввода/вывода информации в процессорной системе.
Исходные файлы лабораторной работы
В приложении приводится исходный файл тестовой программы interrupt_example.s. В программе используются прерывания от таймера и кнопок. Обработчик прерывания от таймера содержится в файле interval_timer.s. Обработчик прерывания от кнопок содержится в файле pushbutton_ISR.s. Обработчик исключений, задачей которого является определение причины прерывания и вызов соответствующей процедуры, содержится в файле exception_handler.s.
Подготовка к лабораторной работе
Для выполнения лабораторной работы необходимо изучить по материалам лекций и предложенной литературе.
1. Организацию обмена ЭВМ с периферийными устройствами.
2. Реализацию прерываний в процессорной системе NIOSII. Используемые для этого регистры процессора и портов ввода – вывода.
3. Уясните пример программы, в которой используются прерывания, и реализацию обработчика прерываний из описания процессорной системы «DE2- 70 Media Computer»[9]. Вставьте его в отчет.
4. Уясните пункты задания, выполняемого в текущей лабораторной работе, и напишите программные заготовки для их выполнения.
5. Уясните выполнение команды trap. Вставьте в отчет ее формат и краткое описание. Напишите программную заготовку для выполнения пункта 1 части 6.
6. Уясните выполнение команды mul. Вставьте в отчет ее формат и краткое описание. Напишите программу, которая будет выполнять программную эмуляцию команды умножения.
В лабораторной работе в качестве устройств ввода будут использоваться переключатели SWITCH и кнопки KEY3, KEY2, KEY1. В качестве устройств вывода – зеленые светодиоды LEDG 7..0, красные светодиоды LEDR 17..0, индикаторы шестнадцатеричной цифры HEX 7..0. Для связи с каждым устройством используются параллельные порты ввода/вывода (PIO). Адреса портов и принцип их работы приведены в описании процессорной системы [9].
В лабораторной работе решается задача сложения 8-разрядных чисел с знаком, которые задаются переключателями SWITCH 7..0. Набранное число отображается на зеленых светодиодах. Вычисленная сумма сохраняется в регистре, младшая часть которого отображается на красных светодиодах.
Порядок выполнения лабораторной работы
Часть 1. Программно управляемый ввод с переключателей и вывод на светодиоды
Используйте 8 переключателей SW 7..0 для задания вводимого числа. Используйте 8 зеленых светодиодов LEDG 7..0 для отображения вводимого числа. Используйте 18 красных светодиодов LEDR 17..0 для отображения младших разрядов вычисленной суммы. Все эти компоненты подключаются через параллельные порты к мультимедийной процессорной системе.
1. Напишите программу на языке ассемблер, которая вначале обнуляет сумму, затем читает 8-разрядное значение (число со знаком в дополнительном коде), задаваемое переключателями SW 7..0, отображает прочитанное значение на зеленых светодиодах, выполняет сложение введенного числа с накопленной суммой, выводит сумму на красные светодиоды. Осуществляет переход на ввод очередного числа, выполняя бесконечный цикл.
2. Создайте новую папку lab3_part1. Поместите Вашу программу в эту папку.
3. Используйте приложение AMP для создания нового проекта part1 в этой папке. Выберите Вашу программу и загрузите процессорную систему в программируемый кристалл ПЛИС. Выберите подходящую память для размещения Вашей программы. Разместите сегменты кода и данных, начиная с адреса 0х1000. Область в начале оперативной памяти понадобится в последующем для размещения обработчиков сброса и прерываний процессорной системы. Скомпилируйте и загрузите Вашу программу.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 |
Основные порталы (построено редакторами)
