我正在查看一些执行以下操作的代码:
signal1 : std_logic
vector1 : std_logic_vector
vector1 <= vector1(20 downto 1) & signal1;
我假设 avector1(20 downto 1)
产生以下内容:
[20 19 18 ... 3 2 1]
但我不明白的是&
它对它的作用。它是否返回0
if signal1
is0
和创建的向量 if signal1
is 1
?
我正在查看一些执行以下操作的代码:
signal1 : std_logic
vector1 : std_logic_vector
vector1 <= vector1(20 downto 1) & signal1;
我假设 avector1(20 downto 1)
产生以下内容:
[20 19 18 ... 3 2 1]
但我不明白的是&
它对它的作用。它是否返回0
if signal1
is0
和创建的向量 if signal1
is 1
?
&
不是比较:它是连接运算符。它用较小的数组或组件(位、字符)构建一个更大的数组(向量、字符串)。
vector1(20 downto 1)
只需从vector1
:中获取一个 20 位切片,然后&
添加signal1
一个新的 21 位向量。然后由<=
to分配vector1
,我假设它必须是 21 位长(或者你有一个编译时错误!)
如果vector1
声明为
signal vector1 : std_logic_vector(21 downto 1);
那么这是一个移位寄存器;每个这样的操作都是左移 1 位,新的 LSB 从signal1
.