В этом примере показано, как оптимизировать сгенерированный 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
Подсистема.
Проверяйте на настройки блока MATLAB function