background image

       led_d : out std_logic_vector(5 downto 0);   --电梯内请求信号显示

   wahaha : out std_logic;                  --看门狗报警信号

       ud,alarm : out std_logic;                 --电梯运动方向显示,超载警告信号

up,down : out std_logic );                --电机控制信号和电梯运动

end dianti;
architecture behav of dianti is
signal d11,d22,d33,d44,d55,d66:std_logic;         --电梯内人请求信号寄存信号
signal c_u11,c_u22,c_u33,c_u44,c_u55:std_logic;   --电梯外人上升请求信号寄存信号
signal c_d22,c_d33,c_d44,c_d55,c_d66:std_logic;   --电梯外人下降请求信号寄存信号
signal q:integer range 0 to 1;                    --分频信号
signal q1:integer range 0 to 6;                   --

  

关门延时计数器

signal q2:integer range 0 to 9;                   --看门狗计数器
signal dd,cc_u,cc_d,dd_cc:std_logic_vector(5 downto 0); --电梯内外请求信号寄存器
signal opendoor:std_logic;                      --开门使能信号
signal updown:std_logic;                       --电梯运动方向信号寄存器
signal en_up,en_dw:std_logic;                   --预备上升、预备下降预操作使能信号
begin
com:process(clk)
begin

if clk'event and clk='1' then 

if clr='1' then q1<=0;q2<=0;wahaha<='0';                            --

 

清除故障报警

elsif full='1' then  alarm<='1'; 

q1<=0; 

                                 --超载报警

if q1>=3 then door<="10";         

      else door<="00";
      end if;                                      
    elsif q=1 then q<=0;alarm<='0';
      if q2=3 then wahaha<='1';                                         --故障报警
      else
        if opendoor='1' then door<="10";q1<=0;q2<=0;up<='0';down<='0';      --开门操作
        elsif en_up='1' then                                            --

  

上升预操作

          if deng='1' then door<="10";q1<=0;q2<=q2+1;                    --关门中断
          elsif quick='1' then q1<=3;                                    --提前关门
          elsif q1=6 then door<="00";updown<='1';up<='1'; --关门完毕,电梯进入上升状态
          elsif q1>=3 then door<="01";q1<=q1+1;                  --电梯进入关门状态
          else q1<=q1+1;door<="00";                            --电梯进入等待状态
          end if;
        elsif en_dw='1' then                                          --下降预操作
          if deng='1' then door<="10";q1<=0;q2<=q2+1;  
          elsif quick='1' then q1<=3;                       
          elsif q1=6 then door<="00";updown<='0';down<='1';   
          elsif q1>=3 then door<="01";q1<=q1+1;           
          else q1<=q1+1;door<="00";                   
          end if;
        end if;