В этом примере используется моделирование 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. Чтобы узнать, как установить сетевой адаптер, обратитесь к руководству по оборудованию и сети для компьютера.
Откройте модель. Из-за большого количества данных для обработки моделирование занимает приблизительно 9 секунд без FIL. Мы повысим скорость моделирования в следующих шагах, используя FPGA-in-the-Loop.

Для этого шага требуется кодер 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')
Перед использованием FPGA-in-the-Loop убедитесь, что системная среда правильно настроена для доступа к программному обеспечению FPGA. Функцию hdlsetuptoolpath можно использовать для добавления программного обеспечения FPGA к системному пути для текущего сеанса MATLAB.
Для запуска мастера FIL введите следующую команду в подсказке MATLAB:
filWizard;
Выберите плату из списка плат. Нажмите кнопку Далее, чтобы продолжить.
a. Добавьте все ранее созданные исходные файлы HDL для Viterbi Block подсистема.
b. Выберите файл viterbi_block.vhd в качестве файла верхнего уровня. Для просмотра этих параметров может потребоваться расширить окно мастера FPGA-in-the-Loop.
c. Обратите внимание, что viterbi_block введено в качестве имени модуля верхнего уровня по умолчанию. Нажмите кнопку Далее, чтобы продолжить.
Проверьте правильность идентификации портов модуля верхнего уровня. Нажмите кнопку Далее, чтобы продолжить.
a. Выберите папку вывода.
b. Нажмите кнопку Build, чтобы создать блок FIL и файл программирования.
В процессе построения выполняются следующие действия.
Блок FIL с именем viterbi_block создается в новой модели.
После создания новой модели мастер FIL открывает командное окно, в котором программное обеспечение FPGA выполняет синтез, отображение, локализацию и трассировку, анализ синхронизации и генерацию файлов программирования FPGA. Для этого блока эти шаги занимают около 20 минут.
После завершения процесса разработки FPGA в окне команд появится сообщение о том, что окно можно закрыть.
а. Открыть hdlcoderviterbi_for_fil.mdl
b. Скопируйте в него ранее созданный блок FIL и подключите его параллельно или вместо viterbi_block. Обратите внимание, что исходный блок имеет входные данные справа. Для того чтобы блок FIL был введен справа, щелкните правой кнопкой мыши по блоку, а затем выберите Повернуть и развернуть - > Развернуть блок.
Ответ. Дважды щелкните блок FIL в модели, чтобы открыть маску блока.
b. Щелкните Загрузить (Load).
c. Нажмите кнопку «ОК», чтобы закрыть маску блока.
Выполните моделирование в течение 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.