verilog数字钟设计(FPGA)

上传人:xmg****18 文档编号:263535308 上传时间:2022-03-09 格式:DOC 页数:13 大小:57.50KB
返回 下载 相关 举报
verilog数字钟设计(FPGA)_第1页
第1页 / 共13页
verilog数字钟设计(FPGA)_第2页
第2页 / 共13页
verilog数字钟设计(FPGA)_第3页
第3页 / 共13页
verilog数字钟设计(FPGA)_第4页
第4页 / 共13页
verilog数字钟设计(FPGA)_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《verilog数字钟设计(FPGA)》由会员分享,可在线阅读,更多相关《verilog数字钟设计(FPGA)(13页珍藏版)》请在金锄头文库上搜索。

1、1、 课程设计目标1. 熟悉并掌握verilog 硬件描述语言2. 熟悉quartus 软件开发环境3. 学会设计大中规模的数字电路.并领会其中的设计思想二、课程设计实现的功能(1) 设计一个数码管实时显示时、分、秒的数字时钟24小时显示模式;(2) 可以调节小时.分钟。(3) 能够进行24小时和12小时的显示切换。(4) 可以设置任意时刻闹钟.并且有开关闹钟功能。(5) 有整点报时功能.几点钟LED灯闪亮几下。(6) 有复位按键.复位后时间从零开始计时.但闹钟设置时间不变。3、 设计原理:1、总原理框图:译码显示模块切换12进制显示复位分钟校正小时校正分频模块计数模块是输出整点报时信号到达整

2、点输出闹钟信号是否到闹钟时间设置闹钟分钟设置闹钟小时模式选择模块是附全部代码:总模块:module clock; input clk;/50MHz input reset,MODE,Alarm_ctr,BT2,H12_24;/复位键.模式选择按钮.闹钟开关档.调节按 钮 .1224小时切换档 output 7:0DMH,DML,DHH,DHL; /4个数码管显示输入信号 output dian,bao_signal,nao_signal; /时分间隔点.报时信号,闹钟信号 output 3:0DSH,DSL; /秒钟输出信号 wire 3:0 SH,SL,MH,ML,HH,HL; wire 3

3、:0 LED_mode; wire 3:0 HH12,HL12,HH24,HL24,MH24,ML24,SH24,SL24; wire 3:0 set_HH,set_HL,set_MH,set_ML; wire _1HZ,_10ms,_250ms,_500ms; wire Keydone1; wire Keydone2; wire co1,co11,co111,co2,co22,co222,set_co2; wire 3:0mode_flag; assign dian=1b0;devide_f u1; /分频.得到4种不同频率的时钟信号key_press u2; /模式档按钮去抖动key_pr

4、ess u20; /调节按钮去除抖动mode u3; /通过模式按钮产生不同模式second u4; /秒计时minute u5; /分计时hour u6; /小时计时 SEG7_LUT u7; /4个数码管显示SEG7_LUT u8;SEG7_LUT u9;SEG7_LUT u10;display_LED u11; /LED灯显示秒或模式灯display_LED u12;mode_choose u13; /选择模式进行不同操作 hour12_24 u14; /12-24小时切换boshi u15; /整点报时set_naozhong u16; /设置闹钟时间Naozhong u17; /任意

5、闹钟响应LUT_mode u18;/通过模式选择数码管显示 LED_mode u19; 模式选择LED灯显示Endmodule分频模块 :分频模块的作用主要是要获得各种频率的时钟信号。输入信号为50MHZ的信号.要想获得1HZ的信号作为秒脉冲计时.则要对50MHZ信号分频。通过计数的方式.当计数从0开始到24 999999时.1HZ信号取反一次.计数又从0开始.如此循环.就可以得到1HZ脉冲信号。对于其他信号也是如此.只是计数值不一样.得到的分频信号不同。module devide_f; input _50MHZ,nCR; output _1HZ,_10ms,_250ms,_500ms; re

6、g _1HZ,_10ms,_250ms,_500ms; reg31:0Q1,Q2,Q3,Q4; alwaysbegin if begin Q1=32d0; Q2=32d0; Q3=32d0; Q4=32d0; end else if=32d24999999 begin Q1=32d0; _1HZ=_1HZ; end else if=32d249999 begin Q2=32d0; _10ms=_10ms; end else if=32d6299999 begin Q4=32d0; _250ms=_250ms; end else if=32d12499999 begin Q3=32d0; _50

7、0ms=_500ms; end else begin Q1=Q1+1d1; Q2=Q2+1d1; Q3=Q3+1d1; Q4=Q4+1d1; end end endmodule计时模块: 秒计数:在1HZ脉冲下进行秒计时.当计时达到59秒后.在下一个脉冲来临变0.并发出一个脉冲信号.可供下面分钟计数作为输入脉冲信号计时。分钟计数:在输入脉冲下.分钟开始计时.当计时达到59后.在下一个脉冲来临变0.并发出一个脉冲.供小时计数的输入脉冲新号。小时计数:脉冲信号来临时.计数加1.达到23后在下一个脉冲的作用下清零.从新计时。如果有复位信号.则时分秒全部清零。module second;input c

8、p,reset,BT2;input3:0mode_flag;output co=1b0;reg co;output 3:0SL,SH;reg3:0SH,SL;reg7:0cnt;alwaysbeginif begin SL=4b0;SH=4b0;cnt=8b0;endelse if& begin SL=4b0;SH=4b0;cnt=8b0;endelsebegin if begin cnt=8d0; SH=4d0; SL=4d0; co=1b1; end else begin co=1b0; cnt=cnt+8d1; SL=cnt%10; SH=cnt/10; end end end endm

9、odule module minute ;input cp ,reset;output co=1b0;output 3:0ML,MH;reg3:0MH,ML;reg7:0cnt;reg co;alwaysbeginif begin ML=4b0;MH=4b0;cnt=8b0;endelsebegin if begin cnt=8d0; MH=4d0; ML=4d0; co=1b1; end else begin co=1b0; cnt=cnt+8d1; ML=cnt%10; MH=cnt/10; end end end endmodule module hour ;input cp,reset;output 3:0HL,HH;reg3:0HH,HL;reg7:0cnt;alwaysposedge cp or n

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号