在VHDL中使用用户定义的物理类型的操作

时间:2015-10-27 00:07:54

标签: vhdl user-defined-types

我是VHDL的初学者,并且正在使用用户定义的类型进行一些操作" distance"如下所述:

entity metric is
type DISTANCE is range 0 to 1000000000 
units 
nm;
mm = 10E6 nm;
cm = 10 mm;
m = 100 cm;
km = 10E3 m;
inch = 25400000 nm;
foot = 12 inch;
yard = 3 foot;
mile = 1760 yard;
end units;
end metric;

在架构中,我声明了距离类型的变量,并尝试使用整数值进行一些操作。

architecture test of metric is
 begin
  P1 : process
   variable res1, res2 : DISTANCE ;
  begin
   res1 := 10  * (10 nm);
   res2 := 10 / (10 nm);
   wait;
  end process;
end test;

代码编译为res1但是对于res2发生以下错误 -

  

中缀运营商" /"

没有可行的条目      

变量赋值中的右侧(中缀表达式)

任何人都可以解释为什么乘法有效但在上述情况下除法失败了? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

如果您要查看IEEE Std 1076-2008,9.2.7乘法运算符:

Multiplying Operators

您发现除了使用相同物理类型的左操作数之外的物理类型的除法不是预定义的。

你需要定义一个" /"用于为物理类型重载除法运算符的函数,或者您需要将左手表达式转换为物理类型。另请注意,结果是一个整数,用于描述物理类型的两个操作数之间的关系。