首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >VHDL有限状态机多驱动网络Q连接到常量驱动,其他驱动被忽略,我的代码有什么问题?

VHDL有限状态机多驱动网络Q连接到常量驱动,其他驱动被忽略,我的代码有什么问题?
EN

Stack Overflow用户
提问于 2018-10-14 23:23:59
回答 1查看 1.1K关注 0票数 -1

这段代码是一个FSM,它是一个摩尔机器

Alyssa P. Hacker有一只蜗牛,它从纸带上爬下来,纸带上有1和0。每当蜗牛爬过的最后两个数字是01时,它就会微笑。设计蜗牛大脑的Moore和Mealy FSM。

代码如下所示

代码语言:javascript
复制
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;


entity simpfsm is
Port ( A : in STD_LOGIC;
       clk : in STD_LOGIC;
       r   : in STD_LOGIC;
       Y : out STD_LOGIC);
end simpfsm;


architecture Behavioral of simpfsm is
type state_type is (SA,SB,SC);
signal state,next_state:state_type;
begin
SYNC_PROC:process(clk)
begin
if(clk'event and clk='1') then
if(r='1') then
next_state <= SA; -- removed trailing grave accent
else
state <= next_state;
end if;
end if;
end process;

OUTPUT_DECODE:process(state)
begin
case (state) is
when SA =>
Y <= '0';
when SB =>
Y <= '0';
when SC =>
Y <= '1';
when others =>
Y <= '0';
end case;
end process;

NEXT_STATE_DECODE:process(state,A)
begin
next_state <= state;
case (state) is

    when SA =>
        if(A='0') then
            next_state <= SB;
        end if;

    when SB =>
        if(A='1') then
            next_state <= SC;
        end if;

    when SC =>
        if(A='0') then
            next_state <= SB;
        elsif(A='1') then
            next_state <= SA;
        end if;
    when others =>
        next_state <= SA;                       --"if not state then begin with SA"
end case;
end process;
end Behavioral;  -- removed trailing grave accent

错误是XSIM43-3249文件D:/Users/93443/project_4/project_4.srcs/sources_1/new/A_11_fsm.vhd,第22行。未解析的信号"next_state“被多路驱动。

EN

回答 1

Stack Overflow用户

发布于 2018-10-15 00:06:56

在SYNC_PROC复位时驱动Next_stat

next_state <= SA;

在NEXT_STATE_DECODE过程中也是如此。您不能从两个进程驱动它。

你还有一个额外的`没有充分的理由。这是真正的代码吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52804205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档