В данной статье рассматривается пошаговое создание проекта на основе Microblaze для Xilinx EDK в Xilinx ISE 14.7. Рассмотрим процесс создания проекта для microblaze на примере отладочной платы VE-XC6SLX9. MicroBlaze — soft-процессорное ядро, разработанное компанией Xilinx для использования в FPGA. MicroBlaze реализуется с помощью стандартной логики и блоков памяти ПЛИС. С точки зрения архитектуры, MicroBlaze очень похож на процессор с основанной на RISC DLX-архитектурой, описанной в книге Д. Паттерсона (David Patterson) и Дж. Хеннеси (John L. Hennessy). За исключением отдельных случаев MicroBlaze может выполнять по одной инструкции за такт, сохраняя такую производительность практически в любых условиях.
В этом материале мы создадим проект, использующий Microblaze для организации управления периферийными устройствами FPGA. Создание проекта начнем с запуска Project Navigator’a, входящего в комплект ISE Design Suite (Рис. 1) и выбора пункта «New Project» меню File.
Рис. 1: Создание нового проекта в ISE Project Navigator
Следующим шагом (Рис. 2) зададим параметры FPGA, используемой в проекте. В данном случае параметры определяются для отладочной платы VE-XC6SLX9, для которой выполняется создание проекта.
Рис. 2: Конфигурирование нового проекта в IDE ISE
После описанных действий убедимся в корректности заданных параметров (Рис. 3) и перейдем к непосредственно описанию аппаратной конфигурации, используемой в проекте.
Рис. 3: Проверка параметров нового проекта, описанного в мастере
В созданный проект добавим процессор Microblaze (Рис. 4).
Рис. 4: Добавление процессора
В открывшемся списке выбираем процессор Microblaze (Рис. 5).
Рис. 5: Выбираем процессор MicroBlaze MCS 1.4
Нажимаем Next и видим информацию о созданном процессоре (Рис. 6).
Рис. 6: Общая информация о нашем процессоре
Далее приступим к настройке микропроцессора Microblaze. На вкладке MCS обязательно необходимо установить галку в пункт Enable Debug Support (Рис. 7).
Рис. 7: Настройка процессора, вкладка MCS
На вкладке GPO добавим один 32 битный порт вывода данных (Рис. 8).
Рис. 8: Настройка порта вывода, вкладка GPO
На этом настройка нашего проекта закончена. На следующем шаге добавим виртуальные индикаторы, из нашего предыдущего проекта Виртуальные светодиоды и 7-ми сегментный индикатор. Для этого добавим файлы display.v, hvsync.v, vga_leds.v а также создадим модуль синтезатора частоты pll. (Рис. 9).
Рис. 9: Добавление файлов виртуальных индикаторов
Модуль верхнего уровня должен выглядеть следующим образом:
Verilog Code:
module vga_leds( input wire CLK50MHZ, input wire KEY0, input wire KEY1, output wire [7:0]LED, // outputs: output wire hsync, output wire vsync, //high-color test video signal output wire [3:0]r, output wire [3:0]g, output wire [3:0]b ); wire w_clk_video; wire w_clk_cpu; wire w_clk_hdmi; wire w_locked; clk_wiz_v3_6 mypll_inst( .CLK_IN1( CLK50MHZ ), .CLK_OUT1( w_clk_video ), //74MHz .CLK_OUT2( w_clk_cpu ), //100MHz .LOCKED( w_locked ) ); wire [31:0]counter; cpu cpu_inst( .Clk (w_clk_cpu), .Reset (~w_locked), .GPO1 (counter) ); display display_inst( .reset( ~w_locked ), .clk_video( w_clk_video ), .red_leds( counter[31:16] ), .green_leds( ~counter[31:16] ), .segments( counter[31:16] ), .hsync (hsync), .vsync (vsync), .r (r), .g (g), .b (b) ); endmodule
После внесения всех изменений в проект, смело жмем пункт Generate Programming File. Если процесс прошел без ошибок, мы с помощью программатора iMPACT прошиваем нашу плату. В принципе на этом шаге, на дисплее VGA монитора уже должны отобразится наши виртуальные приборы. Причем зеленые светодиоды должны гореть, красные должны быть погашены а индикатор отображать число 00000.
Далее приступим к созданию прошивки для нашего процессора. Для этого выберем приложение Xilinx Software Development Kit. После запуска, нам будет предложено выбрать путь к нашим будущим проектам (Рис. 10).
Рис. 10: Выбор пути для каталога проектов
Выбираем пункт меню File->New->Application Project (Рис. 11).
Рис. 11: Новый проекта
На этом шаге создаем Hardware Project, куда включаем файлы с залитым в нашу плату битстримом и Block RAM Memory Map (карта памяти) (Рис. 12).
Рис. 12: Новый проекта
Теперь создадим собственно сам проект для нашего процессора. Для этого выбираем пункт меню File->New->Project, выбираем Application Project и жмем Next (Рис. 13).
Рис. 13: Новый проекта
На этом шаге выбираем для нашего проекто, ранее созданную аппаратную платформу (Рис. 14).
Рис. 14: Выбор платформы
Надеюсь что все прошло хорошо, и Вы увидел окно с только что созданным проектом (Рис. 15).
Рис. 15: Созданный проект
Изменяем текст программы helloworld.c, для управления нашими виртуальными индикаторами:
C++ Code:
/* * Copyright (c) 2009-2012 Xilinx, Inc. All rights reserved. * * Xilinx, Inc. * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" AS A * COURTESY TO YOU. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION AS * ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION OR * STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS IMPLEMENTATION * IS FREE FROM ANY CLAIMS OF INFRINGEMENT, AND YOU ARE RESPONSIBLE * FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE FOR YOUR IMPLEMENTATION. * XILINX EXPRESSLY DISCLAIMS ANY WARRANTY WHATSOEVER WITH RESPECT TO * THE ADEQUACY OF THE IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO * ANY WARRANTIES OR REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE * FROM CLAIMS OF INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. * */ #include <stdio.h> #include "platform.h" #include "xil_io.h" #define ADDR_GPIO_BASE 0x80000000 void print(char *str); int main() { unsigned long tst; init_platform(); for(tst=0x00000000;tst<0x7FFFFFFF;tst++) { Xil_Out32(ADDR_GPIO_BASE + 0x10, tst); } return 0; }
Так выглядит среда разработки с нашей программой (Рис. 16).
Рис. 16: Текст программы
Осталось настроить отладку. Выбираем пункт меню Run->Debug Gonfigurations.
Делаем двойной клик левой кнопкой мыши на пункте Xilinx C/C++ application (GDB) (Рис. 17).
Рис. 17: Меню настройки отладчика
Если никаких ошибок не совершено, то должна автоматически создатся конфигурация для отладки проекта (Рис. 18).
Рис. 18: Готовая вкладка отладчика
Осталось нажать кнопку Debug! (Рис. 19).
Рис. 19: Отладка проекта
На видео показана работа микропроцессора Microblaze:
Проект дизайна микропроцессора Microblaze для платы VE-XC6SLX9: microblaze_hard.zip
Проект программы микропроцессора Microblaze для платы VE-XC6SLX9 microblaze_soft.zip