EDA 课程设计报告 基于VHDL的电子秒表的设计.docx

上传人:b****5 文档编号:7719513 上传时间:2023-01-26 格式:DOCX 页数:14 大小:134KB
下载 相关 举报
EDA 课程设计报告 基于VHDL的电子秒表的设计.docx_第1页
第1页 / 共14页
EDA 课程设计报告 基于VHDL的电子秒表的设计.docx_第2页
第2页 / 共14页
EDA 课程设计报告 基于VHDL的电子秒表的设计.docx_第3页
第3页 / 共14页
EDA 课程设计报告 基于VHDL的电子秒表的设计.docx_第4页
第4页 / 共14页
EDA 课程设计报告 基于VHDL的电子秒表的设计.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

EDA 课程设计报告 基于VHDL的电子秒表的设计.docx

《EDA 课程设计报告 基于VHDL的电子秒表的设计.docx》由会员分享,可在线阅读,更多相关《EDA 课程设计报告 基于VHDL的电子秒表的设计.docx(14页珍藏版)》请在冰豆网上搜索。

EDA 课程设计报告 基于VHDL的电子秒表的设计.docx

EDA课程设计报告基于VHDL的电子秒表的设计

 

《EDA技术及应用》

课程设计报告

 

题目:

基于VHDL的电子秒表的设计

院(系):

机电与自动化学院

专业班级:

电气工程及其自动化1101

学生姓名:

心系学弟学妹的好学长

学号:

20111131***

指导教师:

汪媛

 

2014年1月6日至2014年1月10日

华中科技大学武昌分校制

 

目录

1.课程设计目的………………………………………………………………………32.课程设计主要内容……………………………………………………………………4

2.1设计实验说明…………………………………………………………………4

2.2数字秒表组成及实现功能……………………………………………………4

2.3系统总体框图…………………………………………………………………4

3.各模块的设计及仿真………………………………………………………………5

3.1二十四进制计数器模块设计和仿真…………………………………………5

3.2六十进制计数器模块设计和仿真……………………………………………7

3.3分频器模块设计和仿真………………………………………………………9

3.4LED显示模块设计和仿真……………………………………………………10

3.5顶层仿真……………………………………………………………………13

4.心得体会……………………………………………………………………………15

5.主要参考资料………………………………………………………………………16

 

1.课程设计目的

在QuartusII软件平台上,熟练运用VHDL语言,完成数字时钟设计的软件编程、编译、综合、仿真,使用EDA试验箱,完成数字秒表的硬件功能。

本次设计的目的就是在掌握EDA实验开发系统的初步使用基础上,了解EDA技术,对计算机系统中时钟控制系统进一步了解,掌握状态机工作原理,同时了解计算机时钟脉冲是怎么产生和工作的。

⑴掌握较复杂的逻辑设计和调试 

⑵学习用原理图+VHDL语言设计逻辑电路 

⑶学习数字电路模块层次设计 

⑷掌握QuartusII软件

 

2.课程设计主要内容

2.1设计实验说明

设计一个电子秒表,给定时钟信号为256HZ,要求系统达到以下功能:

(1)用6个数码管分别显示时、分、秒,计时范围为00:

00:

00~23:

59:

59;

(2)计时精度是1s;

(3)具有启/停开关,复位开关,可以在任何情况下使用。

2.2数字秒表组成及实现功能

电子秒表的基本工作原理就是不断输出连续脉冲给加法计数器,加法计数器通过译码器来显示它所记忆的脉冲周期个数。

2.3系统总体框图

根据系统设计要求,系统的底层设计主要由六十进制计数器模块、二十四进制计数器模块、分频模块、LED显示模块组成。

系统顶层设计图如图2-1所示

图2-1系统顶层设计图

图2-1中左边为三个输入信号en,clk,reset,分别为启动/停止开关,时钟信号和复位开关。

中间从上至下依次为count24,count60,count60,fenpinqi。

右边是clock1和输出信号wei[3..0],led[6.0]。

 

3.各模块的设计及仿真

本系统由六十进制计数器模块、二十四进制计数器模块、分频模块执行计时功能,输入信号是256Hz,通过分频后为1hz,时钟信号是1Hz作为秒表的秒输入,秒为60进制计数器,分也为60进制计数器,小时采用二十四进制计数器,各级进位作为高位的使能控制。

3.1二十四进制计数器模块设计和仿真

设计一个八位的二十四进制计数器模块,输入信号为en、reset、clk,分别为使能、复位和时钟信号,输出信号为qa[3…0]、qb[3…0],分别为低4位输出、高4位输出。

图3-1二十四进制计数器示意图

该模块部分VHDL源程序如下:

LIBRARYieee;

USEieee.std_logic_1164.ALL;

USEieee.std_logic_unsigned.ALL;

ENTITYcount24IS

PORT(en,Reset,clk:

inSTD_LOGIC;

qa:

outSTD_LOGIC_VECTOR(3DOWNTO0);

qb:

outSTD_LOGIC_VECTOR(3DOWNTO0));

ENDcount24;

ARCHITECTUREa1OFcount24IS

BEGIN

process(clk)

variabletma:

STD_LOGIC_VECTOR(3DOWNTO0);

variabletmb:

STD_LOGIC_VECTOR(3DOWNTO0);

begin

IfReset='0'thentma:

="0000";tmb:

="0000";else

ifclk'eventandclk='1'then

ifen='1'then

iftma="1001"thentma:

="0000";tmb:

=tmb+1;

elsiftmb="0010"andtma="0011"then

tma:

="0000";tmb:

="0000";

elsetma:

=tma+1;

endif;

endif;

endif;endif;

qa<=tma;qb<=tmb;

endprocess;

ENDa1;

二十四进制计数器模块仿真

图3-2二十四进制计数器模块仿真

图3-3二十四进制计数器模块仿真

图3-2,图3-3均为二十四进制计数器仿真波形图

CLK:

时钟信号

RST:

复位信号低电平清零

En:

置数端低电平不让它继续计数

qb、qa:

输出的四位二进制数,分别对于要输出数的十位个位

 

3.2六十进制计数器模块设计和仿真

设计一个八位的六十进制计数器模块,输入信号为en、reset、clk,分别为使能、复位和时钟信号,输出信号为qa[3…0]、qb[3…0]、rco,分别为低4位输出、高4位输出和进位位。

图3-4六十进制计数器示意图

该模块部分VHDL源程序如下:

LIBRARYieee;

USEieee.std_logic_1164.ALL;

USEieee.std_logic_unsigned.ALL;

ENTITYcount60IS

PORT(en,Reset,clk:

inSTD_LOGIC;

qa:

outSTD_LOGIC_VECTOR(3DOWNTO0);

qb:

outSTD_LOGIC_VECTOR(3DOWNTO0);

rco:

OUTSTD_LOGIC);

ENDcount60;

ARCHITECTUREaOFcount60IS

BEGIN

process(clk)

variabletma:

STD_LOGIC_VECTOR(3DOWNTO0);

variabletmb:

STD_LOGIC_VECTOR(3DOWNTO0);

begin

IfReset='0'thentma:

="0000";tmb:

="0000";

elsifclk'eventandclk='1'then

ifen='1'then

rco<=tmb

(2)andtmb(0)andtma(3)andtma(0);

iftma="1001"thentma:

="0000";

iftmb="0101"thentmb:

="0000";

elsetmb:

=tmb+1;

endif;

elsetma:

=tma+1;

endif;

endif;

endif;

qa<=tma;qb<=tmb;

endprocess;

ENDa;

六十进制计数器模块仿真

图3-5六十进制计数器模块仿真

图3-6六十进制计数器模块仿真

图3-5、图3-6均为六十进制计数器仿真波形图

CLK:

时钟信号

RST:

复位信号低电平清零

En:

置数端低电平不让它继续计数

qb、qa:

分别为输出数的十位个位,qb取值范围为0-5,qa取值范围为0-9

rco:

进位信号,当qb=5,qa=0,rco=0时,clk上升沿来到后,qb=0,qa=0,rco=1;

当qb=5,qa=0,rco=1时,clk上升沿来到后,qb=0,qa=0,rco=0

3.3分频器模块设计和仿真

设计一个分频器,要求将输入256HZ的时钟信号分频为1HZ的时钟信号作为秒表的秒输入。

输入信号为clk和rst,分别为时钟信号和复位信号,输出信号为clk_out,为分频器1HZ的时钟信号输出。

图3-7分频器示意图

该模块部分VHDL源程序如下:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityfpis

port(RST,CLK:

instd_logic;

CLK_OUT:

outstd_logic);

endentityfp;

architectureartoffpis

constantdivide_period:

integer:

=256;

begin

process(CLK,RST)is

variablecnt:

integerrange0to255;

begin

if(RST='0')then

cnt:

=0;

CLK_OUT<='0';

elsifCLK'eventandCLK='1'then

if(cnt<(divide_period/2))then

CLK_OUT<='1';

cnt:

=cnt+1;

elsif(cnt<(divide_period-1))then

CLK_OUT<='0';

cnt:

=cnt+1;

else

cnt:

=0;

endif;

endif;

endprocess;

endarchitectureart;

分频器模块仿真

因时钟脉冲(为256hz)通过分频器256分频后频率(为1hz),仿真波形显示前一小段,不能看出输出规律,所以做仿真是用3分频后的波形,真正在实验箱上是256分频。

图3-8分频器模块仿真

CLK:

输入分频前的时钟信号

RST:

复位信号低电平清零

Clkout:

输出分频后的时钟信号

3.4LED显示模块设计和仿真

LED有着显示亮度高,响应速度快的特点,最常用的是七段式LED显示器,又称数码管。

七段LED显示器内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的亮暗组合成字符。

LED数码管的g~a七个发光二极管因加正电压而发亮,因加零电压而不能发亮,不同亮暗的组合就能形成不同的字形,这种组合称之为字形码(段码),如显示”0”,字形码为3fh。

 

 

图3-9LED数码管结构图

数码管的接口有静态接口和动态接口。

动态接口采用各数码管循环轮流显示的方法,当循环显示频率较高时,利用人眼的暂留特性,看不出闪烁显示现象,这种显示需要一个接口完成字形码的输出(字形选择),另一接口完成各数码管的轮流点亮(数位选择)。

将二十四进制计数器和2个六十进制计数器的输出作为LEDA显示模块的输入,在时钟信号的控制下通过此模块完成6个LED数码管的显示,输出信号为WEI[2…0]和LED[6…0],分别为位选信号和段码输出。

图3-10LED显示示意图

该模块部分VHDL源程序如下:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYclock1IS

PORT(CLK:

INSTD_LOGIC;

S1,S2,S3,S4,S5,S6:

INSTD_LOGIC_VECTOR(3DOWNTO0);

WEI:

OUTSTD_LOGIC_VECTOR(2DOWNTO0);

LED:

OUTSTD_LOGIC_VECTOR(6DOWNTO0));

ENDENTITY;

ARCHITECTUREbehaveOFclock1IS

SIGNALCNT6:

INTEGERRANGE0TO5:

=0;

SIGNALSHUJU:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

PRO1:

PROCESS(CLK)

BEGIN

IFCLK'EVENTANDCLK='1'THEN

CNT6<=CNT6+1;

CASECNT6IS

WHEN0=>WEI<="000";SHUJU<=S1;

WHEN1=>WEI<="001";SHUJU<=S2;

WHEN2=>WEI<="010";SHUJU<=S3;

WHEN3=>WEI<="011";SHUJU<=S4;

WHEN4=>WEI<="100";SHUJU<=S5;

WHEN5=>WEI<="101";SHUJU<=S6;CNT6<=0;

WHENOTHERS=>NULL;

ENDCASE;

ENDIF;

ENDPROCESS;

PRO2:

PROCESS(SHUJU)

BEGIN

CASESHUJUIS

WHEN"0000"=>LED<="1111110";

WHEN"0001"=>LED<="0110000";

WHEN"0010"=>LED<="1101101";

WHEN"0011"=>LED<="1111001";

WHEN"0100"=>LED<="0110011";

WHEN"0101"=>LED<="1011011";

WHEN"0110"=>LED<="1011111";

WHEN"0111"=>LED<="1110000";

WHEN"1000"=>LED<="1111111";

WHEN"1001"=>LED<="1111011";

WHENothers=>LED<="0000000";

ENDCASE;

ENDPROCESS;

END;

LED显示模块仿真

图3-11LED显示模块仿真

Clk:

时钟信号

s1,s2,s3,s4,s5,s6:

输入的的四位二进制数

led:

输出的七位二进制数,对应数码管脚的输出gfedcba

wei:

输出的三位而进制数(输出范围为000-101),控制led输出,

当wei=000时,led输出s1对应的十进制数的数码管脚gfedcba

当wei=001时,led输出s2对应的十进制数的数码管脚gfedcba

当wei=010时,led输出s3对应的十进制数的数码管脚gfedcba

当wei=011时,led输出s4对应的十进制数的数码管脚gfedcba

当wei=100时,led输出s5对应的十进制数的数码管脚gfedcba

当wei=101时,led输出s6对应的十进制数的数码管脚gfedcba

3.5顶层仿真

因时钟脉冲(为256hz)通过分频器256分频后频率(为1hz),仿真波形显示前一小段,不能看出输出规律,所以做仿真是用3分频后的波形,真正在实验箱上验证是再改。

图3-12顶层仿真

CLK:

时钟信号

RST:

复位信号低电平清零

En:

置数端低电平不让它继续计数

led:

输出的七位二进制数,对应数码管脚的输出gfedcba

wei:

输出的三位而进制数(输出范围为000-101),控制led输出,

当wei=000时,led输出对于秒钟的个位

当wei=001时,led输出对于秒钟的十位

当wei=010时,led输出对于分钟的个位

当wei=011时,led输出对于分钟的十位

当wei=100时,led输出对于时钟的个位

当wei=101时,led输出对应时钟的十位

 

4.心得体会

通过这次设计我学到了不少EDA在实际中的应用,我们把课堂上学习的硬件描述语言应用到了实际,巩固了已经学到的东西,并对它有了更深层次的理解。

这个实验设计虽然是一个简单的,但是我在具体的实验操作中还是遇到了重重困难,好多问题都是同学帮我解决的,在一些实际的操作中大家的相互协作很重要。

通过对数字秒表的设计,进行理论与实际的结合,提高了我们与计算机有关设计的能力,提高了分析、解决计算机技术实际问题的能力。

实际操作让我了解一个电子系统的实际开发过程,这就是学到了实际操作方面的东西,体会到了模块化设计法的优势。

 

5.主要参考资料

[1]杨晖.大规模可编程逻辑器件与数字系统设计.北京:

北京航空航天大学出版社,2010.

[2]任爱锋.基于FPGA的嵌入式系统设计.西安:

西安电子科技大学出版社,2011.

[3]杨恒.FPGA/CPLD最新实用技术指南.北京:

清华大学出版社,2010.

[4]王锁萍.电子设计自动化(EDA)教程.成都:

电子科技大学出版社,2009.

[5]路而红.电子设计自动化应用技术.北京:

北京希望电子出版社,2009.

[6]潘松.VHDL实用教程.成都:

电子科技大学出版社,2010.

[7]阎石主编.数字电子技术基础.第五版.高等教育出版社,2010年:

167—325

[8]王辉殷颖陈婷俞一鸣.MAX+plusⅡ和QuartusⅡ应用与开发技巧.机械工业出版社,2007.1

 

课程设计成绩评定表

项目

比例

得分

平时成绩(百分制记分)

30%

业务考核成绩(百分制记分)

70%

总评成绩(百分制记分)

100%

评定等级

优良中及格不及格

指导教师(签名):

20年月日

 

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

当前位置:首页 > 幼儿教育 > 育儿理论经验

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

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