HDL Construct Properties

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

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

Задайте эти свойства как аргументы name-value к generatehdl functionName имя свойства и Value соответствующее значение. Можно задать несколько аргументов 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.

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

|