📄 alarmset.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 + -