Этот пример использует FPGA в цикле (FIL) симуляция, чтобы ускорить часть системы связи. Приложение использует алгоритм Viterbi, чтобы декодировать сверточный закодированный случайный поток, который является BPSK, модулируемым, отправленным через канал AWGN, и затем демодулируемым. Используя выборку выборкой подход приводит к скромному ускорению по нормальной симуляции Simulink® при использовании "Процесса, как Системы координат" опция приводят к дальнейшему ускорению.
Этот пример использует Communications Toolbox™ в сочетании с HDL Coder™ и HDL Verifier™, чтобы показать рабочий процесс проекта для ускорения симуляции с помощью FPGA в цикле.
Инструменты, требуемые запускать этот пример:
Программное обеспечение проекта FPGA
Одна из поддерживаемых макетных плат FPGA и аксессуаров
Для связи с помощью Ethernet: Гигабитный Адаптер Ethernet установил на хосте - компьютере, Гигабитный Ethernet перекрестно соединяют кабель
Для связи с помощью JTAG: Бластер USB I или II кабелей и драйвер для плат FPGA Intel. Кабель Digilent® JTAG и драйвер для плат FPGA Xilinx.
Для связи с помощью PCI Express®: плата FPGA установлена в паз PCI Express хоста - компьютера.
Требования: MATLAB® и программное обеспечение проекта FPGA могут или быть локально установлены на вашем компьютере или на сетевом доступном устройстве. Если вы будете использовать программное обеспечение от сети, то вам будет нужен второй сетевой адаптер, установленный в вашем компьютере, чтобы предоставить частную сеть макетной плате FPGA. Консультируйтесь с оборудованием и сетевыми руководствами для вашего компьютера, чтобы изучить, как установить сетевой адаптер.
Откройте модель. Из-за большого количества данных к процессу, симуляция занимает приблизительно 9 секунд без FIL. Мы улучшим скорость симуляции в следующих шагах при помощи FPGA в цикле.
Этот шаг требует 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')
Перед использованием FPGA в цикле убедитесь, что ваша системная среда настраивается правильно для доступа к программному обеспечению проекта FPGA. Можно использовать функцию hdlsetuptoolpath, чтобы добавить программное обеспечение проекта FPGA в системный путь для текущего сеанса работы с MATLAB.
Чтобы запустить Мастер FIL, введите следующую команду в подсказке MATLAB:
filWizard;
Выберите плату из списка плат. Нажмите Далее, чтобы продолжиться.
a. Добавьте все ранее сгенерированные исходные файлы HDL для Viterbi Block
подсистема.
b. Выберите файл viterbi_block.vhd
как файл Верхнего уровня. Вы, возможно, должны сделать окно FPGA-in-the-Loop Wizard шире для того, чтобы видеть эти опции.
c. Заметьте что viterbi_block
был введен для вас как имя модуля верхнего уровня по умолчанию. Нажмите Далее, чтобы продолжиться.
Заметьте, что порты модуля верхнего уровня были правильно идентифицированы. Нажмите Далее, чтобы продолжиться.
a. Выберите выходную папку.
b. Нажмите Build, чтобы создать блок FIL и файл программирования.
Во время процесса сборки происходят следующие действия:
Блок FIL, названный viterbi_block, сгенерирован в новой модели.
После новой генерации модели Мастер FIL открывает командное окно, где программное обеспечение проекта FPGA выполняет синтез, отображение, место-и-маршрут, синхронизируя анализ и FPGA, программируя генерацию файла. Для этого блока эти шаги занимают приблизительно 20 минут.
Когда программный процесс проекта FPGA закончен, сообщение в командном окне сообщает, что можно закрыть окно.
a. Откройте hdlcoderviterbi_for_fil.mdl
b. Скопируйте в него ранее сгенерированный блок FIL и соедините его или параллельно с или вместо viterbi_block. Обратите внимание на то, что исходный блок имеет входные параметры справа. Чтобы заставить блок FIL иметь свои входные параметры справа, щелкните правой кнопкой мыши по блоку и затем нажмите Rotate & Flip-> Flip Block.
a. Дважды кликните блок FIL в модели, чтобы открыть маску блока.
b. Нажмите Load.
c. Нажмите ОК, чтобы закрыть маску блока.
Запустите симуляцию в течение 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 В примере цикла.