我在VHDL中有一些代码。我不明白连接是如何工作的。
A : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
B : IN IN STD_LOGIC;
A <= "1111";
B <= '0';
A <= A(2 DOWNTO 0) & B;
是“0111”还是“1110”?
答案 0 :(得分:1)
就连接本身而言,你似乎做得那么正确,但除了其他错误(你正在分配输入,正如BrianDrummond所指出的那样,你没有可编译的语法),你会有问题,因为进程外的VHDL信号分配是并发的(即它们是连续和并行评估的)。
所以,如果你这样做:
A <= "1111";
A <= A(2 DOWNTO 0) & B;
您将为A的每个位分配两个驱动程序 - 一个'1',以及左侧的位除了被分配为'B'的最低有效位。想象一下,用实际的铜线构建它。你将A的所有位绑在一起 - 并将它们连接到正电压源。 如果B为'1',则应解析为全'1',但如果B为'0',则有效连接正负电压端子,如短路。你的模拟器会告诉你结果是'X' - 未知。