基于VHDL的数字秒表设计文档格式.doc

上传人:b****1 文档编号:13198667 上传时间:2022-10-08 格式:DOC 页数:12 大小:300KB
下载 相关 举报
基于VHDL的数字秒表设计文档格式.doc_第1页
第1页 / 共12页
基于VHDL的数字秒表设计文档格式.doc_第2页
第2页 / 共12页
基于VHDL的数字秒表设计文档格式.doc_第3页
第3页 / 共12页
基于VHDL的数字秒表设计文档格式.doc_第4页
第4页 / 共12页
基于VHDL的数字秒表设计文档格式.doc_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

基于VHDL的数字秒表设计文档格式.doc

《基于VHDL的数字秒表设计文档格式.doc》由会员分享,可在线阅读,更多相关《基于VHDL的数字秒表设计文档格式.doc(12页珍藏版)》请在冰豆网上搜索。

基于VHDL的数字秒表设计文档格式.doc

…………………………装………………………………订………………………………线………………………………………………………………

河南农业大学

理学院

课程设计任务书

学生姓名指导教师

学生学号专业班级

题目基于VHDL的数字秒表设计

任务与要求

设计一个数字秒表,主要由显示译码器、分频器、十进制计数器、六进制计数器组成。

在整个秒表中最关键的是如何获得一个精确的100HZ计时脉冲,除此之外,整个秒表还需有一个启动信号和一个归零信号,以便秒表能随意停止及启动。

秒表共有6个输出显示,分别为百分之一秒、十分之一秒、秒、十秒、分、十分,所以共有6个计数器与之相对应,6个计数器的输出全都为BCD码输出,这样便于和显示译码器的连接。

合作人:

分工方案:

开始日期2012年12月3日完成日期2012年月9日

课程设计所在地点

一、数字闹钟设计要求:

1.四个十进制计数器:

分别用来对百分之一秒、十分之一秒、秒和分进行计数;

2.两个六进制计数器:

用来分别对十秒和十分进行计数;

3.分频器;

用来产生100Hz计时脉冲;

4.显示译码器:

完成对显示译码的控制。

3、能够完成清零、启动、保持(可以使用键盘或拨码开关置数)功能。

4、时、分、秒、百分之一秒显示准确。

二、实验目的:

1、初步了解可编程逻辑器件(PLD)的基本原理;

2、熟练掌握MAX+PlusⅡ图形编辑器、文本编辑器等不同的输入设计方法,掌握EDA的自顶向下(ToptoDown)的模块化设计思想;

3、了解VHDL语言的语法、句法及结构,能看懂VHDl语言编写的程序,并能熟练运用MAX+PlusⅡ软件对各个程序模块进行波形仿真;

4、熟悉顶层电路的原理图输入法,能应用EDA设计思想进行较复杂系统的分析和设计。

三、设计方案:

按照EDA自顶向下的设计理念,该数字秒表可以分为分频器模块、计数器模块、数据选择和数码管选择模块模块、数码管驱动模块,其顶层电路如下图所示。

四、各个模块的功能:

1、分频器模块:

将2.5MHz的时钟信号转换成100Hz的计时脉冲,使秒表正常工作;

2、计数器模块:

这是本秒表设计的基本功能,对时间进行计数并在显示屏显示当前时间,这个模块中,分别有十进制计数器和六进制计数器,共用四个十进制,分别表示数字秒表的百分之一秒、十分之一秒、秒和分,两个六进制,分别表示数字秒表的十秒和十分;

3、数据选择和数码管选择模块:

通过每个计数器输入的dain信号对数码管进行选择,

4、数码管驱动模块:

通过对输入的信号进行编码,完成对7段数码管的驱动,使数码管显示出对应的数字;

五、系统的各组成部分的原理框图及功能

1、分频器的原理框图:

2、六进制计数器的原理框图:

3、十进制计数器的原理框图:

4、选择模块的原理框图:

5、译码显示电路的原理框图:

其中各部分功能如下:

1、分频器将2.5MHz脉冲变成100Hz。

2、六进制计数器能够实现6进制循环计数。

3、十进制计数器能够实现10进制循环计数。

4、选择模块通过每个计数器输入的dain信号对数码管进行选择

5、译码显示电路通过对输入的信号进行编码,完成对7段数码管的驱动,使数码管显示出对应的数字。

六、系统的主要模块VHDL源程序:

1、分频器源程序clkgen:

libraryieee;

useieee.std_logic_1164.all;

entityclkgenis

port(clk:

instd_logic;

newclk:

outstd_logic);

endentityclkgen;

architectureartofclkgenis

signalcnter:

integerrange0to10#24999#;

begin

process(clk)is

begin

ifclk'

eventandclk='

1'

then

ifcnter=10#24999#thencnter<

=0;

elsecnter<

=cnter+1;

endif;

endif;

endprocess;

process(cnter)is

ifcnter=10#24999#thennewclk<

='

;

elsenewclk<

0'

endarchitectureart;

2、六进制计数器源程序count6:

useieee.std_logic_unsigned.all;

entitycount6is

port(clk,clr,start:

daout:

outstd_logic_vector(3downto0);

cout:

bufferstd_logic);

endcount6;

architecturebehaveofcount6is

signaltemp:

std_logic_vector(3downto0);

process(clk,clr)

begin

ifclr='

thentemp<

="

0000"

cout<

elsifclk'

then

ifstart='

iftemp="

0101"

elsetemp<

=temp+1;

cout<

endif;

elsifstart='

thentemp<

=temp;

=cout;

endif;

endprocess;

daout<

=temp;

endbehave;

3、十进制计数器源程序count10:

entitycount10is

endcount10;

architecturebehaveofcount10is

ifclr='

elsifclk'

ifstart='

1001"

=temp+1;

cout<

elsifstart='

endif;

endprocess;

4、数据选择和数码管选择模块模块源程序seltime:

USEieee.std_logic_UNSIGNED.all;

entityseltimeis

 

port(clr,clk:

instd_logic;

dain0,dain1,dain2,dain3,dain4,dain5:

instd_logic_vector(3downto0);

sel:

outstd_logic_vector(2downto0);

daout:

outstd_logic_vector(3downto0));

endseltime;

architectureaofseltimeis

signaltemp:

integerrange0to5;

process(clk)

begin

if(clr='

)then

daout<

sel<

000"

temp<

elsif(clk='

andclk'

event)then 

iftemp=5thentemp<

elsetemp<

=temp+1;

endif;

casetempis

when0=>

sel<

=dain0;

when1=>

001"

=dain1;

when2=>

010"

=dain2;

when3=>

011"

=dain3;

when4=>

100"

=dain4;

when5=>

101"

=dain5;

endcase;

endprocess;

enda;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 文化宗教

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1