ЛР / otchet_LR2
.docxМИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ,
СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»
(СПБГУТ)
_________________________________________________________________________
Кафедра Радиосвязи и Вещания (РСиВ)
Лабораторная работа №2
По дисциплине «Основы разработки систем на кристалле»
СОЗДАНИЕ ПРОЕКТА ПРОЦЕССОРНОЙ СИСТЕМЫ ДЛЯ РАБОТЫ С ПОРТАМИ MIO И EMIO
Выполнили
студенты группы РТ-XX
Проверил:
Фёдоров Андрей Сергеевич __________
Санкт-Петербург
2023
1. Цель работы
Создание проекта с использованием IP-интегратора. Настройка аппаратной процессорной системы на работу MIO (Multiplexed I/O) и EMIO (Extended Multiplexed I/O). Проверка проекта на отладочной плате ZedBoad.
2. Чертеж блок-схемы проекта с отметками о назначении всех блоков.
На схеме изображён блок сконфигурированного процессора. Подключены внешние интерфейсы: оперативная память (DDR), интерфейс для соединения с аппаратными периферийными устройствами, например, через UART, Ethernet, USB, интерфейс общего назначения вводов / выводов
3. Блок-схема алгоритма работы программы индивидуального задания.
4. Листинг исходного кода из индивидуального задания с поясняющими комментариями каждой строки.
#include "xgpiops.h" // библиотека для конфигурации вводов / выводов
#include "sleep.h" // библиотека для использования задержки
#define DELAY 2000000 // объявление директив
#define LD0 54
#define LD3 57
#define LD9 7
#define SET 1
#define RESET 0
int main(void)
{
static XGpioPs psGpioInstancePtr; // объявление структуры
XGpioPs_Config* GpioConfigPtr; // указатель на структуру XGpioPs_Config
int xStatus; // статус инициализации
GpioConfigPtr = XGpioPs_LookupConfig(XPAR_PS7_GPIO_0_DEVICE_ID); // получение адреса конфигурации
xStatus = XGpioPs_CfgInitialize(&psGpioInstancePtr, GpioConfigPtr, GpioConfigPtr->BaseAddr); // инициализация конфигурации
if (XST_SUCCESS != xStatus)
printf("PS GPIO INIT FAILED\n\r");
// Конфигурация пинов как выходных EMIO
XGpioPs_SetDirectionPin(&psGpioInstancePtr, LD0, SET);
XGpioPs_SetDirectionPin(&psGpioInstancePtr, LD3, SET);
// Включение пинов EMIO
XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, LD0, SET);
XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, LD3, SET);
// Включение и конфигурация пинов MIO
XGpioPs_SetDirectionPin(&psGpioInstancePtr, LD9, SET);
XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, LD9, SET);
while(1)
{
/*В теле цикла происходит периодическое
включение и выключение пинов с периодом 1 секунда*/
XGpioPs_WritePin(&psGpioInstancePtr, LD0, SET);
usleep(DELAY);
XGpioPs_WritePin(&psGpioInstancePtr, LD0, RESET);
usleep(DELAY);
XGpioPs_WritePin(&psGpioInstancePtr, LD9, SET);
usleep(DELAY);
XGpioPs_WritePin(&psGpioInstancePtr, LD9, RESET);
usleep(DELAY);
XGpioPs_WritePin(&psGpioInstancePtr, LD3, SET);
usleep(DELAY);
XGpioPs_WritePin(&psGpioInstancePtr, LD3, RESET);
usleep(DELAY);
}
return 0;
}
5. Заметки из протокола.