В этом примере показано, как проверить, что HDL проектирует быстро и эффективно использование FPGA в цикле (FIL). Испытательный стенд синтезируется вместе с Проектом под тестом (DUT), результат загружается на плату FPGA, и тест запущен с FIL. Используя FIL для этого процесса включает скоростную генерацию и обработку тестового стимула, результатами, возвращенными к Simulink для анализа. В этом примере показано, как эти задачи выполняются для варианта использования обработки изображений.
Продукты потребовали для этого примера:
MATLAB
Simulink
HDL Verifier
Fixed-Point Designer
Signal Processing Toolbox
DSP System Toolbox
Computer Vision System Toolbox
(Дополнительный) HDL Coder
Программное обеспечение проекта FPGA
Одна из поддерживаемых макетных плат FPGA и аксессуаров (плата ML403 не поддержана для этого примера),
Для связи с помощью Ethernet: Гигабитный Адаптер Ethernet установил на хосте - компьютере, Гигабитный Ethernet перекрестно соединяют кабель
Для связи с помощью JTAG: Бластер USB I или II кабелей и драйвер для плат FPGA Intel. Кабель Digilent® JTAG и драйвер для плат FPGA Xilinx.
Для связи с помощью PCI Express®: плата FPGA установлена в паз PCI Express хоста - компьютера.
Этот пример полагается на модель, используемую в "Обнаружении Ребра Sobel Используя блок MATLAB function" пример в HDL Coder. См. Обнаружение Ребра Sobel для получения дополнительной информации о генерации HDL-кода.
sobel_edge_hardware подсистема является алгоритмом, который будет синтезироваться в FPGA. Стимул является gif файлом, содержащим изображение (знак Стоп). В этом примере изображение перемещено в FPGA наряду с алгоритмом, блок FIL создается для того проекта FPGA.
Шаги, сделанные, чтобы реализовать этот метод, проиллюстрированы в модели fil_sobel_model. В этой модели gif файл содержится в интерполяционной таблице, и счетчик используется, чтобы отсканировать через линии в изображении и отправить их в алгоритм. Блок FIL добавляется к модели параллельно с поведенческими блоками, чтобы позволить непосредственно проверять выходные параметры FPGA против поведенческой модели как простой пример анализа результатов.
open_system('fil_sobel_model');
Если у вас есть HDL Coder, можно сгенерировать код для подсистемы "SobelEdge_FPGA" с помощью Советника Рабочего процесса HDL или Параметра конфигурации пользовательский интерфейс (см. документацию HDL Coder для получения дополнительной информации).
Если у вас нет HDL Coder, можно скопировать предварительно сгенерированные файлы HDL в текущий каталог с помощью этой команды:
>> copyFILDemoFiles ('sobel');
Перед использованием FPGA в цикле убедитесь, что ваша системная среда настраивается правильно для доступа к программному обеспечению проекта FPGA. Можно использовать функцию hdlsetuptoolpath, чтобы добавить программное обеспечение проекта FPGA в системный путь для текущего сеанса работы с MATLAB.
Мастер FIL ведет вас в конфигурировании настроек, необходимых для создания FPGA в цикле. Запустите мастер со следующей командой:
>> filWizard;
1. В Аппаратных Опциях выберите макетную плату FPGA, соединенную с вашим хостом - компьютером. При необходимости можно также настроить IP Совета и Мак адрес под Расширенными настройками. Нажмите Далее, чтобы продолжиться.
2. В Исходных файлах добавьте следующие сгенерированные файлы HDL для проекта к таблице исходного файла с помощью Обзора.
SobelEdge_FPGA.vhd, DualPortRAM_128x9b.vhd DualPortRAM_128x9b_block.vhd sobel_edge_eml.vhd sobel_edge_hardware.vhd SobelEdge_FPGA_pkg.vhd u_d_ram.vhd u_d_ram_block.vhd
Проверяйте флажок верхнего уровня рядом с SobelEdge_FPGA
. Нажмите Далее, чтобы продолжиться.
3. В Портах ввода-вывода DUT информация порта ввода и вывода, таких как имя порта, направление, ширина и тип порта автоматически сгенерирована из файла HDL. Типы порта, такие как Часы и Данные, сгенерированы на основе имен порта; можно изменить выбор по мере необходимости. В данном примере сгенерированные типы порта правильны, и можно нажать Далее.
4. В Опциях Сборки задайте папку для выходных файлов FIL. Можно использовать значение по умолчанию в этом примере. Нажмите Build. Нажатие на Build заставляет Мастер FIL генерировать все необходимые файлы для FPGA в симуляции цикла и выполнять следующие действия:
Генерирует блок FIL в новой модели Simulink®
Открывает окно командной строки, чтобы скомпилировать проект FPGA и сгенерировать файл программирования FPGA
Процесс компиляции проекта FPGA занимает несколько минут. Когда процесс закончен, вам предлагают закрыть окно командной строки. Закройте это окно теперь.
Чтобы подготовиться к FPGA в симуляции цикла, выполните шаги ниже, чтобы сконфигурировать блок FIL.
1. Откройте тестовую модель fil_sobel_model и скопируйте сгенерированный блок FIL в модель.
2. Дважды кликните блок FIL, чтобы открыть маску блока. Нажмите Load, чтобы программировать FPGA со сгенерированным файлом программирования.
3. В соответствии с Опциями Во время выполнения, фактором Разгона изменения к 1. Это указывает, что каждое входное значение производится однажды часами FPGA перед входным значением изменений.
4. Установите выходной формат кадра на 20 000.
5. На маске блока FIL нажмите на вкладку Signal Attributes. Измените тип данных для out1 к boolean
совпадать с типом данных поведенческого блока Sobel.
5. Нажмите ОК, чтобы закрыть маску блока.
Модель, предоставленная в этом примере, сравнит результаты, полученные из поведенческого блока с теми от FPGA. Можно запустить ту модель и наблюдать эквивалентность. Можно также наблюдать относительную производительность симуляции моделирования на поведенческом уровне и симуляции FIL путем создания новой модели, содержащей только поведенческий путь и другого содержащего только путь с блоком FIL. Запустите каждую из тех моделей отдельно с помощью:
>> tic; sim (your_model_name); toc
Вы видите, что FIL быстрее. Это увеличение скорости - то, потому что существует только один вызов функции FIL для 20 000 выборок, в то время как поведенческой модели нужны 20 000 вызовов функции обработать все данные. Поэтому вы получите лучшую производительность, если размер изображения будет больше. Этот шаг завершает этот пример.