初学者对一段程序的疑问,请大家帮忙讲解。

2020-02-23 10:44发布

port(                        
                            ctl:in std_logic_vector(1 down to 0)
datain1,datain2,datain3,datain4:in std_logic_vector(7 downto 0)
                              q:out std_logic_vector
     );
architecture .........
begin
q<=datain1 when ct1="00" else (others=>'z');
q<=datain1 when ct1="01" else (others=>'z');
q<=datain1 when ct1="10" else (others=>'z');
q<=datain1 when ct1="11" else (others=>'z');
end;
这是一个试例的程序,最近小弟在学VHDL,看到这里有些疑问,请大家帮帮忙讲解一下。
程序的作用是4个8位的三态控制通道,我不明白的是它的赋值过程。结构体里是4个独立并行的when-else语句,也就是说档ct1信号发生变化时这4个语句会同时执行,书上说的是只有一条语句被执行。假如现在ct1=“00”,第一个when-else完成时q《=datain1,而二、三、四when-else语句赋值的结果是“zzzzzzzz”,那么q到底是赋的什么值?是我对并行语句理解有错误还是我对when-else理解有错误啊。
难道说并行语句不能对同一信号赋值?越想越不明白了,求解答。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。