Генерация HDL-кода и синтез FPGA из алгоритма MATLAB

HDL Coder™ может сгенерировать код VHDL и Verilog из алгоритмов MATLAB®, моделей Simulink® и графиков Stateflow®. Можно затем проверить, что сгенерированный код совпадает исходным алгоритмом, и разверните его на целевом компьютере.

Этот пример иллюстрирует, как можно использовать HDL Coder, чтобы сгенерировать и синтезировать HDL-код для алгоритма MATLAB, который реализует простой фильтр.

Об алгоритме в этом примере

Этот пример использует эти файлы:

  • mlhdlc_sfir.m — Простая функция filter, от которой вы генерируете HDL-код. Видеть, что код MATLAB для КИХ фильтрует алгоритм в командной строке, введите:

    edit('mlhdlc_sfir')

  • mlhdlc_sfir_tb.m — Испытательный стенд, что использование проекта HDL Coder, чтобы моделировать фильтр с помощью представительного входного диапазона. Видеть, что код MATLAB для КИХ фильтрует испытательный стенд в командной строке, введите:

    edit('mlhdlc_sfir_tb')

Создайте локальную копию файлов проекта и испытательного стенда

Прежде чем вы начнете генерировать код, В пути MATLAB, перейдете к папке, которая перезаписываема, и затем создайте рабочую папку, чтобы сохранить файлы испытательного стенда и проект.

  1. В вашей текущей рабочей папке создайте папку под названием filter_sfir.

    mkdir filter_sfir;
  2. Скопируйте учебные файлы, mlhdlc_sfir.m и mlhdlc_sfir_tb.m, к этой папке.

    mlhdlc_demo_dir = fullfile(matlabroot, 'toolbox', 'hdlcoder',...
    'hdlcoderdemos', 'matlabhdlcoderdemos');
    copyfile(fullfile(mlhdlc_demo_dir, 'mlhdlc_sfir.m'), 'filter_sfir');
    copyfile(fullfile(mlhdlc_demo_dir, 'mlhdlc_sfir_tb.m'), 'filter_sfir');

Настройте инструмент Path синтеза

Если вы хотите синтезировать сгенерированный HDL-код, прежде чем вы будете использовать HDL Coder, чтобы сгенерировать код, настройте свой инструмент path синтеза. Чтобы создать путь к вашему инструменту синтеза, используйте функцию hdlsetuptoolpath. Например, если вашим инструментом синтеза является Xilinx® Vivado®

hdlsetuptoolpath('ToolName','Xilinx Vivado','ToolPath',...
                  'C:\Xilinx\Vivado\2017.2\bin\vivado.bat');

Чтобы проверять вашу настройку инструмента синтеза Xilinx Vivado, запустите инструмент со следующей командой:

!vivado

Если вы используете другой инструмент Synthesis, чтобы видеть, как настроить инструмент path и правильную версию инструмента, чтобы использовать, смотрите Setup Инструмента Path Синтеза.

Протестируйте исходный алгоритм MATLAB

Чтобы проверить функциональность вашего алгоритма MATLAB, прежде, чем сгенерировать HDL-код, моделируют ваш проект MATLAB.

  1. Сделайте папку filter_sfir вашей рабочей папкой, например:

    cd filter_sfir
  2. Запустите испытательный стенд. В командной строке MATLAB, введите:

    mlhdlc_sfir_tb

    Испытательный стенд запускает и строит входной сигнал и отфильтрованный вывод.

Настройте проект Используя приложение HDL Coder

  1. Откройте приложение HDL Coder.

    • Чтобы открыть Приложение от пользовательского интерфейса, в MATLAB, на вкладке Apps, в разделе Code Generation, выбирают HDL Coder. Можно добавить это Приложение в избранное.

    • Открыть Приложение из командной строки, введите:

      hdlcoder

  2. Укажите, что название проекта, например, вводит mydesign.

    HDL Coder создает проект, mydesign.prj, в локальной рабочей папке, и открывает проект в правой стороне рабочего пространства MATLAB.

  3. Добавьте файлы испытательного стенда и проект. Для MATLAB Function добавьте файл mlhdlc_sfir.m, и для MATLAB Test Bench, добавьте файл mlhdlc_sfir_tb.m.

  4. Чтобы иметь Приложение автоматически задают типы данных сигналов, когда вы добавляете MATLAB Function, выберите Autodefine types. Выберите файл MATLAB Test Bench mlhdlc_sfir_tb.m, и затем запустите испытательный стенд.

    HDL Coder моделирует алгоритм и испытательный стенд, и автоматически задает входные типы. Выберите Use these types.

Откройте HDL Coder Workflow Advisor

Используйте HDL Coder Workflow Advisor, чтобы преобразовать ваш алгоритм в фиксированную точку, сгенерировать синтезируемый HDL-код, и затем развернуть код на целевой платформе. Чтобы узнать больше о каждой отдельной задаче в HDL Workflow Advisor, щелкните правой кнопкой по той задаче и выберите What's This?.

Чтобы открыть Советника по вопросам Рабочего процесса, в проекте, в нижней части панели, нажимают кнопку Workflow Advisor. Вы видите, что задача Define Input Types передала.

Создайте версии фиксированной точки алгоритма и испытательного стенда

Когда вы запускаете преобразование фиксированной точки, чтобы предложить дробные длины для типов данных с плавающей точкой, HDL Coder использует Default word length. В этом примере Default word length является 14. Советник обеспечивает Safety Margin for Simulation Min/Max по умолчанию 0%. Советник настраивает область значений данных этим запасом прочности. Например, значение 4 указывает, что вы хотите область значений по крайней мере на 4 процента больших.

Выберите задачу Fixed-Point Conversion. Инструмент Fixed-Point Conversion открывается на правой панели.

  1. В левом верхнем выберите Analyze.

    После симуляции HDL Coder отображает входной сигнал, отфильтрованный выходной сигнал и график частотного диапазона сигналов ввода и вывода. Если вы перешли к инструменту Fixed-Point Conversion в советнике по вопросам Рабочего процесса Виндоу, вы видите, что каждый вход, выведите, и персистентная переменная имеет Sim Min, Sim Max и Proposed Type в таблице.

    Этот пример использует области значений симуляции, чтобы вывести фиксированные точки. Можно использовать Compute Derived Ranges, чтобы получить область значений с помощью статического анализа области значений. Чтобы узнать больше, смотрите Автоматизированное Преобразование Фиксированной точки.

  2. Наверху, в разделе Verification, нажмите Validate Types.

    HDL Coder подтверждает сборку с предложенными фиксированными точками и генерирует проект фиксированной точки.

  3. Наверху, в разделе Verification, кликните по стрелке вниз для Test Numerics и выберите Log inputs and outputs for comparison plots. Кликните по верхней части кнопки Test Numerics.

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

  4. В нижней части вы видите вкладку Verification Output. Вкладка отображает ссылку на отчет mlhdlc_sfir_fixed_report.html. Чтобы исследовать фиксированную точку для функции mlhdlc_sfir, откройте отчет.

    Чтобы видеть фиксированную точку в редакторе MATLAB, в папке filter_sfir, вы видите папку codegen. Когда вы перемещаетесь по этой папке, вы видите файл mlhdlc_sfir_fixpt. Откройте этот файл.

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

  1. Если вы хотите синтезировать свой проект на целевой платформе FPGA, выберите задачу Select Code Generation Target. Оставьте Workflow Generic ASIC/FPGA и задайте Synthesis tool. Если вы не видите инструмент синтеза, выберите Refresh list.

  2. Прежде, чем сгенерировать код, настроить опции генерации кода, в задаче HDL Code Generation, используют Target, Coding Style, Clocks and Ports, Optimizations, Advanced и вкладки Script Options

  3. Чтобы сгенерировать HDL-код, в задаче HDL Code Generation, выбирают Run.

    Окно сообщения имеет ссылки на сгенерированный HDL-код и отчет ресурса. Щелкните по ссылкам, чтобы просмотреть отчет ресурса и код.

Проверьте сгенерированный HDL-код

  1. На левой панели HDL Workflow Advisor выберите HDL Verification> задача Verify with HDL Test Bench.

  2. Включите Generate HDL test bench и отключите Skip this step. Включите Simulate generated HDL test bench и выберите инструмент симуляции. Нажмите Run.

    Задача генерирует испытательный стенд HDL, затем моделирует проект фиксированной точки с помощью выбранного инструмента симуляции и генерирует отчет компиляции и отчет симуляции.

Синтез FPGA и реализация

  1. Выберите Synthesis and Analysis и отключите Skip this step. Запустите задачу Create Project.

    Эта задача создает проект синтеза для HDL-кода. HDL Coder использует этот проект в следующей задаче синтезировать проект.

  2. Выберите и запустите задачу Run Synthesis. Эта задача:

    • Запускает инструмент синтеза в фоновом режиме.

    • Открывает проект синтеза, созданный в предыдущей задаче, компилирует HDL-код, синтезирует проект и испускает списки соединений и связанные файлы.

    • Генерирует отчет синтеза.

  3. Выберите и запустите задачу Run Implementation. Эта задача:

    • Запускает инструмент синтеза в фоновом режиме.

    • Запускает процесс Места и Маршрута, который берет описание схемы, произведенное предыдущим процессом отображения, и испускает описание схемы, подходящее для программирования FPGA.

    • Испускает пред - и постнаправляющий синхронизацию информации для использования в анализе критического пути и обратной корректировке проекта вашей исходной модели.

Похожие темы