用Verilog语言编写的多功能数字钟 下载本文

内容发布更新时间 : 2024/5/20 17:08:23星期一 下面是文章的全部内容请认真阅读。

1

专业班级: 姓 名: 学 号: 设计日期:

《数字电子技术课程设计》报告

一. 设计题目

多功能数字钟电路设计 二. 设计任务及要求

多功能数字钟应该具有的功能有:显示时—分—秒、整点报时、小时和分钟可调等基本功能。整个钟表的工作应该是在1Hz信号的作用下进行,这样每来一个时钟信号,秒增加1秒,当秒从59秒跳转到00秒时,分钟增加1分,同时当分钟从59分跳转到00分时,小时增加1小时,小时的范围为0~23时。

在实验中为了显示的方便,由于分钟和秒钟显示的范围都是从0~59,所以可以用一个3位的二进制码显示十位,用一个四位的二进制码(BCD码)显示个位,对于小时因为他的范围是从0~23,所以可以用一个2位的二进制码显示十位,用一个4位的二进制码(BCD码)显示个位。

实验中由于七段码管是扫描的方式 显示,所以虽然时钟需要的是1Hz时钟信号,但是扫描需要一个比较高频率的信号,因此为了得到准确的1Hz信号,必须对输入的系统时钟50Mhz进行分频。

对于整点报时功能,本实验设计的是当进行正点的倒计时5秒时,让LED来闪烁进行整点报时的提示。

调整时间的按键用按键模块的S1和S2,S1调节小时,每按下一次,小时增加一个小时;S2调整分钟,每按下一次,分钟增加一分钟。另外用S8按键作为系统时钟复位,复位后全部显示00—00—00。

管脚分配如下表:

2

端口名 S1 S2 RST LED LEDAG0 LEDAG1 LEDAG2 LEDAG3 LEDAG4 LEDAG5 LEDAG6 SEL0 SEL1 SEL2 CP

使用模块信号 按键开关S1 按键开关S2 按键开关S8 LED模块D1 数码管模块A段 数码管模块B段 数码管模块C段 数码管模块D段 数码管模块E段 数码管模块F段 数码管模块G段 数码管选择位1 数码管选择位2 数码管选择位3 脉冲源 对应FPGA管脚 R16 P14 M15 L14 N4 G4 H4 L5 L4 K4 K5 M4 F3 F4 J3 说明 调整小时 调整分钟 复位 整点倒计时 时间显示 8个数码管的选择位 50Mhz脉冲 三.基于Verilog HDL语言的电路设计、仿真与综合 (一)顶层模块

本程序采用结构化设计方法,将其分为彼此独立又有一定联系的三个模块,如图1所示:

3

fenpinCPINPUTVCCCPCPoutOptionValueLocationPIN_J3inst1xianshiCPoutHour[5..0]kongzhiqiCPoutS1SEL[2..0]LEDAG[6..0]OUTPUTOUTPUTSEL[2..0]LEDAG[6..0]Minute[5..0]Hour[5..0]Minute[5..0]Second[5..0]LEDOUTPUTSecond[5..0]OptionValueLocationOptionPIN_R16ValueLocationPIN_P14S2RETINPUTVCCINPUTVCCINPUTVCCS1S2RETinstLEDinst2OptionValueLocationPIN_L14OptionValueLocationOptionPIN_M4ValueLocationLocationPIN_F3PIN_N4LocationLocationPIN_F4PIN_G4LocationPIN_H4LocationPIN_L5LocationPIN_L4LocationPIN_K4LocationPIN_K5 图1:顶层结构框图

(二)子模块 1.分频器

分频器的作用是对50Mhz的系统时钟信号进行分频,得到频率为1000hz的信号,作为显示器的输入信号。

fenpinCPINPUTVCCCPCPoutOUTPUTCPoutinst1

源程序如下:

module fenpin(input CP,output CPout );

reg CPout;

reg [31:0] Cout; reg CP_En;

always @(posedge CP ) //将50MHz分频为1kHz begin Cout <= (Cout == 32'd50000) ? 32'd0 : (Cout + 32'd1); CP_En <= (Cout == 32'd50000) ? 1'd1 : 1'd0; CPout <= CP_En; end endmodule

功能仿真波形如图2所示(以五分频为例):

4