exponenta event banner

Ускорение моделирования системы связи с помощью FPGA-in-the-Loop

В этом примере используется моделирование FPGA-in-the-Loop (FIL) для ускорения части системы связи. Приложение использует алгоритм Витерби для декодирования сверточного кодированного случайного потока, который модулируется BPSK, посылается через канал AWGN, а затем демодулируется. Использование метода sample-by-sample приводит к умеренному ускорению по сравнению с обычным моделированием Simulink ®, а использование опции «Process as Frames» приводит к дальнейшему ускорению.

Этот пример использует Коммуникации Toolbox™ вместе с HDL Coder™ и HDL Verifier™, чтобы показать технологический процесс дизайна для ускорения моделирования, используя FPGA в петле.

Требования и предпосылки

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

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

  • Одна из поддерживаемых плат разработки FPGA. Для получения информации о поддерживаемых аппаратных средствах см. раздел Поддерживаемые устройства FPGA для проверки FPGA.

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

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

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

Требования: программное обеспечение MATLAB ® и FPGA можно установить на компьютере или на сетевом устройстве. Если вы используете программное обеспечение из сети, вам потребуется второй сетевой адаптер, установленный на вашем компьютере, чтобы предоставить частную сеть для платы разработки FPGA. Чтобы узнать, как установить сетевой адаптер, обратитесь к руководству по оборудованию и сети для компьютера.

1. Открытие и выполнение модели Simulink

Откройте модель. Из-за большого количества данных для обработки моделирование занимает приблизительно 9 секунд без FIL. Мы повысим скорость моделирования в следующих шагах, используя FPGA-in-the-Loop.

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

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

Если вы собираетесь использовать эти скопированные файлы, перейдите непосредственно к шагу 3.

Создайте код HDL для блочной подсистемы Витерби, выполнив следующие действия:

А. Щелкните правой кнопкой мыши существующий блок FIL с меткой viterbi_block1. Щелкните Удалить, чтобы удалить этот блок для создания кода.

b. На вкладке Моделирование (Modeling) щелкните Параметры модели (Model Settings).

d. Щелкните на панели Создание кода HDL (HDL Code Generation) и убедитесь, что выбран hdlcoderviterbi_for_fil/viterbi_block.

e. Нажмите кнопку «Создать».

Также можно создать код HDL, введя следующую команду в подсказке MATLAB:

makehdl('hdlcoderviterbi_for_fil/viterbi_block')

3. Установка среды программного обеспечения для проектирования FPGA

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

4. Запуск мастера FPGA-in-the-Loop

Для запуска мастера FIL введите следующую команду в подсказке MATLAB:

filWizard;

4.1 Варианты оборудования

Выберите плату из списка плат. Нажмите кнопку Далее, чтобы продолжить.

4.2 Исходные файлы

a. Добавьте все ранее созданные исходные файлы HDL для Viterbi Block подсистема.

b. Выберите файл viterbi_block.vhd в качестве файла верхнего уровня. Для просмотра этих параметров может потребоваться расширить окно мастера FPGA-in-the-Loop.

c. Обратите внимание, что viterbi_block введено в качестве имени модуля верхнего уровня по умолчанию. Нажмите кнопку Далее, чтобы продолжить.

4.3 Порты ввода/вывода DUT

Проверьте правильность идентификации портов модуля верхнего уровня. Нажмите кнопку Далее, чтобы продолжить.

4.4 Варианты сборки

a. Выберите папку вывода.

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

В процессе построения выполняются следующие действия.

  • Блок FIL с именем viterbi_block создается в новой модели.

  • После создания новой модели мастер FIL открывает командное окно, в котором программное обеспечение FPGA выполняет синтез, отображение, локализацию и трассировку, анализ синхронизации и генерацию файлов программирования FPGA. Для этого блока эти шаги занимают около 20 минут.

После завершения процесса разработки FPGA в окне команд появится сообщение о том, что окно можно закрыть.

5. Открытие и завершение модели Simulink для FIL

а. Открыть hdlcoderviterbi_for_fil.mdl

b. Скопируйте в него ранее созданный блок FIL и подключите его параллельно или вместо viterbi_block. Обратите внимание, что исходный блок имеет входные данные справа. Для того чтобы блок FIL был введен справа, щелкните правой кнопкой мыши по блоку, а затем выберите Повернуть и развернуть - > Развернуть блок.

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

Ответ. Дважды щелкните блок FIL в модели, чтобы открыть маску блока.

b. Щелкните Загрузить (Load).

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

7. Запустить моделирование FIL

Выполните моделирование в течение 20480 секунд и проверьте производительность.

FrameSize = 1;
tic;
sim('hdlcoderviterbi_for_fil');
fs1 = toc

Можно попытаться установить больший размер кадра. В этом примере размер кадра устанавливается равным 1024 байтам.

FrameSize = 1024;
tic;
sim('hdlcoderviterbi_for_fil');
fs2 = toc

В наших тестах время моделирования составляло около 16 секунд, когда FrameSize = 1, что примерно так же, как в Simulink без FIL, но время моделирования было уменьшено до около 12 секунд, когда размер кадра был увеличен до 1024 с помощью платы Xilinx Spartan-6 SP605. Эта конкретная плата и система обеспечивают общее ускорение примерно в 1,7 раза быстрее, но другие платы и система связи могут быть еще быстрее.

speedup = fs1 / fs2

Путем удаления версии блока Simulink и только моделирования версии FIL, а также путем добавления дополнительных блоков в часть FIL конструкции и удаления областей и дисплеев Simulink, насколько это возможно, возможны еще большие ускорения.

На этом завершается пример моделирования ускоренной системы связи с использованием FPGA-In-the-Loop.