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

📄 time_run.v

📁 verilog描述 年月日
💻 V
📖 第 1 页 / 共 2 页
字号:
`timescale 1ns / 1ps//////////////////////////////////////////////////////////////////////////////////// Company: // Engineer: // // Create Date:    20:54:58 04/13/2008 // Design Name: // Module Name:    showchange24or12 // Project Name: // Target Devices: // Tool versions: // Description: //// Dependencies: //// Revision: // Revision 0.01 - File Created// Additional Comments: ////////////////////////////////////////////////////////////////////////////////////module time_run(clk, adj , cf , mode , set , shows, showm, showh , day , week , month , year);    input clk;    input adj;    input cf;    input mode;    input set;    output [7:0] shows ;    output [7:0] showm ;    output [7:0] showh ;	 output [7:0] day ;    output [7:0] week ;    output [7:0] month ;	 output [15:0] year ;	 reg     ADJ=0 , leap_year=1 ,AMorPM = 0  ,   change = 0  , flag  = 0; reg  cls=0  , clm=0 , clh = 0  ;reg  modestate = 0;reg[7:0] shows = 8'h00  , showm = 8'h00 , showh = 8'h23 , day = 8'h01  ,  month = 8'h01 ; //2000:01:01:6:00:00:00reg[2:0] week  = 3'b110  ,  weekback = 3'b110; reg[15:0] year = 16'h2000 , yearback = 16'h2000 ;reg[7:0] hback = 8'h00  , mback = 8'h00 ,   monthback = 8'h01  ,  dayback = 8'h01 ;reg[7:0] dclk1 = 8'b0000000  , dclk2 = 8'b0000000 , dclk3 = 8'b0000000 ,dclk4 = 8'b0000000 ;reg[7:0] count = 8'h00   ;reg[3:0] settime=4'h0;reg[2:0] circle = 000 ;reg[3:0] reset = 0;reg[3:0]      circs = 0;//------------------------------------clock frequency division , get cls ,clm ,clh ,cld , clw ,clm ,cly----------------always @(posedge clk)   //get one minute touch off singal  -----clsbegin   cls = 0 ; if(dclk1==59)    begin	   cls=1;		dclk1=0;     end	else	  dclk1 = dclk1 + 1;end	  always @(posedge clk)   //get one hour touch off singal    ------clmbeginclm = 0 ;if(cls==1)begin    if(dclk2==59)    begin	   clm=1;		dclk2=0;     end	else	  dclk2 = dclk2 + 1;end	endalways @(posedge clk)   //get one  touch off singal     -------clhbeginclh = 0 ;if(clm==1)begin    if(dclk3==23)    begin	   		clh   = 1;		dclk3 = 1;     end	else	  dclk3 = dclk3 + 1;end	end//----------------------------------------------------------------------------------------------------------
always @(posedge clk)
begin
if(mode == 1 & settime == 0)
modestate = modestate + 1;
end//-------------------------------60 minite reset ,and other circs-------------------------------------------always @(posedge clk)beginreset =0;  begin   if(adj==0 & cf==0 & set==0 )       begin		    if(count == 59)		     begin			  reset =1;    		             end			  		    else			  count = count + 1;			  		 end   else if( adj==1 ) 	     count = 0;		  	else if( cf==1 ) 	     count = 0;   else if( set==1 ) 	     count = 0;		 endend//-------------------------hour ,minute ,year ,month  ,day  set----------------------------------------------always @(posedge clk)begin if(reset == 1) settime = 0;else  begin     if( set==1 )	         begin	          settime = settime + 1 ;	  		          if(settime==1)		           begin			        hback = showh;                    mback = showm ;                 yearback = year;	                 monthback = month;                 dayback = day ;					  weekback = week;			       end		  	         end	       else 	        if(modestate==2'b00 & settime>0)	     circs = 0 ;	   begin case(settime)4'h1:                                                         //hour   set 	    begin		  if(mode == 1)   		 settime = 0;	     else			 begin		 			 if(adj==1 & cf==0)                                                    			       begin			           	                       if(hback[7:4]==4'h2)                            	                         begin	                           if(hback[3:0] >= 4'h3)							          hback = 0;		                							         else							         hback[3:0] = hback[3:0]+1;					                            			                   end    			        		                   else                             begin		                     if(hback[3:0] == 4'h9)							         begin							          hback[3:0] =0;							          hback[7:4] = hback[7:4]+1;					               end                           else												            hback[3:0]=hback[3:0]+1;                           end 		             				         circs = 4'h1;  				      end            else if(adj==0 & cf==1)                                            begin					      if(hback[7:4]==4'h0)                            	                         begin	                           if(hback[3:0]== 4'h0)							         begin										hback[7:4] = 2;		                        hback[3:0] = 3;										 end							         else							         hback[3:0]=hback[3:0] - 1;					                            			                   end    			        		                else                             begin		                     if(hback[3:0] == 4'h0)							         begin							      hback[3:0] =4'h9;							      hback[7:4] = hback[7:4] - 1;					               end                           else												            hback[3:0]=hback[3:0] - 1;                           end 	                   circs = 4'h1; 														 end						 				end		           		   end													4'h2  :                                                            //minute set         begin			if(mode == 1)   		 settime = 0;	     else			 begin			     if(adj==1 & cf==0)                                             			       begin			           	                       if(mback[7:4]==4'h5)                            	                         begin	                           if(mback[3:0]== 4'h9)							          begin										 mback = 0;		                         end							         else							         mback[3:0]=mback[3:0]+1;					                            			                   end    			        		                   else                             begin		                     if(mback[3:0] == 4'h9)							         begin							      mback[3:0] =0;							      mback[7:4] = mback[7:4]+1;					               end                           else												            mback[3:0]=mback[3:0]+1;                           end 		             				          circs = 4'h2; 				      end            else if(adj==0 & cf==1)                                           begin					      if(mback[7:4]==4'h0)                            	                         begin	                           if(mback[3:0]== 4'h0)							          begin										 mback[7:4] = 4'h5;		                         mback[3:0] = 4'h9;										 end							         else							         mback[3:0]=mback[3:0] - 1;					                            			                   end    			        		                   else                             begin		                     if(mback[3:0] == 0)							         begin							      mback[3:0] = 4'h9;							      mback[7:4] = mback[7:4] - 1;					               end                           else												            mback[3:0] = mback[3:0] - 1;                           end 							circs = 4'h2; 								 end					end	           						   end   			       										4'h3:                                                        //year set                begin				if(mode == 1)   		 settime = 0;	     else			 begin	 					 			 if(adj==1 & cf==0)                                         			       begin			           	                      if(yearback[7:4]==4'h9)                            	                         begin	                           if(yearback[3:0]== 4'h9)							          begin										 yearback[15:0] = 16'h2000;		                         end							         else							         yearback[3:0] = yearback[3:0]+1;					                            			                   end    			        		                   else                             begin		                     if(yearback[3:0] == 4'h9)							         begin							      yearback[3:0] = 4'h0;							      yearback[7:4] = yearback[7:4]+1;					               end                           else												            yearback[3:0] = yearback[3:0]+1;                           end 		             				         circs = 4'h3;  				      end            else if(adj==0 & cf==1)                                          begin					      if(yearback[7:4]==4'h0)                            	                         begin	                           if(yearback[3:0]== 4'h0)							          begin										yearback[7:4] = 4'h9;		                        yearback[3:0] = 4'h9;										 end							         else							         yearback[3:0] = yearback[3:0] - 1;					                            			                   end    			        		               else                             begin		                     if(yearback[3:0] == 0)							         begin							      yearback[3:0] = 4'h9;							      yearback[7:4] = yearback[7:4] - 1;					               end                           else												            yearback[3:0] = yearback[3:0] - 1;                           end 			 					   circs = 4'h3; 					 end						 				end				 			   end     			 			 4'h4:                                                         //month set           			    begin				 				 if(mode == 1)   		 settime = 0;	     else			 begin			 if(adj==1 & cf==0)                                         			       begin			           	                     if(monthback[7:4]==4'h1)                            	                         begin	                           if(monthback[3:0] == 4'h2)							          begin										 monthback = 8'h01;		                         end							         else							         monthback[3:0] = monthback[3:0]+1;					                            			                   end    			        		                   else                             begin		                     if(monthback[3:0] == 4'h9)							         begin							      monthback[3:0] = 0;							      monthback[7:4] = monthback[7:4]+1;					               end                           else												            monthback[3:0] = monthback[3:0]+1;                           end 		             circs = 4'h4; 				          				      end            else if(adj==0 & cf==1)                           					   begin  						  if(monthback[7:4]==4'h0)                            	                         begin	                           if(monthback[3:0]== 4'h1)							          begin										monthback[7:4] = 4'h1;		                        monthback[3:0] = 4'h2;										 end							         else							         monthback[3:0] = monthback[3:0] - 1;					                            			                   end    			        		                   else                             begin		                     if(monthback[3:0] == 0)							         begin							      monthback[3:0] = 4'h9;							      monthback[7:4] = monthback[7:4] - 1;					               end                           else												            monthback[3:0]= monthback[3:0] - 1;                           end 							circs = 4'h4; 							end							 end					          end						4'h5:                                                         //day set          			    begin				 if(mode == 1)   		 settime = 0;	     else			 begin				 			 if(adj==1 & cf==0)                                       			       begin			           weekback = weekback + 1;			              begin	                       if(dayback[7:4]==4'h3)                            	                         begin	                           if(dayback[3:0] >= 4'h1)							          begin										 dayback[7:0] = 8'h01;		                         end							         else							         dayback[3:0]=day[3:0]+1;					                            			                   end    			        		                   else                             begin		                     if(dayback[3:0] == 4'h9)							         begin							      dayback[3:0] =4'h1;							      dayback[7:4] = dayback[7:4]+1;					               end                           else												            dayback[3:0]= dayback[3:0]+1;                           end 		                end				          circs = 4'h5;  				      end            else if(adj==0 & cf==1)                   begin                   weekback = weekback - 1;                     begin                         					      if(dayback[7:4]==4'h0)                            	                         begin	                           if(dayback[3:0]== 4'h1)							          begin										dayback[7:4] = 4'h3;		                        dayback[3:0] = 4'h1;										 end							         else							         dayback[3:0]= dayback[3:0] - 1;					                            

⌨️ 快捷键说明

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