Vhdl信号声明用法

时间:2016-03-31 09:25:16

标签: vhdl

我是vhdl的初学者,对信号的掌握程度不高。

我的理解是你可以分配信号值等 signal<='100'但您不必申报。这是对的吗?

另外,对于符号扩展ext_imme<=(31 downto 16=> imme(15)) & imme;,为什么这会通过重复imme(15)两次将16位扩展到32位?

1 个答案:

答案 0 :(得分:2)

1)您无法在不声明的情况下分配signal<='100'等信号值。你不对。

VHDL不喜欢惊喜。在使用之前必须先声明所有内容。

因此,您必须声明一个信号(在architecture声明区域中,即在architecturebegin之间):

architecture SOME_NAME of SOME_OTHER_NAME is
  -- declare signals (and other things) here, eg
  signal SOME_SIGNAL_NAME : std_logic;  -- or some other type
begin

您也可以在声明信号时初始化信号,但如果您打算合成代码,我会非常小心这样做,例如:

  signal SOME_SIGNAL_NAME : std_logic := '0';  

2)此ext_imme<=(31 downto 16=> imme(15)) & imme聚合连接的示例。聚合是一种分配给数组元素的方法。连接是一种将两个数组连接在一起以形成更大数组的方法。

在您的示例中,这是聚合:(31 downto 16=> imme(15))。在这里,您将位31降至16,等于imme的第15位。这使得16位全部等于imme的第15位。

'&amp;' operation是连接运算符。在您的示例中,您将聚合的16位加到imme的16位,以使总共32位。

此处使用聚合的其他一些示例:http://www.edaplayground.com/x/CQm