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

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

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

Требования и необходимые условия

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

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

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

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

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

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

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

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

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

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

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

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

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

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

b. Во вкладке Modeling нажмите Model Settings.

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

e. Нажмите Generate.

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

makehdl('hdlcoderviterbi_for_fil/viterbi_block')

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

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

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

Чтобы запустить Мастер 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;
tic;
sim('hdlcoderviterbi_for_fil');
fs1 = toc

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

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

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

speedup = fs1 / fs2

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

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