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技术在电子信息 通信 自动控制及计算机应用领域的重要性日益提高。作为现在的大学生...