exponenta event banner

Рекомендации по сигналам синхронизации и сброса

В среде моделирования Simulink ® глобальные сигналы, такие как часы, сброс и включение часов, не создаются. Эти сигналы создаются при генерации кода HDL для модели. Тактовый цикл можно указать с помощью времени выборки в Simulink.

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

Для получения информации о генерации тактовых сигналов в коде HDL можно следовать приведенным ниже инструкциям. Каждое руководство имеет уровень серьезности, который указывает уровень соответствия требованиям. Дополнительные сведения см. в разделе Рекомендации по моделированию HDL Уровни серьезности.

Использование глобальной избыточной выборки для создания тактового генератора с разделением по частоте

Идентификатор руководства

1.4.1

Серьезность

Информативный

Описание

Для генерации кода HDL можно назначить тактовую частоту с разделением по частоте, кратную базовой частоте выборки Simulink. Например, если базовая скорость Simulink равна 1 MHz и вы хотите, чтобы тактовая частота вашего целевого оборудования работала на 50 MHz, можно назначить коэффициент избыточной выборки 50. Коэффициент избыточной выборки задается на панели «Создание кода HDL» > «Глобальные настройки» диалогового окна «Параметры конфигурации». Дополнительные сведения см. в разделе Создание глобального синхросигнала избыточной дискретизации.

Создание многоскоростной модели с целочисленными тактовыми импульсами с разделением часов

Идентификатор руководства

1.4.2

Серьезность

Обязательный

Описание

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

Многоскоростные модели создаются при использовании определенных блоков в модели Simulink™, задании определенных блочных архитектур или использовании таких операций, как совместное использование ресурсов. Например, эти комбинации блочной архитектуры генерируют многоскоростную модель:

  • Разделить блок с реализацией Ньютона-Рафсона.

  • Взаимный блок с реализацией RecopalSqrtBasedNewton.

  • Сумма элементов и произведение блоков элементов с каскадной архитектурой.

  • Sqrt с реализацией SqrtBasedNewton и Interfal Sqrt с реализацией RecopalRsqrtBasedNewton.

Кроме того, для моделирования многоскоростных конструкций в Simulink™ используются следующие блоки:

  • В меню Simulink > Signal Attributes Library используйте блок Rate Transition.

  • В окне DSP System Toolbox > Signal Operations Library можно использовать блоки Upsample, Downsample и Repeat.

  • В библиотеке HDL Coder > HDL RAMs используйте блок 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 в модели для многоскоростного проектирования выберите параметры блока Обеспечение целостности данных при передаче данных и Обеспечение детерминированной передачи данных (максимальная задержка). Убедитесь, что выходная частота дискретизации равна целому числу, кратному входной частоте дискретизации.

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

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

При указании тактовых входов в качестве multipleтактовый сигнал генерируется для каждой частоты дискретизации в вашей конструкции. Однако этот режим требует подключения каждого из портов синхронизации, включения синхронизации и сброса извне. Этот режим уменьшает мощность, поскольку конструкция ЛПВП содержит регистры, подключенные к более медленным тактовым сигналам. Дополнительные сведения см. в разделе Использование нескольких часов в кодере HDL.

Использование двухскоростной двухпортовой ОЗУ для неинтегрированной многозадачности

Идентификатор руководства

1.4.3

Серьезность

Обязательный

Описание

При использовании блоков Rate Transition, Upsample или Downsample для создания многоскоростных моделей тактовые частоты должны быть целыми кратными базовой скорости. Чтобы создать многоскоростную модель с часами, не являющимися интегральными кратными, используйте двухскоростной двухпортовый блок ОЗУ. Для целочисленных умножений тактового сигнала можно использовать блок HDL FIFO или двухпортовый блок Dual Rate 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 имеют параметр block Обеспечить целостность данных во время передачи данных. Сведения о том, как управлять управлением адресами при использовании блока ОЗУ, см. в разделе Рекомендации по проектированию доступа к блоку ОЗУ.

Асинхронное моделирование часов в кодере HDL

Идентификатор руководства

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 для реализации сквозной передачи. Для просмотра кода Verilog можно открыть DocBlock. Вы видите, что выход этой подсистемы работает с другой частотой дискретизации или находится в тактовой области, которая отличается от частоты дискретизации на входе подсистемы. Подсистема также содержит путь с комментариями, который содержит эквивалент 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» > «Глобальные параметры» укажите тип сброса.

При назначении устройств Xilinx ® установите для параметра Reset type значение Synchronous. Для устройств Intel ® или Altera ® установите для параметра Reset type значениеAsynchronous.

Чтобы убедиться, что вы используете правильный тип сброса для аппаратного обеспечения, на которое вы нацелены, в помощнике по коду HDL запустите проверку модели Проверьте настройки глобального сброса для устройств Xilinx и Altera.

Примечание

Некоторые устройства Intel рекомендуют использовать синхронный сброс. Рекомендуемые настройки сброса см. в документации по Intel или Xilinx для этого устройства.

См. также

Функции

Параметры конфигурации Simulink

Связанные темы