VHD语言数字时钟实验设计.docx

上传人:b****5 文档编号:4164616 上传时间:2022-11-28 格式:DOCX 页数:14 大小:248.96KB
下载 相关 举报
VHD语言数字时钟实验设计.docx_第1页
第1页 / 共14页
VHD语言数字时钟实验设计.docx_第2页
第2页 / 共14页
VHD语言数字时钟实验设计.docx_第3页
第3页 / 共14页
VHD语言数字时钟实验设计.docx_第4页
第4页 / 共14页
VHD语言数字时钟实验设计.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

VHD语言数字时钟实验设计.docx

《VHD语言数字时钟实验设计.docx》由会员分享,可在线阅读,更多相关《VHD语言数字时钟实验设计.docx(14页珍藏版)》请在冰豆网上搜索。

VHD语言数字时钟实验设计.docx

VHD语言数字时钟实验设计

河南农业大学

课程设计报告

 

设计题目:

VHD语言实现数字钟实验报告

学院:

理学院

专业:

电子信息科学与技术

学号:

08

班级:

07级电科

(2)班

姓名:

贾秋峰

电子邮件

日期:

2011年01月

成绩:

指导教师:

 

河南农业大学

理学院

课程设计任务书

学生姓名贾秋峰指导教师贾树恒林爱英

学生学号08专业电子信息科学与技术

题目VHD语言实现数字钟实验报告

任务与要求

一、设计实验说明:

1、数字时钟主要由:

分频器、扫描显示译码器、六十进制计数器(或十进制计数器与6进制计数器组成)、六十进制计数器(或十进制计数器与6进制计数器组成)、十二进制计数器(或二十四进制计数器)电路组成。

在整个时钟中最关键的是如何获得一个精确的1HZ计时脉冲,

2、数字时钟显示由时(12或24进制任选)、分(60进制)、秒(60进制)组成,利用扫描显示译码电路在六个数码管显示。

二、数字时钟组成及功能:

1、分频率器:

用来产生1HZ计时脉冲;

2、十二或二十四进制计数器:

对时进行计数

3、六十进制计数器:

对分和秒进行计数;

4、六进制计数器:

分别对秒十位和分十位进行计数;

5、十进制计数器:

分别对秒个位和分个位进行计数;

6、扫描显示译码器:

完成对7字段数码管显示的控制;

三、系统硬件要求:

1、时钟信号为5MHz;2、FPGA芯片型号EPM7128LC84—15、EP1K30TC144—3或EP1K100QC208—3(根据实验箱上FPGA芯片具体选择);3、8个7段扫描共阴级数码显示管;4、按键开关(清零、启动、保持);

四、硬件实现

将时序仿真正确的文件下载到实验箱中的EPM7128LC84—15、EP1K30TC144—3或EP1K100QC208—3中,通过合适的管脚分配,将相应的管脚连接起来,验证设计是否完成设计要求;

五、要求

1、精确显示时、分、秒。

2、数字时钟要求:

具有对时、分、秒置数功能(利用秒脉冲置数或利用拨码开关、键盘直接置数);3、能够完成整点报时功能。

(选作)

开始日期年月日完成日期年月日

课程设计所在单位理学院电子科学系

VHD语言实现数字钟实验报告

一.实验目的

在MAX+plusII软件平台上,熟练运用VHDL语言。

完成数字时钟设计的软件编程、编译、综合、仿真。

使用EDA实验箱,实现数字时钟的硬件功能。

了解数字时钟的攻击你工作原理。

学习掌握数字时钟的设计方法,会设计比较复杂的数值时钟系统。

二.设计要求

1、精确显示时、分、秒;数字时钟要求:

具有对时、分、秒置数功能(利用秒脉冲置数或利用拨码开关、键盘直接置数);能够完成整点报时功能。

(选作)

2、数字时钟主要由:

分频器、扫描显示译码器、六十进制计数器(或十进制计数器与6进制计数器组成)、六十进制计数器(或十进制计数器与6进制计数器组成)、十二进制计数器(或二十四进制计数器)电路组成。

在整个时钟中最关键的是如何获得一个精确的1HZ计时脉冲。

三、系统硬件要求

(1)、时钟信号为5MHz;

(2)、FPGA芯片型号EPM7128LC84—15、EP1K30TC144—3或EP1K100QC208—3(根据实验箱上FPGA芯片具体选择);

(3)、8个7段扫描共阴级数码显示管;

(4)、按键开关(清零、启动、保持);

四、实验原理

1、本实验运用VHD语言设计时钟计数器,理解其内部原理与模块设计

数字时钟组成及功能:

(1)、分频率器:

用来产生1HZ计时脉冲;

(2)、十二或二十四进制计数器:

对时进行计数

(3)、六十进制计数器:

对分和秒进行计数;

(4)、六进制计数器:

分别对秒十位和分十位进行计数;

(5)、十进制计数器:

分别对秒个位和分个位进行计数;

(6)、扫描显示译码器:

完成对7字段数码管显示的控制;

实验原理图如下:

图9-1()

2、CPLD设计过程

设计输入

数字钟

对4MHz时钟做4000000分频产生秒时钟,以秒时钟为时基做秒、分、时计数电路,将各计数值经7段译码在5只LED数码管上显示出来。

 

程序设计的顶层图如下:

 

五、实验步骤

1.单元电路设计

第一部分数字钟

(1)4MHz分频器gate4

通过编程实现,设晶振产生的信号为4MHz,要求输出1Hz时钟信号,则分频

数为4M,需要22位计数器。

用VHD语言设计的文本文件如下:

libraryieee;

usegate4is

port(

CLK:

instd_logic;

sgate:

outstd_logic;

slock:

outstd_logic

);

endgate4;

architecturearc_gate4ofgate4is

signalcount:

std_logic_vector(21downto0);

signaloc:

std_logic;

begin

process

begin

waituntilclk'eventandclk='1';

if(count<3999999)then

count<=count+1;

oc<='0';

else

count<=(others=>'0');

oc<='1';

endif;

endprocess;

slock<=oc;

process

begin

waituntilclk'eventandclk='1';

sgate<=oc;

endprocess;

endarchitecturearc_gate4;

其仿真波形如下:

形成符号如下:

(2)分·秒计时m60采用VHD语言十进制设计的文本文件如下:

libraryieee;

usem60is

port(

CLK:

instd_logic;

CR:

instd_logic;

EN:

instd_logic;

QL:

outstd_logic_vector(3downto0);

QH:

outstd_logic_vector(3downto0);

OC:

outstd_logic

);

endm60;

architecturebehavofm60is

signalcouL:

std_logic_vector(3downto0);

signalcouH:

std_logic_vector(3downto0);

begin

process(CLK,CR,EN)

begin

ifCR='0'then

couL<="0000";

couH<="0000";

elsifclk'eventandclk='1'then

ifEN='1'then

if(couL=9andcouH=5)then

couL<="0000";

couH<="0000";

elsifcouL=9then

couL<="0000";

couH<=couH+1;

else

couL<=couL+1;

endif;

endif;

endif;

endprocess;

process(couL,couH)

begin

if(couL=9andcouH=5)then

OC<='1';

else

OC<='0';

endif;

endprocess;

QL<=couL;

QH<=couH;

endarchitecturebehav;

其仿真波形如下:

形成符号如下:

(3)时计时counter12同样是采用VHD语言二进制设计的文本文件如下:

libraryieee;

usecounter12is

port(

CLK:

instd_logic;

EN:

instd_logic;

CR:

instd_logic;

Q:

outstd_logic_vector(3downto0);

OC:

outstd_logic

);

endcounter12;

architecturearc_counter12ofcounter12is

signalcount:

std_logic_vector(3downto0);

begin

process(CR,CLK,EN)

begin

ifCR='0'then

count<=(others=>'0');

elsifclk'eventandclk='1'then

ifEN='1'andcount<11then

count<=count+1;

elsifEN='1'andcount=11then

count<="0000";

endif;

endif;

endprocess;

process(count)

begin

ifcount=11then

OC<='1';

else

OC<='0';

endif;

endprocess;

Q<=count;

endarchitecturearc_counter12;

其仿真波形如下:

形成符号如下

(4)7段译码器seg_7

用VHD语言文本输入法设计的7段译码器如下:

libraryieee;

useseg_7is

port(dat:

instd_logic_vector(3downto0);

a,b,c,d,e,f,g:

outstd_logic);

endseg_7;

architecturearcofseg_7is

signaltmp:

std_logic_vector(6downto0);

begin

process(dat)

begin

casedatis

when"0000"=>tmp<="0000001";

when"0001"=>tmp<="1001111";

when"0010"=>tmp<="0010010";

when"0011"=>tmp<="0000110";

when"0100"=>tmp<="1001100";

when"0101"=>tmp<="0100100";

when"0110"=>tmp<="0100000";

when"0111"=>tmp<="0001111";

when"1000"=>tmp<="0000000";

when"1001"=>tmp<="0000100";

when"1010"=>tmp<="0001000";

when"1011"=>tmp<="1100000";

when"1100"=>tmp<="0110001";

when"1101"=>tmp<="1000010";

when"1110"=>tmp<="0110000";

when"1111"=>tmp<="0111000";

whenothers=>null;

endcase;

endprocess;

a<=tmp(6);

b<=tmp(5);

c<=tmp(4);

d<=tmp(3);

e<=tmp

(2);

f<=tmp

(1);

g<=tmp(0);

endarc;

生成图形如下:

2.编译

单元电路单个编译,对应的文件为MAX+plus中的

4M分频

分·秒计时

时计时

7段译码器

编译通过。

3.仿真形成符号

都通过编译的单元电路,仿真生成对应的仿真文件为:

4M分频

分·秒计时

时计时

7段译码器

并且建立符号,符号名称即为相应的文件名称

建立核心模块:

仿真如下:

5.选好器件,锁定引脚

新建gdf格式文件,选定之前弄好的器件,搭接好电路图为:

根据下列表格锁定管脚,如上图的红色字体表示已锁定管脚。

表1

管脚

LED

a

b

c

d

e

f

g

秒个位

60

61

63

64

65

67

68

秒十位

69

70

73

74

75

76

77

分个位

79

80

81

4

5

6

8

分十位

9

10

11

12

15

16

17

小时个位

18

20

21

22

24

25

27

表2

状态指示

O1

O2

O3

O4

O5

O6

O7

O8

管脚

50

51

52

54

55

56

57

58

6.下载

编译通过后,选OPTIONS/SELECTDEVICE/MAX7000S/epm7128slc84-6.再选OPTIONS/HARDWARESETUP/ByteBlaster(MV)在点击PROGRAM下载到实验板上成功。

得到数字钟从59秒进1分,59分进1小时,并且基本没有时差。

7、调试排除故障

在建立单元单元电路时基本没有出现故障。

但在弄中心模块时,发现仿真出错。

把counter12模块的CLK接了M60的的同一触发信号。

后来询问同学知道时计数的时钟信号需由分秒计数的输出进位给定。

六、实验总结和心得体会

此次实验,通过用MAX+PLUS2运行环境编译,在由电路完成数字钟变成全由VHD语言实现数字钟中。

逐渐熟悉及了解MAX+PLUS2运行环境。

做到每个程序编译仿真正确。

及掌握了整个单元VHD语言设计,编译,仿真,下载的全过程。

在这次实验过程中我深刻体会到这门学问的重要性,也知道自己所学的现有知识远远不够实验的需要。

开始试验的时候感觉很吃力,因为原来没有认真系统的学习这门课程的缘故,很多东西都似懂非懂的,还常常出错。

后来经过老师的认真讲解和我们自己不断编程和仿真,我们逐渐的开始了解这门课程,满满就开始对它有了兴趣。

然后再兴趣的驱使下,我们不断学习不断深入,最总学到了很多,也完成了老师交给的任务,取得了一些实验成果。

在虽然在实验设计和实现过程中出现很多困难和不解的问题,但在老师的悉心指导和认真讲解下,我们收获很多并且顺利的完成了实验。

这次实验更加坚定了我学好这门课程的信心,我会继续努力地!

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

当前位置:首页 > 小学教育 > 数学

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

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