Свойства построения HDL

Настройте построения HDL в сгенерированном коде

Со свойствами построения HDL можно настроить построения VHDL и Verilog в сгенерированном коде.

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

Например:

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

Стиль кодирования HDL

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

Преобразование типа перед сложением или вычитанием, заданным как одно из следующего:

  • 'on' — Сгенерированный код преобразовывает тип входных значений операций сложения и операций вычитания к желаемому типу результата прежде, чем работать со значениями. Эта установка приводит к числовым результатам, которые типичны для процессоров DSP.

  • 'off' Сгенерированный код сохраняет типы входного значения во время операций сложения и операций вычитания и затем преобразовывает результат в желаемый тип.

По умолчанию кодер устанавливает CastBeforeSum на основе установки Cast signals before sum Filter Designer объекта фильтра. Используйте это свойство заменить наследованную установку, видеть Отношение С Броском Перед Суммой в Filter Designer. Для Системных объектов настройка по умолчанию зависит от типа фильтра и структуры.

Сгенерируйте встроенные настройки VHDL, заданные как одно из следующего:

  • 'on' — Кодер включает настройки для сущности фильтра в рамках сгенерированного кода VHDL.

  • 'off' Кодер не использует генерацию настроек. Используйте эту опцию, если вы создаете свои собственные конфигурационные файлы VHDL.

Развертывание цикла в сгенерированном коде VHDL, заданном как одно из следующего:

  • 'off' Кодер включает FOR и циклы GENERATE в сгенерированном коде VHDL.

  • 'on' — Кодер разворачивает и не использует FOR и циклы GENERATE в сгенерированном коде VHDL. Используйте эту опцию, если ваш инструмент EDA не поддерживает циклы GENERATE.

Безопасный с точки зрения типов синтаксис для конкатенированных нулей, заданных как одно из следующего:

  • 'on' — Кодер использует синтаксис '0' & '0' для конкатенированных нулей. Этот синтаксис рекомендуется, потому что это однозначно.

  • 'off' Кодер использует синтаксис "000000..." для конкатенированных нулей. Этот синтаксис может быть легче считать и более компактен, но он может привести к неоднозначным типам.

Представляйте постоянные значения агрегатами, заданными как одно из следующего:

  • 'off' Кодер представляет константы меньше чем 32 бита как скаляры и константы, больше, чем или равный 32 битам, как агрегируется. Следующий пример показывает скалярное объявление по умолчанию для констант меньше чем 32 битов.

    CONSTANT coeff1: signed(15 DOWNTO 0) := to_signed(-60, 16); -- sfix16_En16
    CONSTANT coeff2: signed(15 DOWNTO 0) := to_signed(-178, 16); -- sfix16_En16
    

  • 'on' — Кодер представляет константы агрегатами, включая константы, которые меньше чем 32 бита шириной. Следующий пример показывает константы меньше чем 32 битов, объявленных, как агрегируется.

    CONSTANT c1: signed(15 DOWNTO 0):= (5 DOWNTO 3 =>'0',1 DOWNTO 0 => '0',OTHERS =>'1');
    CONSTANT c2: signed(15 DOWNTO 0):= (7 => '0',5 DOWNTO 4 =>'0',0 => '0',OTHERS =>'1');
    

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

  • 'off' Сгенерированный код проверяет на события часов при работе с регистрами. Например:

    Delay_Pipeline_Process : PROCESS (clk, reset)
    BEGIN
      IF reset = '1' THEN
        delay_pipeline(0 TO 50) <= (OTHERS => (OTHERS => '0'));
      ELSIF clk'event AND clk = '1' THEN
        IF clk_enable = '1' THEN
          delay_pipeline(0) <= signed(filter_in);
          delay_pipeline(1 TO 50) <= delay_pipeline(0 TO 49);
        END IF;
      END IF;
    END PROCESS Delay_Pipeline_Process ;
    
  • 'on' — Сгенерированный код использует VHDL функция rising_edge, чтобы проверять на возрастающие ребра при работе с регистрами. Например:

    Delay_Pipeline_Process : PROCESS (clk, reset)
    BEGIN
      IF reset = '1' THEN
        delay_pipeline(0 TO 50) <= (OTHERS => (OTHERS => '0'));
      ELSIF rising_edge(clk) THEN
        IF clk_enable = '1' THEN
          delay_pipeline(0) <= signed(filter_in);		
          delay_pipeline(1 TO 50) <= delay_pipeline(0 TO 49);
        END IF;
      END IF;
    END PROCESS Delay_Pipeline_Process ;
    

Когда переходы часов от 'X' до '1', эти два стиля кодирования имеют различное поведение симуляции.

Используйте директиву компилятора Verilog ˋtimescale, заданную как 'on' или 'off'. ˋtimescale директива обеспечивает способ задать различные значения задержки для нескольких модулей в файле Verilog. Когда это свойство установлено в 'off', кодер исключает директиву в сгенерированном коде Verilog.

Советы

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

Смотрите также

|