VHDL,连接是如何工作的?

VHDL,连接是如何工作的?,vhdl,Vhdl,我有一些VHDL代码。我不明白串联是如何工作的 A : IN STD_LOGIC_VECTOR(3 DOWNTO 0); B : IN IN STD_LOGIC; A <= "1111"; B <= '0'; A <= A(2 DOWNTO 0) & B; A:标准逻辑向量(3到0); B:标准逻辑中; A就连接本身而言,您似乎做得不错,但除了其他错误(您正在分配输入,正如BrianDrummond所指出的,并且您没有可编译的语法),您将遇到一个问题,因为

我有一些VHDL代码。我不明白串联是如何工作的

A   : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
B   : IN IN STD_LOGIC;
A <= "1111";
B <= '0';


A <= A(2 DOWNTO 0) & B;
A:标准逻辑向量(3到0);
B:标准逻辑中;

A就连接本身而言,您似乎做得不错,但除了其他错误(您正在分配输入,正如BrianDrummond所指出的,并且您没有可编译的语法),您将遇到一个问题,因为进程之外的VHDL信号分配是并发的(即,对其进行连续和并行评估)

因此,如果你这样做:

A <= "1111";
A <= A(2 DOWNTO 0) & B;

A您需要A。您上面的“代码”不是有效的VHDL。将保持从左到右的顺序(注意,您没有指定S_HITS_SRC1的值或其声明).IEEE Std 1076-2008 9.2.5添加运算符,第2段。抱歉,*更新的左和右对VHDL非常重要。
B
位于右侧,因此其值将位于连接值的右侧。也就是说,
A
将为
“1110”
(注意:
Std\u逻辑向量的双引号)考虑到目前为止显示的代码,答案是“两者都不是”。由于您无法分配到IN端口,因此对
A
的分配是非法的。