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

📄 main-ctrl.v

📁 利用XC9572-PQ44(Xilinx CPLD)制作的一款家用防盗报警器的Verilog源代码及原理图
💻 V
字号:
`timescale 1ns / 1ps//////////////////////////////////////////////////////////////////////////////////// Company: // Engineer: // // Create Date:    09:44:38 11/09/2008 // Design Name: // Module Name:    main-ctrl // Project Name: // Target Devices: // Tool versions: // Description: //// Dependencies: //// Revision: // Revision 0.01 - File Created// Additional Comments: ////////////////////////////////////////////////////////////////////////////////////module main_ctrl(clk5hz,clk660hz,clk540hz, sw1, led1, alert_phone, alert_sound, power_ctrl,ring_out);    input clk5hz,clk660hz,clk540hz;    input sw1;    output led1,alert_phone,alert_sound,power_ctrl,ring_out;	 reg led1,alert_phone,alert_sound,power_ctrl,ring_en;	 reg [7:0]timer;	 reg [3:0] state;parameter count15s=114; // 75 = 5HZ* 15Sparameter count2s=7;   // 10= 5HZ*2Sparameter delay_15s  =0;parameter delay_15s2  =1;parameter sw1_detect =2;parameter alert1     =3;parameter alert2     =4;parameter alert3     =5;parameter alert4     =6;parameter alert5     =7;parameter sound      =8;parameter power_off  =9;parameter alert_ring =10;
parameter sound1      =11;
parameter sound2      =12;
parameter sound3      =13;	 initial   begin      led1=0;		alert_phone=0;		power_ctrl=1;		alert_sound=0;		timer=0;		state=delay_15s;		ring_en=0;   end	 assign ring_out= ring_en? clk5hz? clk660hz:clk540hz : 1'bz; always @(negedge clk5hz)   begin      timer=timer+1; 		case(state)		delay_15s: if (timer==count15s)    // wait pause key. if no pause key, go to alert.		                 begin								  alert_phone=1;								  timer=0;								  led1=1;							     state=alert1;							  end					  else if(sw1==1)         // have pause key, go to "wait pause key 2S"						     begin 							     state=sw1_detect; 								  timer=0;  							  end						else begin						        led1=0;		                    alert_phone=0;		                    power_ctrl=1;		                    alert_sound=0;		                    ring_en=0;							  end 	  		sw1_detect:begin               		              if(sw1==1 && timer==count2s)  // wait pause key 2S						     begin							     state=power_off;							  end						  else if(sw1==0) state=delay_15s;		           end      alert1: if (timer==14)  // delay about 2S, use for single key calling out.		              begin					   	  timer=0;                         alert_phone=0;					        state=alert2;				                    end      alert2: if (timer==2) 		              begin					   	  timer=0;                         alert_phone=1;					        state=alert3;				                    end      alert3: if (timer==3) 		              begin					   	  timer=0;                         alert_phone=0;					        state=alert4;				                    end      alert4: if (timer==2) 		              begin					   	  timer=0;                         alert_phone=1;					        state=alert5;				                    end      alert5: if (timer==3) 		              begin					   	  timer=0;                         alert_phone=0;					        state=delay_15s2;				                    end		delay_15s2: if(timer==count15s)   // delay 15S, wait for calling out.		              begin						     timer=0;						     ring_en=1;                    	  state=alert_ring;				  					     end                   else if(sw1==1)    begin state=sw1_detect; timer=0; end					        alert_ring: if(timer==8'b11111111)   // delay 25S, wait for door_ring out.		              begin						     timer=0;						     ring_en=0;							  alert_sound=1;                    	  state=sound;				  					     end						  else if(timer[4:0]==5'b00111) ring_en=0;						  else if(timer[4:0]==5'b01001) ring_en=1;						  else if(timer[4:0]==5'b10000) ring_en=0;						  else if(timer[4:0]==5'b00000) ring_en=1;		              else if(sw1==1)   begin state=sw1_detect; timer=0; end		sound: if(timer==8'b00011001)   // delay 3.5S, wait for dog sound.		              begin						     timer=0;							  alert_sound=0;                    	  state=sound1;				  					     end
		sound1: if(timer==8'b00000010)   // delay 2 clock.		              begin						     timer=0;							  alert_sound=1;                    	  state=sound2;				  					     end
		sound2: if(timer==8'b00011001)   // delay 3.5S, wait for dog sound.		              begin						     timer=0;							  alert_sound=0;					        state=power_off;				  					     end
						      power_off: begin						  power_ctrl=0;     // power off. 						  led1=1;                      ring_en=0;                      alert_phone=0;						  state=power_off;     // wait for power off.                 end				default: state=delay_15s;		endcase   end	                                                                                               endmodule

⌨️ 快捷键说明

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