VHDL是什么意思? a <= a (6 downto 0) & '0'
VHDL what does this mean? a <= a (6 downto 0) & '0'
signal a : std_logic_vector (7 downto 0) := (others => '0');
a <= a (6 downto 0) & '0';
所以我明白 a
是一个 8 位的信号,所有这些位都是 0。下一行是否将第 6 位分配给 0 再次为零?
也许等效的语法有助于理解:
a(7 downto 0) <= a(6 downto 0) & '0';
所以a(7)
得到a(6)
的值,a(6)
得到a(5)
的值,...而a(0)
就是'0'
.
这段代码描述了一个移位寄存器(假设语句包含在一个同步过程中,这应该是为了防止组合循环),其中值在每个循环中左移。
在VHDL中,&
是连接运算符。所以 "0101" & "1010"
等于 "01011010"
。在您的示例中,7 个 LSB 连接到逻辑零以形成新的移位 8 位向量。
这是一个非常简短的定义,通过将最右边的位替换为“0”来将位向左移动。
signal a : std_logic_vector (7 downto 0) := (others => '0');
a <= a (6 downto 0) & '0';
所以我明白 a
是一个 8 位的信号,所有这些位都是 0。下一行是否将第 6 位分配给 0 再次为零?
也许等效的语法有助于理解:
a(7 downto 0) <= a(6 downto 0) & '0';
所以a(7)
得到a(6)
的值,a(6)
得到a(5)
的值,...而a(0)
就是'0'
.
这段代码描述了一个移位寄存器(假设语句包含在一个同步过程中,这应该是为了防止组合循环),其中值在每个循环中左移。
在VHDL中,&
是连接运算符。所以 "0101" & "1010"
等于 "01011010"
。在您的示例中,7 个 LSB 连接到逻辑零以形成新的移位 8 位向量。
这是一个非常简短的定义,通过将最右边的位替换为“0”来将位向左移动。