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

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

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

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

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

2.Описание блока AXI Interconnect.

3.Описание блока AXI GPIO.

4.Адреса смещения для кнопок и светодиодов из вкладки Address

Editor.

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

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

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

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

Задание 1

Измените проект таким образом, чтобы реализовать вывод значений переключателей на светодиоды. Для этого в Block Design добавьте еще один блок AXI GPIO для считывания значений со светодиодов. При настройке блока укажите опцию leds 8bits – это позволит среде автоматически активировать поддержку встроенных светодиодов на плату. Проделайте необходимые шаги для получения нового HDF-файла.

Внутри SDK создайте отдельное приложение внутри проекта: File New Application Project. Впишите имя приложения и установите переключатель в положение Use existing, указав на созданный ранее BSP.

Необходимо учесть, что содержимое аппаратной обертки изменилось. Измените исходный код проекта, создав еще одно устройство XGpio с уникальным ID и добавив инициализацию и установку направления данных, также используйте функцию XGpio_DiscreteWrite. Правильные аргументы функций можно узнать внутри библиотеки драйвера xgpio.h.

Задание 2

Измените проект таким образом, чтобы он работал согласно варианту:

1.Реализуйте включение светодиодов LD2, LD3 и LD4, если активированы переключатели SW0, SW3 и SW6, и включение светодиодов LD0, LD4

иLD3, если активированы переключатели SW0, SW3 и SW1.

2.Реализуйте включение светодиодов LD0, LD5 и LD6, если активированы переключатели SW1, SW2 и SW5, и включение светодиодов LD4, LD6

иLD7, если активированы переключатели SW2 и SW3.

3.Реализуйте включение светодиодов LD0, LD1 и LD6, если активированы переключатели SW0, SW5, SW6 и SW7, и включение светодиодов LD1, LD5 и LD6, если активированы переключатели SW0 и SW5.

50

4.Реализуйте включение светодиодов LD1, LD5 и LD7, если активированы переключатели SW1, SW3 и SW4, и включение светодиодов LD3, LD4

иLD5, если активированы переключатели SW1, SW3, SW5 и SW6.

5.Реализуйте включение светодиодов LD0, LD2 и LD6, если активированы переключатели SW3 и SW5, и включение светодиодов LD0, LD3

иLD7, если активированы переключатели SW1, SW4 и SW6.

6.Реализуйте включение светодиодов LD4, LD6 и LD7, если активированы переключатель SW3, и включение светодиодов LD1, LD4, LD6 и LD7, если активированы переключатели SW4 и SW5.

7.Реализуйте включение светодиодов LD2, LD5 и LD7, если активированы переключатели SW2, SW3 и SW5, и включение светодиодов LD0, LD1

иLD4, если активированы переключатели SW0, SW3 и SW6.

8.Реализуйте включение светодиодов LD5, LD6 и LD7, если активированы переключатели SW3, SW4 и SW6, и включение светодиодов LD0, LD2

иLD7, если активированы переключатели SW0, SW1 и SW4.

9.Реализуйте включение светодиодов LD2, LD3 и LD6, если активированы переключатели SW1, SW6 и SW7, и включение светодиодов LD4

иLD7, если активированы переключатели SW3, SW6 и SW7.

10.Реализуйте включение светодиодов LD2, LD3 и LD4, если активированы переключатели SW2, SW3 и SW7, и включение светодиодов LD3

иLD4, если активированы переключатели SW3 и SW5.

51

Лабораторная работа 6

СОЗДАНИЕ ПОЛЬЗОВАТЕЛЬСКОГО RTL-ЭЛЕМЕНТА, СОВМЕСТИМОГО С GPIO-ИНТЕРФЕЙСОМ

Цель работы

Создание и использование пользовательского элемента для работы с семисегментным индикатором. Настройка аппаратной процессорной си-

стемы на работу GPIO (General-Purpose Input/Output). Проверка проекта на отладочной плате ZedBoad.

Основные вопросы, изучаемые перед выполнением работы

1.Архитектура системы на кристалле Xilinx Zynq7000.

2.Структура лабораторного макета ZedBoard.

3.Интерфейс AXI.

4.Работа с блоком AXI GPIO.

5.Подключение семисегментного индикатора к плате ZedBoard.

Содержание работы

1. Распиновка внешнего подключаемого модуля семисегментного индикатора показана на рис. 57.

Рис. 57. Распиновка внешнего подключаемого модуля

2. Создайте новую отдельную директорию для лабораторной работы по аналогии с лабораторной работой 1. Например, полный путь к директории для данной лабораторный работы:

D:/(Год)/(Фамилия) (группа)/soc-lab-6

52

3. Создание проекта в Vivado 2016.4/.

3.1. Создайте проект с именем gpio_ssd_lab_variant_(номер варианта) по аналогии с лабораторной работой 1 (рис. 58).

Рис. 58. Пример параметров создаваемого проекта

3.2.Создайте Block Design и добавьте IP процессорной системы Zynq7 лабораторной работы 1.

3.3.Настройте процессорную систему по аналогии с п. 4 лабораторной работы 1.

3.4.В настройках процессорной системы включите поддержку интер-

фейса GPIO MIO.

3.5.В данной работе необходимо включить Master AXI Interface. Для

этого откройте PS-PL configuration General AXI Non secure Enablement и установите галочку напротив M AXI GP0 Interface.

3.6.Добавьте ip-элемент AXI GPIO, настройте данный блок для работы с переключателями по аналогии с лабораторной работой 5. Закройте окно настройки и нажмите ОK.

3.7.Нажмите Run Connection Automation. Это позволит автоматически добавить и соединить необходимую периферию.

Примечание. Обратите внимание, что появился блок AXI Interconnect, запишите назначение данного блока в протокол.

3.8. Откройте блок AXI Interconnect двойным кликом мыши и добавьте еще один master-интерфейс, изменив их количество на 2 (рис. 59).

Рис. 59. Настройки блока AXI Interconnect

53

3.9. Добавьте еще один ip-элемент с названием AXI GPIO, смените имя данного элемента на user_gpio ssd. Раскройте и сконфигурируйте данный блок на работу в режиме одноканального выхода (рис. 60).

Рис. 60. Настройка блока в ручном режиме

3.10. Вид блочной диаграммы на данном этапе представлена на рис. 61.

Рис. 61. Вид диаграммы блочного проекта

3.11. Добавьте файл устройства (Design Sources) с именем gpio_ssd.v, нажав Add Source Design Source. Впишите следующие строки согласно листингу:

module gpio_ssd # ( parameter DATA_WIDTH = 8 )(

input [DATA_WIDTH-1:0] GPIO_in, output reg [DATA_WIDTH-1:0] ssd

54

);

always @(*)

case (GPIO_in[3:0])

//ssd <= 8’b dP A B C D E F G – последовательность сегментов

// ssd <= 8’b [7] [6][5][4][3][2][1][0] – соответствие номера бита

0:ssd <= 8'b11111110;

1:ssd <= 8'b10110000;

2:ssd <= 8'b11101101;

3:ssd <= 8'b11111001; endcase

endmodule

3.12.Дополните недостающие значения регистра SSD в листинге выше, чтобы получить все символы шестнадцатеричной системы счисления на индикаторе.

3.13.В протоколе дополните табл. 8 соответствия сегмента и номера контакта кристалла, используя документацию на отладочную плату.

Таблица 8

Соответствие контакта кристалла Zynq и номера разъема

Номер бита

7

6

5

4

3

2

1

0

 

 

 

 

 

 

 

 

 

Сегмент

 

 

 

 

 

E

F

G

Контакт pmod

 

 

 

 

 

 

JB3

JB4

 

 

 

 

 

 

 

 

 

Контакт кристалла

 

 

 

 

 

 

 

W8

 

 

 

 

 

 

 

 

 

3.14.Откройте Block Design проекта и найдите в ресурсах проекта gpio_ssd.v. Нажмите правой кнопкой мыши на файл и выберите пункт Add Module to Block Design. Это позволит добавить модуль на диаграмму.

3.15.Соедините модуль со схемой. В пустом месте области блочного проекта кликните правой кнопкой мыши и выберите Regenerate Layout, чтобы перестроить расположение блоков в автоматическом режиме. Итоговый вид проекта показан на рис. 62.

Рис. 62. Диаграмма блочного проекта

55

3.16. Откройте вкладку Address Editor и убедитесь, что все элементы имеют адрес (рис. 63).

Рис. 63. Фрагмент вкладки Address Editor

3.17.Если присвоения не произошло, то кликните правой кнопкой мыши на элемент в данной вкладке и выберите пункт Assign Address.

3.18.Для проверки правильности конфигурации проекта нажмите

Tools Validate Design или клавишу F6. Если ошибок не обнаружено, то повторно сохраните проект. Запишите адреса устройств из вкладки

Address Editor в протокол.

Примечание. Важно понимать, что в вашем случае адреса могут быть отличные от приведенных в примере.

3.19.Создайте HDL-wrapper по аналогии с лабораторной работой 1.

3.20.Синтезируйте проект.

3.21.После выполнения синтеза откройте Synthesized Design.

3.22.Задайте конфигурацию кнопок, тактового сигнала, а также коннекторов индикатора на разъемах Pmod A и Pmod B в I/O Planning или создайте файл ограничений вручную. Для выбора пинов FPGA используйте табл. 9. Установите стандарт напряжения LVCMOS33 для семисегментного индикатора.

 

 

 

 

 

 

Таблица 9

 

Соответствие контакта кристалла Zynq и номера разъема

 

 

 

 

 

 

 

 

Номер

 

Имя

Пин

Номер

Имя

Пин

коннектора

 

кристалла

коннектора

кристалла

 

сигнала

сигнала

pmod

 

Zynq

Pmod

Zynq

 

 

 

 

 

 

 

 

 

 

 

 

JA1

Y11

 

JB1

W12

 

 

 

 

 

 

 

JA

 

JA2

AA11

JB

JB2

W11

 

 

 

 

 

 

JA3

Y10

JB3

V10

 

 

 

 

 

 

 

 

 

 

 

 

JA4

AA9

 

JB4

W8

 

 

 

 

 

 

 

3.23.После установки номера пинов и напряжений нажмите сочетание клавиш CTRL + S для сохранения конфигурации пинов. В иерархии проекта откройте файл ограничений и проверьте правильность заполнения назначенных пинов.

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

3.25.Сгенерируйте битовый поток.

56

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

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

4.2.В появившемся окне установите галочку напротив Include Bitstream. Нажмите ОK.

4.3.Найдите папку проекта и откройте в ней директорию с названием

имя проекта.sdk.

4.4.Проконтролируйте наличие файла-архива с разрешением HDF. Откройте данный архив и зафиксируйте его содержимое в протокол.

4.5.Нажмите File Launch SDK и в появившемся окне ОК. Дождитесь запуска среды Xilinx SDK.

4.6.Нажмите File New Board Support Package. Убедитесь, что выбран пункт Standalone. Далее нажмите ОK.

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

5.1.Нажмите File New Application Project. В открывшемся окне введите имя приложения GPIO_ssd и установите переключатель Board Support Package в положение Use Existing. Нажмите Next. В списке пред-

лагаемых шаблонов приложения выберите Empty и нажмите Finish.

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

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

int main (void){ XGpio dip, led; int i, dip_check;

xil_printf("-- Start of the Program --\r\n");

xil_printf("-- Initialize of the dip switch --\r\n"); XGpio_Initialize(&dip, XPAR_AXI_GPIO_SWS_DEVICE_ID);

XGpio_SetDataDirection(&dip, 1, 0xffffffff);

xil_printf("-- Initialize of the leds --\r\n"); XGpio_Initialize(&led, XPAR_AXI_GPIO_1_DEVICE_ID); XGpio_SetDataDirection(&led, 1, 0xffffffff);

while (1) {

dip_check = XGpio_DiscreteRead(&dip, 1); xil_printf("DIP Switch Status %x\r\n", dip_check); for (i=0; i<9999999; i++); XGpio_DiscreteWrite(&led, 1, dip_check );

}

}

57

5.3. Зафиксируйте в протокол ожидаемый результат работы программы, а также назначение подключаемых библиотек.

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

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

ккомпьютеру. Подключите модуль семисегментного индикатора к контактным клеммам Pmod A и Pmod B.

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

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

ввыпадающих списках Run As Run Configuration.

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

6.5.Активируйте галочку Program FPGA.

6.6.Настройте отладчик по аналогии с лабораторной работой 5.

6.7.Нажмите Save, а затем Run. Дождитесь компиляции проекта и прошивки платы.

6.8.Отметьте результат работы программы в протокол.

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

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

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

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

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

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

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

вSDK c поясняющими комментариями.

6.Листинги исходного verilog-файла c поясняющими комментариями.

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

Измените проект таким образом, чтобы он работал согласно варианту:

1.Реализуйте периодическое мигание символа «8» с периодом 3 с, если активированы переключатели SW5, SW6 и SW7, и периодическое мигание символа «А» с периодом 2 с, если активированы переключатели SW1, SW5

иSW7. Добавьте выход из цикла по нажатию BTN8 (кнопка заведена через интерфейс MIO).

2.Реализуйте периодическое мигание символа «5» с периодом 2,5 с, если активированы переключатели SW1 и SW6, и периодическое мигание символа «F» с периодом 0,5 с, если активированы переключатели SW0, SW5 и SW7. Добавьте выход из цикла по нажатию BTN9 (кнопка заведена через интерфейс MIO).

3.Реализуйте периодическое мигание символа «6» с периодом 1,5 с, если активированы переключатели SW1 и SW4, и периодическое мигание

58

символа «А» с периодом 2 с, если активированы переключатели SW3, SW4

иSW6. Добавьте выход из цикла по нажатию BTN8 (кнопка заведена через интерфейс MIO).

4.Реализуйте периодическое мигание символа «A» с периодом 3 с, если активированы переключатели SW0, SW1 и SW3, и периодическое мигание символа «7» с периодом 0,9 с, если активированы переключатели SW0, SW6 и SW7. Добавьте выход из цикла по нажатию BTN9 (кнопка заведена через интерфейс MIO).

5.Реализуйте периодическое мигание символа «C» с периодом 1,2 с, если активированы переключатели SW4, SW5 и SW7, и периодическое мигание символа «5» с периодом 2 с, если активированы переключатели SW1, SW3 и SW6. Добавьте выход из цикла по нажатию BTN8 (кнопка заведена через интерфейс MIO).

6.Реализуйте периодическое мигание символа «6» с периодом 2 с, если активированы переключатели SW0, SW1 и SW2, и периодическое мигание символа «E» с периодом 2 с, если активированы переключатели SW1, SW2

иSW7. Добавьте выход из цикла по нажатию BTN9 (кнопка заведена через интерфейс MIO).

7.Реализуйте периодическое мигание символа «2» с периодом 2 с, если активированы переключатели SW3 и SW7, и периодическое мигание символа «B» с периодом 0,5 с, если активированы переключатели SW0, SW1

иSW3. Добавьте выход из цикла по нажатию BTN8 (кнопка заведена через интерфейс MIO).

8.Реализуйте периодическое мигание символа «D» с периодом 3 с, если активированы переключатели SW4, SW6 и SW7, и периодическое мигание символа «А» с периодом 2 с, если активированы переключатели SW0, SW1 и SW6. Добавьте выход из цикла по нажатию BTN9 (кнопка заведена через интерфейс MIO).

9.Реализуйте периодическое мигание символа «C» с периодом 0,5 с, если активированы переключатели SW2, SW4 и SW6, и периодическое мигание символа «D» с периодом 2 с, если активированы переключатели SW1, SW6 и SW7. Добавьте выход из цикла по нажатию BTN8 (кнопка заведена через интерфейс MIO).

10.Реализуйте периодическое мигание символа «C» с периодом 1 с, если активированы переключатели SW1, SW6 и SW7, и периодическое мигание символа «5» с периодом 1 с, если активированы переключатели SW3, SW6 и SW7. Добавьте выход из цикла по нажатию BTN9 (кнопка заведена через интерфейс MIO).

11.Реализуйте периодическое мигание символа «F» с периодом 0,5 с, если активированы переключатели SW2, SW3 и SW7, и периодическое мигание символа «3» с периодом 2 с, если активированы переключатели SW0,

59

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