ЛР / otchet_LR5
.docxМИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ,
СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»
(СПБГУТ)
_________________________________________________________________________
Кафедра Радиосвязи и Вещания (РСиВ)
Лабораторная работа №5
По дисциплине «Основы разработки систем на кристалле»
СОЗДАНИЕ ПРОЕКТА ПРОЦЕССОРНОЙ СИСТЕМЫ ДЛЯ РАБОТЫ С GPIO-ПОРТАМИ
Выполнили
студенты группы РТ-XX
Проверил:
Фёдоров Андрей Сергеевич __________
Санкт-Петербург
2023
1. Цель работы
Создание проекта с использованием IP-интегратора. Настройка аппаратной процессорной системы на работу GPIO (General-Purpose Input/ Output). Проверка проекта на отладочной плате ZedBoad.
2. Описание блока AXI Interconnect.
IP блок AXI Interconnect соединяет одно или несколько устройств AXI с отображением памяти Master с одним или несколькими устройствами с отображением памяти Slave.
3. Описание блока AXI GPIO.
Конструкция AXI GPIO обеспечивает интерфейс ввода/вывода общего назначения. AXI GPIO может быть сконфигурирован как одноканальное или двухканальное устройство.
4. Адреса смещения для кнопок и светодиодов из вкладки Address Editor.
5. Блок-схема проекта в IP-Integrator с обозначением роли каждого элемента.
ZYNQ7 Processing System – это блок процессора. Это ключевой элемент схемы, который позволяет работать с периферией. Процессор исполняет, написанный на языке C, код приложения.
Processor System Reset – блок, позволяющий адаптировать конструкцию под свое приложение, задавая определенные параметры для включения/отключения функций.
AXI Interconnect – блок, соединяющий одно или несколько устройств AXI с отображением памяти Master с одним или несколькими устройствами с отображением памяти Slave.
AXI GPIO – блок, обеспечивающий интерфейс ввода/вывода.
6. Блок-схема алгоритма работы программы индивидуального задания.
7. Листинги исходного кода из индивидуальных заданий с обязательными поясняющими комментариями каждой строки.
#include "xparameters.h"
#include "xgpio.h"
#include "sleep.h"
#define SW134 26
#define SW1356 106
#define LD157 162
#define LD345 56
int main(void)
{
XGpio dip, leds;
int dip_check;
xil_printf("-- Start of the Program --\r\n");
XGpio_Initialize(&dip, XPAR_AXI_GPIO_0_DEVICE_ID); // инициализация структуры для работы с переключателями
XGpio_Initialize(&leds, XPAR_AXI_GPIO_0_DEVICE_ID+123); // инициализация структуры для работы со светодиодами
XGpio_SetDataDirection(&dip, 1, 0xffffffff); // ввод
XGpio_SetDataDirection(&leds, 1, 0x00000000); // вывод
while (1)
{
dip_check = XGpio_DiscreteRead(&dip, 1); // текущее значение переключателей
xil_printf("DIP Switch Status %x\r\n", dip_check);
if (dip_check == SW134)
XGpio_DiscreteWrite(&leds, 1, LD157);
else if (dip_check == SW1356)
XGpio_DiscreteWrite(&leds, 1, LD345);
else
XGpio_DiscreteWrite(&leds, 1, 0);
usleep(2000);
}
return 0;
}