预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共26页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

基于FPGA的Verilog-HDL数字 钟设计-- ————————————————————————————————作者: ————————————————————————————————日期: 基于FPGA的VerilogHDL数字钟设计 专业班级姓名学号 一、实验目的 1.掌握可编程逻辑器件的应用开发技术——设计输入、编译、仿真和器件编程; 2.熟悉一种EDA软件使用; 3.掌握Verilog设计方法; 4.掌握分模块分层次的设计方法; 5.用Verilog完成一个多功能数字钟设计; 6.学会FPGA的仿真。 二、实验要求 功能要求: 利用实验板设计实现一个能显示时分秒的多功能电子钟,基本功能: 1)准确计时,以数字形式显示时、分、秒,可通过按键选择当前显示时间范围模式; 2)计时时间范围00:00:00-23:59:59 3)可实现校正时间功能; 4)可通过实现时钟复位功能:00:00:00 扩展功能: 5)定时报:时间自定(不要求改变),闹1分钟(1kHz)---利用板上LED或外接电路实现。 6)仿广播电台正点报时:XX:59:[51,53,55,57(500Hz);59(1kHz)]---用板上LED或外接 7)报整点时数:XX:00:[00.5-XX.5](1kHz),自动、手动---用板上LED或外接 8)手动输入校时; 9)手动输入定时闹钟; 10)万年历; 11)其他扩展功能; 设计步骤与要求: 1)计算并说明采用Basys2实验板时钟50MHz实现系统功能的基本原理。 2)在XilinxISE13.1软件中,利用层次化方法,设计实现模一百计数及显示的电路系 统,设计模块间的连接调用关系,编写并输入所设计的源程序文件。 3)对源程序进行编译及仿真分析(注意合理设置,以便能够在验证逻辑的基础上尽快 得出仿真结果)。 4)输入管脚约束文件,对设计项目进行编译与逻辑综合,生成下载所需.bit文件。 5)在Basys2实验板上下载所生成的.bit文件,观察验证所设计的电路功能。 三、实验设计 功能说明:实现时钟,时间校时,闹铃定时,秒表计时等功能 1.时钟功能:完成分钟/小时的正确计数并显示;秒的显示用LED灯的闪烁做指示; 时钟利用4位数码管显示时分; 2.闹钟定时:实现定时提醒及定时报时,利用LED灯代替扬声器发出报时声音; 3.时钟校时:当认为时钟不准确时,可以分别对分钟和小时位的值进行调整; 4.秒表功能:利用4个数码管完成秒表显示:可以实现清零、暂停并记录时间等功能。 秒表利用4位数码管计数; 方案说明:本次设计由时钟模块和译码模块组成。时钟模块中50MHz的系统时钟clk分频产 生一个1Hz的使能控制信号enable,并以此产生1s的脉冲second_en以实现每秒计时,控 制各个模式下的计数显示。 由模式控制信号选择当前数码管显示哪个状态: mode=00,时钟常规显示状态, mode=01,闹铃定时状态, mode=10,时钟校时状态, mode=11,秒表计时状态; 时钟:利用count,smin0,smin1,shour0,shour1的计数来实现,具体情况见程序; 校时:当turn=1时,调整分位smin1、smin0;当turn=0时,调整小时位shour1、shour0; 闹铃:当turn=1时,调整分位amin1、amin0;当turn=0时,调整小时位ahour1、ahour0; 秒表:当pause=0时,开始计时;当pause=1时,暂停。 四、实验代码 时钟模块 moduleclock(clk, clr, pause, turn, mode, sec, min1, min0, hour1, hour0, alert, LD_alert ); inputclk;//时钟信号(50MHz) inputclr;//清零键 inputpause;//秒表暂停键 inputturn;//调整分还是小时位的控制 input[1:0]mode;//决定时钟显示功能状态 outputsec;//接发光二极管 output[3:0]min1;//用于输出接数码管4 output[3:0]min0;//用于输出接数码管3 output[3:0]hour1;//用于输出接数码管2 output[3:0]hour0;//用于输出接数码管1 outputalert;//接发光二极管,代替蜂鸣器 outputLD_alert;