Распределенная вставка трубопровода для блоков MATLAB function

В этом примере показов, как оптимизировать сгенерированный HDL-код для Блоков MATLAB function с помощью оптимизации распределённой конвейеризации. Распределённая конвейеризация является HDL- Coder™ оптимизацией, которая улучшает сгенерированный HDL-код из блоков MATLAB Function, моделей Simulink ® или графиков Stateflow ®. При помощи распределённой конвейеризации ваш проект достигает более высоких тактовых частот на устройстве FPGA.

Модель цепи умножителей

Этот пример показывает, как распределить регистры трубопровода в простой модели, которая связывает пять умножений.

open_system('hdlcoder_distpipe_multiplier_chain')
set_param('hdlcoder_distpipe_multiplier_chain','SimulationCommand','Update')

The HDL_DUT Подсистема является DUT, для которого необходимо сгенерировать HDL-код. Подсистема управляет блоком MATLAB Function mult_chain.

open_system('hdlcoder_distpipe_multiplier_chain/HDL_DUT')

Чтобы увидеть цепь умножений, откройте блок MATLAB Function.

open_system('hdlcoder_distpipe_multiplier_chain/HDL_DUT/mult_chain')

Применение оптимизации распределённой конвейеризации

1. Задайте генерацию двух этапов трубопровода для блока MATLAB Function.

ml_subsys = 'hdlcoder_distpipe_multiplier_chain/HDL_DUT/mult_chain';
hdlset_param(ml_subsys, 'OutputPipeline', 2)

2. Задайте MATLAB Datapath архитектура. Эта архитектура обрабатывает блок MATLAB Function как обычную Подсистему. Затем можно применить различные оптимизации через блоки MATLAB Function с другими блоками в модели Simulink ®.

hdlset_param(ml_subsys, 'architecture', 'MATLAB Datapath');

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

hdlset_param('hdlcoder_distpipe_multiplier_chain', ...
                'HierarchicalDistPipe', 'on', 'OptimizationReport', 'on')
hdlset_param('hdlcoder_distpipe_multiplier_chain/HDL_DUT', 'DistributedPipelining', 'on');
hdlset_param(ml_subsys, 'DistributedPipelining', 'on');

4. Сгенерируйте HDL-код для HDL_DUT подсистема.

makehdl('hdlcoder_distpipe_multiplier_chain/HDL_DUT/mult_chain')

По умолчанию HDL Coder генерирует код VHDL в hdlsrc папка.

Анализ результатов оптимизации

В отчете Распределенный трубопровод (Distributed Pipelining) видно, что генератор кода переместил регистры конвейера. Чтобы увидеть эффекты оптимизации, откройте сгенерированную модель gm_hdlcoder_distpipe_multiplier_chain и перейдите к HDL_DUT Подсистема.

The MATLAB Datapath архитектура создает Подсистему вместо блока MATLAB Function. Затем оптимизация может распределить регистры конвейера и модуля задержку, которую вы добавили внутри Подсистемы, чтобы оптимизировать цепь множителя и улучшить синхронизацию. Откройте mult_chain Подсистема.

См. также

Похожие темы