process中的signal,赋值后在process结束后才变化; 而variable是立刻变化
所以第一个程序中
count(11 downto 1)<=count(10 downto 0);
count<=count(11 downto 1)& datain;
第一行行赋值后还没有变化,就被第二行覆盖了。也就是说永远执行的都是第二行
第二个中
count(0)<=datain; -- 只对count(0)
count(11 downto 1)<=count(10 downto 0); -- 只对count(11 --0)
两行不冲突,没有问题