分配:
写一个声明的包声明:
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; =”