Используя несколько часов в HDL Coder

В этом примере показано, как инстанцировать нескольких синхронных входных портов часов верхнего уровня в HDL Coder™.

Обзор синхронизации режимов

HDL Coder имеет два режима синхронизации. Один режим генерирует один вход часов к Устройству под тестом (DUT). Другой режим генерирует синхронный первичный вход часов для каждого уровня Simulink® в DUT. По умолчанию HDL Coder создает проект HDL, который использует один порт часов для DUT. В одном режиме тактовой синхронизации, если несколько уровней существуют в модели Simulink, контроллер синхронизации создается, чтобы управлять синхронизацией к фрагментам модели, которые запускаются на более медленном уровне. Контроллер синхронизации генерирует набор часов, включает с необходимым уровнем и информацией о фазе, чтобы управлять синхронизацией для проекта. Каждые сгенерированные часы включают, целое число несколько медленнее, чем первичная тактовая частота. Каждый уровень выходного сигнала сопоставлен с часами, включают выходной сигнал, который указывает на правильную синхронизацию, чтобы произвести выходные данные.

В синхронном несколько режим тактовой синхронизации сгенерированный код имеет набор портов часов как первичные входные параметры к DUT. Каждый порт часов соответствует отдельному уровню в модели. Переходы между уровнями требуют, чтобы часы включили на данном уровне, которые не совпадают с часами того уровня. Эти несовпадающие по фазе сигналы сгенерированы с контроллером синхронизации. Модель часов кратного может потребовать нескольких контроллеров синхронизации.

Первое использование в качестве примера многоскоростная Интерполяция CIC просачивается один режим тактовой синхронизации. Вход фильтра также представлен как выход для этого примера, чтобы подарить модели выходные сигналы, запускающиеся на различных уровнях.

load_system('hdlcoder_clockdemo');
open_system('hdlcoder_clockdemo/DUT');
set_param('hdlcoder_clockdemo', 'SimulationCommand', 'update');

Один режим тактовой синхронизации DUT, синхронизирующий интерфейс

В одном режиме тактовой синхронизации HDL-код для DUT имеет набор трех сигналов, которые не появляются в схеме Simulink, добавленной к нему. Коллективно, это пакет часов, который содержит сигналы для часов, основной тактовый генератор включают и сбрасывают. Эти сигналы появляются в Объявлении сущности VHDL и используются в сгенерированном коде.

hdlset_param('hdlcoder_clockdemo', 'Traceability', 'on');
makehdl('hdlcoder_clockdemo/DUT');
### Generating HDL for 'hdlcoder_clockdemo/DUT'.
### Using the config set for model <a href="matlab:configset.showParameterGroup('hdlcoder_clockdemo', { 'HDL Code Generation' } )">hdlcoder_clockdemo</a> for HDL code generation parameters.
### Running HDL checks on the model 'hdlcoder_clockdemo'.
### Begin compilation of the model 'hdlcoder_clockdemo'...
### Applying HDL optimizations on the model 'hdlcoder_clockdemo'...
### Begin model generation.
### Model generation complete.
### Begin VHDL Code Generation for 'hdlcoder_clockdemo'.
### Working on DUT_tc as hdlsrc/hdlcoder_clockdemo/DUT_tc.vhd.
### Working on hdlcoder_clockdemo/DUT as hdlsrc/hdlcoder_clockdemo/DUT.vhd.
### Generating package file hdlsrc/hdlcoder_clockdemo/DUT_pkg.vhd.
### Code Generation for 'hdlcoder_clockdemo' completed.
### Generating HTML files for code generation report at <a href="matlab:web('/tmp/BR2021ad_1584584_202060/publish_examples3/tpff0237be/hdlsrc/hdlcoder_clockdemo/html/hdlcoder_clockdemo_codegen_rpt.html');">hdlcoder_clockdemo_codegen_rpt.html</a>
### Creating HDL Code Generation Check Report file:///tmp/BR2021ad_1584584_202060/publish_examples3/tpff0237be/hdlsrc/hdlcoder_clockdemo/DUT_report.html
### HDL check for 'hdlcoder_clockdemo' complete with 0 errors, 0 warnings, and 1 messages.
### HDL code generation complete.

Синхронизируйте итоговое создание отчетов в одном режиме тактовой синхронизации

Блок комментария файла в HDL код DUT содержит информацию о Сводных данных Часов. В одном режиме тактовой синхронизации этот отчет содержит таблицу, детализирующую частоты дискретизации для каждых часов, включают выходной сигнал. Отчет также содержит таблицу, перечисляющую каждый пользовательский выходной сигнал, и его связанные часы включают выходной сигнал. Любое время отчет HTML сгенерирован, Сводный отчет Часов, также сгенерировано.

Генерация синхронного HDL-кода мультичасов

Сгенерировать несколько синхронных часов для этого проекта, ClockInputs свойство должно быть установлено в multiple. Любое изменение ClockInputs свойство в командной строке с помощью makehdl или измените входные настройки Часов к Multiple на вкладке HDL Code Generation> Global Settings диалогового окна Configuration Parameters.

makehdl('hdlcoder_clockdemo/DUT', 'ClockInputs', 'multiple');
### Generating HDL for 'hdlcoder_clockdemo/DUT'.
### Using the config set for model <a href="matlab:configset.showParameterGroup('hdlcoder_clockdemo', { 'HDL Code Generation' } )">hdlcoder_clockdemo</a> for HDL code generation parameters.
### Running HDL checks on the model 'hdlcoder_clockdemo'.
### Begin compilation of the model 'hdlcoder_clockdemo'...
### Applying HDL optimizations on the model 'hdlcoder_clockdemo'...
### Begin model generation.
### Model generation complete.
### Begin VHDL Code Generation for 'hdlcoder_clockdemo'.
### Working on DUT_tc_d1 as hdlsrc/hdlcoder_clockdemo/DUT_tc_d1.vhd.
### Working on hdlcoder_clockdemo/DUT as hdlsrc/hdlcoder_clockdemo/DUT.vhd.
### Generating package file hdlsrc/hdlcoder_clockdemo/DUT_pkg.vhd.
### Code Generation for 'hdlcoder_clockdemo' completed.
### Generating HTML files for code generation report at <a href="matlab:web('/tmp/BR2021ad_1584584_202060/publish_examples3/tpff0237be/hdlsrc/hdlcoder_clockdemo/html/hdlcoder_clockdemo_codegen_rpt.html');">hdlcoder_clockdemo_codegen_rpt.html</a>
### Creating HDL Code Generation Check Report file:///tmp/BR2021ad_1584584_202060/publish_examples3/tpff0237be/hdlsrc/hdlcoder_clockdemo/DUT_report.html
### HDL check for 'hdlcoder_clockdemo' complete with 0 errors, 0 warnings, and 1 messages.
### HDL code generation complete.

Синхронизируйте итоговую информацию в мультирежиме тактовой синхронизации

Содержимое Сводных данных Часов отличается в нескольких режим тактовой синхронизации. Отчет теперь содержит таблицу часов. Эта таблица имеет одну запись для каждых первичных часов DUT. Это описывает относительное отношение часов между каждыми часами и самыми быстрыми часами в модели. Как с одним режимом тактовой синхронизации, эта информация представлена и в HDL блок комментария файла DUT и в отчете HTML.

Мультирежим тактовой синхронизации и оптимизация HDL Coder

Несколько синхронных часов могут быть полезны даже для проекта только с одним уровнем Simulink. Различная оптимизация может потребовать тактовых частот быстрее, чем обозначенный в исходной модели. Следующий пример демонстрирует модель фильтрации аудио, которая применяет тот же фильтр на левые и правые каналы. По умолчанию HDL Coder сгенерировал бы два модуля фильтра в оборудовании. С этой настройкой несколько режим тактовой синхронизации все еще только генерирует часы, как один режим тактовой синхронизации делает.

bdclose hdlcoder_clockdemo;
load_system('hdlcoder_audiofiltering');
open_system('hdlcoder_audiofiltering/Audio filter');
hdlset_param('hdlcoder_audiofiltering', 'ClockInputs', 'Multiple');
hdlset_param('hdlcoder_audiofiltering/Audio filter', 'SharingFactor', 0);
makehdl('hdlcoder_audiofiltering/Audio filter', 'Traceability', 'on');
### Generating HDL for 'hdlcoder_audiofiltering/Audio filter'.
### Using the config set for model <a href="matlab:configset.showParameterGroup('hdlcoder_audiofiltering', { 'HDL Code Generation' } )">hdlcoder_audiofiltering</a> for HDL code generation parameters.
### Running HDL checks on the model 'hdlcoder_audiofiltering'.
### Begin compilation of the model 'hdlcoder_audiofiltering'...
### Applying HDL optimizations on the model 'hdlcoder_audiofiltering'...
### Begin model generation.
### Model generation complete.
### Begin VHDL Code Generation for 'hdlcoder_audiofiltering'.
### Working on hdlcoder_audiofiltering/Audio filter/Filter_left as hdlsrc/hdlcoder_audiofiltering/Filter_left.vhd.
### Working on hdlcoder_audiofiltering/Audio filter as hdlsrc/hdlcoder_audiofiltering/Audio_filter.vhd.
### Code Generation for 'hdlcoder_audiofiltering' completed.
### Generating HTML files for code generation report at <a href="matlab:web('/tmp/BR2021ad_1584584_202060/publish_examples3/tpff0237be/hdlsrc/hdlcoder_audiofiltering/html/hdlcoder_audiofiltering_codegen_rpt.html');">hdlcoder_audiofiltering_codegen_rpt.html</a>
### Creating HDL Code Generation Check Report file:///tmp/BR2021ad_1584584_202060/publish_examples3/tpff0237be/hdlsrc/hdlcoder_audiofiltering/Audio_filter_report.html
### HDL check for 'hdlcoder_audiofiltering' complete with 0 errors, 0 warnings, and 0 messages.
### HDL code generation complete.

Используя несколько режим тактовой синхронизации с разделением ресурсов

С разделением ресурсов, к которому применяются идентичные левые и правые атомарные подсистемы канала, сгенерирован только один фильтр. Чтобы удовлетворить требования синхронизации Simulink, один фильтр запущен на дважды тактовой частоте как исходная модель Simulink, как показан ниже. Поскольку оптимизация разделения ресурсов создает вторую тактовую частоту, пользователь может использовать синхронный несколько режим тактовой синхронизации, чтобы предоставить внешние таймеры для обоих уровней. В этой настройке несколько режим тактовой синхронизации все еще только генерирует часы. Вы видите сообщение:

The design requires 2 times faster clock with respect to the base rate = 0.00012207.

bdclose gm_hdlcoder_audiofiltering;
hdlset_param('hdlcoder_audiofiltering/Audio filter', 'SharingFactor', 2);
makehdl('hdlcoder_audiofiltering/Audio filter', 'Traceability', 'on');
open_system('gm_hdlcoder_audiofiltering/Audio filter');
set_param('gm_hdlcoder_audiofiltering', 'SimulationCommand', 'update');
### Generating HDL for 'hdlcoder_audiofiltering/Audio filter'.
### Using the config set for model <a href="matlab:configset.showParameterGroup('hdlcoder_audiofiltering', { 'HDL Code Generation' } )">hdlcoder_audiofiltering</a> for HDL code generation parameters.
### Running HDL checks on the model 'hdlcoder_audiofiltering'.
### Begin compilation of the model 'hdlcoder_audiofiltering'...
### Applying HDL optimizations on the model 'hdlcoder_audiofiltering'...
### The DUT requires an initial pipeline setup latency. Each output port experiences these additional delays.
### Output port 1: 1 cycles.
### Output port 2: 1 cycles.
### Begin model generation.
### Model generation complete.
### Begin VHDL Code Generation for 'hdlcoder_audiofiltering'.
### MESSAGE: The design requires 2 times faster clock with respect to the base rate = 0.00012207.
### Working on hdlcoder_audiofiltering/Audio filter/Filter_left as hdlsrc/hdlcoder_audiofiltering/Filter_left.vhd.
### Working on hdlcoder_audiofiltering/Audio filter as hdlsrc/hdlcoder_audiofiltering/Audio_filter.vhd.
### Generating package file hdlsrc/hdlcoder_audiofiltering/Audio_filter_pkg.vhd.
### Code Generation for 'hdlcoder_audiofiltering' completed.
### Generating HTML files for code generation report at <a href="matlab:web('/tmp/BR2021ad_1584584_202060/publish_examples3/tpff0237be/hdlsrc/hdlcoder_audiofiltering/html/hdlcoder_audiofiltering_codegen_rpt.html');">hdlcoder_audiofiltering_codegen_rpt.html</a>
### Creating HDL Code Generation Check Report file:///tmp/BR2021ad_1584584_202060/publish_examples3/tpff0237be/hdlsrc/hdlcoder_audiofiltering/Audio_filter_report.html
### HDL check for 'hdlcoder_audiofiltering' complete with 0 errors, 0 warnings, and 1 messages.
### HDL code generation complete.