Не используйте генерацию часов, включают логику для односкоростных проектов.
Значение по умолчанию: 'off'
Для односкоростных моделей не используйте генерацию часов, включают логику по мере возможности. Следующий пример кода VHDL® не задает или исследует часы, включают сигнал. Когда сигнал часов (clk
) идет высоко, текущее значение сигналов выводится.
Unit_Delay_process : PROCESS (clk, reset) BEGIN IF reset = '1' THEN Unit_Delay_out1 <= to_signed(0, 32); ELSIF clk'EVENT AND clk = '1' THEN Unit_Delay_out1 <= In1_signed; END IF; END PROCESS Unit_Delay_process;
Сгенерируйте часы, включают логику. Следующее извлечение VHDL кода представляет регистр с часами, включают (enb
)
Unit_Delay_process : PROCESS (clk, reset) BEGIN IF reset = '1' THEN Unit_Delay_out1 <= to_signed(0, 32); ELSIF clk'EVENT AND clk = '1' THEN IF enb = '1' THEN Unit_Delay_out1 <= In1_signed; END IF; END IF; END PROCESS Unit_Delay_process;
В некоторых случаях HDL Coder™ испускает часы, включает, даже когда Minimize clock enables выбран. Эти случаи:
Регистры внутри Enabled, и Инициированные подсистемы состояния поддерживающие.
Многоскоростные модели.
Кодер всегда испускает часы, включает для следующих блоков:
Генератор Последовательности commseqgen2/PN
dspsigops/NCO
Поддержка HDL блока NCO будет удалена в будущем релизе. Используйте блок NCO HDL Optimized вместо этого.
Волна dspsrcs4/Sine
БПФ hdldemolib/HDL
built-in/DiscreteFir
Десятикратное уменьшение dspmlti4/CIC
Интерполяция dspmlti4/CIC
Десятикратное уменьшение dspmlti4/FIR
Интерполяция dspmlti4/FIR
Фильтр dspadpt3/LMS
Фильтр dsparch4/Biquad
Если ваш проект использует блок RAM, такой как Двойной Уровень Двухпортовый RAM с набором RAM Architecture к Generic RAM without Clock Enable
, генератор кода игнорирует установку Minimize clock enables.
Свойство:
MinimizeClockEnables |
Ввод: символьный вектор |
Значение:
'on' | 'off' |
Значение по умолчанию:
'off' |
Чтобы установить это свойство, используйте hdlset_param
или makehdl
. Чтобы просмотреть значение свойства, используйте hdlget_param
.
Например, чтобы минимизировать Часы Включают сигналы, когда вы генерируете HDL-код для подсистемы symmetric_fir
в модели sfir_fixed
, используйте любой из этих методов.
Передайте свойство в качестве аргумента к функции makehdl
.
makehdl('sfir_fixed/symmetric_fir', ... 'MinimizeClockEnables','on')
Когда вы используете hdlset_param
, можно установить параметр на модели и затем сгенерировать HDL-код с помощью makehdl
.
hdlset_param('sfir_fixed','MinimizeClockEnables','on') makehdl('sfir_fixed/symmetric_fir')
Не используйте генерацию логики сброса в HDL-коде.
Значение по умолчанию: 'off'
Когда вы включаете эту установку, генератор кода пытается минимизировать или удалить глобальную логику сброса из HDL-кода. Этот фрагмент кода соответствует коду Verilog, сгенерированному для блока Delay в модели Simulink®. Фрагмент кода показывает, что HDL Coder удалил логику сброса.
always @(posedge clk) begin : Delay_Synchronous_process if (enb) begin Delay_Synchronous_out1 <= DataIn; end end
Когда вы отключаете этот параметр, HDL Coder генерирует глобальную логику сброса в HDL-коде. Этот фрагмент кода Verilog показывает логику сброса, сгенерированную для блока Delay.
always @(posedge clk or posedge reset) begin : Delay_Synchronous_process if (reset == 1'b1) begin Delay_Synchronous_out1 <= 1'b0; end else begin if (enb) begin Delay_Synchronous_out1 <= DataIn; end end end
Если вы выбираете Minimize global resets, сгенерированный HDL-код содержит регистры, которые не имеют порта сброса. Если вы не инициализируете эти регистры, в результатах симуляции HDL могут быть потенциальные числовые несоответствия. Чтобы избежать несоответствий симуляции, можно инициализировать регистры при помощи установки инициализации регистров без сброса.
По умолчанию установка No-reset registers initialization имеет значение Generate initialization inside module
, что означает, что генератор кода инициализирует регистры как часть HDL-кода, сгенерированного для DUT. Чтобы инициализировать регистры со скриптом, установите No-reset registers initialization на Generate an external script
. Необходимо использовать нулевое начальное значение для блоков в модели Simulink.
Иногда, когда вы выбираете Minimize global resets, HDL Coder генерирует логику сброса, если вы имеете:
Блоки с состоянием, которые имеют ненулевое начальное значение, такое как блок Delay с ненулевым Initial Condition.
Перечислимые типы данных для блоков с состоянием.
Блоки Subsystem с архитектурой HDL BlackBox
, где вы запрашиваете сигнал сброса.
Многоскоростные модели с набором Timing controller architecture к default
.
Если вы устанавливаете Timing controller architecture на resettable
, HDL Coder генерирует порт сброса для контроллера синхронизации. Если вы устанавливаете Minimize global reset signals на 'on'
, генератор кода удаляет этот порт сброса.
Таблица истинности
График
Блок MATLAB function
Свойство:
MinimizeGlobalResets |
Ввод: символьный вектор |
Значение:
'on' | 'off' |
Значение по умолчанию:
'off' |
Чтобы установить это свойство, используйте hdlset_param
или makehdl
. Чтобы просмотреть значение свойства, используйте hdlget_param
.
Например, чтобы минимизировать глобальные сигналы сброса, когда вы сгенерируете HDL-код для подсистемы symmetric_fir
в модели sfir_fixed
, используйте любой из этих методов.
Передайте свойство в качестве аргумента к функции makehdl
.
makehdl('sfir_fixed/symmetric_fir', ... 'MinimizeGlobalResets','on')
Когда вы используете hdlset_param
, можно установить параметр на модели и затем сгенерировать HDL-код с помощью makehdl
.
hdlset_param('sfir_fixed','MinimizeGlobalResets','on') makehdl('sfir_fixed/symmetric_fir')