EDA21.docx

上传人:b****1 文档编号:10403930 上传时间:2023-05-25 格式:DOCX 页数:12 大小:162.23KB
下载 相关 举报
EDA21.docx_第1页
第1页 / 共12页
EDA21.docx_第2页
第2页 / 共12页
EDA21.docx_第3页
第3页 / 共12页
EDA21.docx_第4页
第4页 / 共12页
EDA21.docx_第5页
第5页 / 共12页
EDA21.docx_第6页
第6页 / 共12页
EDA21.docx_第7页
第7页 / 共12页
EDA21.docx_第8页
第8页 / 共12页
EDA21.docx_第9页
第9页 / 共12页
EDA21.docx_第10页
第10页 / 共12页
EDA21.docx_第11页
第11页 / 共12页
EDA21.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

EDA21.docx

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

EDA21.docx

EDA21

EDA设计

(二)

课程设计报告

 

姓名

学号

学院(系)

自动化学院

专业

自动化

标题

数字秒表的设计

 

南京理工大学

2015年10月

目次

1引言1

2系统总体设计1

2.1系统功能概述1

3系统各组成模块详细设计2

3.1分频模块设计2

3.2计时模块设计3

3.3七段译码显示模块设计4

3.4动态刷新模块设计5

4系统调试6

4.1分频模块6

4.2计时模块7

4.3七段译码显示模块7

4.4动态刷新模块8

4.5系统实际验证8

5实验中遇到的问题与解决方法9

6总结与心得体会10

参考文献11

 

1引言

随着科技的发展,集成电路和计算机得到了高速发展。

而EDA技术就是以计算机为工具,我们在EDA的设计平台上,用硬件描述语言VHDL完成设计文件,本次设计我们采用VHDL语言进行数字系统的结构、行为、功能和接口。

VHDL具有较强的行为描述能力,可避开具体的器件结构,从逻辑功能和行为上进行描述和设计。

本文是基于计算机电路的时钟脉冲信号、状态控制等原理设计出的数字秒表。

设计中采用东南大学的SE-5M型EDA实验开发平台系统,以Altera公司的MAX+plusII10.0为开发软件,使用层次化设计方法,实现秒表的功能。

2系统总体设计

2.1系统功能概述

数字秒表用于体育比赛,设计中我们采用层次化方法,所要实现的主要功能和要求如下:

1、提供给计时器内部定时的时钟脉冲频率为1khz,能够进行一小时以内(即计时的最长时间为59分59秒99)的计时功能。

2、设置有复位和启/停开关

(1)复位开关可以在任何情况下使用,即使在计时过程中,只要按一下复位开关,计时进程立刻终止,并对计时器清零。

(2)起/停开关的使用方法与传统的机械式计时器相同,即按一下起/停开关,启动计时器开始计时,再按一下起/停开关计时终止。

2.2系统总体组成结构

系统采用层次化的设计方法,由分频模块、计时模块、动态扫描模块和七段译码显示组成。

分频模块用于提供给计时器内部定时的时钟脉冲频率为100hz;计时模块用于秒表内部的计数,从秒的进到分;动态扫描用于实现了六个LED数码管的刷新显示;七段显示用于显示分和秒的数字。

数字秒表总体框图:

图1

3系统各组成模块详细设计

3.1分频模块设计

分频模块就是将一个时钟信号通过一定的电路结构转变成不同频率的时钟信号,本设计中要求及时精度大于1/100s,计时器能显示1/100s的时间,提供给计时器内部定时的时间脉冲频率为1/100hz,设计中输入信号为1KHz,需要得到100Hz的输出信号作为秒百分位的计数脉冲,因此需要设计一个十分频电路即计数以10为周期即可。

即时钟每触发10个周期,电路输出一个周期信号。

分频模块的分装如下图所示:

图2

3.2计时模块设计

由于秒表显示的最长时间为59分59.99秒,因此我们需要两个模60和一个模100的计数器,最后再用VHDL语言实现计数器的封装。

模60和模100的分装如下:

图3

计时模块中需要六个输出,当秒的十分和百分位为100时,就向秒的个位进位,以此类推,当秒达到60,就向分进一位,模100的输入信号时经过分频后的100hz,复位信号reset和使能信号en。

当两个模60和模100分装好后,我们要进行计时模块的连接,代码中需要调用这两个模块以实现计时功能。

其顶层电路的核心代码如下:

ARCHITECTURErtlOFtimeIS

COMPONENTcount60

port(EN,Clk,RST:

instd_logic;

GE,SHI:

outstd_logic_vector(3downto0);

CO:

outstd_logic);

ENDCOMPONENT;

COMPONENTcount100

port(EN,Clk,RST:

instd_logic;

GE,SHI:

outstd_logic_vector(3downto0);

CO:

outstd_logic);

ENDCOMPONENT;

SIGNALco1,co2,co3:

std_logic;

BEGIN

U0:

count100

PORTMAP(EN,CLK,reset,sec001,sec01,co1);

U1:

count60

PORTMAP(co1,CLK,reset,sec,sec10,co2);

U2:

count60

PORTMAP(co2,CLK,reset,min,min10,co3);

ENDrtl;

计时模块分装图:

图1

3.3七段译码显示模块设计

七段译码显示模块将数字系统中BCD码转换成数码管所需要的驱动信号,共阴极数码管输出高电平有效。

七段译码显示电路的段码表如下表所示:

显示字符

输入

输出

显示字符

输入

输出

0

0000

0111111

5

0101

1101101

1

0001

0000110

6

0110

1111101

2

0010

1011011

7

0111

0000111

3

0011

1001111

8

1000

1111111

4

0100

1100110

9

1001

1101111

图2

核心代码为:

封装图示如下图所示:

图3

3.4动态刷新模块设计

本次设计中,我主要是负责动态刷新模块,模块中需要用到6个LED灯,由于系统最多支持4个LED的静态显示,所以我们采用动态扫描法。

在动态刷新需要用到一个模六计数器、一个位选择器和一个段选择器。

模六的计数器一直在不停的循环中,当计数值为0时,位码选择器输出使能显示秒百分位的LED,而段码选择器则输出秒表分位的BCD码,再经过七段译码显示电路输出给LED的abcdefg接口,显示相应计数值。

以此类推1、2、3、4、5,分别显示相应的LED和数值。

顶层分装的核心代码分别调用了count6、decoder_choose、time_choose和seg7显示模块。

动态刷新模块的封装图如下图所示:

图4

最后顶层设计的图形:

图8

4系统调试

4.1分频模块

模块编译完成后,及可进行波形仿真,十分频电路仿真波形图:

图5

4.2计时模块

模60计数器仿真波形图:

图6

由图我们可知,当RST的信号为1时,计数会立即复位,当EN信号为0时,会停止计数,直到使能信号有效。

模100计数器仿真波形图:

图7

整个计时模块仿真波形图:

图8

4.3七段译码显示模块

七段译码器仿真波形图:

图9

4.4动态刷新模块

位选择仿真波形图:

图13

当计数器在不断地从0-5循环计数时,选择不同的位,决定显示秒表的分、秒的各个位。

段选择仿真波形图:

图14

这是个数据选择器,负责将秒表各个位上的BCD码送到七段译码显示的输入端,从而可以显示相应的十进制数。

4.5系统实际验证

在编译完成后,我们就可以进行管脚的分配。

管脚分配的方法有两种,一种是在“Assign”下的“Pin/Location/Chip”中锁定引脚,第二种是在“MAX+plus

”下的“FloorplanEditor”中配置,注意管脚锁定之后要进行全程编译,以便将引脚信息编入到下载文件中。

分配完后,我们就可以下载到实验板上,进行编程下载,点击“MAX+plus

”下的“Programmer”,第一次下载需要进行“HardwareSetup”,选择“ByteBlaster(MV)”即可,然后单击“Configure”即可进行编程下载。

通过验证,秒表的正常功能均可以实现,复位,暂停,计数。

5实验中遇到的问题与解决方法

(1)命名问题

在我们编完代码后,将文件设置为当前文件后开始编译,发现怎么编译都是有错误的。

后来,我们发现是因为文件的实体名和文件的命名不一致,导致编译错误,这是初学者最容易犯的错误。

代码分为实体和结构体两部分,实体主要是进行变量的定义,结构体就主要负责它要实现的功能。

(2)VHDL语言编译问题

平常使用C编程时,不怎么关注语句的顺序,而VHDL语言区别于其他语言最大的特点就是它的并发语句。

开始时,我们对并发语句不怎么了解,因此仿真的结果和我们预期的不一样。

后来我们通过改变相关语句的位置来观察相对应的仿真结果,发现并发的内容与前后顺序无关,是同时发生的,对并发语句的理解也更加深刻了。

(3)动态扫描问题

在进行完管脚分配后,我们就需要下载在实验台上,在动态扫描中M3、M4对应的8个I/O口用于动态显示数码管的8个段,M1、M2对应的8个I/O口用于连接动态显示数码管的共阴极端进行位扫描。

可是,我们下载完后,发现只有四个灯亮了,而且不在正常计数。

后来我们仔细检查发现,我们没有将拨码开关CZ1中ST处拨到SW上,导致一直是静态显示。

6总结与心得体会

本次EDA设计,收获了很多,让我们进一步巩固了数电上的计数器、选择器、译码器等知识点。

这次EDA设计和上次有许多相同的地方,都是要我们学会用一个软件工具设计出我们的硬件图。

这次我们要学会使用VHDL语言来编辑图形,使用MAX+plus这个软件,和我们之前学过的quartus软件差不多,只不过用VHDL语言取代了图形编辑。

首先,我们需要基本掌握VHDL语言,掌握它有哪些组成,命名的原则,变量是怎么定义的等,只有准备工作做好了,我们才能进行编程。

在编译的过程中,我们也遇到了很多问题,比如没有将文件的命名和实体名一样,导致了编译的时候出现了问题,对VHDL的使用不是很了解,不知道怎么进行顶层的分装。

我们通过查找资料,请教同学,将问题一一解决。

使用VHDL编写来实现硬件电路的功能,我充分体会到VHDL作为电路设计语言的方便性,具有很强的硬件描述能力,很强的移植能力,减少硬件电路设计的工作量,缩短了开发周期,同时也省去了电路连线的工作,方便我们更快的查找错误。

它既支持自顶向下的设计方法,也支持自底向上的设计,既支持模块化设计,也支持层次化。

而本次我们采用的是自顶向下的设计方法,分别模块化处理,各个模块相互是独立的,最后进行整合即可。

这次设计提高了我们的动手实践能力,利用我们学过的知识进行动手设计,巩固了我们的知识,增强了自身的能力。

我们也体验到了团队合作的重要性。

最后,感谢吴老师在本次实验中对我们的指导。

 

参考文献

[1]南京理工大学.EDA设计实验指导书[M].南京:

南京理工大学电子技术中心,2008

[2]姜雪松.VHDL设计实例与仿真.北京:

机械工业出版社,2007.1

[3]蒋立平.数字逻辑电路与系统设计.北京:

电子工业出版社,2009.1

 

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

当前位置:首页 > IT计算机 > 电脑基础知识

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

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