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