基于FPGA的电子钟设计.docx

上传人:b****7 文档编号:9623102 上传时间:2023-02-05 格式:DOCX 页数:12 大小:240.13KB
下载 相关 举报
基于FPGA的电子钟设计.docx_第1页
第1页 / 共12页
基于FPGA的电子钟设计.docx_第2页
第2页 / 共12页
基于FPGA的电子钟设计.docx_第3页
第3页 / 共12页
基于FPGA的电子钟设计.docx_第4页
第4页 / 共12页
基于FPGA的电子钟设计.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

基于FPGA的电子钟设计.docx

《基于FPGA的电子钟设计.docx》由会员分享,可在线阅读,更多相关《基于FPGA的电子钟设计.docx(12页珍藏版)》请在冰豆网上搜索。

基于FPGA的电子钟设计.docx

基于FPGA的电子钟设计

基于FPGA的电子钟设计

一、需求分析2

1.功能描述2

2.其他要求2

二、总体设计2

1.设计思路2

2.器件选型2

三、硬件设计2

1.硬件框图2

2.硬件模块2

3.硬件电路图2

四、软件设计2

1.软件框图2

2.软件流程图及其程序代码2

五、测试效果2

六、问题分析2

1.实现过程中遇到的问题及解决方法分析。

2

2.收获与体会2

附录:

2

 

一、需求分析

学习利用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)

begin

sec=0;

min=0;

hour=0;

end

else

sec=sec+1;

if(sec==60)

begin

sec=0;

min=min+1;

end

if(min==60)

begin

min=0;

hour=hour+1;

end

if(hour==24)

hour=0;

end

2.2译码及数码管显示模块

程序代码如下:

always@(negedgeclk2)//clk2为1kHz的数码管动态扫描时钟

begin

scan=scan+3'b001;

------数码管的位选和段选控制--------

case(scan)

3'h0:

beginwei=8'hFE;seg=d[0];end

依次选中每个数码管,并将它要显示的数据给seg

3'h1:

beginwei=8'hFD;seg=d[1];end

3'h2:

beginwei=8'hFB;seg=d[2];end

3'h3:

beginwei=8'hF7;seg=d[3];end

3'h4:

beginwei=8'hEF;seg=d[4];end

3'h5:

beginwei=8'hDF;seg=d[5];end

3'h6:

beginwei=8'hBF;seg=d[6];end

3'h7:

beginwei=8'h7F;seg=d[7];end

endcase

--------译码部分-----------

case(seg)

4'h0:

duan=8'h3F;//数字“0”的译码

4'h1:

duan=8'h06;//数字“1”的译码

4'h2:

duan=8'h5B;//数字“2”的译码

4'h3:

duan=8'h4F;//数字“3”的译码

4'h4:

duan=8'h66;//数字“4”的译码

4'h5:

duan=8'h6D;//数字“5”的译码

4'h6:

duan=8'h7D;//数字“6”的译码

4'h7:

duan=8'h07;//数字“7”的译码

4'h8:

duan=8'h7F;//数字“8”的译码

4'h9:

duan=8'h6F;//数字“9”的译码

default:

duan=8'h40;//符号“-”的译码

endcase

end

2.3数据处理子模块:

对当前的时钟数据进行处理,实现原理是分别用时、分、秒这3个数据除以10,将得到的十位和个位分别存在2个单独的存储器里。

模块代码为:

always@(posedgeclk0)

begin

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);

end

五、测试效果

经过软件仿真,测试效果良好,上述功能基本都能实现。

一下给出基本的仿真效果。

仿真效果如下所示:

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;

reg[7:

0]min;

reg[7:

0]hour;

reg[2:

0]scan;

reg[7:

0]wei;

reg[7:

0]duan;

reg[3:

0]d[7:

0];

reg[7:

0]seg;

reg[2:

0]set;

always@(posedgeclk)

begin

if(!

reset)

begin

sec=0;

min=0;

hour=0;

end

else

sec=sec+1;

if(sec==60)

begin

sec=0;

min=min+1;

end

if(min==60)

begin

min=0;

hour=hour+1;

end

if(hour==24)

hour=0;

end

always@(posedgeclk0)

begin

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);

end

always@(negedgeclk0)

begin

scan=scan+3'b001;

case(scan)

3'h0:

beginwei=8'hFE;seg=d[0];end

3'h1:

beginwei=8'hFD;seg=d[1];end

3'h2:

beginwei=8'hFB;seg=d[2];end

3'h3:

beginwei=8'hF7;seg=d[3];end

3'h4:

beginwei=8'hEF;seg=d[4];end

3'h5:

beginwei=8'hDF;seg=d[5];end

3'h6:

beginwei=8'hBF;seg=d[6];end

3'h7:

beginwei=8'h7F;seg=d[7];end

endcase

case(seg)

4'h0:

duan=8'h3F;

4'h1:

duan=8'h06;

4'h2:

duan=8'h5B;

4'h3:

duan=8'h4F;

4'h4:

duan=8'h66;

4'h5:

duan=8'h6D;

4'h6:

duan=8'h7D;

4'h7:

duan=8'h07;

4'h8:

duan=8'h7F;

4'h9:

duan=8'h6F;

default:

duan=8'h40;

endcase

end

endmodule

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1