EDA课程设计 时钟

发布 2022-09-30 21:28:28 阅读 9953

eda课程设计。姓名: 王亮。

学号:2012118064

班级:1211自动化。

多功能数字钟电路设计。

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

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

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

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

三.基于verilog hdl语言的电路设计、**与综合。

一)顶层模块。

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

图1:顶层结构框图。

二)子模块

1.分频器。

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

源程序如下:

module fenpin(input cp, output cpout

reg cpout;

reg [31:0] cout;

reg cp_en;

always @(posedge cp将50mhz分频为1khz

begincout <=cout ==32'd50000) ?32'd0 : cout + 32'd1);

cp_en <=cout ==32'd50000) ?1'd1 : 1'd0;

cpout <=cp_en;

endendmodule

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

2.控制器和计数器。

控制器的作用是,调整小时和分钟的值,并能实现清零功能。计数器的作用是实现分钟和秒钟满60进1,小时则由23跳到00。当到达59分55秒的时候,led灯会闪烁来进行报时。

因为控制器和计数器的驱动信号频率均为1hz,故从分频器输出的信号进入控制器后,要进行二次分频,由1khz变为1hz。

源程序如下:

module kongzhiqi( cpout,s1,s2,ret,hour,minute,second,led );

input cpout,s1,s2,ret;

output [5:0] hour;

output [5:0] minute;

output [5:0] second;

output led;

reg [5:0] hour;

reg [5:0] minute;

reg [5:0] second;

reg r1;

reg r2,r8,led;

reg [10:0] cout;

reg clk_en;

always@(posedge cpout)

beginif(s1==0)

beginr1=1;

endif(s2==0)

beginr2=1;

endif(ret==0)

beginr8=1;

endcout=(cout==32'd1000)?32'd0:(cout + 32'd1);

clk_en=(cout==32'd1000)?1'd1:1'd0;

if(minute==60)

beginminute=0;

if(hour<24)

hour=hour+1;

if(hour==24)

beginhour=0;

endend

endif((minute==59)&&second>55))

beginif(led==1)

led=0;

else功能**波形如图3所示:

3.显示器。

显示器的作用是将时—分—秒的值在数码管上依次显示出来。从分频器输出的1khz的信号作为数码管的扫描信号。sel 表示三个数码管选择位,它的取值表示八个数码管,从左至右依次是111~000。

ledga表示七段数码管,它的取值决定特定位数上显示的数字。

源程序如下:

module xianshi( cpout,hour,minute,second,sel,ledag );

input cpout;

input hour,minute, second;

output sel,ledag;

reg [2:0] sel;

reg [6:0] led;

reg [3:0] shi1,ge1,shi2,ge2,shi3,ge3;

always @(posedge cpout )

beginshiwei1=hour/10;

gewei1=hour%10;

shiwei2=minute/10;

gewei2=minute%10;

shiwei3=second/10;

gewei3=second%10;

if(sel==3'b110

case(shiwei1)

4'b0000: led = 7'b0111_111;

4'b0001: led = 7'b0000_110;

4'b0010: led = 7'b1011_011;

4'b0011: led = 7'b1001_111;

4'b0100: led = 7'b1100_110;

4'b0101: led = 7'b1101_101;

4'b0110: led = 7'b1111_101;

4'b0111: led = 7'b0000_111;

4'b1000: led = 7'b1111_111;

4'b1001: led = 7'b1101_111;

default: led = 7'b0000_000;

endcase

if(sel==3'b101)

case(gewei1)

4'b0101: led = 7'b1101_101;

4'b0110: led = 7'b1111_101;

4'b0111: led = 7'b0000_111;

4'b1000: led = 7'b1111_111;

4'b1001: led = 7'b1101_111;

default: led = 7'b0000_000;

endcase

if(sel==3'b010)

case(gewei2)

4'b0000: led = 7'b0111_111;

4'b0001: led = 7'b0000_110;

4'b0010: led = 7'b1011_011;

4'b0011: led = 7'b1001_111;

4'b0100: led = 7'b1100_110;

4'b0101: led = 7'b1101_101;

4'b0110: led = 7'b1111_101;

4'b0111: led = 7'b0000_111;

4'b1000: led = 7'b1111_111;

4'b1001: led = 7'b1101_111;

default: led = 7'b0000_000;

endcase

if(sel==3'b001)

led=7'b1000_000;

if(sel==3'b000)

case(shiwei3)

4'b0000: led = 7'b0111_111;

4'b0001: led = 7'b0000_110;

4'b0010: led = 7'b1011_011;

4'b0011: led = 7'b1001_111;

4'b0100: led = 7'b1100_110;

4'b0101: led = 7'b1101_101;

MATLAB课程设计时钟

matlab制作时钟。关键字 matlab 时钟 界面。引言 matlab制作时钟。摘要 matlab是一款强大的 应用广泛的软件,本文主要利用matlab的相关编程来设计实现时钟界面显示效果。关键字 matlab 时钟 界面。引言 matlab是矩阵实验室 matrix laboratory 的简...

EDA数字时钟课程设计

一 课程设计的背景与目的。全面熟悉 掌握vhdl语言基本知识,掌握利用vhdl语言对常用的的组合逻辑电路和时序逻辑电路编程,把编程和实际结合起来,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用设计综合电路的能力,养成提供文档资料的习惯和规范编程的思想。1 ed...

EDA课程设计 数字时钟

hefei university eda课程综述。题目 eda课程综述 专业 09通信 2 班 姓名唐吉祥。学号 0905072035 指导老师查长军。前言。随着基于pld的eda技术的发展和应用领域的扩大和深入,eda技术在电子信息 通信 自动控制及计算机应用领域的重要性日益提高。作为现在的大学生...