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

📄 alarmset.v

📁 数字钟可以说明的具体功能都在文件家中,请仔细参阅,希望大家可以相互学习,共同进步
💻 V
字号:
//模块:闹钟设置模块
//功能:设定闹钟的开关、闹钟的时间
//输入:当前模式Mode,设置选择SetSel,设置脉冲CPin,Reset,
//输出:闹钟开关(AlarmEn),整点报时开关AlarmHourEn
//		起闹时间(AAM,AHour12,AHour,AMin)
`timescale 1ns / 100ps
module AlarmSet(Mode,SetSel,Clk,CPin,Reset,
	AAM,AHour,AHour12,AMin,
	AlarmEn,AlarmHourEn);
	input [1:0]Mode;
	input [2:0]SetSel;
	input CPin,Clk,Reset;
	output [5:0] AHour;
	output [6:0] AMin;
	output [4:0] AHour12;
	output AAM,AlarmEn,AlarmHourEn;
	reg AlarmEn,AlarmHourEn;
	wire HourSetCE,MinSetCE,AlarmEnSet,AlarmHourEnSet;
	//Mode==11进入闹钟模式,SetSel==00调闹钟开关 01调小时 10调分钟 11整点报时开关
	assign {HourSetCE,MinSetCE,AlarmEnSet,AlarmHourEnSet}
			=(Mode==2'b11)?(
			(SetSel[1:0]==2'b00)?{CPin,3'b00}:(
			(SetSel[1:0]==2'b01)?{1'b0,CPin,2'b0}:(
			(SetSel[1:0]==2'b10)?{2'b0,CPin,1'b0}:{3'b00,CPin}))
			):4'b000;
		
	//Counter for Minute
	BCD2Count U_Minute
	(
		.CE(MinSetCE),
		.Clk(Clk),
		.Count(AMin),
		.Reset(Reset)
	);
	defparam U_Minute.Begin = 0;
	defparam U_Minute.End = 'h59;
	defparam U_Minute.Size = 7;	
	
	//Counter for Hour
	BCD2Count U_Hour
	(
		.CE(HourSetCE),
		.Clk(Clk),
		.Count(AHour),
		.Reset(Reset)
	);
	
	defparam U_Hour.Begin = 0;
	defparam U_Hour.End = 'h23;
	defparam U_Hour.Size = 6;	   
	
	Hour24_12 U_Hour24_12(AHour,AHour12,AAM);

	always @(negedge Reset or posedge Clk)  //set Enable of Alarm
		begin
			if (!Reset)AlarmEn<=1;
			else if (AlarmEnSet) AlarmEn<=~AlarmEn;
		end
	
	always @(negedge Reset or posedge Clk)  //set Enable of Alarm
		begin
			if (!Reset)AlarmHourEn<=1;
			else if (AlarmHourEnSet) AlarmHourEn<=~AlarmHourEn;
		end	
endmodule

⌨️ 快捷键说明

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