Скачиваний:
7
Добавлен:
29.12.2023
Размер:
63.83 Кб
Скачать

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ,

СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»

(СПБГУТ)

_________________________________________________________________________

Кафедра Радиосвязи и Вещания (РСиВ)

Лабораторная работа №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

Соседние файлы в папке ЛР