Ускорение симуляции системы связи Используя FPGA в цикле

Этот пример использует FPGA в цикле (FIL) симуляция, чтобы ускорить часть системы связи. Приложение использует Алгоритм Viterbi, чтобы декодировать сверточный закодированный случайный поток, который является BPSK, модулируемым, отправленным через канал AWGN, и затем демодулируемым. Используя выборку выборкой подход приводит к скромному ускорению по нормальной симуляции Simulink® при использовании "Процесса, как Кадры" опция приводят к дальнейшему ускорению.

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

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

Продукты, требуемые запускать этот пример:

  • MATLAB®

  • Simulink

  • Fixed-Point Designer

  • Communications Toolbox

  • HDL Verifier

  • HDL Coder

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

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

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

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

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

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

Примечание: пример включает генерацию кода. Simulink не разрешает вам изменять область установки MATLAB. При необходимости изменитесь на рабочую директорию, которая не находится в области установки MATLAB до запуска этого примера.

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

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

close all;
open_system('hdlcoderviterbi_for_fil');

2. Сгенерируйте HDL-код

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

>>copyFILDemoFiles('viterbi');

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

Сгенерируйте HDL-код для подсистемы блока Viterbi путем выполнения этих шагов:

a. Щелчок правой кнопкой по существующему блоку FIL маркировал viterbi_block1. Нажмите на Delete, чтобы удалить этот блок для генерации кода.

b. Нажмите на блок, маркировал viterbi_block.

c. Выберите Simulation> Model Configuration Parameters... из меню Simulink.

d. Нажмите на панель генерации HDL-кода и убедитесь, что Сгенерировать опция HDL-кода выбрана.

e. Нажмите Generate.

Также можно сгенерировать HDL-код путем ввода следующей команды в посдказке MATLAB:

>>makehdl('hdlcoderviterbi_for_fil/viterbi_block')

3. Установите программную среду проекта FPGA

Перед использованием FPGA в цикле убедитесь, что ваша системная среда настраивается правильно для доступа к программному обеспечению проекта FPGA. Можно использовать функцию hdlsetuptoolpath, чтобы добавить программное обеспечение проекта FPGA в системный путь для текущего сеанса работы с MATLAB.

4. Запустите FPGA-in-the-Loop Wizard

Чтобы запустить Мастер FIL, выберите Code> Verification Wizards> FPGA в цикле (FIL)... в окне модели или введите следующую команду в посдказке MATLAB:

  >>filWizard;

4.1 Аппаратные опции

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

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

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

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

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

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

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

4.4 Создайте опции

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

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

Во время процесса сборки происходят следующие действия:

  • Блок FIL, названный viterbi_block, сгенерирован в новой модели.

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

Когда программный процесс проекта FPGA закончен, сообщение в командном окне сообщает, что можно закрыть окно.

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

a. Откройте hdlcoderviterbi_for_fil.mdl

b. Скопируйте в него ранее сгенерированный блок FIL и соедините его или параллельно с или вместо viterbi_block. Обратите внимание на то, что исходный блок имеет входные параметры справа. Чтобы заставить блок FIL иметь свои входные параметры справа, щелкните правой кнопкой мыши по блоку и затем нажмите Rotate & Flip-> Flip Block.

6. Сконфигурируйте блок FIL

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

b. Нажмите Load.

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

7. Запустите симуляцию FIL

Запустите симуляцию в течение 20 480 секунд и наблюдайте производительность.

>> FrameSize = 1;>> тик; sim ('hdlcoderviterbi_for_fil'); fs1 = toc

Можно попытаться установить формат кадра на большее число. В данном примере формат кадра установлен в 1 024 байта.

>> FrameSize = 1024;>> тик; sim ('hdlcoderviterbi_for_fil'); fs2 = toc

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

>> ускорение = fs1 / fs2

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

Это завершает Ускоряющуюся Симуляцию Системы связи Используя FPGA В примере цикла.