Порты и сброс

Именование портов HDL

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

Порт HDLИмя порта по умолчанию
Входной портfilter_in
Выходной портfilter_out
Порт Clockclk
Часы включают портclk_enable
Порт Resetreset
Дробный порт задержки (Опорос фильтрует только),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 на диалоговом окне Generate 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 в Verilog. Если вы генерируете код VHDL, альтернативно, можно задать signed/unsigned, и для портов выходных данных, Same as input data type. Кодер применяется, вводят SIGNED или UNSIGNED на основе типа данных, заданного в проекте фильтра.

Изменить настройки типа данных VHDL для портов входных и выходных данных,

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

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

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

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

    Тип для портов Verilog является wire и не может быть изменен.

    Примечание

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

Альтернатива командной строки: Используйте функцию 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 диалогового окна Generate 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 диалогового окна Generate 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 диалогового окна Generate HDL.

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

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