楼主:liguanyao 时间:2009-9-13 16:22

要做一个洗衣机的模拟程序,要求用一个按钮控制水位(从4-8),用三个指示灯显示当前洗衣模式,一个灯表示洗涤,一个表示漂洗,还有一个表示脱水。另外有一个总的控制开关。我写的代码如下:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity xi is
port(power:in std_logic;--电源按钮
btn1:in std_logic;--水位按钮
levelut std_logic_vector(0 to 3);--水位
modeut std_logic_vector(0 to 2));--洗衣模式
end xi;
architecture xi of xi is
signal tmp1:std_logic_vector(0 to 3);
signal tmp2:std_logic_vector(0 to 2);
begin
init:process(power)
begin
if(power'event and power='1') then--电源开启
  tmp1<="0100" ;--水位4
  tmp2<="111" ;--标准洗衣模式
else tmp1<="0000" ;
  tmp2<="000" ;
end if;
  level<=tmp1;
  mode<=tmp2;
end process init;

wt_level:process(power,btn1)--按下水位按钮
begin
if (power='1') then
  if(btn1'event and btn1='1') then
   if(tmp1="1000" then--如果水位是8,
    tmp1<="0100";--则重置为4
   else tmp1<=tmp1+1;--否则水位加1
   end if;
  end if;
end if;
level<=tmp1;
end process wt_level;
end xi;
可是老是显示出错信息:The logic for init.tmp1_3(0 to 3) does not match a standard flip-flop
@END

这是为什么?请高手帮忙解答.
1 楼:macrohard 时间:2009-9-14 11:55:05
条件写法要优化