Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЛР / Основы разработки систем на кристалле (метода)

.pdf
Скачиваний:
456
Добавлен:
29.12.2023
Размер:
2.76 Mб
Скачать

1.9. Откройте вкладку Address Editor и убедитесь, что все элементы имеют адрес (рис. 81). Если присвоения не произошло, то кликните правой кнопкой мыши на элемент в данной вкладке и выберите пункт Assign Address. Отметьте в протокол адреса всех устройств.

Рис. 81. Адресное пространство проекта

1.10.Для проверки правильности конфигурации проекта нажмите Tools Validate Design или клавишу F6. Если ошибок не обнаружено, то повторно сохраните проект. Зарисуйте блок-схему в протокол.

1.11.Создайте HDL-wrapper по аналогии с предыдущими работами.

1.12.Синтезируйте проект. Затем запустите размещение проекта на кристалле ПЛИС.

1.13.Если ошибок не обнаружено, то сгенерируйте битовый поток.

2.Экспорт конфигурационных файлов в Xilinx SDK.

2.1.Нажмите File Export Export Hardware.

2.2.В появившемся окне установите галочку напротив Include Bitstream

инажмите OK.

2.3.Откройте папку проекта и найдите в ней директорию с названием имя_проекта.sdk. В данной директории проконтролируйте наличие файлаархива с разрешением HDF. Откройте данный архив и зафиксируйте его содержимое в протокол.

2.4.Нажмите на File Launch SDK, в появившемся окне – OK. Дождитесь запуска среды Xilinx SDK.

2.5.Создайте пакет поддержки платы. Убедитесь, что выбран пункт

Standalone, нажмите OK.

3. Создание приложения.

3.1. Нажмите File New Application Project. В открывшемся окне введите имя приложения MP_microblaze, выберите из списка Processor microblaze_0 и установите переключатель Board Support Package в по-

90

ложение Create New. Далее нажмите Next. В списке предлагаемых шаблонов приложения выберите Empty и нажмите Finish.

3.2.Нажмите правой кнопкой мыши на папке SRC проекта в дереве Project Explorer и выберите пункт меню New Source File. В появившемся окне введите имя файла main.c и нажмите Finish.

3.3.Найдите в дереве проекта файл main.c и измените его содержимое согласно листингу:

#include "xparameters.h" #include "xgpio.h"

int main (void) { XGpio dip; char dip_check;

XGpio_Initialize(&dip, XPAR_AXI_GPIO_0_DEVICE_ID);

XGpio_SetDataDirection(&dip, 1, 0xffffffff);

while (1) {

dip_check = XGpio_DiscreteRead(&dip, 1); Xil_Out32(XPAR_AXI_BRAM_CTRL_0_S_AXI_BASEADDR,dip_check+1);

}

}

3.4.По аналогии с предыдущими работами измените идентификаторы

AXI-устройств.

3.5.Сохраните файл и убедитесь, что компиляция прошла без ошибок.

3.6.В случае возникновения ошибок об не-

достаточном количестве памяти откройте файл

 

lscript.ld, расположенный в папке src проекта,

 

и задайте меньший размер стека и кучи (рис. 82).

 

3.7. Нажмите File New Application Pro-

 

ject. В открывшемся окне введите имя приложе-

 

ния MP_Zynq, выберите из списка Processor

Рис. 82. Значения

pc7_cortexa9_0 и установите переключатель

Stack Size и Heap Size

Board Support Package в положение Create New.

 

Нажмите Next. В списке предлагаемых шаблонов приложения выберите

Empty и нажмите Finish.

3.8.Нажмите правой кнопкой мыши на папке SRC проекта в дереве

Project Explorer и выберите пункт меню New Source File. В появив-

шемся окне введите имя файла main.c и нажмите Finish.

3.9.Найдите в дереве проекта файл main.c и измените его содержимое согласно листингу:

91

#include "xparameters.h" #include "xgpio.h" #include "xgpiops.h"

int main (void) {

static XGpioPs psGpioInstancePtr; XGpioPs_Config* GpioConfigPtr; int xStatus;

char dip_check;

GpioConfigPtr = XGpioPs_LookupConfig(XPAR_PS7_GPIO_0_DEVICE_ID);

xStatus = XGpioPs_CfgInitialize(&psGpioInstancePtr,GpioConfigPtr, GpioConfigPtr- >BaseAddr);

if(XST_SUCCESS != xStatus)

print(" PS GPIO INIT FAILED \n\r");

//EMIO is configured as output XGpioPs_SetDirectionPin(&psGpioInstancePtr, 54,1); XGpioPs_SetDirectionPin(&psGpioInstancePtr, 55,1); XGpioPs_SetDirectionPin(&psGpioInstancePtr, 56,1); XGpioPs_SetDirectionPin(&psGpioInstancePtr, 57,1); XGpioPs_SetDirectionPin(&psGpioInstancePtr, 58,1); XGpioPs_SetDirectionPin(&psGpioInstancePtr, 59,1); XGpioPs_SetDirectionPin(&psGpioInstancePtr, 60,1); XGpioPs_SetDirectionPin(&psGpioInstancePtr, 61,1);

// Enable EMIO output XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, 54,1); XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, 55,1); XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, 56,1); XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, 57,1); XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, 58,1); XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, 59,1); XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, 60,1); XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, 61,1);

while (1) {

dip_check = Xil_In32(XPAR_AXI_BRAM_CTRL_0_S_AXI_BASEADDR);

XGpioPs_WritePin(&psGpioInstancePtr, 54, dip_check & 0x1); XGpioPs_WritePin(&psGpioInstancePtr, 55, (dip_check & 0x2) >> 1 );

XGpioPs_WritePin(&psGpioInstancePtr, 56, (dip_check & 0x4) >> 2 );

XGpioPs_WritePin(&psGpioInstancePtr, 57, (dip_check & 0x8) >> 3 ); XGpioPs_WritePin(&psGpioInstancePtr, 58, (dip_check & 0x10) >> 4 );

XGpioPs_WritePin(&psGpioInstancePtr, 59, (dip_check & 0x20) >> 5 );

92

XGpioPs_WritePin(&psGpioInstancePtr, 60, (dip_check & 0x40) >> 6 ); XGpioPs_WritePin(&psGpioInstancePtr, 61, (dip_check & 0x80) >> 7 );

}

}

3.10.Если требуется, измените идентификаторы AXI-устройств.

3.11.Сохраните файл и убедитесь, что компиляция прошла без ошибок.

4. Проверка приложения на плате.

4.1.Убедитесь, что jtag-отладчик и UART от платы подключены

ккомпьютеру.

4.2.Включите питание платы.

4.3.Выберите в главном меню SDK пункт Xilinx Program FPGA и в появившемся окне нажмите Program.

4.4.Нажмите правой кнопкой мыши на названии любого из двух при-

ложений и далее в выпадающих списках Run As Run Configuration.

4.5.В открывшемся окне нажмите Xilinx C/C++ Application (GDB).

4.6.Настройте отладчик: перейдите во вкладку Application и поставьте галочки в колонке Download напротив обоих процессоров (microblaze_0

иpc7_cortexa9_0).

4.7.Нажмите Save и закройте окно.

4.8.Нажмите правой кнопкой мыши на названии проекта и далее в вы-

падающих списках Run As Launch on Hardware (GDB). Дождитесь компиляции проекта и прошивки платы.

4.9.Сверьте ожидаемый результат работы программы с результатом

вконсоли.

4.10.Измените программу согласно индивидуальному заданию.

Содержание отчета

1.Задача и цели лабораторной работы

2.Блок-схема проекта в IP-Integrator с назначением каждого элемента.

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

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

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

Задания к лабораторной работе

1. Реализуйте вывод значений переключателей SW0, SW1 и SW2 через запись в ячейку памяти XPAR_AXI_BRAM_CTRL_0_S_AXI_BASEADDR

+ 1 на светодиоды LD0, LD2 и LD7.

93

2.Реализуйте вывод значений переключателей SW1, SW2 и SW3 через запись в ячейку памяти XPAR_AXI_BRAM_CTRL_0_S_AXI_BASEADDR

+2 на светодиоды LD1, LD2 и LD3.

3.Реализуйте вывод значений переключателей SW3, SW4 и SW5 через запись в ячейку памяти XPAR_AXI_BRAM_CTRL_0_S_AXI_BASEADDR

+3 на светодиоды LD2, LD3 и LD4.

4.Реализуйте вывод значений переключателей SW4, SW5 и SW6 через запись в ячейку памяти XPAR_AXI_BRAM_CTRL_0_S_AXI_BASEADDR

+4 на светодиоды LD3, LD4 и LD5.

5.Реализуйте вывод значений переключателей SW5, SW6 и SW7 через запись в ячейку памяти XPAR_AXI_BRAM_CTRL_0_S_AXI_BASEADDR

+5 на светодиоды LD4, LD5 и LD6.

6.Реализуйте вывод значений переключателей SW6, SW7 и SW0 через запись в ячейку памяти XPAR_AXI_BRAM_CTRL_0_S_AXI_BASEADDR

+6 на светодиоды LD5, LD6 и LD7.

7.Реализуйте вывод значений переключателей SW7, SW0 и SW1 через запись в ячейку памяти XPAR_AXI_BRAM_CTRL_0_S_AXI_BASEADDR

+7 на светодиоды LD6, LD7 и LD0.

8.Реализуйте вывод значений переключателей SW0, SW2 и SW4 через запись в ячейку памяти XPAR_AXI_BRAM_CTRL_0_S_AXI_BASEADDR

+9 на светодиоды LD0, LD2 и LD4.

94

СПИСОК РЕКОМЕНДУЕМЫХ ИСТОЧНИКОВ

1. Егоров, В. В. Применение ПЛИС в оптических системах связи : учебное пособие / В. В. Егоров, А. А. Прасолов ; СПбГУТ. – Санкт-Петербург, 2022. – 60 с.

2. Харрис, Д. М. Цифровая схемотехника и архитектура компьютера / Д. М. Харрис, С. Л. Харрис. – Москва : ДМК Пресс, 2017. – 792 с.

3.Харрис, Д. М. Цифровая схемотехника и архитектура компьютера. Дополнение по архитектуре ARM / Д. М. Харрис, С. Л. Харрис. – Москва : ДМК Пресс,

2019. – 356 с.

4.Цифровой синтез : практический курс / под общ. ред. А. Ю. Романова, Ю. В. Панчула. – Москва : ДМК Пресс, 2020. – 556 с.

95

Казьмин Олег Юрьевич Прасолов Александр Александрович

ОСНОВЫ РАЗРАБОТКИ СИСТЕМ НА КРИСТАЛЛЕ

Учебно-методическое пособие по выполнению лабораторных работ

Редактор Е. В. Пирогова

Компьютерная верстка Н. А. Ефремовой

План издания 2023 г., п. 5

Подписано к печати 06.06.2023 Объем 6,0 печ. л. Тираж 11 экз. Заказ 1492

Редакционно-издательский отдел СПбГУТ 193232 СПб., пр. Большевиков, 22

Отпечатано в СПбГУТ

96

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