基于FPGA的电子钟设计Word下载.docx
- 文档编号:22759113
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:12
- 大小:240.13KB
基于FPGA的电子钟设计Word下载.docx
《基于FPGA的电子钟设计Word下载.docx》由会员分享,可在线阅读,更多相关《基于FPGA的电子钟设计Word下载.docx(12页珍藏版)》请在冰豆网上搜索。
学习利用VerilogHDL语言完成基于FPGA的数字钟设计,最后完成在EDA实验箱上的下载和调试。
1.功能描述
该电子钟可以实现以数字形式(hh—ff—mm)显示时、分、秒的时间和复位以及调时功能。
(1)“SW0”键时,数字钟复位;
(2)“SW1”键控制“秒”调整;
(3)“SW2”键控制“分”调整;
(4)“SW3”键控制“时”调整;
2.其他要求
掌握用VerilogHDL语言的设计思想以及整个数字系统的设计。
利用编译仿真软件QuartusⅡ实现其基本功能,然后结合EDA试验箱,在试验箱上演示具体功能。
本实验设计采用试验箱上的模式5,时、分、秒的计时结果通过8个数码管动态显示。
二、总体设计
1.设计思路
利用VerilogHDL语言编程实现电子时钟的功能,显示电路利用七段数码管进行显示。
芯片采用CycloneⅢ系列中的EP3C10E144C8。
秒计数器的计数时钟clk1为1Hz的标准信号。
数码管的动态扫描时钟clk2为1kHz的标准信号。
本设计中clk1和clk2分别采用试验箱上的信号F0、F1来实现。
时钟的段选数据和位选数据通过EP3C10E144C8芯片的I/O口送给数码管,从而实现时间显示。
时间的复位和调整通过外加独立按键(SW0,SW1,SW2,SW3)来控制。
2.器件选型
器件名称
EP3C10E144C8
LED数码管
独立按键
数量
1片
8只
4个
三、硬件设计
1.硬件框图
硬件框图如下所示:
2.硬件模块
因该设计非常简单,硬件模块很少,只有显示模块和按键模块。
3.硬件电路图
硬件电路如下图所示:
四、软件设计
1.软件框图
软件总体框图
2.软件流程图及其程序代码
软件总体流程图如下:
2.1分、时、秒(24*60*60)计时模块
程序代码如下:
always@(posedgeclk1)
begin
if(!
reset)
sec=0;
min=0;
hour=0;
end
else
sec=sec+1;
if(sec==60)
min=min+1;
if(min==60)
hour=hour+1;
if(hour==24)
2.2译码及数码管显示模块
always@(negedgeclk2)//clk2为1kHz的数码管动态扫描时钟
begin
scan=scan+3'
b001;
------数码管的位选和段选控制--------
case(scan)
3'
h0:
beginwei=8'
hFE;
seg=d[0];
end
依次选中每个数码管,并将它要显示的数据给seg
h1:
hFD;
seg=d[1];
end
h2:
hFB;
seg=d[2];
h3:
hF7;
seg=d[3];
h4:
hEF;
seg=d[4];
h5:
hDF;
seg=d[5];
h6:
hBF;
seg=d[6];
h7:
h7F;
seg=d[7];
endcase
--------译码部分-----------
case(seg)
4'
duan=8'
h3F;
//数字“0”的译码
h06;
//数字“1”的译码
h5B;
//数字“2”的译码
h4F;
//数字“3”的译码
h66;
//数字“4”的译码
h6D;
//数字“5”的译码
h7D;
//数字“6”的译码
h07;
//数字“7”的译码
h8:
//数字“8”的译码
h9:
h6F;
//数字“9”的译码
default:
duan=8'
h40;
//符号“-”的译码
endcase
2.3数据处理子模块:
对当前的时钟数据进行处理,实现原理是分别用时、分、秒这3个数据除以10,将得到的十位和个位分别存在2个单独的存储器里。
模块代码为:
always@(posedgeclk0)
d[0]=(sec%10);
d[1]=(sec/10);
d[2]=10;
d[3]=(min%10);
d[4]=(min/10);
d[5]=10;
d[6]=(hour%10);
d[7]=(hour/10);
五、测试效果
经过软件仿真,测试效果良好,上述功能基本都能实现。
一下给出基本的仿真效果。
仿真效果如下所示:
1.时、分、秒计时仿真结果:
2.译码显示仿真结果:
3.EDA实验箱上的调试效果:
六、问题分析
1.实现过程中遇到的问题及解决方法分析
刚开始因为不太懂Verilog语言,所以在实验过程中遇到了不小的麻烦。
我所写的程序总是出现很多语法错误,最后通过查阅资料和同学们的帮助才是问题得以解决。
另外,在EDA试验箱上调试时,因为对试验箱的硬件不是很了解,调试一直不成功。
最后,通过查看EDA实验指导书,才知道是时钟信号的跳线帽没有接好。
最后,经过仿真,该设计虽能达到预期的要求,但也存在不足之处。
因为时间仓促,该设计未能实现调时模块。
2.收获与体会
经过本次实验设计的学习,收获颇丰。
首先,对FPGA有了一定的了解,同时锻炼了我的动手能力。
其次,我学习了Verilog语言,会用Verilog语言编写简单的程序。
特别是体会到了Verilog语言与C语言的不同。
Verilog语言虽然语法与C语言很相似,但它与C语言还是有很大的差别的。
C语言是串行的思想,而Verilog语言很多语句是并行的。
全部代码如下:
moduleclock(clk,clk0,sec,min,hour,wei,duan,reset);
inputclk,clk0,reset;
outputsec,min,hour,wei,duan;
reg[7:
0]sec;
0]min;
0]hour;
reg[2:
0]scan;
0]wei;
0]duan;
reg[3:
0]d[7:
0];
0]seg;
0]set;
always@(posedgeclk)
if(!
sec=0;
min=0;
hour=0;
else
sec=sec+1;
if(sec==60)
min=min+1;
if(min==60)
hour=hour+1;
if(hour==24)
d[0]=(sec%10);
d[1]=(sec/10);
d[2]=10;
d[3]=(min%10);
d[4]=(min/10);
d[5]=10;
d[6]=(hour%10);
d[7]=(hour/10);
always@(negedgeclk0)
case(seg)
endmodule
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FPGA 电子钟 设计