Можно следовать этим инструкциям, чтобы изучить, как можно идентифицировать параметры блоков в проекте и программно обновить некоторые параметры так, чтобы модель была совместима для генерации HDL-кода. Каждая инструкция имеет уровень серьезности, который указывает на уровень требований податливости. Чтобы узнать больше, смотрите Уровни серьезности Руководств по моделированию HDL.
1.1.11
Рекомендуемый
Для блоков Constant и блоков Gain, которые имеют значительно большие значения или используют значения параметров, Constant или значения Gain не могут отобразиться в маске блока. Чтобы увеличить удобочитаемость, настройте размер блока так, чтобы значение параметров могло быть отображено как показано в фигуре.
ID инструкции
1.1.12
Серьезность
Рекомендуемый
Описание
Определенные свойства блока HDL, такие как DistributedPipelining
и SharingFactor
может значительно влиять на генерацию HDL-кода. Если свойства блока включены для определенного блока или Подсистемы, рекомендуется, чтобы вы аннотировали свойства блока около того блока в схеме Simulink™. Когда вы аннотируете модель, используйте разделители, такие как --HDL--
разделить аннотацию от имени блока.
Например, откройте модель hdlcoder_block_annotation_HDL_params.slx
.
open_system('hdlcoder_block_annotation_HDL_params') set_param('hdlcoder_block_annotation_HDL_params','SimulationCommand','Update')
Подсистема DUT выполняет простое, умножаются - добавляет операция.
open_system('hdlcoder_block_annotation_HDL_params/DUT')
Существуют параметры блоков HDL, экономил на модели. Чтобы видеть параметры, используйте hdlsaveparams
функция.
hdlsaveparams('hdlcoder_block_annotation_HDL_params/DUT')
%% Set Model 'hdlcoder_block_annotation_HDL_params' HDL parameters hdlset_param('hdlcoder_block_annotation_HDL_params', 'GenerateCoSimModel', 'ModelSim'); hdlset_param('hdlcoder_block_annotation_HDL_params', 'GenerateValidationModel', 'on'); hdlset_param('hdlcoder_block_annotation_HDL_params', 'HierarchicalDistPipelining', 'on'); hdlset_param('hdlcoder_block_annotation_HDL_params', 'MaskParameterAsGeneric', 'on'); hdlset_param('hdlcoder_block_annotation_HDL_params', 'MinimizeClockEnables', 'on'); hdlset_param('hdlcoder_block_annotation_HDL_params', 'MinimizeIntermediateSignals', 'on'); hdlset_param('hdlcoder_block_annotation_HDL_params', 'OptimizationReport', 'on'); hdlset_param('hdlcoder_block_annotation_HDL_params', 'ResetType', 'Synchronous'); hdlset_param('hdlcoder_block_annotation_HDL_params', 'ResourceReport', 'on'); hdlset_param('hdlcoder_block_annotation_HDL_params', 'TargetLanguage', 'Verilog'); hdlset_param('hdlcoder_block_annotation_HDL_params', 'Traceability', 'on'); % Set SubSystem HDL parameters hdlset_param('hdlcoder_block_annotation_HDL_params/DUT', 'DistributedPipelining', 'on'); hdlset_param('hdlcoder_block_annotation_HDL_params/DUT', 'InputPipeline', 1); hdlset_param('hdlcoder_block_annotation_HDL_params/DUT', 'OutputPipeline', 3); % Set Sum HDL parameters hdlset_param('hdlcoder_block_annotation_HDL_params/DUT/Add', 'InputPipeline', 1); hdlset_param('hdlcoder_block_annotation_HDL_params/DUT/Add', 'OutputPipeline', 1); % Set Product HDL parameters hdlset_param('hdlcoder_block_annotation_HDL_params/DUT/Product', 'InputPipeline', 2); hdlset_param('hdlcoder_block_annotation_HDL_params/DUT/Product', 'OutputPipeline', 1);
Аннотировать модель параметрами блоков HDL экономило на модели, используйте showHdlBlockParams
скрипт присоединяется с примером.
showHdlBlockParams('hdlcoder_block_annotation_HDL_params/DUT','on')
Add block annotation for hdlcoder_block_annotation_HDL_params/DUT. ----HDL----\nDistributedPipelining = on\nInputPipeline = 1\nOutputPipeline = 3 Add block annotation for hdlcoder_block_annotation_HDL_params/DUT/Add. ----HDL----\nInputPipeline = 1\nOutputPipeline = 1 Add block annotation for hdlcoder_block_annotation_HDL_params/DUT/Product. ----HDL----\nInputPipeline = 2\nOutputPipeline = 1
open_system('hdlcoder_block_annotation_HDL_params')
open_system('hdlcoder_block_annotation_HDL_params/DUT')
Чтобы удалить аннотацию параметров блоков HDL из модели, запустите showHdlBlockParams
установите на off
.
showHdlBlockParams('hdlcoder_block_annotation_HDL_params/DUT','off')
HDL block annotations for hdlcoder_block_annotation_HDL_params/DUT are removed HDL block annotations for hdlcoder_block_annotation_HDL_params/DUT/In1 are removed HDL block annotations for hdlcoder_block_annotation_HDL_params/DUT/In2 are removed HDL block annotations for hdlcoder_block_annotation_HDL_params/DUT/In3 are removed HDL block annotations for hdlcoder_block_annotation_HDL_params/DUT/Add are removed HDL block annotations for hdlcoder_block_annotation_HDL_params/DUT/Product are removed HDL block annotations for hdlcoder_block_annotation_HDL_params/DUT/Out1 are removed
open_system('hdlcoder_block_annotation_HDL_params')
open_system('hdlcoder_block_annotation_HDL_params/DUT')
1.1.13
Информативный
Чтобы изменить параметры определенных блоков, можно использовать функциональный find_system
с функциональным set_param
. Например, этот скрипт, который обнаруживает все блоки Constant с Sample time inf
и изменяет его к -1
:
modelname = ‘sfir_fixed’; open_system (modelname) % Detect all Constant blocks in the model blockConstant = find_system(bdroot, 'blocktype', 'Constant') % Detect the Constant blocks with sample time [inf], and change to [-1] for n = 1:numel(blockConstant) sTime = get_param(blockConstant{n},'SampleTime') if strcmp(lower(sTime), 'inf') set_param(blockConstant{n}, 'SampleTime', '-1') end end