永发信息网

急求一份基于FPGA的电子钟(时分秒显示、校时、定时闹钟等功能) 源代码

答案:2  悬赏:30  手机版
解决时间 2021-02-28 03:50
急求一份基于FPGA的电子钟(时分秒显示、校时、定时闹钟等功能) 源代码
最佳答案
写了段代码,供参考。

module clock(clk,rst,set, set_typ, set_data, yr, mon, dt, hr, min, sec,
alarm_en, alm_typ, alm_yr, alm_mon, alm_dt, alm_hr, alm_min, alm_sec, alarm_output);
input clk,rst,set;
input [2:0] set_typ; //
input [6:0] set_data;//
output [6:0] yr, mon, dt, hr, min, sec;

input alarm_en;
input [2:0] alm_typ; //
input [6:0] alm_yr, alm_mon, alm_dt, alm_hr, alm_min, alm_sec;
output alarm_output;

parameter C_FR = 32'd20_000_000-32'd1; //定义系统时钟20MHz

reg [31:0] fr_cnt;
reg [3:0] sec_cnt;

reg pp1s; //秒脉冲
//==================================================
//fr_cnt
always@(posedge clk)//
if(!rst)
fr_cnt <= 32'b0;
else if (fr_cnt >= C_FR)
fr_cnt <= 32'b0;
else
fr_cnt <= fr_cnt + 1'b1;

//pp1s
always@(posedge clk)//
if(!rst)
pp1s <= 1'b0;
else if (fr_cnt == C_FR)
pp1s <= 1'b1;
else
pp1s <= 1'b0;

///time counter
always@(posedge clk)
if(!rst)
begin
yr <= 7'b0;
mon <= 7'b0;
dt <= 7'b0;
hr <= 7'b0;
min <= 7'b0;
sec <= 7'b0;
end
else if (set)
begin
case (set_typ)
3'b000: yr <= set_data;
3'b001: mon <= set_data;
3'b010: dt <= set_data;
3'b011: hr <= set_data;
3'b100: min <= set_data;
3'b101: sec <= set_data;
end
else if (pp1s)
begin
if (sec >= 7'd59)
sec <= 7'd0;
else
sec <= sec + 1'b1;

if (sec >= 7'd59)
begin
if (min >= 7'd59)
min <= 7'd0;
else
min <= min + 1'b1;
end

if (sec >= 7'd59 && min >= 7'd59)
begin
if (hr >= 7'd23)
hr <= 7'd0;
else
hr <= hr + 1'b1;
end

///data,mon, year, 大月小月,闰年等,依此类推
//
end

//=================================
//alarm
always@(posedge clk)
if(!rst)
alarm_output <= 1'b0;
else if (alarm_en)
case (alm_typ)
3'b000:
if (yr == alm_yr && mon == alm_mon && dt == alm_dt && hr == alm_hr && min == alm_min && sec == alm_sec)
alarm_output <= 1'b1;
else
alarm_output <= 1'b0;
3'b001:
if (mon == alm_mon && dt == alm_dt && hr == alm_hr && min == alm_min && sec == alm_sec)
alarm_output <= 1'b1;
else
alarm_output <= 1'b0;
3'b010:
if (dt == alm_dt && hr == alm_hr && min == alm_min && sec == alm_sec)
alarm_output <= 1'b1;
else
alarm_output <= 1'b0;
3'b011:
if (hr == alm_hr && min == alm_min && sec == alm_sec)
alarm_output <= 1'b1;
else
alarm_output <= 1'b0;
3'b100:
if (min == alm_min && sec == alm_sec)
alarm_output <= 1'b1;
else
alarm_output <= 1'b0;
default
alarm_output <= 1'b0;
endcase

endmodule
全部回答
verilog语言可以嘛?
VHDL语言,写起来有点麻烦……
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
小学三年级科学(大象版)动物怎样过冬ppt
求ALTIUM DESIGNER 09破解版下载地址
我45Kg 我等多多少牛?我要算我对地面的压强我
夹竹桃叶子泡茶真的会变哑吗?
不拘小节近义词
神奇宝贝仙子精灵的所有技能,急,包括可以学
小说把契约分为几个颜色 金色的是魔王级别的
PO膜的价格是多少?
凡非理相加是什么意思
下列各选项的钢筋混凝土结构中伸缩缝最大间距
富丽蕾丝地址在哪,我要去那里办事
王者荣耀黄忠大招怎么打
日本料理后厨是做什么的,辛苦吗
为进一步明确诊断,最简单有效的检查是A.心电
中国建设银行南宁东城支行地址在哪,我要去那
推荐资讯
拳皇98终极之战作弊器
为什么我都15岁了才157cm,而且长的像10岁小
洗汽车表面的像肥皂一样的那个叫什么呢
名人,动漫人物都有谁是11月13日的生日?
塑料污水井三通高差怎么接法
家里要装暖气,请问热水管是用塑料的还是金属
【小学作文母爱】小学六年级母爱作文
今世缘婚庆礼仪这个地址在什么地方,我要处理
松子怎么长出来的
被人暖一下就发热,被人冷一下就成冰,原谅我
一品大虾在哪里啊,我有事要去这个地方
两个数的最大公因数一定比这两个数都小对吗?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?