Vhdl 如何检查if语句中输出信号的状态

Vhdl 如何检查if语句中输出信号的状态,vhdl,Vhdl,我试图检查输出的条件(可以在代码后面进行设置),但您似乎无法做到这一点 如何检查if语句中输出信号的状态 entity turbine_action is Port ( freq550 : in STD_LOGIC; freq650 : in STD_LOGIC; freq850 : in STD_LOGIC; freq950 : in STD_LOGIC; user_ip : in STD_LOGIC; mild

我试图检查输出的条件(可以在代码后面进行设置),但您似乎无法做到这一点

如何检查if语句中输出信号的状态

entity turbine_action is
Port (  freq550 : in STD_LOGIC;
        freq650 : in STD_LOGIC;
        freq850 : in STD_LOGIC;
        freq950 : in STD_LOGIC;
        user_ip : in STD_LOGIC;
        mild : out STD_LOGIC;
        aggressive : out STD_LOGIC;
        brake : out STD_LOGIC;
        alarm : out STD_LOGIC;
        clock : in STD_LOGIC);
end turbine_action;

architecture Behavioral of turbine_action is

type state_type is (s0, s1, s2);
signal current_s, next_s : state_type;

begin

process (clock)
begin
    if (rising_edge(clock)) then
        current_s <= next_s;    --change state according to next state logic
    end if;
end process;


process (current_s, freq550, freq650, freq850, freq950, user_ip)
begin
    case current_s is
        when s0 =>
        if (user_ip = '1') then
            if (freq550 = '1') then
                brake <= '1';
                alarm <= '1';
                -- ADD DELAY delay(1000);
            end if;
            if (freq650 = '1') then
                if (mild = '1') then
                    aggressive <= '1';
                end if;
            end if;

end Behavioral;
实体涡轮机的动作是
端口(freq550:标准_逻辑中;
freq650:标准逻辑中;
freq850:标准逻辑中;
freq950:标准逻辑中;
用户ip:在标准逻辑中;
轻度:不符合标准逻辑;
攻击性:输出标准逻辑;
制动器:输出标准_逻辑;
报警:输出标准逻辑;
时钟:标准逻辑);
末端涡轮增压器动作;
涡轮机的行为架构是
类型状态_类型为(s0、s1、s2);
信号电流,下一个:状态类型;
开始
进程(时钟)
开始
如果(上升沿(时钟)),则
当前的
如果(用户ip='1'),则
如果(freq550='1'),则

制动假设您将使用以下方法:

alarm : out STD_LOGIC;
您可以将其定义为输入输出信号:

alarm : inout STD_LOGIC;
或者您可以将其与信号连接(假设您定义了std_逻辑信号):


早期版本的VHDL编译器中不允许读取输出的本地信号。解决办法是制作一个你在任何地方都能使用的本地信号。你也可以读到。然后在一个地方将本地信号分配给输出。或者,您可以查看是否有权访问较新的VHDL编译器。由于过于复杂而无法在注释中解释,请不要将输出设置为
buf
类型。理论上这是可能的。实际上,任何有经验的人都学会了不这样做。A包括一个复制特定错误的完整示例。这缺少一个完整的case语句、if语句和问题中错误所在的过程以及上下文子句。问题是重复的(搜索词[vhdl]“无法读取输出”),例如,使用显示的解决方案。Oldfart的模式
buffer
在历史上缺乏广泛的综合供应商工具支持,而in-2008模式
out
提供了与模式
buffer
相同的语义,可以对
进行评估。这是否回答了您的问题?
local_signal <= alarm;