В Simulink® Окружение моделирования, Вы не создаете глобальные сигналы, такие как часы, сброс и включение синхроимпульса. Эти сигналы создаются, когда вы генерируете HDL-код для вашей модели. Можно задать тактовый цикл при помощи шага расчета в Simulink.
Если ваша модель является одной скоростью, это означает, что все блоки работают в одно и то же шаг расчета. Инструменты синтеза делают вывод, что регистры или Delay блоки, добавляемые к вашей модели, выполняются с тактовой частотой. Для инструментов синтеза данные передаются из регистра источника в регистр назначения за один такт.
Вы можете следовать этим рекомендациям, чтобы узнать о генерации тактовых сигналов в HDL-коде. Каждое руководство имеет уровень серьезности, который указывает на уровень податливостей. Для получения дополнительной информации см. HDL-руководства по моделированию уровней серьезности.
1.4.1
Информативный
Можно назначить частотно-разделенную тактовую частоту для генерации HDL-кода, которая будет кратной базовой частоте дискретизации Simulink. Для примера, если скорость основы Simulink 1 MHz
и вы хотите, чтобы тактовая частота вашего целевого компьютера запускалась на 50 MHz
можно назначить Oversampling factor 50
. Коэффициент избыточной дискретизации задается на панели HDL Code Generation > Global Settings диалогового окна Параметры конфигурации. Для получения дополнительной информации смотрите Сгенерируйте часы глобальной избыточной дискретизации.
Идентификатор руководства
1.4.2
Серьезность
Обязательный
Описание
Можно сгенерировать многоскоростную модель при помощи деления тактовой частоты или при помощи кратных синхроимпульсов. Для многоскоростной модели самый быстрый шаг расчета в вашей модели Simulink™ соответствует основной тактовой частоте. Сущность контроллера синхронизации создаётся, чтобы управлять синхронизацией для блоков, работающих с более медленными скоростями дискретизации. Сигналы включения синхроимпульса, которые имеют необходимую скорость и информацию о фазе, управляют синхронизацией для этих блоков в вашем проекте.
Многоскоростные модели создаются, когда вы используете определенные блоки в вашей Simulink™ модели, задаете определенные архитектуры блоков или используете такие операции, как совместное использование ресурсов. Для примера эти комбинации блок-архитектуры генерируют многоскоростную модель:
Разделите блок с реализацией Ньютона-Рафсона.
Ответный блок с реализацией RetricalSqrtBasedNewton.
Сумма блоков элементов и продукта элементов с архитектурой Cascade.
Sqrt с SqrtBasedNewton и Recoverrocal Sqrt с реализацией RecoverrocalRsqrtBasedNewton.
В сложение, чтобы смоделировать многоуровневые проекты в Simulink™, используйте эти блоки:
В Библиотеке атрибутов сигнала Simulink > используйте блок Rate Transition.
В DSP System Toolbox > Signal Operations Library можно использовать блоки Upsample, Downsample и Repeat.
В HDL Coder > HDL RAM Library используйте HDL FIFO блок.
Эта модель иллюстрирует, как создать многократный проект с помощью блока Rate Transition.
load_system('hdlcoder_multiclock') set_param('hdlcoder_multiclock','SimulationCommand','Update') open_system('hdlcoder_multiclock')
Различные цвета в модели указывают, что модель является мультирейтовой и имеет более высокую скорость D1 и более низкую скорость D2. Чтобы увидеть блок Rate Transition, который создает различные частоты дискретизации, дважды щелкните DUT Subsystem.
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 в вашей модели для многократного проекта, выберите параметры блоков Гарантируйте целостность данных во время передачи данных и Гарантируйте детерминированную передачу данных (максимальную задержку). Убедитесь, что выходная частота выборки является целым числом, кратным входной скорости выборки.
Для многочасового проекта можно сгенерировать один синхросигнал или несколько синхросигналов для управления тактовой частотой в блоки, которые работают с различными скоростями дискретизации. Чтобы задать эту настройку, в диалоговом окне Параметры конфигурации на панели Генерации HDL-кода > Глобальные параметры задайте настройку входных параметров синхроимпульса.
По умолчанию входы синхроимпульса заданы как single
. Для управления синхронизацией для всех регистров или блоков Delay в вашей модели генерируется один синхроимпульс. Контроллер синхронизации включает сигналы управления синхронизацией к различным блокам в вашем проекте. Этот режим может увеличить рассеивание степени, так как один, самый быстрый синхроимпульс соединяется со всеми регистрами в вашем проекте.
Если вы задаете входы синхроимпульса как multiple
, тактовый сигнал генерируется для каждой частоты дискретизации в вашем проекте. Однако этот режим требует, чтобы вы подключили каждый из портов синхроимпульса, синхроимпульса и сбросили внешние порты. Этот режим уменьшает степень, поскольку проект HDL содержит регистры, подключенные к более медленным тактовым сигналам. Для получения дополнительной информации смотрите Использование нескольких часов в HDL Coder.
Идентификатор руководства
1.4.3
Серьезность
Обязательный
Описание
Когда вы используете блоки Rate Transition, Upsample или 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-код для этой модели, потому что блоки Rate Transition имеют параметры блоков Гарантировать целостность данных во время очистки передачи данных. Чтобы узнать, как можно управлять управлением адресами, когда вы используете блок RAM, смотрите факторы по проекту для доступа к блокам RAM.
Идентификатор руководства
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 для реализации passthrough. Вы можете открыть 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 может улучшить использование ресурсов и скорость, с которой ваш проект работает на целевом компьютере. Чтобы управлять этой настройкой, в диалоговом окне Параметров конфигурации, по настройкам HDL Code Generation > Global Settings, задайте Reset type.
Когда вы нацелены на Xilinx® устройств, установите Reset type равным Synchronous
. Для Intel® или Altera® устройств, установите Reset type равным Asynchronous
.
Чтобы убедиться, что вы используете правильный тип сброса для оборудования, на которое вы нацелены, в HDL-код Advisor, запустите проверку модели Проверить на глобальную настройку сброса для устройств Xilinx и Altera.
Примечание
Некоторые устройства Intel рекомендуют использовать синхронный сброс. Рекомендуемые параметры сброса см. в документации Intel или Xilinx для этого устройства.