无法在功能中使用组件

时间:2016-07-10 17:00:38

标签: vhdl intel-fpga quartus

分配:

  

写一个声明的包声明:
  1)(25分)用户定义的4位十进制数的BCD(二进制编码十进制)类型(用BCD表示法,四位用于表示十进制数。因此,两位十进制数23由“00100011”给出。 )。
  2)(25分)一个重载函数“+”,它添加两个以BCD表示法指定的数字,并以BCD表示法返回总和。
  3)(20分)一个测试整数是否为奇数的函数   4)(30分)写一个包含上述问题的功能体的包体   5)模拟你的设计

我尝试在vhdl中为bcd数字实现“+”运算符重载,并且我使用了这个作业的组件。

但是我无法将组件实例化为重载函数:

package bcd_package is

subtype bcd_unit IS std_logic_vector(3 DOWNTO 0);
type bcd_number IS array (3 DOWNTO 0) of bcd_unit;

FUNCTION "+" (a, b : bcd_number) RETURN bcd_number; 

  component BCD_Adder is  
  port( 
     X : in bcd_unit;
     Y : in bcd_unit;
     Cin : in std_logic;
     S : out bcd_unit;
     Cout : out std_logic 
  );
  end component; 
end bcd_package;

我的包裹身体:

package body bcd_package is

FUNCTION "+" (X, Y : bcd_number) RETURN bcd_number IS  
  variable C1, C2, C3, C4: std_logic;
  variable S : bcd_number;
BEGIN
   G_FA0: work.BCD_Adder port map(X(0), Y(0), '0', S(0), C1); <- problem
   ...
   RETURN S;
END "+";
end bcd_package;

当我编译时,我的代码得到这个错误: My error snapshot

  

错误(10500):文本“port”附近的bcd_backage.vhdl(70)处的VHDL语法错误;期待“*”,或“'”或“。”   错误(10500):文本“;”附近的bcd_backage.vhdl(70)处的VHDL语法错误;期待“:=”或“&lt; =”

0 个答案:

没有答案