当前位置:首页 > 范文大全 > 整改报告 >

整改报告

基于VHDL万年历设计(EDA实验报告)

2021-10-28 13:14:13整改报告
基于VHDL的万年历设计(EDA实验报告)本文关键词:万年历,实验,报告,设计,VHDL基于VHDL

基于VHDL的万年历设计(EDA实验报告) 本文关键词:万年历,实验,报告,设计,VHDL

基于VHDL的万年历设计(EDA实验报告) 本文简介:基于VHDL万年历设计《EDA技术实用教程》基于VHDL的万年历设计(EDA实验报告)学校:苏州大学院部:电子信息学院年级:2010级专业:通信工程姓名:王国盛2012年12月28日前言本设计为实现一个多功能的万年历,具有年、月、日、时、分、秒计时并显示的功能,顾名思义,其满量程计时为一万年;具有校

基于VHDL的万年历设计(EDA实验报告) 本文内容:

基于VHDL万年历设计

《EDA技术实用教程》

VHDL

(EDA实验报告)

校:

苏州大学

部:

电子信息学院

级:

2010级

业:

通信工程

名:

王国盛

2012年12月28日

前言

本设计为实现一个多功能的万年历,具有年、月、日、时、分、秒计时并显示的功能,顾名思义,其满量程计时为一万年;具有校对功能,能够对初始的时间进行人为的设定。

本设计采用EDA技术,以硬件描述语言VHDL为系统逻辑描述手段设计具有万年历功能的硬件电路,在QuartusII软件设计环境下,采用自顶向下的设计思路,分别对各个基础模块进行创建,通过各个基础模块的组合和连接来构建上层原理图,完成基于VHDL万年历设计。

系统目标芯片采用EP1K30TC144-3,由时钟模块、控制模块、计时模块、数据译码模块、显示模块组成。经编译和仿真所设计的程序,在可编程逻辑器件上下载验证,将硬件编写程序下载到试验箱上,选择模式3进行功能验证。本系统能够完成年、月、日和时、分、秒的分别显示,由按键输入进行万年历的校时功能。

目录

1

实验概述4

1.1

EDA技术4

1.2

QuartusII的使用4

1.3

模块化设计4

1.4

分析、解决问题4

2

实验内容与要求5

2.1实验内容5

2.1实验说明5

2.3实验要求6

3

实验原理7

3.1设计思想7

3.2设计原理图8

3.3工作工程9

4

实验结果10

4.1VHDL程序与仿真10

4.1.1秒和分模块10

4.1.2小时模块11

4.1.3日(天)模块12

4.1.4月份模块15

4.1.5年模块17

4.1.6校时模块19

4.1.7显示模式切换模块21

4.2顶层设计与仿真23

4.3下载与验证25

4.3.1电路结构选择25

4.3.2端口配置26

4.3.3实际电路验证29

5

实验小结30

参考文献31

1

、实验概述

1.1

EDA技术

EDA(Electronic

Design

Automation),即电子设计自动化,是指利用计算机完成电子系统的设计。它的主要特征及核心是“自顶向下”的设计方法,这种设计方法首先从系统设计入手,在顶层进行功能方框图的划分和结构设计。在方框图一级进行仿真、纠错,并用硬件描述语言对高层次的系统行为进行描述,在系统一级进行验证。然后用综合优化工具生成具体门电路的网表。由于设计的主要仿真和调试过程是在高层次上完成的,这不仅有利于早期发现结构设计上的错误,避免设计工作的浪费,而且也减少了逻辑功能仿真的工作量,提高了设计的一次成功率。

1.2

QuartusII的使用

通过实验,熟悉并掌握QuartusII软件的使用,熟悉该软件工具的环境。除了学习利用VHDL语言编写程序实现硬件电路以外,还要熟练的使用原理图输入的方法进行硬件设计,具体是对每个模块形成一个功能元件,通过元件的连接来实现系统的功能,而不是通过VHDL语言的元件例化程序来完成,不仅提高了效率,而且思想原理也更加的清晰。

1.3

模块化设计

掌握年、月、日、时、分、秒以及控制部分的各功能模块程序设计的原理,进而理解万年历的设计原理,学习并理解模块化设计的方法与思想。用VHDL语言编写各模块程序,进一步了解和掌握各个程序语言,知道编程中的注意事项,提高编程的熟练程度。

1.4

分析、解决问题

通过本实验设计,理论联系实际,巩固所学理论知识,并且提高自己通过所学理论分析、解决实际问题的能力。进一步加深对VHDL设计的了解与认识,体会EDA的巨大作用,了解进行硬件系统设计的整个流程,对生活工作中的电气设备有了更深一层次的了解,对电气工程专业有了更多兴趣。

2、实验内容与要求

2.1实验内容

设计具有如下功能的万年历:

1)能进行正常的年、月、日和时、分、秒的日期和时间计时功能,按键KEY1用来进行模式切换,当KEY1=1时,显示年、月、日;当KEY1=0时,显示时、分、

秒。

2)能利用实验系统上的按键实现年、月、日和时、分、秒的校对功能。

3)用层次化设计方法设计该电路,编写各个功能模块的程序。

4)仿真报时功能,通过观察有关波形确认电路设计是否正确。

5)完成电路设计后,用实验系统下载验证设计的正确性。

2.2实验说明

万年历的设计思路与多功能时钟的设计思路相似。多功能时钟的各功能模块及相互之间的连接如下图1所示

图1多功能时钟系统原理框图

年、月、日和时、分、秒的显示格式如图2所示。年、月、日同时显示,时、分、秒同时显示,通过显示模式切换来分别显示。

年/时

月/分

日/秒

图2万年历显示格式

2.3实验报告要求

1)分析系统的工作原理。

2)画出顶层原理图,写出顶层文件源程序。

3)写出各功能模块的源程序。

4)仿真各功能模块,画出仿真波形。

5)书写实验报告应结构合理,层次分明。

3、实验原理

3.1设计思想

按照模块化的设计思想,要实现万年历的基础功能,必定要包含年、月、日和时、分、秒的功能模块,其中秒和分可以用六十进制计数器来实现,时用二十四进制计数器实现,月用十二进制计数器来实现,年的低两位和高两位都是一百进制计数器,比较特殊的是天的计数器,因为它有四种情况,大月三十一天,小月三十天,平年二月二十八天,闰年二月有二十九天,所以年和月的模块对天的计数都有影响,需要从年和月的输出端引出控制信号来控制天的计数。同时每个计数器都有显示输出端和进位输出端,同时低级别(如秒)的进位输出要给较高级别(如分)的时钟输入端,以此类推,采用串行工作方式进行连接。从而完成了基础的计时和显示的功能。

再按照由基础功能到增强功能的设计思路,要实现校时功能,要在之前电路的基础之上增加一个校时控制模块,增加两个按键来实现控制,按键1来选择校对哪一个模块,按键2选择校对到何值——检测到按键2的一个上升沿,对应的计数器加1。除此之外还需要有显示模式的切换的功能,需要增加一个模式切换的控制模块,通过增加一个按键3来实现控制,是显示年月日还是时分秒。

3.2实验原理图

万年历时分秒部分的原理图如下图所示,年月日部分与之同理,通过控制可以进行切换。

译码驱动

译码驱动

译码驱动

译码驱动

译码驱动

译码驱动

时十位

计数

时个位

计数

分十位

计数

分个位

计数

秒十位

计数

秒个位

计数

校时控制电路

校分控制电路

分频器电路

分频器电路

晶体振荡器电路

1HZ

图3万年历实验原理图

图4万年历实验结构框图

图5万年历实验结构局部图

原理图说明:

如图4、5所示,K1键是选择万年历工作的模式,K2键提供上升沿(时钟功能)来使各计数模块加一,从而实现校时的功能。LED灯起指示作用。

模式0:正常计时显示

--K1不按,LED1到LED5都不亮

模式1:调整分增加

--K1按下一次,LED1亮其余四个不亮

模式2:调整时增加

--

K1按下两次,LED2亮其余四个不亮

模式3:调整日增加

--

K1按下三次,LED3亮其余四个不亮

模式4:调整月增加

--

K1按下四次,LED4亮其余四个不亮

模式5:调整年增加

--

K1按下五次,LED5亮其余四个不亮

CLK是外部1Hz输入时钟,作为秒的时钟输入,驱动整个万年历工作运行。

K3键是显示模式的选择,显示时分秒时,LEDSHUCHUMOSHI指示灯亮,显示年月日时,LEDSHUCHUMOSHI指示灯灭。

3.3工作过程

当1Hz时钟信号从CLK输入端输入时,K1,K2,K3都没有按下时,系统从零(闰年)开始处于正常的计时模式,显示时分秒部分,LEDSHUCHUMOSHI指示灯亮。低位计满归零并且向高位进1,如果月份是二月,则天计满29就向月进1。如果按下按键3,LEDSHUCHUMOSHI指示灯不亮,显示年月日部分。如果此时按一下按键1,那么万年历停止计时,工作于模式1,再通过按键2对分进行校时,通过同样的方法可以对时、日、月、年进行校时。当校时完毕,需要万年历重新计时工作时,通过按下键1使LED1到LED5都不亮时,系统工作与正常计时模式。

4、实验结果

4.1VHDL程序与仿真

4.1.1秒与分模块

秒与分模块为六十进制的计数器

源程序:

LIBRARY

IEEE;

USE

IEEE.STD_LOGIC_1164.ALL;

USE

IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY

CNT60

IS

PORT(CLK:IN

STD_LOGIC;

Q1,Q2:OUT

STD_LOGIC_VECTOR(3

DOWNTO

0);

COUT:OUT

STD_LOGIC);

END

CNT60;

ARCHITECTURE

ONE

OF

CNT60

IS

SIGNAL

Q11,Q22:STD_LOGIC_VECTOR(3

DOWNTO

0);

BEGIN

PROCESS(CLK)

BEGIN

IF

CLK

EVENT

AND

CLK=

1

THEN

Q11

0

);

Q22

0

);

Q22

0

);

CQ4IF

CQ3=“0001“AND

CQ4=“0011“--判断信号为00时为31进

THEN

CQ3IF

CQ3=“0000“AND

CQ4=“0011“--判断信号为01时为30进

THEN

CQ3IF

CQ3=“1000“AND

CQ4=“0010“--判断信号为10时为28进

THEN

CQ3IF

CQ3=“1001“AND

CQ4=“0010“--判断信号为11时为29进

THEN

CQ3NULL;

END

CASE;

END

IF;

CQ1panif

run=

1

then

panpanpanpanpanpanpanpanpanpanpanNULL;

END

CASE;

cq1

0

);

Q2

0

);

RUNFOFOFOFOFOFONULL;

END

CASE;

END

PROCESS;

END;

仿真结果:

图15

校时模块仿真图

图16

校时模块仿真图

如图15、16,按键K1,K2能够完成万年历工作模式的选择与调时校对的功能,满足系统的设计要求,设计正确。

4.1.7显示模式切换模块

显示模式切换模块完成显示年月日和显示时分秒的相互切换,设置一个按键K3对其进行控制,通过检测按键的上升沿,对显示模式进行轮流切换。

源程序:

LIBRARY

IEEE;

USE

IEEE.STD_LOGIC_1164.ALL;

USE

IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY

CONTROL

IS

PORT(SL,SH,FL,FH,HL,HH,DL,DH,ML,MH,YL,YH,Y1L,Y1H:IN

STD_LOGIC_VECTOR(3

DOWNTO

0);

K1:IN

STD_LOGIC;

led:OUT

STD_LOGIC;

Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8:OUT

STD_LOGIC_VECTOR(3

DOWNTO

0));

END

CONTROL;

ARCHITECTURE

ONE

OF

CONTROL

IS

SIGNAL

W:STD_LOGIC_VECTOR(1

DOWNTO

0);

BEGIN

PROCESS(K1)

BEGIN

IF

K1

EVENT

AND

K1=

1

THEN

W

Q8

Q8NULL;

END

CASE;

END

PROCESS;

END;

仿真结果:

如图16所示,当按键K1没有按下时Q1到Q6显示的是年月日部分,此时的指示灯LED为零(不亮),当按键K1按下一次,检测到一次上升沿,Q1到Q6显示的是时分秒部分,此时的指示灯LED为1(亮),当K1键再次按下时,上升沿一到,显示年月日,这样通过按键K1可以实现显示模式的切换。设计符合系统的要求,设计正确。

图17

显示模块仿真图

4.2顶层设计与仿真

顶层设计采样原理图输入方法,用以上的各模块的VHDL源程序分别生成元器件,在此基础上用“导线”对元器件进行连接,搭建原理图,完成系统的顶层设计,而不是利用元件例化程序去设计。对于较为复杂的系统而言,采用原理图输入的设计方法思路更加清晰,设计更加直观。

顶层原理图的设计框架如图4所示,有年、月、日、时、分、秒计时模块,调时校对模块,显示模式切换模块,并且由以上讨论知万年历一共有六种工作模式。

仿真结果:

如图18所示,此时万年历工作于模式0,属于正常的计时状态,当低位计满时向高位进1,通过键K3,可以对显示模式进行切换,从显示时分秒转换到显示年月日,正确的实现了系统的计时功能。

图18

万年历仿真图

图19

万年历仿真图

图20

万年历仿真图

如图19、20所示,通过按键K1可以进行工作模式的选择,按键K2进行数值的校对设定,按键K3进行显示模式的切换,与设计的要求相符合。综上所述,整个系统设计正确,万年历能够正确的实现功能。

4.3下载验证

4.3.1电路结构选择

程序、原理图仿真正确后,下一步通过把顶层原理图输入的设计程序下载到试验箱中的实际芯片中,完成硬件电路的设计搭建并验证其功能。输入的顶层原理图如图4所示。目标芯片选择EP1K30TC144-3,实验箱中的电路结构选择模式NO.3,如图21所示,其本身附带了显示译码的功能,无需在程序、原理图中设计七段显示译码的模块就可以在数码管中进行显示,同时配置有8个按键输入端。

图21

实验电路结构图No.3

4.3.2端口配置

将顶层原理图中输入输出端引脚与试验箱中的输入输出引脚进行匹配,才可以进行下载验证。

表1

GW48CK/GK/EK/PK2

系统万能接插口与结构图信号/与芯片引脚对照表

结构图上的信号名

GW48-CCP,GWAK100A

EP1K100QC208

GW48-SOC+/

GW48-DSP

EP20K200/300EQC240

GWAK30/50

EP1K30/50TQC144

GWAC3

EP1C3TC144

引脚号

引脚名称

引脚号

引脚名称

引脚号

引脚名称

引脚号

引脚名称

PIO0

7

I/O

224

I/O0

8

I/O0

1

I/O0

PIO1

8

I/O

225

I/O1

9

I/O1

2

I/O1

PIO2

9

I/O

226

I/O2

10

I/O2

3

I/O2

PIO3

11

I/O

231

I/O3

12

I/O3

4

I/O3

PIO4

12

I/O

230

I/O4

13

I/O4

5

I/O4

PIO5

13

I/O

232

I/O5

17

I/O5

6

I/O5

PIO6

14

I/O

233

I/O6

18

I/O6

7

I/O6

PIO7

15

I/O

234

I/O7

19

I/O7

10

I/O7

PIO8

17

I/O

235

I/O8

20

I/O8

11

DPCLK1

PIO9

18

I/O

236

I/O9

21

I/O9

32

VREF2B1

PIO10

24

I/O

237

I/O10

22

I/O10

33

I/O10

PIO11

25

I/O

238

I/O11

23

I/O11

34

I/O11

PIO12

26

I/O

239

I/O12

26

I/O12

35

I/O12

PIO13

27

I/O

2

I/O13

27

I/O13

36

I/O13

PIO14

28

I/O

3

I/O14

28

I/O14

37

I/O14

PIO15

29

I/O

4

I/O15

29

I/O15

38

I/O15

PIO16

30

I/O

7

I/O16

30

I/O16

39

I/O16

PIO17

31

I/O

8

I/O17

31

I/O17

40

I/O17

PIO18

36

I/O

9

I/O18

32

I/O18

41

I/O18

PIO19

37

I/O

10

I/O19

33

I/O19

42

I/O19

PIO20

38

I/O

11

I/O20

36

I/O20

47

I/O20

PIO21

39

I/O

13

I/O21

37

I/O21

48

I/O21

PIO22

40

I/O

16

I/O22

38

I/O22

49

I/O22

PIO23

41

I/O

17

I/O23

39

I/O23

50

I/O23

PIO24

44

I/O

18

I/O24

41

I/O24

51

I/O24

PIO25

45

I/O

20

I/O25

42

I/O25

52

I/O25

PIO26

113

I/O

131

I/O26

65

I/O26

67

I/O26

PIO27

114

I/O

133

I/O27

67

I/O27

68

I/O27

PIO28

115

I/O

134

I/O28

68

I/O28

69

I/O28

PIO29

116

I/O

135

I/O29

69

I/O29

70

I/O29

PIO30

119

I/O

136

I/O30

70

I/O30

71

I/O30

PIO31

120

I/O

138

I/O31

72

I/O31

72

I/O31

PIO32

121

I/O

143

I/O32

73

I/O32

73

I/O32

PIO33

122

I/O

156

I/O33

78

I/O33

74

I/O33

PIO34

125

I/O

157

I/O34

79

I/O34

75

I/O34

PIO35

126

I/O

160

I/O35

80

I/O35

76

I/O35

PIO36

127

I/O

161

I/O36

81

I/O36

77

I/O36

PIO37

128

I/O

163

I/O37

82

I/O37

78

I/O37

PIO38

131

I/O

164

I/O38

83

I/O38

83

I/O38

PIO39

132

I/O

166

I/O39

86

I/O39

84

I/O39

PIO40

133

I/O

169

I/O40

87

I/O40

85

I/O40

PIO41

134

I/O

170

I/O41

88

I/O41

96

I/O41

PIO42

135

I/O

171

I/O42

89

I/O42

97

I/O42

PIO43

136

I/O

172

I/O43

90

I/O43

98

I/O43

PIO44

139

I/O

173

I/O44

91

I/O44

99

I/O44

PIO45

140

I/O

174

I/O45

92

I/O45

103

I/O45

PIO46

141

I/O

178

I/O46

95

I/O46

105

I/O46

PIO47

142

I/O

180

I/O47

96

I/O47

106

I/O47

PIO48

143

I/O

182

I/O48

97

I/O48

107

I/O48

PIO49

144

I/O

183

I/O49

98

I/O49

108

I/O49

PIO60

202

PIO60

223

PIO60

137

PIO60

131

PIO60

PIO61

203

PIO61

222

PIO61

138

PIO61

132

PIO61

PIO62

204

PIO62

221

PIO62

140

PIO62

133

PIO62

PIO63

205

PIO63

220

PIO63

141

PIO63

134

PIO63

PIO64

206

PIO64

219

PIO64

142

PIO64

139

PIO64

PIO65

207

PIO65

217

PIO65

143

PIO65

140

PIO65

PIO66

208

PIO66

216

PIO66

144

PIO66

141

PIO66

PIO67

10

PIO67

215

PIO67

7

PIO67

142

PIO67

PIO68

99

PIO68

197

PIO68

119

PIO68

122

PIO68

PIO69

100

PIO69

198

PIO69

118

PIO69

121

PIO69

PIO70

101

PIO70

200

PIO70

117

PIO70

120

PIO70

PIO71

102

PIO71

201

PIO71

116

PIO71

119

PIO71

PIO72

103

PIO72

202

PIO72

114

PIO72

114

PIO72

PIO73

104

PIO73

203

PIO73

113

PIO73

113

PIO73

PIO74

111

PIO74

204

PIO74

112

PIO74

112

PIO74

PIO75

112

PIO75

205

PIO75

111

PIO75

111

PIO75

PIO76

16

PIO76

212

PIO76

11

PIO76

143

PIO76

PIO77

19

PIO77

209

PIO77

14

PIO77

144

PIO77

PIO78

147

PIO78

206

PIO78

110

PIO78

110

PIO78

PIO79

149

PIO79

207

PIO79

109

PIO79

109

PIO79

SPEAKER

148

I/O

184

I/O

99

I/O50

129

I/O

CLOCK0

182

I/O

185

I/O

126

INPUT1

123

I/O

CLOCK2

184

I/O

181

I/O

54

INPUT3

124

I/O

CLOCK5

78

I/O

151

CLKIN

56

I/O53

125

I/O

CLOCK9

80

I/O

154

CLKIN

124

GCLOK2

128

I/O

目标芯片选择的是EP1K30TC144-3,根据图21和表1中加重的部分引脚对照表,顶层原理图的输入输出端口配置如图22所示。

例如CLK时钟输入配置为54引脚,根据表1所示,实验箱上实际电路所用的输入时钟信号选用CLK2。按键K1、K2、K3分别配置8、9、10引脚,由表1知,在实验结构图上对应的是PIO0、PIO1、PIO3,再由图21知对应的按键分别是按键1、按键2、按键3,验证时,通过按这三个键来对万年历系统进行控制。

图22

端口配置图

4.3.3实际电路验证

图23实际电路验证

实际验证电路和验证结果如上图23所示。验证结果与预期的实验结果相同,当K1键没有按下时,万年历正常计时,计满向高位进位,可以通过K3键选择显示模式,显示时分秒时指示灯亮。通过按下K1键的次数来选择校对那一部分,对应的指示灯亮,再通过按下K2键的次数来进行数值选择,进行校对时低位不会向高位进位。当把年设置为闰年,月模块设置为2月,天模块设置为29,时模块设置为23,分模块设置为59,通过按键K1选择正常计时模式,计满60s时,不断往上进位,月份变为3月,证明此时二月为二十九进制计数器。

4.4实验小结

通过这次万年历程序的设计,完成了硬件系统设计目标。加深了对EDA技术的理解,熟悉了QuartusII软件环境,熟练地掌握了基于VHDL硬件设计的整个流程,从设计编程到下载验证。通过对具体模块的编写,如CNT60模块,CNT24模块,DAY模块,MONTH模块,YEAR模块,JIAODUI模块,显示模块等,加强了自己分析问题及编程的能力,掌握编程时该注意的语法规则,理解进行系统设计时的模块化设计思想。最终实现了一个自己动手完成的电子作品,增强了我们分析问题、解决问题的能力,培养了对电子工程设计的浓厚兴趣。

参考文献:

[1]

潘松

黄继业

EDA技术实用教程—VHDL版(第四版)北京:科学出版社,2010

[2]

王金明,杨吉斌.数字系统设计与Verilog

HDL.北京:电子工业出版社,2002

[3]

潘松

EDA技术与Verilog

HDL北京:清华大学出版社,2010.4

32

推荐访问:万年历 实验 报告