ЛР / otchet_LR3
.docxМИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ,
СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»
(СПБГУТ)
_________________________________________________________________________
Кафедра Радиосвязи и Вещания (РСиВ)
Лабораторная работа №3
По дисциплине «Основы разработки систем на кристалле»
СОЗДАНИЕ ПРОЕКТА ПРОЦЕССОРНОЙ СИСТЕМЫ ДЛЯ РЕАЛИЗАЦИИ ЛОГИЧЕСКИХ ВЫРАЖЕНИЙ НА ПОРТАХ EMIO
Выполнили
студенты группы РТ-XX
Проверил:
Фёдоров Андрей Сергеевич __________
Санкт-Петербург
2023
1. Цель работы
Создание проекта с использованием IP интегратора. Использование MIO (multiplexed I/O) и EMIO (extended multiplexed I/O) портов для реализации логических выражений. Проверка проекта на отладочной плате ZedBoad.
2. Чертеж блок-схемы проекта с отметками о назначении всех блоков.
На схеме изображён блок сконфигурированного процессора. Подключены внешние интерфейсы: оперативная память (DDR), интерфейс для соединения с аппаратными периферийными устройствами, например, через UART, Ethernet, USB, интерфейс общего назначения вводов / выводов
3. Блок-схема алгоритма работы программы индивидуального задания.
4. Листинг исходного кода из индивидуального задания с поясняющими комментариями каждой строки.
#include <stdio.h> // подключение необходимых
#include "xil_printf.h" // библиотек
#include "xparameters.h"
#include "xgpiops.h"
#include "xstatus.h"
#define PIN_OFFSET 54 // объявление директив
#define WIDTH_EMIO 16
#define LED_LOW_ADDR 8
u8 sws[8]; // объявление массивов для удобства
u8 led[5]; // обращения к светодиодам и переключателям
int main(void)
{
static XGpioPs psGpioInstancePtr; // объявление структуры
XGpioPs_Config* GpioConfigPtr = XGpioPs_LookupConfig(XPAR_XGPIOPS_0_DEVICE_ID); // получение адреса конфигурации
/* проверка инициализации конфигурации */
if (XGpioPs_CfgInitialize(&psGpioInstancePtr, GpioConfigPtr, GpioConfigPtr->BaseAddr) != XST_SUCCESS)
printf("GPIO initialization failed!\r\n");
/* конфигурация пинов как выходных EMIO */
for (int i = 0; i < WIDTH_EMIO; ++i)
{
XGpioPs_SetDirectionPin(&psGpioInstancePtr, PIN_OFFSET+i, !(i <= LED_LOW_ADDR-1));
XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, PIN_OFFSET+i, !(i <= LED_LOW_ADDR-1));
}
/* бесконечный цикл */
for (;;)
{
/* получение данных от переключателе */
for (int i = 0; i < LED_LOW_ADDR; ++i)
sws[i] = XGpioPs_ReadPin(&psGpioInstancePtr, PIN_OFFSET+i);
led[0] = !(sws[0] && sws[1]); // присваиваем значение светодиодам
led[1] = !(sws[4] && (sws[3] || sws[2]));
led[2] = (sws[7] && sws[6]) || !(sws[5]);
/* вывод значений на светодиоды */
for (int i = 0; i < 5; ++i)
XGpioPs_WritePin(&psGpioInstancePtr, PIN_OFFSET+LED_LOW_ADDR+i, led[i]);
}
return 0;
}
5. Заметки из протокола.
Имя сигнала |
Пин кристалла Zynq7000 |
Имя сигнала |
Пин кристалла Zynq7000 |
LD0 |
T22 |
SW0 |
F22 |
LD1 |
T21 |
SW1 |
G22 |
LD2 |
U22 |
SW2 |
H22 |
LD3 |
U21 |
SW3 |
F21 |
LD4 |
V22 |
SW4 |
H19 |
LD5 |
W22 |
SW5 |
H18 |
LD6 |
U19 |
SW6 |
H17 |
LD7 |
U14 |
SW7 |
M15 |