EDA课程设计.docx

上传人:b****8 文档编号:9704114 上传时间:2023-05-20 格式:DOCX 页数:30 大小:906.07KB
下载 相关 举报
EDA课程设计.docx_第1页
第1页 / 共30页
EDA课程设计.docx_第2页
第2页 / 共30页
EDA课程设计.docx_第3页
第3页 / 共30页
EDA课程设计.docx_第4页
第4页 / 共30页
EDA课程设计.docx_第5页
第5页 / 共30页
EDA课程设计.docx_第6页
第6页 / 共30页
EDA课程设计.docx_第7页
第7页 / 共30页
EDA课程设计.docx_第8页
第8页 / 共30页
EDA课程设计.docx_第9页
第9页 / 共30页
EDA课程设计.docx_第10页
第10页 / 共30页
EDA课程设计.docx_第11页
第11页 / 共30页
EDA课程设计.docx_第12页
第12页 / 共30页
EDA课程设计.docx_第13页
第13页 / 共30页
EDA课程设计.docx_第14页
第14页 / 共30页
EDA课程设计.docx_第15页
第15页 / 共30页
EDA课程设计.docx_第16页
第16页 / 共30页
EDA课程设计.docx_第17页
第17页 / 共30页
EDA课程设计.docx_第18页
第18页 / 共30页
EDA课程设计.docx_第19页
第19页 / 共30页
EDA课程设计.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

EDA课程设计.docx

《EDA课程设计.docx》由会员分享,可在线阅读,更多相关《EDA课程设计.docx(30页珍藏版)》请在冰点文库上搜索。

EDA课程设计.docx

EDA课程设计

课程设计

课程名称硬件描述语言与EDA技术

题目名称硬件描述语言与EDA技术实践

学生学院材料与能源

专业班级13微电子学

(2)班

学号3113007232

学生姓名曹兴聪

指导教师陈先朝

 

2016年6月6日

 

广东工业大学课程设计任务书

题目名称

硬件描述语言与EDA技术实践

学生学院

材料与能源学院

专业班级

13微电子学

(2)班

姓名

曹兴聪

学号

3113007232

一、课程设计的内容与要求

1.系统功能分析,分模块层次化设计;

2.实现系统功能的方案设计;

3.编写各功能模块VerilogHDL语言程序;

4.对各功能模块进行编译、综合、仿真和验证;

5.顶层文件设计,可用VerilogHDL语言设计,也可以用原理图设计;

6.整个系统进行编译、综合、仿真和验证;

7.在CPLD/FPGA实验开发系统试验箱上进行硬件验证;

8.按所布置的题目要求,每一位学生独立完成全过程。

二、课程设计应完成的工作

1.所要求设计内容的全部工作;

2.按设计指导书要求提交一份报告书;

3.提交电子版的设计全部内容:

工程目录文件夹中的全部内容,报告书

三、课程设计进程安排

序号

设计各阶段内容

地点

起止日期

1

布置设计题目和要求;收集相关资料。

工3-317或宿舍

6.6

2

方案分析与确定;编写Verilog源程序。

工3-317或宿舍

6.7

3

编写Verilog源程序;编译、综合、仿真、定时分析、适配。

工3-317或宿舍

6.8

4

下载和硬件验证;验收。

工3-317

6.9

5

下载和硬件验证;验收;撰写报告

工3-317

6.10

6

7

8

四、应收集的资料及主要参考文献

1.陈先朝,硬件描述语言与EDA技术实践指导书,2015年5月

2.潘松等编著,EDA技术与VerilogHDL,电子工业出版社,2013年;

3.现代数字电子技术及Verilog设计,清华大学出版社,2014年;

4.王金明等编著,EDA技术与VerilogHDL设计,电子工业出版社,2013年;

5.刘靳等编著,Verilog程序设计与EDA,西安电子科技大学出版社,2012年;

6.刘福奇主编,VerilogHDL应用程序设计实例精讲,电子工业出版社,2012年;

7.周润景等主编,基于QuartusⅡ的数字系统VerilogHDL设计实例详解,电子工业出版社,2010年。

发出任务书日期:

2016年6月6日指导教师签名:

计划完成日期:

2016年6月10日基层教学单位责任人签章:

主管院长签章:

摘要

本次设计的题目是“简易数字钟”,基本的要求是设计一个以“秒”为基准信号的简易数字钟,显示时、分、秒,同时实现整点报时和清零。

在设计中考虑到实际应用的方便性,我增加了一个校时模块。

主要的设计思路是通过把系统的功能分解,用模块层次化的方法,来实现整个系统的方案设计。

主要包含的模块有:

(1)秒模块;

(2)分模块;(3)时模块;(4)校时模块;(5)整点报时模块;(6)数码管显示模块。

通过1Hz的秒脉冲来实现时分秒的基本计数,通过1kHz的脉冲来实现数码管的动态扫描,从而实现6位数码管同时显示。

一、简易数字钟的基本组成和原理

1.1总电路的基本组成

本次设计的简易数字钟,主要包含的模块有:

(1)秒模块;

(2)分模块;(3)时模块;(4)校时模块;(5)整点报时模块;(6)数码管显示模块。

后来设计中增加了一个闹钟模块,不过功能没完全实现。

1.2各模块的原理

1.2.1秒模块

秒模块是一个60进制的计数器,通过用一个秒脉冲源(1Hz),利用其上升沿,实现每过1秒,计数器的秒位自动加1,从而实现最简单的秒计数。

当秒低位计数超过9,秒低位自动清0,秒十位进1;当秒十位计数超过5,秒十位清0,产生一个分脉冲作为分模块的脉冲源(通过对端口不断取反,实现输出一个脉冲)。

1.2.2分模块

分模块也是一个60进制的计数器,通过利用分脉冲(由秒模块产生)的上升沿计数,实现每过1分钟,分自动加1。

同理,分个位超9清零,向十位进1;分十位超5清0,产生一个时脉冲作为时模块的脉冲源。

1.2.3时模块

时模块是一个24进制的计数器,通过利用时脉冲(由分模块产生)的上升沿计数,实现每过1小时,时自动加1。

时个位超3清0,向十位进1;时十位超2清0。

1.2.4校时模块

校时模块主要是用于设置时和分的时间,从而完成时间的校准。

秒模块产生的分脉冲和分模块产生的时脉冲,要先经过校时模块。

在这个模块中引入了两个开关:

时校准开关、分校准开关,通过控制两个开关的组合,控制分脉冲和时脉冲的脉冲源选择。

例如,分脉冲选择秒脉冲就是可以完成分位的时间校准,从1开始逐秒递增;选择秒模块产生的分脉冲就是正常的电子钟显示。

同理,时位也是如此。

1.2.5整点报时模块

整点报时的意思是,59分59秒后的一个上升沿来临,会报一次时(就是整点)。

所以设计时候对分和秒的4位进行判断,只要到了59分59秒,下一个脉冲上升沿来临时,输出端口就会输出一个高电平,再通过高电平驱动蜂鸣器电路(本次实验箱没有蜂鸣器就用了一个led灯代替,报时时候,led灯会亮。

1.2.6数码管显示模块

秒、分、时模块产生的数据,通过一个动态扫描的6位数码管进行显示。

动态扫描是引入一个1kHz的脉冲源,通过数码管的位选程序,来实现6个数码管的循环扫描显示。

由于循环的频率很快,所以人眼就认为6位数码管同时显示。

然后把时、分、秒输入给数码管,数码管通过译码后,输出1~9的数字。

二、设计方案和设计步骤

2.1设计方案

主要的设计思路是通过把系统的功能分解,用模块层次化的方法,来实现系统的方案设计。

主要包含的模块有:

(1)秒模块;

(2)分模块;(3)时模块;(4)校时模块;(5)整点报时模块;(6)数码管显示模块。

2.2各个模块设计步骤

先新建一个工程文件,命名为clock,设置的参数如图1

2.2.1秒模块的设计步骤

(1)在工程下,新建一个Verilog的文件,保存为counter60s,如图2

(2)编写秒模块的Verilog程序,然后把当前文件设为顶层文件,如图3

程序主要思路:

秒个位满5清0,十位进1;十位满9清0,取反CP60S(不断取反就产生了分脉冲);不然就秒个位加1。

(3)对秒模块进行编译,点击

按钮,编译正确

(4)对秒模块的程序进行仿真验证

首先创建一个波形文件,命名为counter60s,如图4

在新的波形文件中选入需要验证的引脚,通过在左边窗栏里点击鼠标右键,选Insert\InsertNodeorBus,在打开的对话框中点击NodeFinder,出现另外一个对话框,再点击List,选择所要观察的信号引脚(选中引脚名,再点“>”键),如图5

点击OK后,显示了如下图所示的所要观察的信号引脚的波形文件,如图6

选择Assignments\Settings\SimulatorSettings,如下图所示。

在Simulationmodek设置Function类型仿真,再点击OK,如图7

仿真步长和周期在菜单中的Edit/GridSize和EndTime中设置。

为了观察输出信号值的正确与否,必须设置引脚的输入信号值。

例如:

设置输入A端口的信号值时,先选中A端口,再点击左工具栏中带有“C”的按钮,出现如下图所示“CountValue”对话框进行设置,如图8

把秒输出高4位设置成一个组SH,低4位设置成一个组SD,所有输入端口设置好的信号值如下图9

设置完毕之后,点击Processing\GenerateFunctionalSimulatorNetList,生产网表文件之后,点击Processing\StartSimulator,进行功能仿真,然后验证逻辑功能是否正确。

如果与所设计的功能不一致,修改设计,再仿真(注意:

每次修改都要重新编译),直至符合设计要求。

最终秒模块的仿真结果如图10

(5)仿真结果分析

通过图10可以看出,输入秒脉冲,秒低位从0~9变化,高位从0~5变化;当低位为9时,下一个上升沿来临,秒低位清0,秒高位加1;当秒个位是9,秒十位是5时,下一个上升沿来到,秒高低位清零,产生一个分脉冲,由此可见,秒模块符合设计的要求。

(6)生成秒模块符号图

点击file—create/update—createsymbolfileforcurrentfiles,生成秒模块的电路符号图如图11

2.2.2分模块的设计步骤

(1)同秒模块,先新建一个Verilog文件,命名为counter60m;

(2)编写分模块的Verilog程序,如图12

程序主要思路:

分个位满5清0,十位进1;十位满9清0,取反CP60M(不断取反就产生了时脉冲);不然就分脉冲来临,分个位加1。

(3)对分模块进行编译,点击

按钮,编译正确

(4)对分模块进行仿真

步骤与秒模块类似,就不一一赘述了。

仿真波形设置如图13

仿真完成后,如图14

(5)仿真结果分析

从图14可以看出,当分脉冲来临,分低位从0~9变化,分高位0~5变化;当分低位为9,下一个上升沿来临,分低位清0,高位加1;当分高位为5,低位为9,下一个上升沿来临,分高低位清0,产生一个时脉冲。

由此可见,分模块设计符合设计要求。

(6)生成分模块电路符号图,如图15

2.2.3时模块的设计步骤

(1)先新建一个Verilog文件,命名为counter24h;

(2)编写时模块的Verilog程序,如图16

程序思路:

reset位高电平时,时高低位清0;时个位为9,下一个时脉冲上升沿来临,时个位清0,十位加1;时十位为2,下一个时脉冲上升沿来临,十位为清0;时个位为3,十位为2,下一个时脉冲上升沿来临,时高低位清0。

(3)对时模块进行编译,点击

按钮,编译正确

(4)对时模块进行仿真

步骤与秒模块类似,就不一一赘述了。

仿真波形设置如图17

仿真完成后,如图18

(5)仿真结果分析

如图18,当时脉冲来临,低位从0~9变化;当时低位为9,下一个脉冲来临,低位清0,时高位加1;当时位23,下一个上升沿来临,将时高低位清0。

由此可见,时模块符合设计要求。

(6)生成时模块的电路符号图,如图19

2.2.4校时模块设计的设计步骤

(1)先新建一个Verilog文件,命名为calibration;

(2)编写校时模块的Verilog程序,如图20

程序思路:

通过两个开关SWH、SWM作为输出CPH、CPM的赋值选择开关,选择CPS就是校准,选择CP60M、CP60S就是正常的计数。

(3)对校时模块进行编译,点击

按钮,编译正确

(4)对校时模块进行仿真

设置的波形如图21

仿真结果如图22

(5)仿真结果分析

如图22,时开关SWH(置1,就说明时开关生效),分开关SWM(置0,分开关不生效)

秒脉冲CPS,分脉冲CP60S,时脉冲CP60M,时模块的输入脉冲CPH,分模块的输入脉冲CPM。

当时开关生效,CPH的波形和CPS的一样,就说明这时候是利用秒脉冲在对时位校准,符合设计要求。

分开关不生效,所以CPM的波形和CP60S波形一致,符合正常计时的情况。

由此可见,校准模块的设计符合设计要求。

(6)生成校准模块的电路符号图,如图23

2.2.5整点报时模块的设计步骤

(1)先新建一个Verilog文件,命名为baoshi;

(2)编写时模块的Verilog程序,如图24

程序思路:

在59分59秒时候,对输出端口bs置高电平,点亮led灯,实现整点报时。

(3)对整点报时模块进行编译,点击

按钮,编译正确

(4)对整点报时模块进行仿真

设置的波形如图25

仿真结果如图26、27

(5)仿真结果分析

通过图26、27可以看出,当59分58秒时候,输出端口bs是低电平;在59分59秒时,输出端口是高电平(即有效,高电平可以点亮led灯,从而实现了整点报时功能)。

(6)生成整点报时模块的电路符号图,如图28

2.2.6数码管显示模块的设计步骤

(1)先新建一个Verilog文件,命名为tube;

(2)编写数码管显示模块的Verilog程序,如图29

程序思路:

用动态扫描的方法轮流点亮6个数码管,只要循环的频率较高,就可以认为是6个数码管同时点亮。

数码管显示时共阴极接法,所以是高电平有效。

(3)对数码管显示模块进行编译,点击

按钮,编译正确

(4)对数码管显示模块进行仿真

设置的波形如图30

仿真结果如图31

(5)仿真结果分析

如图31,在输入为20:

47:

39时,数码管6位轮流显示9,3,7,4,0,2,对应的数码管依次从低位到高位,符合设计的要求,显示的内容也正确。

因为6个数码管实际上是轮流点亮的,不过频率比较高,所以人眼看到的就是6个数码管同时点亮,所以数码管显示的时分秒在仿真时候是一个个循环这样显示出来。

由此可见,数码管显示模块的设计符合设计要求。

(6)生成数码管显示模块的电路符号图,如图32

2.3总电路原理图

在设计完各个子模块后,新建一个schematicfile,命名为clock,如图33

在图纸上双击,弹出对话框,引用刚才生成的各个子模块的电路符号,如图34

然后完成各个子模块的电路连接,最后得到的总电路原理图,如图35

三、实验箱下载

3.1实验箱选择及参数

1.本次设计采用的实验箱是TD-EDA实验箱,用的是cyclone系列的EP1C6Q240C8芯片,引脚为240个,集成度为3万门。

2.芯片引脚与开发板上的连接座的对应关系:

FPGA引脚

连接座

FPGA引脚

连接座

FPGA引脚

连接座

2

IO1

44

IO23

166

IO44

3

IO2

45

IO24

167

IO45

4

IO3

46

IO25

168

IO46

5

IO4

47

IO26

169

IO47

6

IO5

48

IO27

170

IO48

7

IO6

49

IO28

173

IO49

8

IO7

50

IO29

174

IO50

11

IO8

53

IO30

175

IO51

12

IO9

54

IO31

176

IO52

13

IO10

55

IO32

177

IO53

14

IO11

56

IO33

178

IO54

15

IO12

57

IO34

179

IO55

16

IO13

131

RST

180

IO56

17

IO14

152

CLK3

181

IO57

18

IO15

153

CLK(50M)

182

IO58

19

IO16

156

IO35

183

IO59

20

IO17

158

IO36

184

IO60

21

IO18

159

IO37

185

IO61

23

IO19

160

IO38

186

IO62

28

CLK0

161

IO39

187

IO63

29

CLK1

162

IO40

188

IO64

41

IO20

163

IO41

193

IO65

42

IO21

164

IO42

194

IO66

43

IO22

165

IO43

3.2总电路图的编译及下载

3.2.1总电路图的编译

在完成了总电路图的电气连接后,点击

进行编译,如果编译出现错误,则根据提示进行修改,如果编译没错,则可以进行引脚的分配,如图36

3.2.2引脚分配

点击assignment—pin,根据引脚和连接座的对应关系,分配引脚,如图37

3.2.3下载到实验箱

把实验箱和计算机连接好,按照设计电路连接好各部分的导线,接通电源。

点击

按钮进行下载,如图38

把图中的勾打上。

第一次使用下载时,首先点击“HardwareSetup...”,打开HardwareSetup对话框,然后点击AddHardware,选择ByteBlasterII后单击“SelectHardware”,选择下载形式为ByteBlasterII。

3.2.4观看实验箱的显示结果

下载完成后,观看实验箱的数码管显示结果,以及各个按键的控制情况是否和设计想法一样。

正常显示的结果为:

(1)6位数码管分别显示时高位、时低位、分高位、分低位、秒高位、秒低位;秒计数0~59,满59秒清0,时进1;分计数0~59,满59分清0,时进1;时计数0~23;

(2)按下复位键,时分秒6位全部清0;

(3)按下时开关键,小时每秒加1;按下分开关键,分钟每秒加1;不按两个键,正常计数和显示。

四、实验中遇到的问题及解决方法

在这次的课程设计中,用Verilog语言设计简易电子钟,主要遇到的问题有:

(1)在编写程序时,由于不太熟练,一开始出现了一些编译的小错误,例如写少了一个end、写完endmodule没按空格导致没变成关键字、一些逻辑上的错误等等。

这次的设计是分模块的,每一个程序相对而言不会太长,所以在排查错误的时候,比较轻松就排查出来了。

(2)在生成各个模块的原理图,完成模块间的连接时候,开始时没有注意端口是总线连接还是导线连接,导致编译的时候出现错误。

后来通过阅读错误提示,也就发现了问题。

(3)在数码管显示方面,一开始没有注意到实验箱与程序的对应关系,导致数码管显示乱码,经过一番折腾,修改了数码管显示的程序,用共阴极的程序写法,就解决了问题。

(4)在数码管动态扫描程序的编写时候,也有些疑问。

通过参考书本的一个2位数码管动态扫描显示的程序例子,最后也顺利写了出来。

(5)在完成了老师的基本功能后,我增加了校时模块和闹钟模块,不过闹钟模块的程序没有成功。

由于老师也比较忙,自己找原因,读了比较久都没发现程序的问题,最后也就只好放弃了闹钟功能。

五、课设心得

这次课程设计做得是电子钟,以前用单片机的汇编也写过一个数字电子钟的程序,不过这次用的是Verilog语言,总体而言感觉Verilog的语言比较简洁、分模块设计也更加清晰。

感觉电子钟的课程设计很有意义,做出的成品比较实用,也和生活联系很密切,所以做的时候也是蛮有动力的。

这次的设计采用的是模块化的设计方法,把整个电子钟分成了6个模块,在编写程序时候,感觉到模块化的设计会更加明了,同时出现了错误时候也更容易排查出来。

老师的要求还是比较简单的,基本的时分秒计时显示、整点报时、复位,所以一开始就比较快地完成了基本功能的设计。

在完成了基本功能后,我又想着增加一些其他功能,首先是最基本的校时功能。

这次的设计采用的是一个开关的思想,把分模块和秒模块产生的进位脉冲拦截下来,通过开关控制校时模块输出分模块的脉冲式正常脉冲还是校时脉冲,最后也很顺利地完成了校时功能。

在完成了校时功能后,还想着增加一个闹钟功能,不过写完程序后,没调试出来想要的结果,通过自己对程序的理解和修改,还是没做出来,最后只能很可惜地放弃了。

当然,设计没有一帆风顺的,这次的课程设计完成得还是很不错的,比较也是在老师的基础上有了一些自己的个性化,虽然还不够多、不过完善,不过详细在以后的学习和进步后,就能把一些现在的疑惑和做不到的事情给做好!

六、参考文献

1.陈先朝,硬件描述语言与EDA技术实践指导书,2015年5月

2.潘松等编著,EDA技术与VerilogHDL,电子工业出版社,2013年;

3.现代数字电子技术及Verilog设计,清华大学出版社,2014年;

4.王金明等编著,EDA技术与VerilogHDL设计,电子工业出版社,2013年;

5.刘靳等编著,Verilog程序设计与EDA,西安电子科技大学出版社,2012年;

6.刘福奇主编,VerilogHDL应用程序设计实例精讲,电子工业出版社,2012年;

7.周润景等主编,基于QuartusⅡ的数字系统VerilogHDL设计实例详解,电子工业出版社,2010年。

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

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2