Порты и сбросы

Присвоение имен портам HDL

Имена по умолчанию для портов HDL фильтра следующие:

HDL-портИмя порта по умолчанию
Input portfilter_in
Выходной портfilter_out
Порт синхроимпортаclk
Порт включения синхроимпульсаclk_enable
Порт сбросаreset
Порт дробной задержки (только для фильтров Farrow)filter_fd

Для примера - объявление VHDL по умолчанию для сущностей filt выглядит следующим образом.

ENTITY filt IS
   PORT( clk               :     IN    std_logic;
         clk_enable        :     IN    std_logic;
         reset             :     IN    std_logic;
         filter_in         :     IN    std_logic_vector (15 DOWNTO 0); -- sfix16_En15
         filter_out        :     OUT   std_logic_vector (15 DOWNTO 0); -- sfix16_En15
         );
END filt;

Чтобы изменить имена портов,

  1. Выберите вкладку Global Settings в диалоговом окне Сгенерировать HDL.

  2. Выберите вкладку Ports на панели Additional settings. Следующий рисунок подчеркивает области имени порта для Input port, Output port, Clock input port, Reset input port, и Clock enable output port.

  3. Введите новые векторы символов в поля имен портов.

Альтернатива командной строки: используйте generatehdl функция со свойствами InputPort, OutputPort, ClockInputPort, ClockEnableInputPort, и ResetInputPort для изменения имен портов фильтра в сгенерированном HDL-коде.

Определение типа данных HDL для портов данных

По умолчанию порты входных и выходных данных фильтра имеют тип данных std_logic_vector в VHDL и введите wire в Верилоге. Если вы генерируете VHDL- кода, также можно задать signed/unsigned, и для выходных портов данных, Same as input data type. Кодер применяет тип SIGNED или UNSIGNED на основе типа данных, заданного в создании фильтра.

Для изменения типа данных VHDL для портов входных и выходных данных,

  1. Выберите вкладку Global Settings в диалоговом окне Сгенерировать HDL.

  2. Выберите вкладку Ports на панели Additional settings.

  3. Выберите тип данных из меню Input data type или Output data type, указанного на следующем рисунке.

    По умолчанию выход данных совпадает с типом входных данных.

    Тип портов Verilog wire, и не может быть изменен.

    Примечание

    Установка Input data type не применяется к входу двойной точности, который генерируется как тип REAL для VHDL и wire[63:0] для Верилога.

Альтернатива командной строки: используйте generatehdl функция со свойствами InputType и OutputType для изменения типа данных VHDL для портов входа и вывода.

Выбор логики асинхронного или синхронного сброса

По умолчанию сгенерированный HDL-код для регистров использует логику асинхронного сброса. Выберите асинхронную или синхронную логику сброса в зависимости от типа проектируемого устройства (для примера, FPGA или ASIC) и выбор.

Следующий фрагмент кода иллюстрирует использование асинхронных сбросов. Блок процесса не проверяет наличие активного синхроимпульса перед выполнением сброса.

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;

Чтобы изменить тип сброса на синхронный, выберите Synchronous из меню Reset type на панели Global settings диалогового окна Генерация HDL.

Следующий код для синхронного сброса. Этот блок процесса проверяет наличие события синхроимпульса, восходящего ребра, перед выполнением сброса.

delay_pipeline_process : PROCESS (clk, reset)
BEGIN
  IF rising_edge(clk) THEN
    IF reset = '1' THEN
      delay_pipeline (0 To 50) <= (OTHERS => (OTHERS => '0'));
    ELSIF 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;

Альтернатива командной строки: используйте generatehdl функция со свойством ResetType для установки стиля сброса для регистров в сгенерированном HDL-коде.

Установка заданного уровня для входного сигнала сброса

Заданный уровень входного сигнала сброса определяет, должен ли этот сигнал управляться до активного высокого (1) или активного низкого (0), чтобы регистры были сброшены в создании фильтра. По умолчанию кодер устанавливает заданный уровень на активный высокий. Например, следующий фрагмент кода проверяет, reset ли активно высоко перед заполнением delay_pipeline зарегистрироваться:

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

Чтобы изменить настройку на активный низкий, выберите Active-low из меню Reset asserted level на панели Global settings диалогового окна Генерация HDL.

С помощью этого изменения IF оператор в предыдущем сгенерированном коде изменяется на

IF reset = '0' THEN

Примечание

Настройка Reset asserted level также определяет уровень сброса для испытательного стенда входных сигналов сброса.

Альтернатива командной строки: используйте generatehdl функция со свойством ResetAssertedLevel для установки заданного уровня для входного сигнала сброса.

Подавление генерации логики сброса

Для некоторых приложений FPGA желательно избегать генерации сбросов. Опция Remove reset from на панели Global settings диалогового окна Generate HDL позволяет подавить генерацию сбросов из регистров сдвига.

Чтобы подавить генерацию сбросов из регистров сдвига, выберите Shift register из выпадающего меню Remove reset from на панели Global settings диалогового окна Генерация HDL.

Если вы не хотите подавлять генерацию сбросов из регистров сдвига, оставьте Remove reset from значение по умолчанию, что None.

Альтернатива командной строки: используйте generatehdl функция со свойством RemoveResetFrom подавить генерацию сбросов из регистров сдвига.