Порт HDL и свойства идентификатора

Настройте порты, идентификаторы и комментарии

С портом HDL и свойствами идентификатора, можно настроить порты, идентификаторы и комментарии в сгенерированном коде.

Задайте эти свойства как пары, разделенные запятой аргументов Name,Value к функции generatehdl. Name является именем свойства, и Value является соответствующим значением. Имя должно находиться внутри одинарных кавычек (' '). Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Например:

fir = dsp.FIRFilter('Structure','Direct form antisymmetric');
generatehdl(fir,'InputDataType',numerictype(1,16,15),'ClockInputPort','clk_input');

Часы, входные параметры и Выходные параметры

развернуть все

Имя часов включает входной порт, заданный как 'clk_enable', вектор символов или скаляр строки.

Если вы задаете значение, которое является зарезервированным словом на выходном языке, кодер добавляет постфиксный _rsvd в это значение. Можно обновить постфиксное значение при помощи свойства ReservedWordPostfix. Для получения дополнительной информации смотрите Решение Конфликтов Зарезервированного слова HDL.

Имя часов включает выходной порт, заданный как 'ce_out', вектор символов или скаляр строки. Это свойство применяется только к Многоскоростным фильтрам, которые используют одни входные часы (поведение по умолчанию ClockInputs). Для примера смотрите Порты Часов для Многоскоростных фильтров. Для получения дополнительной информации см. Опции Генерации кода для Многоскоростных фильтров.

Если вы задаете значение, которое является зарезервированным словом на выходном языке, кодер добавляет постфиксный _rsvd в это значение. Можно обновить постфиксное значение при помощи свойства ReservedWordPostfix. Для получения дополнительной информации смотрите Решение Конфликтов Зарезервированного слова HDL.

Имя входного порта часов, заданного как 'clk', вектор символов или скаляр строки.

Если вы задаете значение, которое является зарезервированным словом на выходном языке, кодер добавляет постфиксный _rsvd в это значение. Можно обновить постфиксное значение при помощи свойства ReservedWordPostfix. Для получения дополнительной информации смотрите Решение Конфликтов Зарезервированного слова HDL.

Имя входного порта фильтра, заданного как 'filter_in', вектор символов или скаляр строки.

Если вы задаете значение, которое является зарезервированным словом на выходном языке, кодер добавляет постфиксный _rsvd в это значение. Можно обновить постфиксное значение при помощи свойства ReservedWordPostfix. Для получения дополнительной информации смотрите Решение Конфликтов Зарезервированного слова HDL.

Тип данных входного порта фильтра, заданного как одно из следующего:

  • 'std_logic_vector' или 'signed/unsigned' (когда выходной язык является VHDL),

  • 'wire' (когда выходным языком является Verilog),

Имя выходного порта фильтра, заданного как 'filter_out', вектор символов или скаляр строки.

Если вы задаете значение, которое является зарезервированным словом на выходном языке, кодер добавляет постфиксный _rsvd в это значение. Можно обновить постфиксное значение при помощи свойства ReservedWordPostfix. Для получения дополнительной информации смотрите Решение Конфликтов Зарезервированного слова HDL.

Тип данных выходного порта фильтра в сгенерированном HDL-коде, заданном как одно из следующего:

  • 'Same as input data type', 'std_logic_vector' или 'signed/unsigned' (когда выходной язык является VHDL),

  • 'wire' (когда выходным языком является Verilog),

Сброс

развернуть все

Имя фильтра сбросило порт, заданный как 'reset', вектор символов или скаляр строки. Используйте свойство ResetAssertedLevel управлять поведением этого порта.

Если вы задаете значение, которое является зарезервированным словом на выходном языке, кодер добавляет постфиксный _rsvd в это значение. Можно обновить постфиксное значение при помощи свойства ReservedWordPostfix. Для получения дополнительной информации смотрите Решение Конфликтов Зарезервированного слова HDL.

Подавите генерацию сброса от сдвиговых регистров, заданных как 'none' или 'ShiftRegister'. Чтобы не использовать сигналы сброса от сдвиговых регистров, установите это свойство на 'ShiftRegister'. Отключение сигналов сброса от сдвиговых регистров может привести к более эффективной реализации FPGA. Для получения дополнительной информации смотрите Генерацию Подавления Логики Сброса.

Утверждаемый (активный) уровень входного сигнала сброса, заданного как одно из следующего:

  • 'active-high' — Чтобы сбросить регистры в проекте фильтра, входной сигнал сброса должен управляться высоко (1).

    Например, этот код проверяет, активен ли reset высоко прежде, чем заполнить регистр delay_pipeline.

    Delay_Pipeline_Process : PROCESS (clk, reset)
    BEGIN
      IF reset = '1' THEN
        delay_pipeline(0 TO 50) <= (OTHERS => (OTHERS => '0'));

  • 'active-low' — Чтобы сбросить регистры в проекте фильтра, входной сигнал сброса должен управляться низко (0).

    Например, этот код проверяет, активен ли reset низко прежде, чем заполнить регистр delay_pipeline.

    Delay_Pipeline_Process : PROCESS (clk, reset)
    BEGIN
      IF reset = '0' THEN
        delay_pipeline(0 TO 50) <= (OTHERS => (OTHERS => '0'));

Сбросьте стиль для регистров, заданных как одно из следующего:

  • 'async' — Кодер использует асинхронный сброс. Блок процесса HDL не проверяет на активные часы прежде, чем выполнить сброс. Например:

    delay_pipeline_process : PROCESS (clk, reset)
    BEGIN
      IF Reset_Port = '1' THEN
        delay_pipeline (0 To 50) <= (OTHERS =>(OTHERS => '0'));
      ELSIF Clock_Port'event AND Clock_Port = '1' THEN
        IF ClockEnable_Port = '1' THEN
          delay_pipeline(0) <= signed(Fin_Port);
          delay_pipeline(1 TO 50) <= delay_pipeline(0 TO 49);
        END IF;
      END IF;
    END PROCESS delay_pipeline_process;

  • 'sync' — Кодер использует синхронный стиль сброса. В этом случае, проверки блока процесса HDL на фронт прежде, чем выполнить сброс. Например:

    delay_pipeline_process : PROCESS (clk, reset)
    BEGIN
      IF rising_edge(Clock_Port) THEN
        IF Reset_Port = '0' THEN
         delay_pipeline(0 To 50) <= (OTHERS =>(OTHERS => '0'));
        ELSIF ClockEnable_Port = '1' THEN
         delay_pipeline(0) <= signed(Fin_Port);
         delay_pipeline(1 TO 50) <= delay_pipeline(0 TO 49);
        END IF;
      END IF;
    END PROCESS delay_pipeline_process;
    

Идентификаторы и комментарии

развернуть все

Постфикс к меткам блока-участка, заданным как '_gen', вектор символов или скаляр строки. Это свойство применяется только, когда выходной язык является VHDL. Кодер добавляет этот постфикс к меткам блока-участка операторов VHDL GENERATE.

Постфикс к экземпляру разделяет метки, заданные как '_gen', вектор символов или скаляр строки. Это свойство применяется только, когда выходной язык является VHDL. Кодер добавляет этот постфикс к меткам раздела экземпляра операторов VHDL GENERATE.

Постфикс, чтобы вывести присвоение блокирует метки, заданные как 'outputgen', вектор символов или скаляр строки. Это свойство применяется только, когда выходной язык является VHDL. Кодер добавляет этот постфикс к выходным меткам блока присвоения операторов VHDL GENERATE.

Постфикс к HDL синхронизирует имена процесса, заданные как '_process', вектор символов или скаляр строки. Кодер использует блоки процесса HDL, чтобы изменить содержимое регистров в фильтре. Метка блока выведена с имени регистра и этого постфикса. Например, в следующем объявлении блока, кодер выводит метку процесса с имени регистра delay_pipeline и постфиксный '_process' по умолчанию.

delay_pipeline_process : PROCESS (clk, reset)
BEGIN

Префикс для содействующих имен фильтра, заданных как 'coeff', вектор символов или скаляр строки. Кодер выводит содействующие имена путем добавления специфичных для фильтра характеристик к этому префиксу.

Отфильтруйте типСодействующее имя
КИХКодер добавляет содействующий номер к CoeffPrefix, начиная с 1. Например, значением по умолчанию для первого коэффициента является coeff1.
БИХ

Кодер добавляет следующие символы к CoeffPrefix:

  1. подчеркните (_)

  2. a или содействующее имя b (например, _a2, _b1 или _b2)

  3. _sectionN, где N является номером раздела.

Например, значением по умолчанию для первого коэффициента числителя третьего раздела является coeff_b1_section3.

Например:

firfilt = design(fdesign.lowpass,'equiripple', ...
    'FilterStructure','dfsymfir','SystemObject',true);
generatehdl(firfilt,'InputDataType',numerictype(1,16,15), ...
    'CoefficientSource','Internal','CoeffPrefix','mycoeff');

Кодер заменяет содействующий префикс имени по умолчанию на пользовательское значение:

ARCHITECTURE rtl OF firfilt IS
  -- Local Functions
  -- Type Definitions
  TYPE delay_pipeline_type IS ARRAY (NATURAL range <>) OF signed(15 DOWNTO 0); -- sfix16_En15
  -- Constants
  CONSTANT mycoeff1   : signed(15 DOWNTO 0) := to_signed(-159, 16); -- sfix16_En16
  CONSTANT mycoeff2   : signed(15 DOWNTO 0) := to_signed(-137, 16); -- sfix16_En16
  CONSTANT mycoeff3   : signed(15 DOWNTO 0) := to_signed(444, 16); -- sfix16_En16
  CONSTANT mycoeff4   : signed(15 DOWNTO 0) := to_signed(1097, 16); -- sfix16_En16
  ...

Зависимости

Это свойство применяется только, когда вы устанавливаете CoefficientSource на 'Internal'.

Постфикс к мнимой части комплексных имен сигнала, заданных как '_im', вектор символов или скаляр строки. Смотрите Используя Комплексные данные и Коэффициенты.

Постфикс к действительной части комплексных имен сигнала, заданных как '_re', вектор символов или скаляр строки. Смотрите Используя Комплексные данные и Коэффициенты.

Постфикс, чтобы копировать сущность или имена модуля, заданные как '_block', вектор символов или скаляр строки. Кодер добавляет этот постфикс, чтобы разрешить дублирующиеся имена модуля сущности или Verilog VHDL. Например, если кодер обнаруживает две сущности с именем MyFilt, кодер называет первую сущность MyFilt и второй экземпляр MyFilt_block.

Префикс для имени экземпляра компонента, заданного как 'u_', вектор символов или скаляр строки.

Постфикс к имени файла пакета VHDL, заданному как '_pkg', вектор символов или скаляр строки. Кодер выводит имя пакета путем добавления этого постфикса к имени фильтра. Эта опция применяется, только если файл пакета требуется для проекта.

Постфикс к зарезервированным словам, заданным как '_rsvd', вектор символов или скаляр строки. Это свойство применяется к имени, постфиксу или значениям метки, заданным как вектор символов или скаляр строки в аргументах пары Name,Value к generatehdl. Если заданное значение является зарезервированным словом на выходном языке, кодер добавляет этот постфикс к значению. Например, если вы вызываете generatehdl с парой аргумента 'Name','mod', кодер формирует имя mod_rsvd в сгенерированном коде фильтра. См. Таблицы Зарезервированного слова.

Разделите сущность VHDL и код архитектуры, заданный как 'off' или 'on'. Когда это свойство установлено в 'on', кодер генерирует сущность VHDL и код архитектуры фильтра в двух отдельных файлах. Кодер выводит имена файлов с имени фильтра путем добавления постфиксов _entity и _arch к основному имени файла. Чтобы задать пользовательские постфиксные значения, установите свойства SplitEntityFilePostfix и SplitArchFilePostfix.

Постфикс к имени файла архитектуры VHDL, заданному как '_arch', вектор символов или скаляр строки.

Зависимости

Это свойство применяется только, когда вы устанавливаете SplitEntityArch на 'on'.

Постфикс к имени файла сущности VHDL, заданному как '_entity', вектор символов или скаляр строки.

Зависимости

Это свойство применяется только, когда вы устанавливаете SplitEntityArch на 'on'.

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

firfilt = dsp.FIRFilter;
generatehdl(firfilt,'InputDataType',numerictype(1,16,15), ...
    'UserComment','This is a comment line.\nThis is a second line.')
Получившийся блок комментария заголовка для фильтра firfilt следующие:
-- -------------------------------------------------------------
--
-- Module: firfilt
-- Generated by MATLAB(R) 9.1 and the Filter Design HDL Coder 3.1.
-- Generated on: 2016-11-08 15:28:25
-- This is a comment line.
-- This is a second line.
--
-- -------------------------------------------------------------

-- -------------------------------------------------------------
-- HDL Code Generation Options:
--
-- TargetLanguage: VHDL
-- Name: firfilt
-- InputDataType: numerictype(1,16,15)
-- UserComment:  User data, length 47
-- GenerateHDLTestBench: off

-- -------------------------------------------------------------
-- HDL Implementation    : Fully parallel
-- Folding Factor        : 1
-- -------------------------------------------------------------
-- Filter Settings:
--
-- Discrete-Time FIR Filter (real)
-- -------------------------------
-- Filter Structure  : Direct-Form FIR
-- Filter Length     : 2
-- Stable            : Yes
-- Linear Phase      : Yes (Type 2)
-- Arithmetic        : fixed
-- Numerator         : s16,15 -> [-1 1)
-- -------------------------------------------------------------

Префикс для вектора VHDL сигнализирует об именах, заданных как 'vector_of_', вектор символов или скаляр строки.

Советы

Если вы используете функциональный fdhdltool, чтобы сгенерировать HDL-код, можно установить соответствующие свойства в диалоговом окне Generate HDL.

СвойствоМестоположение в диалоговом окне

Input data type

Output data type

Clock enable output port

Input port

Output port

Вкладка Global Settings> вкладка Ports
Дополнительный порт и свойства идентификатора

Главный раздел вкладки Global Settings и вкладки Global Settings> вкладка General

Проверьте основную вкладку Global Settings, и Ports и вкладки General вкладки Global Settings.

Представлено до R2006a