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

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

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

wire enc_a_db; wire enc_a_rise; debounce#(

.bounce_limit (ms_limit*3)

)

db_enc_a

(

.clk(s_axi_aclk),

.switch_in(enc_a),

.switch_out(enc_a_db),

.switch_rise(enc_a_rise) );

wire enc_b_db; wire enc_b_rise; debounce#(

.bounce_limit (ms_limit*3)

)

db_enc_b

(

.clk(s_axi_aclk),

.switch_in(enc_b),

.switch_out(enc_b_db),

.switch_rise(enc_b_rise) );

always @(posedge s_axi_aclk) begin if (enc_a_rise)

if (!enc_b_db)

enc_data <= enc_data[3:0] – 1'b1; else

enc_data <= enc_data[3:0] + 1'b1; end

endmodule

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

4.12.Откройте Block Design проекта и найдите в ресурсах проекта user_gpio_encoder.v. Нажмите правой кнопкой мыши на файл и выберите пункт Add Module to Block Design.

4.13.Нажмите правой кнопкой мыши на порт ssd[7:0] блока user_gpio_led_0 и выберите опцию Make External. Проделайте данную операцию с портами enc_a, enc_b, enc_sw, sws[7:0] – это позволит

80

подключить их к внешней периферии на плате, задав параметры подклю-

чения в constrain-файле.

4.14. Соедините модули со схемой. Итоговый вид проекта показан на рис. 76.

Рис. 76. Общий вид диаграммы блочного проекта

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

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

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

4.17.Создайте HDL-wrapper.

4.18.Синтезируйте проект. После синтеза откройте Synthesized Design.

4.19.В протоколе заполните табл. 10 для определения контактов поворотного энкодера.

 

 

 

 

 

 

Таблица 10

 

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

 

 

 

 

 

 

 

Обозначение контакта

VCC

GND

CLK

DT

SW

энкодера

 

 

 

 

 

 

 

Контакт Pmod

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

4.20.Также продублируйте заполнение табл. 8 в протокол.

4.21.В I/O Planning задайте конфигурацию тактового сигнала и задействованных контактов на разъемах Pmod С или Pmod D для энкодера

иPmod А и Pmod B для семисегментного индикатора. Сохраните конфигурацию в файл ограничений.

81

4.22. Запустите размещение проекта на кристалле ПЛИС. Затем сгенерируйте битовый поток.

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

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

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

инажмите OK.

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

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

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

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

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

Standalone, нажмите OK.

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

6.1.Нажмите File New Application project. В открывшемся окне введите имя приложения GPIO user_ssd и установите переключатель

Board Support Package в положение Use existing. Нажмите Next. В списке предлагаемых шаблонов приложения выберите Empty и нажмите Finish.

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

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

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

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

#include "xparameters.h" #include "xgpio.h" #include "slep.h" #include "stdio.h"

int main (void)

{

XGpio encod; int enc_check;

xil_printf("-- Start of the Program --\r\n"); xil_printf("-- Initialize of the encoder --\r\n"); XGpio_Initialize(&encod, XPAR_AXI_GPIO_DEVICE_ID); XGpio_SetDataDirection(&encod, 1, 0xffffffff);

xil_printf("-- Initialize OKAYs --\r\n"); xil_printf("Press any key to continue \n"); getchar();

82

while (1) {

enc_check = XGpio_DiscreteRead(&encod, 1); xil_printf("encoder data = %x\r\n", enc_check); usleep(20000);

}

}

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

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

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

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

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

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

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

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

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

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

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

7.6.Настройте отладчик: перейдите во вкладку Application и убедитесь, что проект ссылается на нужное приложение, затем перейдите во вкладку STDIO Connection и установите COM-порт и скорость для UART.

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

7.8.Задействуйте вал поворотного энкодера и следите за отладочной информацией в окне консоли.

7.9.Создайте отдельное приложение.

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

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

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

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

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

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

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

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

83

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

Задание 1

Разработайте алгоритм, чтобы реализовать вывод значений, считанных с энкодера, на семисегментный индикатор.

Задание 2

Сохраните проект под новым именем в директорию soc-lab-9 и измените его таким образом, чтобы он работал согласно варианту:

1.Реализуйте мигание значений на семисегментном индикаторе с периодом в 1 с. При нажатой кнопке энкодера SW увеличение идет с шагом 2,

ауменьшение – 3. Кнопка на отладочной плате SW7 должна отключать режим фильтрации дребезга. Значения энкодера печатаются в консоль и выводятся на семисегментный индикатор.

2.Реализуйте мигание значений на семисегментном индикаторе с периодом в 0,5 с. При нажатой кнопке энкодера SW отключается режим фильтрации дребезга. Кнопки на отладочной плате SW0 и SW1 задают шаг отра-

ботки энкодера от 0 до 3. Значения энкодера печатаются в консоль

ивыводятся на семисегментный индикатор.

3.Реализуйте мигание значений на семисегментном индикаторе с периодом в 1 с. При нажатой кнопке энкодера SW увеличение идет с шагом 2, а уменьшение – 1. Кнопка на отладочной плате BTNA должна отключать режим фильтрации дребезга. Значения энкодера печатаются в консоль и выводятся на семисегментный индикатор.

4.Реализуйте мигание значений на семисегментном индикаторе с периодом в 0,7 с. При нажатой кнопке энкодера SW отключается режим фильтрации дребезга. Кнопки на отладочной плате SW5 и SW6 задают шаг отработки энкодера от 0 до 3. Значения энкодера и размер шага печатаются в консоль и выводятся на семисегментный индикатор.

5.Реализуйте мигание значений на семисегментном индикаторе с периодом в 1 с. При нажатой кнопке энкодера SW увеличение начинает работать в противоположную сторону. Кнопка на отладочной плате SW3 должна отключать режим фильтрации дребезга и мигание индикатора. Значения энкодера печатаются в консоль и выводятся на семисегментный индикатор.

6.Реализуйте мигание значений на семисегментном индикаторе с периодом в 0,5 с. При нажатой кнопке энкодера SW изменяется частота мерцания индикатора. Значения энкодера печатаются в консоль и выводятся на мигающий семисегментный индикатор.

7.Реализуйте мигание значений на семисегментном индикаторе с периодом в 1 с. При нажатой кнопке энкодера SW увеличение идет с шагом 3,

84

а уменьшение – 2. Кнопка на отладочной плате BTND должна отключать режим фильтрации дребезга. Значения энкодера печатаются в консоль и выводятся на семисегментный индикатор.

8. Реализуйте мигание значений на семисегментном индикаторе с периодом в 0,7 с. При нажатой кнопке энкодера SW отключается режим фильтрации дребезга. Кнопки на отладочной плате SW3 и SW4 задают шаг отработки энкодера от 0 до 3. Значения энкодера и размер шага печатаются в консоль и выводятся на мигающий семисегментный индикатор.

85

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

ИССЛЕДОВАНИЕ МУЛЬТИПРОЦЕССОРНОЙ СИСТЕМЫ НА КРИСТАЛЛЕ

Цель работы

Исследование мультипроцессорной системы на кристалле, взаимодействия аппаратных и программных процессорных ядер между собой. Проверка проекта на отладочной плате ZedBoad.

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

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

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

3.Структура процессорного ядра MicroBlaze.

4.Работа блочной памяти.

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

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

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

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

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

1.3.Настройте работу GPIO EMIO на процессорной системе Zynq7 по аналогии с лабораторной работой 2.

1.4.Добавьте IP-элемент с названием AXI BRAM Controller и настройте его согласно рис. 77.

Рис. 77. Окно настройки параметров контроллера блочной памяти

86

1.5. Добавьте IP-элемент с названием Block Memory Generator и на-

стройте его согласно рис. 78.

Рис. 78. Окно настройки Block Memory Generator

1.6.Добавьте IP-элемент с названием MicroBlaze.

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

Примечание. Обратите внимание на настройки процессорного ядра MicroBlaze согласно рис. 79.

Нажмите Run connection automation. Это позволит автоматически добавить и соединить необходимую периферию. Выберите все и нажмите OK.

87

Рис. 79. Окно настройки процессорного ядра MicroBlaze

1.8. Итоговый вид проекта приведен на рис. 80.

88

Рис. 80. Итоговый вид проекта

89

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