exponenta event banner

Верификация алгоритма с помощью блока источника FIL

В этом примере показано, как быстро и эффективно проверить конструкцию ЛПВП с помощью FPGA-in-the-Loop (FIL). Тестовый стенд синтезируется вместе с тестом Design Under Test (DUT), результат загружается на плату FPGA, и тест запускается с FIL. Использование FIL для этого процесса позволяет быстро генерировать и обрабатывать тестовые стимулы, а результаты возвращаются в Simulink для анализа. В этом примере показано, как выполняются эти задачи для случая использования обработки изображений.

Требования

Инструменты, необходимые для этого примера:

  • Панель инструментов обработки сигналов

  • Программное обеспечение для проектирования FPGA

  • Одна из поддерживаемых плат разработки и аксессуаров FPGA (ML403 плата не поддерживается в данном примере)

  • Для подключения с использованием Ethernet: Gigabit Ethernet адаптер, установленный на хост-компьютере, Gigabit Ethernet кросс-кабель

  • Для подключения с использованием кабеля JTAG: USB Blaster I или II и драйвера для плат Intel FPGA. Кабель и драйвер Digilent ® JTAG для плат Xilinx FPGA.

  • Для подключения с использованием PCI Express ®: плата FPGA установлена в слот PCI Express хост-компьютера.

Обнаружение краев Собеля

Этот пример основан на модели, используемой в примере «Обнаружение краев Sobel с использованием функционального блока MATLAB» в кодере HDL.

Подсистема sobel_edge_hardware - это алгоритм, синтезируемый в FPGA. Стимул представляет собой файл gif, содержащий изображение (знак остановки). В этом примере изображение перемещается внутри FPGA вместе с алгоритмом, для этой конструкции FPGA создается блок FIL.

Шаги, предпринятые для реализации этого метода, проиллюстрированы в модели fil_sobel_model . В этой модели файл gif содержится в таблице подстановки, а счетчик используется для сканирования строк изображения и отправки их в алгоритм. Блок FIL добавляется к модели параллельно с поведенческими блоками для обеспечения возможности прямой проверки выходов FPGA относительно поведенческой модели в качестве простого примера анализа результатов. нажмите кнопку, чтобы открыть модель.

Создание кода HDL

При наличии кодера HDL можно создать код для подсистемы «SobelEdge_FPGA» с помощью консультанта по рабочим процессам HDL или пользовательского интерфейса параметров конфигурации (для получения дополнительной информации см. документацию по кодеру HDL).

Если кодер HDL отсутствует, можно использовать предварительно созданные файлы HDL в текущем каталоге.

Настройка программного обеспечения FPGA

Перед использованием FPGA-in-the-Loop убедитесь, что системная среда правильно настроена для доступа к программному обеспечению FPGA. Функцию hdlsetuptoolpath можно использовать для добавления программного обеспечения FPGA к системному пути для текущего сеанса MATLAB.

Конфигурирование и построение FPGA-in-the-Loop

Мастер FIL помогает настроить параметры, необходимые для построения FPGA-in-the-Loop. Запустите мастер с помощью следующей команды:

filWizard;

1. В разделе «Параметры оборудования» выберите плату разработки FPGA, подключенную к компьютеру. При необходимости можно также настроить IP-адрес платы и MAC-адрес в разделе Дополнительные параметры. Нажмите кнопку Далее, чтобы продолжить.

2. В окне Исходные файлы (Source Files) добавьте следующие сгенерированные файлы HDL для проекта в таблицу исходных файлов с помощью команды Обзор (Browse).

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. В этом примере можно использовать значение по умолчанию. Нажмите кнопку Сборка. При нажатии кнопки Сборка Мастер FIL создает все необходимые файлы для моделирования FPGA-in-the-Loop и выполняет следующие действия:

  • Создание блока FIL в новой модели Simulink ®

  • Открытие окна командной строки для компиляции проекта FPGA и создания файла программирования FPGA

Процесс компиляции проекта FPGA занимает несколько минут. По завершении процесса появится запрос на закрытие окна командной строки. Закройте это окно сейчас.

Конфигурирование блока FIL

Чтобы подготовиться к моделированию FPGA-in-the-Loop, выполните следующие действия для конфигурирования блока FIL.

1. Откройте модель испытательного стенда fil_sobel_model и скопируйте созданный блок FIL в модель.

2. Дважды щелкните блок FIL, чтобы открыть маску блока. Нажмите Загрузить, чтобы запрограммировать FPGA с созданным файлом программирования.

3. В разделе Параметры выполнения измените коэффициент оверклокинга на 1. Это указывает, что каждое входное значение дискретизируется синхронизатором FPGA один раз до изменения входного значения.

4. Задайте размер выходного кадра 20000.

5. На маске блока FIL щелкните вкладку Атрибуты сигнала (Signal Attributes). Изменение типа данных для out1 на boolean для соответствия типу данных поведенческого блока Собеля.

5. Нажмите кнопку ОК, чтобы закрыть маску блока.

Результаты

Модель, представленная в этом примере, будет сравнивать результаты, полученные из поведенческого блока, с результатами из FPGA. Можно запустить эту модель и соблюдать эквивалентность. Можно также наблюдать относительную производительность моделирования поведения и моделирования FIL, создав новую модель, содержащую только поведенческий путь, а другую - только путь с блоком FIL. Запустите каждую из этих моделей отдельно, используя:

tic;
sim(your_model_name);
toc

Видно, что FIL быстрее. Это увеличение скорости связано с тем, что существует только один вызов функции FIL для 20000 выборок, в то время как поведенческая модель нуждается в вызовах функции 20000 для обработки всех данных. Таким образом, вы получите лучшую производительность, если размер изображения больше. Этот шаг завершает этот пример.