Этот пример использует симуляцию цикл (FIL), чтобы ускорить часть коммуникационной системы. Приложение использует алгоритм Viterbi, чтобы декодировать сверточный закодированный случайный поток, который модулируется BPSK, передается через канал AWGN и затем демодулируется. Использование подхода sample-by-sample приводит к скромной скорости по сравнению с обычной симуляцией Simulink ®, в то время как использование опции «Process as Frames» приводит к дальнейшему ускорению.
Этот пример использует Communications Toolbox™ в сочетании с HDL- Coder™ и HDL- Verifier™, чтобы показать рабочий процесс проекта для ускорения симуляции с использованием цикл.
Инструменты, необходимые для запуска этого примера:
Программное обеспечение для проекта ПЛИС
Одна из поддерживаемых плат разработки FPGA. Для поддерживаемого оборудования смотрите Поддерживаемые устройства FPGA для верификации FPGA.
Для подключения с использованием Ethernet: Gigabit Ethernet Adapter, установленный на хост-компьютер, перекрестный кабель Gigabit Ethernet
Для подключения с использованием JTAG: USB Blaster I или II кабель и драйвер для плат Intel FPGA. Кабель Digilent ® JTAG и драйвер для плат Xilinx FPGA.
Для подключения с помощью платы PCI Express ®: FPGA, установленной в паз PCI Express хост-компьютера.
Требования: MATLAB ® и программное обеспечение для проекта FPGA могут быть либо локально установлены на вашем компьютере, либо на сетевом доступном устройстве. Если вы используете программное обеспечение из сети, вам понадобится второй сетевой адаптер, установленный на вашем компьютере, чтобы обеспечить частную сеть для платы разработки FPGA. Чтобы узнать, как установить сетевой адаптер, обратитесь к руководствам по оборудованию и сетям вашего компьютера.
Откройте модель. Из-за большого количества данных для обработки, симуляция занимает приблизительно 9 секунд без FIL. Мы улучшим скорость симуляции в следующих шагах, используя цикл.
Этот шаг требует HDL Coder. Если у вас нет HDL Coder, можно использовать предварительно сгенерированные HDL- файлов в текущей директории.
Если вы собираетесь использовать эти скопированные файлы, перейдите непосредственно к шагу 3.
Сгенерируйте HDL-код для подсистемы блоков Viterbi путем выполнения следующих шагов:
а. Щелкните правой нажатие кнопки на существующем блоке FIL, маркированном viterbi_block1
. Щелкните Удалить, чтобы удалить этот блок для генерации кода.
б. На вкладке Моделирование (Modeling) щелкните Настройки модели (Model Settings).
d. Щелкните на панели Генерация HDL-кода и убедитесь, что выбран hdlcoderviterbi_for_fil/viterbi_block.
e. Нажмите Generate.
Также можно сгенерировать HDL-код, введя следующую команду в подсказке MATLAB:
makehdl('hdlcoderviterbi_for_fil/viterbi_block')
Перед использованием цикл убедитесь, что ваше системное окружение настроено правильно для доступа к программному обеспечению проекта FPGA. Можно использовать функцию hdlsetuptoolpath, чтобы добавить программное обеспечение проекта FPGA к системному пути для текущего сеанса работы с MATLAB.
Чтобы запустить Мастер FIL, введите следующую команду в подсказке MATLAB:
filWizard;
Выберите плату из списка плат. Для продолжения нажмите кнопку Далее.
a. Добавить все ранее сгенерированные исходные файлы HDL для Viterbi Block
подсистема.
б. Выберите файл viterbi_block.vhd
как файл верхнего уровня. Возможно, вам потребуется расширить окно FPGA-in-the-Loop Wizard, порядок увидеть эти опции.
С. Заметьте, что viterbi_block
введено как имя модуля верхнего уровня по умолчанию. Для продолжения нажмите кнопку Далее.
Обратите внимание, что порты модуля верхнего уровня были правильно идентифицированы. Для продолжения нажмите кнопку Далее.
A. Выберите выход папку.
б. Нажмите Build, чтобы создать блок FIL и программный файл.
В процессе сборки происходят следующие действия:
Блок FIL с именем viterbi_block генерируется в новой модели.
После генерации новой модели Мастер FIL открывает командное окно, где программное обеспечение для проекта FPGA выполняет синтез, отображение, месторасположение, анализ времени и генерацию файлов программирования FPGA. Для этого блока эти шаги занимают около 20 минут.
Когда процесс проекта программного обеспечения FPGA закончен, сообщение в командном окне позволяет вам знать, что вы можете закрыть окно.
a. Откройте hdlcoderviterbi_for_fil.mdl
б. Скопируйте в него ранее сгенерированный блок FIL и соедините его либо параллельно, либо вместо viterbi_block. Обратите внимание, что исходный блок имеет входы справа. Чтобы сделать блок FIL имеющим входные входы справа, щелкните правой нажатие кнопки блок и выберите «Повернуть & Щелчок - > Развернуть блок».
A. Дважды кликните блок FIL в модели, чтобы открыть маску блока.
б. Нажмите кнопку Загрузка.
c. Нажмите OK, чтобы закрыть маску блока.
Запустите симуляцию в течение 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 с помощью платы Spartan-6 SP605 Xilinx. Эта конкретная плата и система обеспечивают общую скорость в 1,7 раза быстрее, но другие платы и коммуникационные системы могут быть еще быстрее.
speedup = fs1 / fs2
Удаляя версию блока Simulink и только симулируя версию FIL, и добавляя больше блоков в FIL-часть проекта и максимально удаляя Осциллографы Simulink и отображения, возможны ещё большие спидапы.
Это завершает Ускорение Коммуникационной системы Симуляции Используя FPGA-В-том Цикла примере.