В среде моделирования Simulink® Вы не создаете глобальные сигналы, такие как часы, сбрасываете, и часы включают. Эти сигналы создаются, когда вы генерируете HDL-код для своей модели. Можно задать такт при помощи шага расчета в Simulink.
Если ваша модель является одним уровнем, это означает, что все блоки действуют в том же шаге расчета. Инструменты синтеза выводят, что регистры или блоки Delay вы добавляете к своему запуску модели на тактовой частоте. Для инструментов синтеза данные распространяют от исходного регистра до целевого регистра за один такт.
Можно следовать этим инструкциям, чтобы узнать о генерации сигналов часов в HDL-коде. Каждая инструкция имеет уровень серьезности, который указывает на уровень требований податливости. Чтобы узнать больше, смотрите Уровни серьезности Руководств по моделированию HDL.
1.4.1
Информативный
Можно присвоить разделенную на частоту тактовую частоту для генерации HDL-кода, чтобы быть кратными базовой частоте дискретизации Simulink. Например, если базовой ставкой Simulink является 1 MHz
и вы хотите, чтобы тактовая частота вашего целевого компьютера запустилась в 50 MHz
, можно присвоить Oversampling factor 50
. Вы указываете, что Сверхдискретизация включает HDL Code Generation> панель Global Settings диалогового окна Configuration Parameters. Чтобы узнать больше, смотрите, Генерируют Глобальные Часы Сверхдискретизации.
ID инструкции
1.4.2
Серьезность
Обязательный
Описание
Можно сгенерировать многоскоростную модель при помощи деления тактовой частоты или при помощи множителей часов. Для многоскоростной модели самый быстрый шаг расчета в вашей модели Simulink™ соответствует уровню основного тактового генератора. Контроллер синхронизации сущность создается, чтобы управлять синхронизацией для блоков, действующих на уровне более медленных частот дискретизации. Часы включают сигналы, которые имеют необходимый уровень, и информация о фазе управляют синхронизацией для этих блоков в вашем проекте.
Многоскоростные модели создаются, когда вы используете определенные блоки в своей модели Simulink™, задаете определенные архитектуры блока или используете операции, такие как разделение ресурсов. Например, эти комбинации архитектуры блока генерируют многоскоростную модель:
Разделите блок с реализацией Ньютона-Raphson.
Взаимный блок с реализацией ReciprocalSqrtBasedNewton.
Сумма Элементов и продукт Элементов блокируются с Каскадной архитектурой.
Sqrt с SqrtBasedNewton и Взаимный Sqrt с реализацией ReciprocalRsqrtBasedNewton.
Кроме того, чтобы смоделировать многоскоростные проекты в Simulink™, используйте эти блоки:
В Simulink> Библиотека Атрибутов Сигнала, используйте блок Rate Transition.
В DSP System Toolbox> Библиотека Операций Сигнала, которой можно пользоваться, Сверхдискретизировала, Downsample и Повторные блоки.
В HDL Coder> Библиотека RAM HDL, используйте блок HDL FIFO.
Эта модель иллюстрирует, как создать многоскоростной проект при помощи блока Rate Transition.
load_system('hdlcoder_multiclock') set_param('hdlcoder_multiclock','SimulationCommand','Update') open_system('hdlcoder_multiclock')
Различные цвета в модели указывают, что модель является многоскоростной и имеет более быстрый уровень D1 и более медленный уровень D2. Чтобы видеть блок Rate Transition, который производит различные частоты дискретизации, дважды кликните Подсистему DUT.
open_system('hdlcoder_multiclock/DUT')
Чтобы видеть шаги расчета в вашей модели, запустите эту команду:
ts = Simulink.BlockDiagram.getSampleTimes('hdlcoder_multiclock');
sampletime_D1 = ts(1)
sampletime_D2 = ts(2)
sampletime_D1 = SampleTime with properties: Value: [1.0000e-03 0] Description: 'Discrete 1' ColorRGBValue: [0.9000 0 0] Annotation: 'D1' OwnerBlock: [] ComponentSampleTimes: [0x0 Simulink.SampleTime] sampletime_D2 = SampleTime with properties: Value: [0.0030 0] Description: 'Discrete 2' ColorRGBValue: [0 0.8200 0] Annotation: 'D2' OwnerBlock: [] ComponentSampleTimes: [0x0 Simulink.SampleTime]
Когда вы используете блок Rate Transition в своей модели для многоскоростного проекта, выберите параметры блоков, Гарантируют целостность данных во время передачи данных и Гарантируют детерминированную передачу данных (максимальная задержка). Убедитесь, что выходная частота дискретизации является целочисленным кратным входная частота дискретизации.
Для многоскоростного проекта можно сгенерировать один сигнал часов или несколько сигналов часов управлять синхронизацией с блоками, которые действуют на уровне различных частот дискретизации. Чтобы задать эту установку, в диалоговом окне Configuration Parameters, на генерации HDL-кода> Глобальная панель Настроек, указывают, что Часы вводят установку.
По умолчанию Часы вводят, задан как single
. Одни часы сгенерированы, чтобы управлять синхронизацией для всех регистров или блоков Задержки в вашей модели. Контроллер синхронизации включает управлению сигналами синхронизацию с различными блоками в вашем проекте. Этот режим может увеличить рассеивание энергии, когда одни, самые быстрые часы соединяются со всеми регистрами в вашем проекте.
Если вы указываете, что Часы вводят как multiple
, сигнал часов сгенерирован для каждой частоты дискретизации в вашем проекте. Однако этот режим требует, чтобы вы соединили каждые из часов, часы включают и сбрасывают порты внешне. Этот режим уменьшает мощность, когда проект HDL содержит регистры, соединенные с более медленными сигналами часов. Для получения дополнительной информации смотрите Используя Несколько Часов в HDL Coder.
ID инструкции
1.4.3
Серьезность
Обязательный
Описание
Когда вы используете Переход Уровня, Сверхдискретизировали, или блоки Downsample, чтобы создать многоскоростные модели, тактовые частоты должны быть целочисленными множителями базовой ставки. Чтобы создать многоскоростную модель с часами, которые являются множителями нецелого числа, используйте блок Dual Rate Dual Port RAM. Поскольку целочисленные часы умножаются, можно использовать HDL FIFO или блок Dual Rate Dual Port RAM.
Эта модель иллюстрирует, как можно создать множители нецелого числа частот дискретизации.
load_system('hdlcoder_dual_rate_dual_port_RAM') set_param('hdlcoder_dual_rate_dual_port_RAM','SimulationCommand','Update') open_system('hdlcoder_dual_rate_dual_port_RAM/DUT')
Вы не можете сгенерировать HDL-код для этой модели, потому что блоки Перехода Уровня имеют параметры блоков, Гарантируют целостность данных во время очищенной передачи данных. Чтобы изучить, как можно справиться с управлением адресом, когда вы используете блок RAM, смотрите, что Конструктивные соображения для RAM блокируют доступ.
ID инструкции
1.4.4
Серьезность
Рекомендуемый
Описание
Большинство проектов FPGA должно иметь больше чем одну область часов с несколькими частями проекта, действующего на различных частотах. Можно смоделировать различные области часов в Simulink™ при помощи реализации передачи для перехода между различными частотами дискретизации. Эти частоты дискретизации соответствуют тактовым частотам на устройстве FPGA.
Для примера откройте модель hdlcoder_multi_clock_domain
и затем откройте Подсистему DUT.
load_system('hdlcoder_multi_clock_domain') set_param('hdlcoder_multi_clock_domain', 'SimulationCommand', 'Update') open_system('hdlcoder_multi_clock_domain/DUT')
Вы видите Подсистему BlackBox, которая содержит DocBlock, который является текстовым файлом, который соответствует коду Verilog для реализации передачи. Можно открыть DocBlock, чтобы видеть код Verilog. Вы видите, что выход этой Подсистемы действует на уровне различной частоты дискретизации или находится в области часов, которая отличается от частоты дискретизации во входе Подсистемы. Подсистема также содержит прокомментированный путь, который содержит VHDL, эквивалентный из реализации передачи. Чтобы сгенерировать код VHDL, не прокомментируйте этот путь и прокомментируйте путь, который содержит реализацию Verilog BlackBox.
Чтобы сгенерировать код Verilog для этой модели, запустите эту команду:
makehdl('hdlcoder_multi_clock_domain/DUT')
В сгенерированном заголовочном файле Verilog вы видите различные области часов в модели.
// ------------------------------------------------------------- // // File Name: hdlsrc\hdlcoder_multi_clock_domain\DUT.v // Created: 2018-10-05 11:30:21 // // Generated by MATLAB 9.6 and HDL Coder 3.13 // // // -- ------------------------------------------------------------- // -- Rate and Clocking Details // -- ------------------------------------------------------------- // Model base rate: 1.30208e-12 // Target subsystem base rate: 2.65428e-12 // // // Clock Domain Description // -- ------------------------------------------------------------- // clk_1_3072 1 3072x slower than base rate clock // clk_1_3125 2 3125x slower than base rate clock // -- ------------------------------------------------------------- // // Output Signal Clock Domain Sample Time // -- ------------------------------------------------------------- // Output1 (no clock) 0 4.06901e-09 // -- ------------------------------------------------------------- // // -------------------------------------------------------------
1.4.5
Рекомендуемый
Соответствие с типом сброса к архитектуре FPGA может улучшить использование ресурса и скорость, на которой ваш проект работает на целевом компьютере. Чтобы управлять этой установкой, в диалоговом окне Configuration Parameters, на настройках HDL Code Generation> Global Settings, задают Reset type.
Когда вы предназначаетесь для устройств Xilinx®, устанавливаете Reset type на Synchronous
. Для Intel® или устройств Altera®, набор Reset type к Asynchronous
.
Чтобы убедиться, что вы используете правильный тип сброса для оборудования, для которого вы предназначаетесь в Советнике по вопросам HDL-кода, осуществляют Проверку проверки модели на глобальную установку сброса для устройств Xilinx и Altera.
Примечание
Некоторые устройства Intel рекомендуют использовать синхронный сброс. Для рекомендуемых настроек сброса см. документацию Intel или Xilinx для того устройства.