Forum Discussion
Altera_Forum
Honored Contributor
15 years agoThank you very much.
I had done as same as your comment, I had solved this problem. But now i have another error: This is the error: --- Quote Start --- Error (10476): VHDL error at JKFF_TFF.vhd(74): type of identifier "and2" does not agree with its usage as entity type --- Quote End --- This is my code:
library IEEE;
use work.all;
USE ieee.std_logic_1164.all;
LIBRARY lpm;
USE lpm.lpm_components.all;
entity JKFF_TFF is
port (x,xp : In STD_LOGIC;
Z : Out STD_LOGIC;
clk : In STD_LOGIC);
end JKFF_TFF;
architecture structure of JKFF_TFF is
Component and2
PORT
(
data0 : IN STD_LOGIC ;
data1 : IN STD_LOGIC ;
result : OUT STD_LOGIC
);
end component;
component and3
PORT
(
data0 : IN STD_LOGIC ;
data1 : IN STD_LOGIC ;
data2 : IN STD_LOGIC ;
result : OUT STD_LOGIC
);
END component;
component or2
PORT
(
data0 : IN STD_LOGIC ;
data1 : IN STD_LOGIC ;
result : OUT STD_LOGIC
);
END component;
component or3
PORT
(
data0 : IN STD_LOGIC ;
data1 : IN STD_LOGIC ;
data2 : IN STD_LOGIC ;
result : OUT STD_LOGIC
);
END component;
component or4
PORT
(
data0 : IN STD_LOGIC ;
data1 : IN STD_LOGIC ;
data2 : IN STD_LOGIC ;
data3 : IN STD_LOGIC ;
result : OUT STD_LOGIC
);
END component;
component xor2
PORT
(
data0 : IN STD_LOGIC ;
data1 : IN STD_LOGIC ;
result : OUT STD_LOGIC
);
END component;
Signal a1,a2,a3,a4,a5,a6,a12,a13,a14,a15,a16,a17 : STD_LOGIC;
Signal Y0,Y1,Y2,Y3,Y4 : STD_LOGIC;
Signal Q0,Q0p,Q1,Q1p,Q2,Q2p: STD_LOGIC;
Begin
U1: Entity and2 port map (x,Q1p,a1);
U2: Entity and3 port map (x,Q2p,Q0p,a2);
U3: Entity or2 port map (xp,Q2,a3);
U4: Entity or3 port map (xp,Q2,Q1,a4);
U5: Entity or3 port map (Q2p,Q1p,Q0,a5);
U6: Entity or4 port map (x,Q2p,Q0p,a6);
U7: Entity or2 port map (a1,a2,Y0);
U8: Entity and2 port map (Q2,Q1,Y1);
U9: Entity and2 port map (Q0,a3,Y2);
U10: Entity or2 port map (Q0,Q2,Y3);
U11: Entity and3 port map (a4,a5,a6,Y4);
U12: Entity xor2 port map (Q2,Q1,a12);
U13: Entity xor2 port map (Q2p,Q1,a13);
U14: Entity and3 port map (a13,xp,Q0p,a14);
U15: Entity and3 port map (Q1p,xp,Q0,a15);
U16: Entity and3 port map (a12,x,Q0p,a16);
U17: Entity and3 port map (Q1,x,Q0,a17);
U18: Entity or4 port map (a14,a15,a16,a17,Z);
End structure;
-----------------------------------------------------------------
-- And logic gate with 2 input
LIBRARY ieee;
USE ieee.std_logic_1164.all;
LIBRARY lpm;
USE lpm.lpm_components.all;
ENTITY and2 IS
PORT
(
data0 : IN STD_LOGIC ;
data1 : IN STD_LOGIC ;
result : OUT STD_LOGIC
);
END and2;
ARCHITECTURE SYN OF and2 IS
-- type STD_LOGIC_2D is array (NATURAL RANGE <>, NATURAL RANGE <>) of STD_LOGIC;
SIGNAL sub_wire0 : STD_LOGIC_VECTOR (0 DOWNTO 0);
SIGNAL sub_wire1 : STD_LOGIC ;
SIGNAL sub_wire2 : STD_LOGIC ;
SIGNAL sub_wire3 : STD_LOGIC_2D (1 DOWNTO 0, 0 DOWNTO 0);
SIGNAL sub_wire4 : STD_LOGIC ;
BEGIN
sub_wire4 <= data0;
sub_wire1 <= sub_wire0(0);
result <= sub_wire1;
sub_wire2 <= data1;
sub_wire3(1, 0) <= sub_wire2;
sub_wire3(0, 0) <= sub_wire4;
lpm_and_component : lpm_and
GENERIC MAP (
lpm_size => 2,
lpm_type => "LPM_AND",
lpm_width => 1
)
PORT MAP (
data => sub_wire3,
result => sub_wire0
);
END SYN;
-----------------------------------------------------------------
-- And logic gate with 3 input
LIBRARY ieee;
USE ieee.std_logic_1164.all;
LIBRARY lpm;
USE lpm.lpm_components.all;
ENTITY and3 IS
PORT
(
data0 : IN STD_LOGIC ;
data1 : IN STD_LOGIC ;
data2 : IN STD_LOGIC ;
result : OUT STD_LOGIC
);
END and3;
ARCHITECTURE SYN OF and3 IS
-- type STD_LOGIC_2D is array (NATURAL RANGE <>, NATURAL RANGE <>) of STD_LOGIC;
SIGNAL sub_wire0 : STD_LOGIC_VECTOR (0 DOWNTO 0);
SIGNAL sub_wire1 : STD_LOGIC ;
SIGNAL sub_wire2 : STD_LOGIC ;
SIGNAL sub_wire3 : STD_LOGIC_2D (2 DOWNTO 0, 0 DOWNTO 0);
SIGNAL sub_wire4 : STD_LOGIC ;
SIGNAL sub_wire5 : STD_LOGIC ;
BEGIN
sub_wire5 <= data0;
sub_wire4 <= data1;
sub_wire1 <= sub_wire0(0);
result <= sub_wire1;
sub_wire2 <= data2;
sub_wire3(2, 0) <= sub_wire2;
sub_wire3(1, 0) <= sub_wire4;
sub_wire3(0, 0) <= sub_wire5;
lpm_and_component : lpm_and
GENERIC MAP (
lpm_size => 3,
lpm_type => "LPM_AND",
lpm_width => 1
)
PORT MAP (
data => sub_wire3,
result => sub_wire0
);
END SYN;
-----------------------------------------------------------------
-- Or logic gate with 2 input
LIBRARY ieee;
USE ieee.std_logic_1164.all;
LIBRARY lpm;
USE lpm.lpm_components.all;
ENTITY or2 IS
PORT
(
data0 : IN STD_LOGIC ;
data1 : IN STD_LOGIC ;
result : OUT STD_LOGIC
);
END or2;
ARCHITECTURE SYN OF or2 IS
-- type STD_LOGIC_2D is array (NATURAL RANGE <>, NATURAL RANGE <>) of STD_LOGIC;
SIGNAL sub_wire0 : STD_LOGIC_VECTOR (0 DOWNTO 0);
SIGNAL sub_wire1 : STD_LOGIC ;
SIGNAL sub_wire2 : STD_LOGIC ;
SIGNAL sub_wire3 : STD_LOGIC_2D (1 DOWNTO 0, 0 DOWNTO 0);
SIGNAL sub_wire4 : STD_LOGIC ;
BEGIN
sub_wire4 <= data0;
sub_wire1 <= sub_wire0(0);
result <= sub_wire1;
sub_wire2 <= data1;
sub_wire3(1, 0) <= sub_wire2;
sub_wire3(0, 0) <= sub_wire4;
lpm_or_component : lpm_or
GENERIC MAP (
lpm_size => 2,
lpm_type => "LPM_OR",
lpm_width => 1
)
PORT MAP (
data => sub_wire3,
result => sub_wire0
);
END SYN;
-----------------------------------------------------------------
-- Or logic gate with 3 input
LIBRARY ieee;
USE ieee.std_logic_1164.all;
LIBRARY lpm;
USE lpm.lpm_components.all;
ENTITY or3 IS
PORT
(
data0 : IN STD_LOGIC ;
data1 : IN STD_LOGIC ;
data2 : IN STD_LOGIC ;
result : OUT STD_LOGIC
);
END or3;
ARCHITECTURE SYN OF or3 IS
-- type STD_LOGIC_2D is array (NATURAL RANGE <>, NATURAL RANGE <>) of STD_LOGIC;
SIGNAL sub_wire0 : STD_LOGIC_VECTOR (0 DOWNTO 0);
SIGNAL sub_wire1 : STD_LOGIC ;
SIGNAL sub_wire2 : STD_LOGIC ;
SIGNAL sub_wire3 : STD_LOGIC_2D (2 DOWNTO 0, 0 DOWNTO 0);
SIGNAL sub_wire4 : STD_LOGIC ;
SIGNAL sub_wire5 : STD_LOGIC ;
BEGIN
sub_wire5 <= data0;
sub_wire4 <= data1;
sub_wire1 <= sub_wire0(0);
result <= sub_wire1;
sub_wire2 <= data2;
sub_wire3(2, 0) <= sub_wire2;
sub_wire3(1, 0) <= sub_wire4;
sub_wire3(0, 0) <= sub_wire5;
lpm_or_component : lpm_or
GENERIC MAP (
lpm_size => 3,
lpm_type => "LPM_OR",
lpm_width => 1
)
PORT MAP (
data => sub_wire3,
result => sub_wire0
);
END SYN;
-----------------------------------------------------------------
-- Or logic gate with 4 input
LIBRARY ieee;
USE ieee.std_logic_1164.all;
LIBRARY lpm;
USE lpm.lpm_components.all;
ENTITY or4 IS
PORT
(
data0 : IN STD_LOGIC ;
data1 : IN STD_LOGIC ;
data2 : IN STD_LOGIC ;
data3 : IN STD_LOGIC ;
result : OUT STD_LOGIC
);
END or4;
ARCHITECTURE SYN OF or4 IS
-- type STD_LOGIC_2D is array (NATURAL RANGE <>, NATURAL RANGE <>) of STD_LOGIC;
SIGNAL sub_wire0 : STD_LOGIC_VECTOR (0 DOWNTO 0);
SIGNAL sub_wire1 : STD_LOGIC ;
SIGNAL sub_wire2 : STD_LOGIC ;
SIGNAL sub_wire3 : STD_LOGIC_2D (3 DOWNTO 0, 0 DOWNTO 0);
SIGNAL sub_wire4 : STD_LOGIC ;
SIGNAL sub_wire5 : STD_LOGIC ;
SIGNAL sub_wire6 : STD_LOGIC ;
BEGIN
sub_wire6 <= data0;
sub_wire5 <= data1;
sub_wire4 <= data2;
sub_wire1 <= sub_wire0(0);
result <= sub_wire1;
sub_wire2 <= data3;
sub_wire3(3, 0) <= sub_wire2;
sub_wire3(2, 0) <= sub_wire4;
sub_wire3(1, 0) <= sub_wire5;
sub_wire3(0, 0) <= sub_wire6;
lpm_or_component : lpm_or
GENERIC MAP (
lpm_size => 4,
lpm_type => "LPM_OR",
lpm_width => 1
)
PORT MAP (
data => sub_wire3,
result => sub_wire0
);
END SYN;
-----------------------------------------------------------------
-- Xor logic gate with 2 input
LIBRARY ieee;
USE ieee.std_logic_1164.all;
LIBRARY lpm;
USE lpm.lpm_components.all;
ENTITY xor2 IS
PORT
(
data0 : IN STD_LOGIC ;
data1 : IN STD_LOGIC ;
result : OUT STD_LOGIC
);
END xor2;
ARCHITECTURE SYN OF xor2 IS
-- type STD_LOGIC_2D is array (NATURAL RANGE <>, NATURAL RANGE <>) of STD_LOGIC;
SIGNAL sub_wire0 : STD_LOGIC_VECTOR (0 DOWNTO 0);
SIGNAL sub_wire1 : STD_LOGIC ;
SIGNAL sub_wire2 : STD_LOGIC ;
SIGNAL sub_wire3 : STD_LOGIC_2D (1 DOWNTO 0, 0 DOWNTO 0);
SIGNAL sub_wire4 : STD_LOGIC ;
BEGIN
sub_wire4 <= data0;
sub_wire1 <= sub_wire0(0);
result <= sub_wire1;
sub_wire2 <= data1;
sub_wire3(1, 0) <= sub_wire2;
sub_wire3(0, 0) <= sub_wire4;
lpm_xor_component : lpm_xor
GENERIC MAP (
lpm_size => 2,
lpm_type => "LPM_XOR",
lpm_width => 1
)
PORT MAP (
data => sub_wire3,
result => sub_wire0
);
END SYN;
Could you help me again. Thank you so much.