exponenta event banner

Свойства конструкции HDL

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

С помощью свойств конструкции HDL можно настроить конструкции VHDL и Verilog в созданном коде.

Укажите эти свойства в качестве аргументов «имя-значение» для 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 объекта фильтра. Это свойство используется для переопределения унаследованного параметра. См. раздел Связь с литейной формой перед суммированием в конструкторе фильтров. Для системных объектов настройка по умолчанию зависит от типа и структуры фильтра.

Создание встроенных конфигураций 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 можно задать соответствующие свойства на вкладке «Глобальные параметры» > «Дополнительно» диалогового окна «Создание HDL».