Я реализую простой FSM с использованием VHDL. Я вышел с этим кодом в VHDL и получил эту ошибку: «неразрешенный сигнал NS имеет несколько источников». Я глубоко посмотрел код, но не смог понять ошибку. Может ли кто-нибудь помочь мне решить эту проблему?
library ieee ;
use ieee.std_logic_1164.all ;
entity MeallyMachine is
port(
x,res,clk:in std_logic;
z1,z2:out std_logic
);
end MooreMachine;
architecture M1 of MooreMachine is
type state_type is(s0,s1,s2,s3);
signal PS,NS:state_type;
begin
ETAT:process(PS,x)
begin
case PS is
when s0=> if (x='0') then
NS<=s0;
elsif (x='1') then
NS<=s1;
end if;
when s1=> if (x='0') then
NS<=s1;
elsif (x='1') then
NS<=s2;
end if;
when s2=> if (x='0') then
NS<=s2;
elsif (x='1') then
NS<=s3;
end if;
when s3=> if (x='0') then
NS<=s3;
elsif (x='1') then
NS<=s0;
end if;
end case;
end process ETAT;
Sortie:process(PS,x)
begin
case PS is
when s0=>
z1<='1';
if (x='0') then
z2<='0';
elsif (x='1') then
z2<='1';
end if;
when s1=>
z1<='1';
if (x='0') then
z2<='0';
elsif (x='1') then
z2<='1';
end if;
when s2=> z1<='0';
if (x='0') then
z2<='0';
elsif (x='1') then
z2<='1';
end if;
when s3=> z1<='1';
if (x='0') then
z2<='0';
elsif (x='1') then
z2<='1';
end if;
end case;
end process Sortie;
Horloge:process(clk,res,NS)
begin
if (res='0') then
NS<=s0;
elsif (rising_edge(clk)) then
PS<=NS;
end if;
end process Horloge;
end M1;
MooreMachine
наMealyMachine
в конце объекта и в архитектуре. Может и не проблема, но не очень приятно ;-) - person hbaderts   schedule 29.12.2014