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

📄 ccu.v

📁 一组两个电梯的控制器
💻 V
字号:
`timescale 1ns/10psmodule centercontroler(cmd1,cmd2,LE1,LE2,            clk,reset,             outCmd,cfloor1,		       cfloor2,status1,status2);output[2:0] cmd1;output[2:0] cmd2;output   LE1;output   LE2;input  reset;input  clk;input[3:0]  outCmd;input[2:0]  cfloor1;input[2:0]  cfloor2;input[1:0]  status1;input[1:0]  status2;reg  LE1;reg  LE2;reg[3:0] temp;
reg[2:0] f1;
reg[2:0] f2;reg[2:0]  cmd1;reg[2:0]  cmd2;    always@(posedge clk or negedge reset)//or outCmd)    begin    LE1='b0;    LE2='b0;    cmd1=0;    cmd2=0;
	 f1=0;
	 f2=0;    if(!reset)    begin    temp=0;    end            else     if(temp!=outCmd && outCmd!='b0000 &&outCmd!='b1111)        begin        temp=outCmd;   	case ({status1,status2})     'b0000:			begin
					 if(cfloor1>outCmd[2:0])
					 		f1=cfloor1-outCmd[2:0];
					 else
					      f1=outCmd[2:0]-cfloor1;
					 if(cfloor2>outCmd[2:0])
					 		f2=cfloor2-outCmd[2:0];
					 else
					      f2=outCmd[2:0]-cfloor2;
					 if(f1<f2)
					 begin			       LE1='b1;			       cmd1=outCmd[2:0];
					 end
					 else
					 begin			       LE2='b1;			       cmd2=outCmd[2:0];
					 end			end	 'b0001:	     begin	         if(outCmd[3])	         begin	             LE1='b1;			       cmd1=outCmd[2:0];	         end	         else	         begin	            if(cfloor2<outCmd[2:0])	            begin	                LE1='b1;			          cmd1=outCmd[2:0];			      end			      else			      begin			          LE2='b1;			          cmd2=outCmd[2:0];			      end	        end	      end	  'b0011:       	      begin	         if(outCmd[3])	         begin	             if(cfloor2>outCmd[2:0])	            begin	                LE1='b1;			          cmd1=outCmd[2:0];			      end			      else			      begin			          LE2='b1;			          cmd2=outCmd[2:0];			      end			      	         end	         else	         begin	           LE1='b1;			     cmd1=outCmd[2:0];	         end	       end	    'b0100:	    begin	       begin	         if(outCmd[3])	         begin	             LE2='b1;			       cmd2=outCmd[2:0];	         end	         else	         begin	            if(cfloor1<outCmd[2:0])	            begin	                LE2='b1;			          cmd2=outCmd[2:0];			      end			      else			      begin			          LE1='b1;			          cmd1=outCmd[2:0];			      end	        end	      end 	    end     	    'b0101:       	      begin	         if(outCmd[3])	         begin	            if(cfloor1>cfloor2)	            begin	                LE2='b1;			          cmd2=outCmd[2:0];			      end			      else			      begin			          LE1='b1;			          cmd1=outCmd[2:0];			      end			      	         end	         else	         begin	             case({outCmd[2:0]>cfloor1,outCmd[2:0]>cfloor2,cfloor1>cfloor2})	             	             'b001,	             'b100,	             'b111:	             begin	                 LE2='b1;			          cmd2=outCmd[2:0];	             end	             'b000,	             'b011,	             'b110:	             begin	                LE1='b1;			          cmd1=outCmd[2:0];			       end	             default:	             begin	                LE1='b0;			          LE2='b0;	             end	           endcase	         end	       end     	    'b0111: 	    begin	       if(outCmd[3])	       begin	           if(outCmd[2:0]>=cfloor2)	           begin	              LE2='b1;			        cmd2=outCmd[2:0]; 	           end	           else	           begin	              LE1='b1;			        cmd1=outCmd[2:0];  	           end	       end	       else	       begin	           if(outCmd[2:0]<=cfloor1)	           begin	              LE1='b1;			        cmd1=outCmd[2:0]; 	           end	           else	           begin	              LE2='b1;			        cmd2=outCmd[2:0];  	           end	       end	    end	    'b1100:         	      begin	         if(outCmd[3])	         begin	             if(cfloor1>outCmd[2:0])	            begin	                LE2='b1;			          cmd2=outCmd[2:0];			      end			      else			      begin			          LE1='b1;			          cmd1=outCmd[2:0];			      end			      	         end	         else	         begin	           LE2='b1;			     cmd2=outCmd[2:0];	         end	       end	       'b1101:      	       begin	       if(outCmd[3])	       begin	           if(outCmd[2:0]>=cfloor1)	           begin	              LE1='b1;			        cmd1=outCmd[2:0]; 	           end	           else	           begin	              LE2='b1;			        cmd2=outCmd[2:0];  	           end	       end	       else	       begin	           if(outCmd[2:0]<=cfloor2)	           begin	              LE2='b1;			        cmd2=outCmd[2:0]; 	           end	           else	           begin	              LE1='b1;			        cmd1=outCmd[2:0];  	           end	       end	    end 	    'b1111:       	      begin	         if(~outCmd[3])	         begin	            if(cfloor1>cfloor2)	            begin	                LE2='b1;			          cmd2=outCmd[2:0];			      end			      else			      begin			          LE1='b1;			          cmd1=outCmd[2:0];			      end			      	         end	         else	         begin	             case({outCmd[2:0]>=cfloor1,outCmd[2:0]>=cfloor2,cfloor1>=cfloor2})	             'b001,	             'b100,	             'b111:	             begin	                 LE1='b1;			           cmd1=outCmd[2:0];	             end	             'b010,	             'b000,	             'b110:	             begin	                 LE2='b1;			           cmd2=outCmd[2:0];	             end	             default:	             begin	                  LE1='b0;	                  LE2='b0;	             end	           endcase	         end	       end	       default:	       begin	          LE1='b0;	          LE2='b0; 	       end	   endcase	   end	 end      endmodule	          	          	           	           	           	             			 

⌨️ 快捷键说明

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