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

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

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

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

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

(СПБГУТ)

_________________________________________________________________________

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

Лабораторная работа №1

По дисциплине «Основы разработки систем на кристалле»

СОЗДАНИЕ ПРОЕКТА ПРОЦЕССОРНОЙ СИСТЕМЫ ДЛЯ РАБОТЫ С АППАРАТНЫМ UART – ИНТЕРФЕЙСОМ

Выполнили

студенты группы РТ-XX

Проверил:

Фёдоров Андрей Сергеевич __________

Санкт-Петербург

2023

1. Цель работы

Ознакомление с процессом создания блочного проекта (Block Design), конфигурирующего процессорную систему Zynq для работы с аппаратным интерфейсом UART, и написанием приложения, которое выводит результаты вычисления в консоль интерфейса.

Справка

Устройства Zynq 7000 оснащены двухъядерными процессорами ARM Cortex-A9, интегрированными с 28-нм программируемой логикой на базе Artix 7 или Kintex™ 7, что обеспечивает превосходную производительность на ватт и максимальную гибкость конструкции.

2. Чертёж блок-схемы проекта

На схеме изображён блок скофигурированного процессора. Подключены внешние интерфейсы, такие как оперативная память и интерфейс для соединения с аппаратными периферийными устройствами, например, через UART, Ethernet, USB.

3. Блок-схема алгоритма работы программы индивидуального задания.

4. Листинг исходного кода из индивидуального задания с поясняющими комментариями каждой строки

#include <stdio.h>          // для printf(), scanf()

#include "platform.h"       // init_platform(), enable_caches(),

                            // disable_caches()

#include "xil_printf.h"    

#include <math.h>           // для использования мат. операций

int main()

{

    init_platform();        // инициализация UART и доступ к кэшу

    int num12, num13, num14, num15;     // объявление переменных

    int ar[12];

    int temp;

    printf("num12, num13, num14, num15 = \n\r");            // вывод в консоль

    scanf("%d %d %d %d", &num12, &num13, &num14, &num15);   // считывание из консоли

    int num_ar[] = {num12, num13, num14, num15};            // объявление и инициализация

                                                            // массива введёнными данными для

// удобства

    int k = 0;

    for (int i = 0; i < 4; ++i) {                           // цикл для инициализации массива

        for (int j = 0; j < 4; ++j) {

            if (i == j)

                continue;

            else {

                ar[k] = num_ar[i] / num_ar[j];

                printf("ar[%d] = %d\n\r", k, ar[k]);        // вывод в консоль значения ar[k]

            }

            ++k;

        }

    }

    temp = ar[0];

    for (int i = 1; i < k; ++i) {           // цикл для поиска наименьшего значения в массиве

        if (temp > ar[i])

            temp = ar[i];

    }

    printf("%d\n\r", temp);                 // вывод в консоль наименьшего значения

    cleanup_platform();                     // отключение кэша

    return 0;

}

5. Заметки из протокола

Выставление значений LVCMOS

Задержки тактового сигнала для платы

DQS0 0.025 DQ[7 : 0]

DQS1 0.028 DQ[15 : 8]

DQS2 -0.009 DQ[23 : 16]

DQS3 -0.061 DQ[31 : 24]

Создание HDL-wrapper

Отчёт о синтезе, имплементации и создании битового потока

Синтез – трансляция в абстрактную цепь из логических вентилей

Имплементация – реализация программы на конкретном кристалле.

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