manush30
Member level 1
Hi all,
I try to compile this code but i get
pls someone can help me?
the code:
Thx alot!!!!:sad::sad::smile::smile:
I try to compile this code but i get
@A: BN321 |Found multiple drivers on net CART1_B[0] (in view: work.VALVE_1TO3(arc_valve_1to3)); if one driver is a constant (true or false), use Resolve Mixed Drivers option to connect the net to VCC or GND.
@E: Net CART1_B[0] (in view: work.VALVE_1TO3(arc_valve_1to3)) has conflicting drivers, the connections are
Connection 1: Direction is (Output ) pin:Q[0] inst:CART1_B[11:0] of PrimLib.dffe(prim)
Connection 2: Direction is (Output ) pin:CART1[0] inst:CALIBRATION of work.LC_CAL(arc_lc_cal)
@E: BN314 :|Net CART1_B[0] (in view: work.VALVE_1TO3(arc_valve_1to3)) has multiple drivers
Process took 0h:00m:01s realtime, 0h:00m:01s cputime
pls someone can help me?
the code:
Code:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
USE IEEE.STD_LOGIC_ARITH.ALL;
ENTITY VALVE_1TO3 IS
PORT(
CLK1M : IN STD_LOGIC;
RESET : IN STD_LOGIC;
CLK1HZ : IN STD_LOGIC;
SW_ACT : IN STD_LOGIC; --- ACTIVATE THE SYSTEM
SW_CAL : IN STD_LOGIC; --- ACTIVATE THE SYSTEM
SW_RST : IN STD_LOGIC;
PB : IN STD_LOGIC;
A2D_CALC : IN STD_LOGIC_VECTOR(11 DOWNTO 0);
-- CART1 : IN STD_LOGIC_VECTOR(11 DOWNTO 0); ------- Xweight
-- CART2 : IN STD_LOGIC_VECTOR(11 DOWNTO 0); ------- Yweight
-- CART3 : IN STD_LOGIC_VECTOR(11 DOWNTO 0); ------- Zweight
-- TRAY : IN STD_LOGIC_VECTOR(11 DOWNTO 0);
-- FULL_TRAY : IN STD_LOGIC_VECTOR(11 DOWNTO 0);
LEDS_IND : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
VALVE : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
PUMP : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); --- 2-0 BIT FOR ACTIVATE THE PUMPS
END VALVE_1TO3;
ARCHITECTURE ARC_VALVE_1TO3 OF VALVE_1TO3 IS
COMPONENT LC_CAL IS
PORT(
CLK1M : IN STD_LOGIC;
RESET : IN STD_LOGIC;
SW_CAL : IN STD_LOGIC; --- ACTIVATE THE SYSTEM
SW_RST : IN STD_LOGIC;
PB : IN STD_LOGIC;
CLK1HZ : IN STD_LOGIC;
CH0_A2D : IN STD_LOGIC_VECTOR(11 DOWNTO 0);
LEDS_REG : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
CART1 : OUT STD_LOGIC_VECTOR(11 DOWNTO 0);
CART2 : OUT STD_LOGIC_VECTOR(11 DOWNTO 0);
CART3 : OUT STD_LOGIC_VECTOR(11 DOWNTO 0);
TRAY_O : OUT STD_LOGIC_VECTOR(11 DOWNTO 0);
FULL_TRAY_O : OUT STD_LOGIC_VECTOR(11 DOWNTO 0));
END COMPONENT;
TYPE STATE IS(IDLE, VALVE1, FIRST, VALVE2, SECOND ,VALVE3, THIRD);
SIGNAL NS : STATE;
SIGNAL CLK_1kHZ_O : STD_LOGIC;
SIGNAL CLK_1kHZ : STD_LOGIC;
SIGNAL FLAG : STD_LOGIC;
SIGNAL TOTAL : STD_LOGIC_VECTOR(11 DOWNTO 0);
SIGNAL CART1_B : STD_LOGIC_VECTOR(11 DOWNTO 0);
SIGNAL CART2_B : STD_LOGIC_VECTOR(11 DOWNTO 0);
SIGNAL CART3_B : STD_LOGIC_VECTOR(11 DOWNTO 0);
SIGNAL TRAY : STD_LOGIC_VECTOR(11 DOWNTO 0);
SIGNAL FULL_TRAY : STD_LOGIC_VECTOR(11 DOWNTO 0);
BEGIN
CALIBRATION: LC_CAL PORT MAP (
CLK1M => CLK1M ,
CLK1HZ => CLK1HZ,
RESET => RESET,
SW_CAL => SW_CAL,
SW_RST => SW_RST,
PB => PB,
CH0_A2D => A2D_CALC,
CART1 => CART1_B,
CART2 => CART2_B,
CART3 => CART3_B,
TRAY_O => TRAY,
LEDS_REG => LEDS_IND,
FULL_TRAY_O=> FULL_TRAY
);
-- GENERATING 1kHz CLOCK FOR VALVE DELAY PULSE AND ACTIVATE PUMP--
PROCESS(CLK1M,RESET)
VARIABLE COUNTER : INTEGER RANGE 0 TO 500;
BEGIN
IF RESET='0' THEN
COUNTER := 0;
ELSIF (CLK1M'EVENT and CLK1M= '1') THEN
IF COUNTER = 500 THEN
CLK_1kHZ <= NOT(CLK_1kHZ);
COUNTER := 0;
ELSE
COUNTER := COUNTER + 1;
END IF;
END IF;
END PROCESS;
---STATE MACHINE FOR ACTIVATE THE PUMPS
PROCESS (RESET, CLK_1kHZ)
VARIABLE VALVE_DLY : INTEGER RANGE 0 TO 100 ;
BEGIN
IF (RESET='0') THEN
VALVE_DLY := 0 ;
FLAG <= '0' ;
NS <= IDLE ;
PUMP <= "0000";
VALVE <= "0000";
-- CART1_B <= CART1 ;
-- CART2_B <= CART2 ;
-- CART3_B <= CART3 ;
-- TOTAL <= FULL_TRAY ;
ELSIF (CLK_1kHZ'EVENT AND CLK_1kHZ='1') THEN
CASE NS IS
WHEN IDLE =>
PUMP <= "0000";
IF (SW_ACT='1') THEN
FLAG <= '0' ;
PUMP <= "0001";
VALVE <= "0000";--- START POSITION
NS <= VALVE1;
END IF;
WHEN VALVE1 =>
IF (SW_ACT='1') THEN --- SWITCH1 ACTIVATE AND PAUSE THE SYSTEM
IF (FLAG='0') THEN
IF (VALVE_DLY < 100) THEN
VALVE <= "1010";
VALVE_DLY := VALVE_DLY + 1;
ELSE
FLAG <= '1';
VALVE <= "0000" ;
VALVE_DLY := 0 ;
NS <= FIRST;
END IF;
END IF;
ELSE
NS <= VALVE1;
END IF;
--------------------CALCULATING THE FIRST CONTAINER TO BE EMPTY. TRYING TO GET: TOTAL = TRAY + Y + Z - 120g ------------------
WHEN FIRST =>
IF (SW_ACT='1')THEN
IF (CART1_B <= X"14") THEN ------ IF THE FIRST CONTAINER EMPTY
PUMP <= "0001";
--TOTAL <= A2D_CALC;
FLAG <= '0' ;
TOTAL <= CART2_B + CART3_B + TRAY + CART1_B; ----- IN THIS STATE CART1_B VALUE BETWEEN X"00" TO X"14"
NS <= VALVE2 ;
ELSE
PUMP <= "1001";
CART1_B <= A2D_CALC;
NS <= FIRST ;
END IF;
ELSE
PUMP <= "0000";
END IF;
------------- SWITCHING THE NEXT CONTAINER ---------------
WHEN VALVE2 =>
IF (SW_ACT='1') THEN
IF (FLAG='0') THEN
IF (VALVE_DLY < 100) THEN
VALVE <= "0101";
VALVE_DLY := VALVE_DLY + 1;
ELSE
FLAG <= '1';
VALVE <= "0000" ;
VALVE_DLY := 0 ;
NS <= SECOND;
END IF;
END IF;
ELSE
NS <= VALVE2;
END IF;
--------------------CALCULATING THE SECOND CONTAINER TO BE EMPTY. TRYING TO GET: TOTAL = TRAY + Y + 240g ------------------
WHEN SECOND =>
IF (SW_ACT='1')THEN
IF (CART2_B <= X"14") THEN
PUMP <= "0001";
FLAG <= '0' ;
TOTAL <= CART3_B + TRAY + CART1_B + CART2_B;
NS <= VALVE3 ;
ELSE
PUMP <= "0101";
CART2_B <= A2D_CALC;
NS <= SECOND ;
END IF;
ELSE
PUMP <= "0000";
END IF;
WHEN VALVE3 =>
IF (SW_ACT='1') THEN
IF (FLAG='0') THEN
IF (VALVE_DLY < 100) THEN
VALVE <= "0110";
VALVE_DLY := VALVE_DLY + 1;
ELSE
FLAG <= '1';
VALVE <= "0000";
VALVE_DLY := 0 ;
NS <= THIRD;
END IF;
END IF;
ELSE
NS <= VALVE3;
END IF;
--------------------CALCULATING THE SECOND CONTAINER TO BE EMPTY. TRYING TO GET: TOTAL = TRAY + Y + 240g ------------------
WHEN THIRD =>
IF (SW_ACT='1')THEN
IF (CART2_B <= X"14") THEN
PUMP <= "0001";
FLAG <= '0' ;
TOTAL <= TRAY + CART1_B + CART2_B + CART3_B;
NS <= IDLE ;
ELSE
PUMP <= "0011";
CART2_B <= A2D_CALC;
NS <= THIRD ;
END IF;
ELSE
PUMP <= "0000";
END IF;
END CASE;
END IF;
--END IF;
END PROCESS;
-- FULL_TRAY <= TOTAL ;
END ARC_VALVE_1TO3;
Thx alot!!!!:sad::sad::smile::smile: