我用的工具是Altera 公司的MAX+plus II 10.1,下面就是一段编译总出问题的程序,但却没有发现任何的语法错误,好郁闷哦!
文件名:andn.vdh
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY andn IS
GENERIC (n : INTEGER );--定义类属参量及其数据类型
PORT(a : IN STD_LOGIC_VECTOR(n-1 DOWNTO 0);--用类属参量限制矢量长度
c : OUT STD_LOGIC);
END;
ARCHITECTURE behav OF andn IS
BEGIN
PROCESS (a)
VARIABLE int : STD_LOGIC;
BEGIN
int := '1';
FOR I IN a'LENGTH - 1 DOWNTO 0 LOOP
IF a(i)='0' THEN int := '0';
END IF;
END LOOP;
c <=int ;
END PROCESS;
END;
文件名:exn.vhd
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY exn IS
PORT(d1,d2,d3,d4,d5,d6,d7 : IN STD_LOGIC;
q1,q2: OUT STD_LOGIC);
END;
ARCHITECTURE exn_behav OF exn IS
COMPONENT andn --元件调用声明
GENERIC (n : INTEGER);
PORT(a: IN STD_LOGIC_VECTOR(n-1 DOWNTO 0);
c: OUT STD_LOGIC);
END COMPONENT ;
BEGIN -- 类属映射语句,定义类属变量,n赋值为2
u1: andn GENERIC MAP (n =>2)
PORT MAP (a(0)=>d1,a(1)=>d2,c=>q1);
u2: andn GENERIC MAP (n =>5) -- 定义类属变量,n赋值为5
PORT MAP (a(0)=>d3,a(1)=>d4,a(2)=>d5,
a(3)=>d6,a(4)=>d7, c=>q2);
END |