⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcu.v

📁 一组两个电梯的控制器
💻 V
字号:
module scu(cfloor,status,cmd,incmd,reset,clk,load_enable,open);input [2:0] cmd;input reset;input clk;input load_enable;input[2:0] incmd; reg[2:0] lastcmd;reg[2:0] tempcmd;reg[5:0]  CNT;output open;reg open;output[2:0] cfloor; reg[2:0] cfloor;output[1:0] status; reg[1:0] status;reg[7:0] cmd_up;reg[7:0] cmd_down;reg[5:0] cnt;always @(negedge clk or negedge reset)begin   if(!reset)   begin       status<=0;          end   else    begin        case(status)            'b00:            begin                if(|cmd_up)                begin                    status<='b11;                end                else if(|cmd_down)                begin                    status<='b01;                end                else                 begin                    status<='b00;                end            end            'b01:            begin                if(|cmd_down)                begin                    status<='b01;                end                else                begin                    status<='b00;               end            end            'b11:            begin                if(|cmd_up)                begin                    status<='b11;                end                else                 begin                    status<='b00;                end            end    endcase   endend always @(posedge clk or negedge reset )   begin  if(!reset)	   begin	   cmd_up <=0;	   cmd_down <=0;	   lastcmd<=0;	   tempcmd<=0;	   end  else 	if(cnt==CNT-2)	     begin		    if(status=='b01)		       cmd_down[cfloor]<='b0;		     else if(status=='b11)		       cmd_up[cfloor]<='b0;	     end	else 	if(load_enable)	begin	   if(cmd>cfloor )         begin              cmd_up[cmd]<='b1;         end      else if(cmd<cfloor)         begin             cmd_down[cmd]<='b1;         end      else if(status=='b11)       begin           cmd_up[cmd]<='b1;      end      else       begin           cmd_down[cmd]<='b1;      end  end  else if(lastcmd!=incmd)	begin    lastcmd<=incmd;      	   if(incmd>cfloor )         begin              cmd_up[incmd]<='b1;         end      else if(incmd<cfloor)         begin             cmd_down[incmd]<='b1;         end      else if(status=='b11)       begin           cmd_up[incmd]<='b1;      end      else       begin           cmd_down[incmd]<='b1;      end  end  else lastcmd<=incmd;        end          always @(posedge clk or negedge reset)    begin	 if(!reset)	 begin	 	cnt<=0;	 	cfloor<=0;	 	CNT<=10;	 end	 else        case(status)            'b00:            begin                cnt<=0;                CNT<=10;            end            'b01:            begin                if(cmd_down[cfloor]==1)                  CNT<=20;                 //else CNT<=10;                if(cnt==CNT)                begin                    cnt<=0;                    cfloor<=cfloor-1;                    CNT<=10;                end                else                 begin                    cnt<=cnt+1;                end            end            'b11:            begin                if(cmd_up[cfloor]==1)                     CNT<=20;                //else CNT<=10;                 if(cnt==CNT)                begin                    cnt<=0;                    cfloor<=cfloor+1;                    CNT<=10;                                                      end                                          else                begin                    cnt<=cnt+1;                end            end    endcase        end    always @(posedge clk or negedge reset)    begin	 if(!reset)	 begin	 	open<=0;	 end      else if(CNT==20&&cnt<=10&&cnt>2)        open<='b1;        else        open<='b0;   end    endmodule                                                    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -