ЛР / otchet_LR1
.docxМИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ,
СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»
(СПБГУТ)
_________________________________________________________________________
Кафедра Радиосвязи и Вещания (РСиВ)
Лабораторная работа №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
Отчёт о синтезе, имплементации и создании битового потока
Синтез – трансляция в абстрактную цепь из логических вентилей
Имплементация – реализация программы на конкретном кристалле.