实验三 数字时钟.docx

上传人:b****2 文档编号:23087846 上传时间:2023-04-30 格式:DOCX 页数:8 大小:98.74KB
下载 相关 举报
实验三 数字时钟.docx_第1页
第1页 / 共8页
实验三 数字时钟.docx_第2页
第2页 / 共8页
实验三 数字时钟.docx_第3页
第3页 / 共8页
实验三 数字时钟.docx_第4页
第4页 / 共8页
实验三 数字时钟.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

实验三 数字时钟.docx

《实验三 数字时钟.docx》由会员分享,可在线阅读,更多相关《实验三 数字时钟.docx(8页珍藏版)》请在冰豆网上搜索。

实验三 数字时钟.docx

实验三数字时钟

 

EDA实验报告

 

数字时钟

 

电信1002班

姓名:

谌晴

学号:

1404100320

 

数字时钟

1.实验目的

学习数字时钟的硬件设计。

2.实验内容

在SmartSOPC实验箱上完成可以计时的数字时钟,其显示时间范围是00:

00:

00~23:

59:

59且该时钟具有暂停计时和清零等功能。

3.实验原理

一个完整的时钟应由3部分组成:

秒脉冲发生电路、计数显示部分和时钟调整部分。

一个时钟的准确与否主要取决于秒脉冲的精度。

为了保证计是准确,我们对系统时钟48MHz进行了48000000分频,从而得到1Hz的秒脉冲。

至于显示部分与LED数码管原理相同,而对于校时电路可自由发挥,如定义3个键keystart,keymon和keyadd,分别用于控制时钟的计时开始、调整功能选择和加1处理,从而完成对现在时间的调整。

本实验的校时电路在此仅仅完成了暂停、清零等基本功能。

4.实验步骤

(1)在QuartusII中建立一个工程项目文件clock.qpf,并在该项目下新建VerilogHDL源程序文件clock.v输入程序代码并保存。

完整的VerilogHDL程序如下。

(2)选择目标器件并对相应的引脚进行锁定,在这里所选择的期间为Altera公司Cyclone系列的EP1C12Q240C8芯片,引脚锁定方法如表所列。

将未使用的引脚设置为三态输入。

(3)对该工程文件进行全程编译处理,若在编译工程中发现错误,则找出并更正错误,直到编译成功为止。

(4)连接硬件、下载程序。

用实验箱配置的连线将核心板上PACK区的引脚236、237、238、239分别与数码管显示区的COM3(DIG_COM)的DIG4_DIG7相对应连接。

将跳线短接冒跳接到SmartSOPC实验箱上的JP6的KEY1、KEY2,使分别与FPGA的引脚相连。

通过ByteBlasterII下载电缆连接实验箱JTAG口和主计算机,接通实验箱电源,执行下载命令,把程序下载到FPGA器件中。

5、实验结果

数码管1、2显示时钟的小时部分,4、5显示时钟的分部分,7、8显示时钟的秒部分。

当按键KEY1、KEY2置1时,数码管显示的数据如时钟计数依次增加。

当按KEY1时,实现暂停功能,数码管数字没有发生变化。

再次按KEY1时,时钟继续刚才的数据叠加。

按KEY2键时,实现清零功能,所有数码管数字全部显示0,重新开始计数。

实验程序:

moduleclock(clk,key,dig,seg);//模块名clock

inputclk;//输入时钟

input[1:

0]key;//输入按键

output[7:

0]dig;//数码管选择输出引脚

output[7:

0]seg;//数码管段输出引脚

reg[7:

0]seg_r;//定义数码管输出寄存器

reg[7:

0]dig_r;//定义数码管选择输出寄存器

reg[3:

0]disp_dat;//定义显示数据寄存器

reg[24:

0]count;//定义计数寄存器

reg[23:

0]hour;//定义现在时刻寄存器

regsec,keyen;//定义标志位

reg[1:

0]dout1,dout2,dout3;//寄存器

wire[1:

0]key_done;//按键消抖输出

assigndig=dig_r;//输出数码管选择

assignseg=seg_r;//输出数码管译码结果

//秒信号产生部分

always@(posedgeclk)//定义clock上升沿触发

begin

count=count+1'b1;

if(count==25'd24000000)//0.5S到了吗?

begin

count=25'd0;//计数器清零

sec=~sec;//置位秒标志

end

end

//按键消抖处理部分

assignkey_done=(dout1|dout2|dout3);//按键消抖输出

always@(posedgecount[17])

begin

dout1<=key;

dout2<=dout1;

dout3<=dout2;

end

always@(negedgekey_done[0])

begin

keyen=~keyen;//将琴键开关转换为乒乓开关

end

//数码管动态扫描显示部分

always@(posedgeclk)//count[17:

15]大约1ms改变一次

begin

case(count[17:

15])//选择扫描显示数据

3'd0:

disp_dat=hour[3:

0];//秒个位

3'd1:

disp_dat=hour[7:

4];//秒十位

3'd2:

disp_dat=4'ha;//显示"-"

3'd3:

disp_dat=hour[11:

8];//分个位

3'd4:

disp_dat=hour[15:

12];//分十位

3'd5:

disp_dat=4'ha;//显示"-"

3'd6:

disp_dat=hour[19:

16];//时个位

3'd7:

disp_dat=hour[23:

20];//时十位

endcase

case(count[17:

15])//选择数码管显示位

3'd0:

dig_r=8'b11111110;//选择第一个数码管显示

3'd1:

dig_r=8'b11111101;//选择第二个数码管显示

3'd2:

dig_r=8'b11111011;//选择第三个数码管显示

3'd3:

dig_r=8'b11110111;//选择第四个数码管显示

3'd4:

dig_r=8'b11101111;//选择第五个数码管显示

3'd5:

dig_r=8'b11011111;//选择第六个数码管显示

3'd6:

dig_r=8'b10111111;//选择第七个数码管显示

3'd7:

dig_r=8'b01111111;//选择第八个数码管显示

endcase

end

always@(posedgeclk)

begin

case(disp_dat)

4'h0:

seg_r=8'hc0;//显示0

4'h1:

seg_r=8'hf9;//显示1

4'h2:

seg_r=8'ha4;//显示2

4'h3:

seg_r=8'hb0;//显示3

4'h4:

seg_r=8'h99;//显示4

4'h5:

seg_r=8'h92;//显示5

4'h6:

seg_r=8'h82;//显示6

4'h7:

seg_r=8'hf8;//显示7

4'h8:

seg_r=8'h80;//显示8

4'h9:

seg_r=8'h90;//显示9

4'ha:

seg_r=8'hbf;//显示-

default:

seg_r=8'hff;//不显示

endcase

if((count[17:

15]==3'd2)&sec)

seg_r=8'hff;

end

//计时处理部分

always@(negedgesecornegedgekey_done[1])//计时处理

begin

if(!

key_done[1])//是清零键吗?

begin

hour=24'h0;//是,则清零

end

elseif(!

keyen)

begin

hour[3:

0]=hour[3:

0]+1'b1;//秒加1

if(hour[3:

0]==4'ha)

begin

hour[3:

0]=4'h0;

hour[7:

4]=hour[7:

4]+1'b1;//秒的十位加一

if(hour[7:

4]==4'h6)

begin

hour[7:

4]=4'h0;

hour[11:

8]=hour[11:

8]+1'b1;//分个位加一

if(hour[11:

8]==4'ha)

begin

hour[11:

8]=4'h0;

hour[15:

12]=hour[15:

12]+1'b1;//分十位加一

if(hour[15:

12]==4'h6)

begin

hour[15:

12]=4'h0;

hour[19:

16]=hour[19:

16]+1'b1;//时个位加一

if(hour[19:

16]==4'ha)

begin

hour[19:

16]=4'h0;

hour[23:

20]=hour[23:

20]+1'b1;//时十位加一

end

if(hour[23:

16]==8'h24)

hour[23:

16]=8'h0;

end

end

end

end

end

end

endmodule

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

当前位置:首页 > 医药卫生 > 临床医学

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

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