3

我正在查看一些执行以下操作的代码:

signal1 : std_logic
vector1 : std_logic_vector

vector1 <= vector1(20 downto 1) & signal1;

我假设 avector1(20 downto 1)产生以下内容:

[20 19 18 ... 3 2 1]

但我不明白的是&它对它的作用。它是否返回0if signal1is0和创建的向量 if signal1is 1

4

1 回答 1

5

&不是比较:它是连接运算符。它用较小的数组或组件(位、字符)构建一个更大的数组(向量、字符串)。

vector1(20 downto 1) 只需从vector1:中获取一个 20 位切片,然后&添加signal1一个新的 21 位向量。然后由<=to分配vector1,我假设它必须是 21 位长(或者你有一个编译时错误!)

如果vector1声明为

signal vector1 : std_logic_vector(21 downto 1);

那么这是一个移位寄存器;每个这样的操作都是左移 1 位,新的 LSB 从signal1.

于 2013-04-30T16:35:26.477 回答