Распределенная конвейерная вставка для блоков 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')

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 папка.

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

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

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

Смотрите также

Похожие темы