cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Newbie
Newbie
5,144 Views
Registered: ‎12-05-2014

Unconnected blocks in VHDL code

Jump to solution
---------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity System2 is
Port ( SmallObject : in STD_LOGIC;
MediumObject : in STD_LOGIC;
LargeObject : in STD_LOGIC;
Clock : in STD_LOGIC;
RST: in STD_LOGIC; 
Arm1 : out STD_LOGIC;
Arm2 : out STD_LOGIC;
Arm3 : out STD_LOGIC);
end System2;
architecture Behavioral of System2 is
Signal Arm1TimeCounter: integer := 0; -- counts from 1 to Arm1Constant
Signal Arm2TimeCounter: integer := 0; -- counts from 1 to Arm2Constant
Signal Arm3TimeCounter: integer := 0; -- counts from 1 to Arm3Constant
constant Arm1Constant : integer := 350000000;--7 seconds delay to the first arm 
constant Arm2Constant: integer := 450000000;--9 seconds delay to the first arm 
constant Arm3Constant: integer := 550000000;--11 seconds delay to the first arm
signal SmallObjectTemp : std_logic := '0'; -- becomes 1 when the smallest product is sensed 
signal MediumObjectTemp : std_logic := '0'; -- becomes 1 when the medium product is sensed 
signal LargeObjectTemp : std_logic := '0'; -- becomes 1 when the Largest product is sensed

Type State_type is (InitialState,SmallProductState,MediumProductState,LargeProductState,DelayState);
Signal y : State_type; 
Signal w : std_logic_vector (1 downto 0); -- 00 initial ,01 small , 10 medium , 11 large
begin
-----------------------------------------------------
process(Clock)
begin
if(RST='1') then
y<=InitialState;
elsif (Clock='1' and clock'event) then 
if((SmallObject='0' and MediumObject='0' and LargeObject='0') or w<="11") then
y<=LargeProductState;
LargeObjectTemp<='1';
elsif ((SmallObject='0' and MediumObject='0' and LargeObject='1') or w<="10") then
y<=MediumProductState;
MediumObjectTemp<='1';
elsif ((SmallObject='0' and MediumObject='1' and LargeObject='1') or w<="01") then
y<=SmallProductState;
SmallObjectTemp<='1';
elsif((SmallObject='1' and MediumObject='1' and LargeObject='1') or w<="00") then
y<=InitialState;
end if;
end if;
end process;
-----------------------------------------------------
process(y)
begin
case y is

when SmallProductState =>
if(Arm1TimeCounter =Arm1Constant) then
Arm1 <= SmallObjectTemp; --give signal to the relay
Arm1 <= '0' after 100000000 ns;
Arm1TimeCounter <= 1; --reset the count
smallObjectTemp<='0';
if(MediumObjectTemp='1') then
w<="10"; -- change state to medium after the smallest product arrival 
elsif(LargeObjectTemp='1') then 
w<="11"; -- change state to Large after the smallest product arrival 
else
w<="00"; --go back to the initial state and wait for another product.
end if; 
else
Arm1TimeCounter<= Arm1TimeCounter + 1; -- inc counter
if(MediumObjectTemp<='1' ) then
Arm2TimeCounter<=Arm2TimeCounter+1; -- inc the medium product counter while the smallest product is still on the belt
if(LargeObjectTemp<='1' ) then
Arm3TimeCounter<=Arm3TimeCounter+1; -- inc the Largest product counter while the smallest product is still on the belt
end if;
end if; 
end if;


when MediumProductState =>
if(Arm2TimeCounter =Arm2Constant) then
Arm2 <= MediumObjectTemp; --give signal to the relay
Arm2 <= '0' after 1000000000 ns;
Arm2TimeCounter <= 1; --reset the count
MediumObjectTemp<='0';
if(SmallObjectTemp='1') then
w<="01"; -- change state to small after the medium product arrival 
else
w<="00"; --go back to the initial state and wait for another product.
end if;
else
Arm2TimeCounter<= Arm2TimeCounter + 1; -- inc counter
if(SmallObjectTemp<='1' ) then
Arm1TimeCounter<=Arm1TimeCounter+1; -- inc the smallest product counter while the medium product is still on the belt
end if;

end if; 

when LargeProductState =>
if(Arm3TimeCounter =Arm3Constant) then
Arm3 <= LargeObjectTemp; --give signal to the relay
Arm3 <= '0' after 1000000000 ns;
Arm3TimeCounter <= 1; --reset the count
LargeObjectTemp<='0';
w<="00"; --go back to the initial state and wait for another product. 
else
Arm3TimeCounter<= Arm3TimeCounter + 1; -- inc counter

end if;
when others =>

end case;


end process;
-----------------------------------------------------
end Behavioral;
 

 warnings

INFO:Xst:2261 - The FF/Latch <y_2> in Unit <System2> is equivalent to the following FF/Latch, which will be removed : <y_1> 
WARNING:Xst:1293 - FF/Latch <y_2> has a constant value of 0 in block <System2>. This FF/Latch will be trimmed during the optimization process.
WARNING:Xst:2677 - Node <y_0> of sequential type is unconnected in block <System2>.
WARNING:Xst:2677 - Node <y_3> of sequential type is unconnected in block <System2>.
WARNING:Xst:2677 - Node <Arm3TimeCounter_0> of sequential type is unconnected in block <System2>.
WARNING:Xst:2677 - Node <Arm3TimeCounter_1> of sequential type is unconnected in block <System2>.
WARNING:Xst:2677 - Node <Arm3TimeCounter_2> of sequential type is unconnected in block <System2>.
WARNING:Xst:2677 - Node <Arm3TimeCounter_3> of sequential type is unconnected in block <System2>.
WARNING:Xst:2677 - Node <Arm3TimeCounter_4> of sequential type is unconnected in block <System2>.
WARNING:Xst:2677 - Node <Arm3TimeCounter_5> of sequential type is unconnected in block <System2>.
WARNING:Xst:2677 - Node <Arm3TimeCounter_6> of sequential type is unconnected in block <System2>.
WARNING:Xst:2677 - Node <Arm3TimeCounter_7> of sequential type is unconnected in block <System2>.
WARNING:Xst:2677 - Node <Arm3TimeCounter_8> of sequential type is unconnected in block <System2>.
WARNING:Xst:2677 - Node <Arm3TimeCounter_9> of sequential type is unconnected in block <System2>.
WARNING:Xst:2677 - Node <Arm3TimeCounter_10> of sequential type is unconnected in block <System2>.
WARNING:Xst:2677 - Node <Arm3TimeCounter_11> of sequential type is unconnected in block <System2>.
WARNING:Xst:2677 - Node <Arm3TimeCounter_12> of sequential type is unconnected in block <System2>.
WARNING:Xst:2677 - Node <Arm3TimeCounter_13> of sequential type is unconnected in block <System2>.
WARNING:Xst:2677 - Node <Arm3TimeCounter_14> of sequential type is unconnected in block <System2>.
WARNING:Xst:2677 - Node <Arm3TimeCounter_15> of sequential type is unconnected in block <System2>.
WARNING:Xst:2677 - Node <Arm3TimeCounter_16> of sequential type is unconnected in block <System2>.
WARNING:Xst:2677 - Node <Arm3TimeCounter_17> of sequential type is unconnected in block <System2>.
WARNING:Xst:2677 - Node <Arm3TimeCounter_18> of sequential type is unconnected in block <System2>.
WARNING:Xst:2677 - Node <Arm3TimeCounter_19> of sequential type is unconnected in block <System2>.
WARNING:Xst:2677 - Node <Arm3TimeCounter_20> of sequential type is unconnected in block <System2>.
WARNING:Xst:2677 - Node <Arm3TimeCounter_21> of sequential type is unconnected in block <System2>.
WARNING:Xst:2677 - Node <Arm3TimeCounter_22> of sequential type is unconnected in block <System2>.
WARNING:Xst:2677 - Node <Arm3TimeCounter_23> of sequential type is unconnected in block <System2>.
WARNING:Xst:2677 - Node <Arm3TimeCounter_24> of sequential type is unconnected in block <System2>.
WARNING:Xst:2677 - Node <Arm3TimeCounter_25> of sequential type is unconnected in block <System2>.
WARNING:Xst:2677 - Node <Arm3TimeCounter_26> of sequential type is unconnected in block <System2>.
WARNING:Xst:2677 - Node <Arm3TimeCounter_27> of sequential type is unconnected in block <System2>.
WARNING:Xst:2677 - Node <Arm3TimeCounter_28> of sequential type is unconnected in block <System2>.
WARNING:Xst:2677 - Node <Arm3TimeCounter_29> of sequential type is unconnected in block <System2>.
WARNING:Xst:2677 - Node <Arm3TimeCounter_30> of sequential type is unconnected in block <System2>.
WARNING:Xst:2677 - Node <Arm3TimeCounter_31> of sequential type is unconnected in block <System2>.

 

Could you please tell me how to solve these warnings?  i have no idea why Arm3TimeCounter , Arm2TimeCounter,Arm1TimeCounter are unconnected 

 

0 Kudos
1 Solution

Accepted Solutions
Highlighted
Explorer
Explorer
8,646 Views
Registered: ‎02-22-2010

Re: Unconnected blocks in VHDL code

Jump to solution

Not sure if related to the warnings but I think you have typos in your synchronous process.

 

= instead of <=

 

When you write

if((SmallObject='0' and MediumObject='0' and LargeObject='0') or w<="11") the

I think you mean

if((SmallObject='0' and MediumObject='0' and LargeObject='0') or w="11") then

View solution in original post

0 Kudos
2 Replies
Highlighted
Explorer
Explorer
8,647 Views
Registered: ‎02-22-2010

Re: Unconnected blocks in VHDL code

Jump to solution

Not sure if related to the warnings but I think you have typos in your synchronous process.

 

= instead of <=

 

When you write

if((SmallObject='0' and MediumObject='0' and LargeObject='0') or w<="11") the

I think you mean

if((SmallObject='0' and MediumObject='0' and LargeObject='0') or w="11") then

View solution in original post

0 Kudos
Highlighted
Newbie
Newbie
5,116 Views
Registered: ‎12-05-2014

Re: Unconnected blocks in VHDL code

Jump to solution

my problem is fixed thank you so much 

0 Kudos