- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数字电子技术
实验报告
数字钟设计实验
1.设计要求
在Xilinx FPGA上实现数字钟。
2.问题分析
数字钟Verilog程序采用8421BCD计数,并行在一个模块中实现时钟功能。时钟主程序可用一个模块来实现,此外还包括有数码管动态显示、初始化、校时、计时和反馈模块。
3.功能描述
数字钟cp信号为通过FPGA上集成的主时钟(50MHz)分频得到秒信号,计秒到60时分加1,秒清零,计分到60时,分清零,计时到24时,则全部清零。数字钟校时模块是通过四个开关进行操作,四个开关分别控制时位和分位,通过长按开关以达到校时的目的。
4.实验程序
1)HDL程序
//顶层设计
module clock(input clk,
input en,
input key1,
input key2,
input key3,
input key4,
output sec,
output wire[7:0] seg,
output wire[3:0] digit
);
wire[3:0] num0,mum1,num2,num3;
disp u0(clk,num0,mum1,num2,num3,seg,digit);
clk_gen u1(clk,en,key1,key2,key3,key4,sec,num0,mum1,num2,num3);
endmodule
////////////////////////////////////数码管动态显示
module disp(input clk,
input [3:0] num0,
input [3:0] num1,
input [3:0] num2,
input [3:0] num3,
output reg[7:0] sm_seg,
output reg[3:0] an
);
reg[1:0] s;
reg[3:0] digit;
reg[16:0] clkdiv;
always@(*)
begin
an=4b1111;//禁止所有数码管显示
s=clkdiv[16:15];//间隔2.6ms使能an
an[s]=0;//根据s使能数码管其中之一
case(s)//根据s取对应的数码管上要显示的数据
0:digit=num0;
1:digit=num1;
2:digit=num2;
3:digit=num3;
default:digit=num0;
endcase
case(digit)//七段译码表,跟书上的其实是一样的,只不过用的是16进制
4h0 : sm_seg = 8hc0; // 0
4h1 : sm_seg = 8hf9; // 1
4h2 : sm_seg = 8ha4; // 2
4h3 : sm_seg = 8hb0; // 3
4h4 : sm_seg = 8h99; // 4
4h5 : sm_seg = 8h92; // 5
4h6 : sm_seg = 8h82; // 6
4h7 : sm_seg = 8hf8; // 7
4h8 : sm_seg = 8h80; // 8
4h9 : sm_seg = 8h90; // 9
default : sm_seg = 8hff; // x
endcase
end
always@(posedge clk)//主时钟计数:50MHz时钟,周期20ns,计数到1FFFFh时长2621420ns,约2.6ms
clkdiv=clkdiv+17d1;
endmodule
///////////////////////////////////////////初始化
module clk_gen(input clk,
input en,
input bt0,
input bt1,
i
文档评论(0)