如何在VHDL中制作启动过程

How to make startup process in VHDL

如何制作开机只执行一次的进程?
很容易制作一个按下reset按钮时执行的进程,但是如何制作运行当你插入电源而不触摸reset按钮时呢?
在我的示例中,我想在启动时初始化 LCD,并且我需要在开始时向它发送一些命令,但在依赖于某些信号(如重置)的过程中我不需要它(假设没有重置按钮)。

只使用没有敏感度列表的等待语句。

process
begin
   assignment <= "101";
   wait;
end process;

话虽如此,我建议您将其构建为状态机。

状态(第一个运行)存储在单个FF中,用'1'初始化:

signal IsStartup : STD_LOGIC := '1';

没有重置的 FF 进程:

process(clk)
begin
  if rising_edge(clk) then
    IsStartup <= '0';
  end if;
end process;

用法示例(FSM):

process(clk)
begin
  if rising_edge(clk) then
    if (Reset = '1') then
      State <= ST_RESET;
    else
      State <= NextState;
    end if;
  end if;
end process;

process(State, IsStartup)
begin
  NextState <= State;

  case State is
    when ST_RESET =>
      if (IsStartup = '1') then
        NextState <= ST_STARTUP;
      else
        NextState <= ST_IDLE;
      end if;
  -- ...
  end case;
end process;