EDA 数字秒表设计.docx

上传人:b****8 文档编号:10393762 上传时间:2023-02-10 格式:DOCX 页数:20 大小:327.18KB
下载 相关 举报
EDA 数字秒表设计.docx_第1页
第1页 / 共20页
EDA 数字秒表设计.docx_第2页
第2页 / 共20页
EDA 数字秒表设计.docx_第3页
第3页 / 共20页
EDA 数字秒表设计.docx_第4页
第4页 / 共20页
EDA 数字秒表设计.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

EDA 数字秒表设计.docx

《EDA 数字秒表设计.docx》由会员分享,可在线阅读,更多相关《EDA 数字秒表设计.docx(20页珍藏版)》请在冰豆网上搜索。

EDA 数字秒表设计.docx

EDA数字秒表设计

设计自动化

大作业

数字秒表设计

控制科学与工程学院

自动化0803

00——年五月

题目:

数字秒表的设计

、设计要求:

⑴数字秒表的计时精度是10ms;

(2)复位开关可以在任何情况下使用,计时在计时过程中,只要按一下复位开关,计时器就清零,并做好下次计时的准备;

(3)具有启/停开关,即按一下启/停开关,启动计时器开始计时,再按一下启/停开关则停止计时。

⑷数字秒表的计时范围是0秒~59分秒,显示的最长时间为59分59秒

、总体设计:

1、总体结构图

2、各模块功能

1)SEL模块:

将扫描信号输给选择(CHOICE模块

2)选择模块:

按扫描信号的指定选择输出

3)3-8译码模块:

通过SEL合的信号来控制8位数码管位的亮灭

4)计时模块:

分别对毫秒,秒,分计时

5)显示模块:

通过CHOICE莫块的输出信号来控制

三、单元模块设计

1、模块名:

sel模块设计

sei

elk.3eloul[2..0']

irstS

(1)模块功能:

CLK为扫描时钟脉冲,SELOUT端不停的发出扫描到的信号

(2)端口定义:

CLK为信号输入端

SEL0UT[2..Q为选择到的信号输出

(3)VHDL源程序

libraryieee;

useselis

port(clk:

instd_logic;

selout:

outstd_logic_vector(2downto0));

endsel;

architectureoneofselis

signalcount:

std_logic_vector(2downto0);

begin

process(clk)

begin

ifclk'eventandclk-1'then

if(count="101")then

countv="000";

else

count<=count+1;

endif;

endif;

endprocess;

selout<=count;

endone;

(4)仿真结果

说明:

来一个上升沿,SELOUT勺值增1,可以证明模块是正确的。

2、模块名:

选择模块设计

iCHOICE

端口定义:

a,b,c为控制信号;

data1[3..0],data2[3..0],data3[3..0],data4[3..0],data5[3..0],

data6[3..0]分别是毫秒的低位,毫秒的高位,秒的低位,秒

的高位,分的低位,分的高位的数据值;

ch_out[3..0]为选择输出端。

VHDL源程序

libraryieee;

usechoiceis

port

(a,b,c:

instd_logic;

data1,data2,data3,data4,data5,data6:

instd_logic_vector(3downto0);

ch_out:

outstd_logic_vector(3downto0));

endchoice;

architecturebehaveofchoiceis

signalch:

std_logic_vector(2downto0);

begin

ch

(2)<=c;

ch

(1)<=b;

ch(0)<=a;

process(ch)

begin

casechis

when"000"=>ch_out<=data1;

when"001"=>ch_out<=data2;

when"010"=>ch_out<=data3;

when"011"=>ch_out<=data4;

when"100"=>ch_outv=data5;

when"101"=>ch_outv=data6;

whenothers=>null;

endcase;

endprocess;

endbehave;

(4)仿真结果

1►*

■AQH

4*1

A4M

L

ftVhl

1庖0X

Mp

[ar

1■

a亠匸

1mD

■IB

KiXD

Imi

I

0.1TbB

™X

331:

1m

上BlT

□IDA[U1

PSir

—nr\

rb*

I

'"fl

1时

1

EiJ

rr.1i

f販曲I

荀B1

It

B3百|

1DHC

ni

1

0ElK

pone

onL

ts

[[1fc¥>-b^

Pvia

:

.

0Q1

ra

9ta'vL

kHLt

UVL1

s

fl知

1■1

MW

1

1

B3山

rhOi

!

-

mi

1

1

abc的值递增,ch_out选择输出data1,data2,data3,data4,data5,data6的值,证

说明:

明模块是正确的

3、模块名:

3-8译码模块设计

;decodeBB

I—

E

SEL[2.0]op-0]—!

Iin^tS

f

E■-T—■■I■--r—

(1)

模块功能:

通过SEL给的信号来控制8位数码管位的亮灭。

端口定义:

输入端SEL[2..0值大小来选择输出Q的值

输出端Q[7..0]来控制灯哪位亮

VHDL源程序

LIBRARYieee;

usedecode3_8IS

PORT(SEL:

INstd_logic_vector(2downto0);

Q:

OUTstd_logic_vector(7downto0));

ENDdecode3_8;

ARCHITECTUREaOFdecode3_8IS

BEGIN

Q<=""whensel=0else

""whensel=1else""whensel=2else""whensel=3else""whensel=4else""whensel=5else

Illi.

ENDa;

(4)仿真结果

C0

LO

■DIOto

btidJlE

旦I貝

ILkiiLI.1

Sel的值递增,Q的相应位会亮,证明模块是正确的。

国IfcL1h-*2dFuhR

nq乂

J:

iIIIET

说明:

4.1

模块名:

毫秒计

时模块设计

 

0-

01[3…0:

r

la

(1)模块功能:

对毫秒位的计数

2)端口定义:

clk为信号时钟输入端

reset为复位端

pause为暂停端

co为进位信号输出端

qh:

毫秒信号的高位输出端ql:

毫秒信号的低位输出端

(3)VHDL源程序

libraryieee;

usem100is

port

(clk:

instd_logic;

reset:

instd_logic;

pause:

instd_logic;

co:

outstd_logic;

qh:

bufferstd_logic_vector(3downto0);

ql:

bufferstd_logic_vector(3downto0));

endm100;

architecturebehaveofm100is

begin

co<='1'when(qh="1001"andql="1001")else'0';

process(clk,reset,pause)

beginif(reset='0')then

qh<="0000";

ql<="0000";

qh<=qh;

elsif(clk'eventandclk='1')then

if(ql="1001")then

ql<="0000";

if(qh="1001")then

qh<="OOOO";

elseqh<=qh+1;

endif;

elseql<=ql+1;

endif;

 

endif;

endprocess;

endbehave;

仿真结果

模块的正确性

co

模块名:

秒计时模块设计

reset

5h[3..OJ^

ci

1)

模块功能:

对毫秒位的计数

端口定义:

clk为信号时钟输入端

reset为复位端

pause为暂停端

co为进位信号输出端

qh:

毫秒信号的高位输出端ql:

毫秒信号的低位输出端

VHDL源程序

libraryieee;

usem60_secis

port

(reset:

instd_logic;

pause:

instd_logic;

ci:

instd_logic;

co:

outstd_logic;

qh:

bufferstd_logic_vector(3downto0);

ql:

bufferstd_logic_vector(3downto0));

endm60_sec;

architecturebehaveofm60_secis

begin

co<='1'when(qh="0101"andql="1001"andci='1')else'0';

process(reset,pause,ci)

begin

qh<="0000";

elsif(pause='0')then

qh<=qh;

ql<=ql;elsif(ci'eventandei='1')then

if(ql="1001")then

q|v="OOOO";

if(qh="0101")then

qh<="0000";

elseqh<=qh+1;

endif;

elseql<=ql+1;

endif;

endif;

endprocess;

endbehave;

(4)仿真结果

说明:

确性

模块名:

分计时模块设计

M60-

jnH

reset

gJil3..□]

pans&

gA[3..0:

ci

:

(1)模块功能:

对毫秒位的计数

(2)端口定义:

elk为信号时钟输入端

reset为复位端

pause为暂停端

co为进位信号输出端

qh:

毫秒信号的高位输出端ql:

毫秒信号的低位输出端

(3)VHDL源程序

libraryieee;

usem60_minis

port

(reset:

instd_logic;

pause:

instd_logic;

ci:

instd_logic;

qh:

bufferstd_logic_vector(3downto0);

ql:

bufferstd_logic_vector(3downto0)

);

endm60_min;

architecturebehaveofm60_minis

begin

process(reset,pause,ci)

beginif(reset='0')then

qh<="0000";

ql<="0000";

elsif(pause='0')then

qh<=qh;

ql<=ql;

if(ql="1001")then

if(qh="0101")then

qh<="0000";

elseqh<=qh+1;

endif;

elseql<=ql+1;

endif;

endif;

endprocess;

endbehave;

(4)仿真结果

H・b

I丫ghLf.

I…

a

11

laiU

1D

:

Aa

1am

*&l

tD

Ml

feD

^1

9□

1Q

B4

1nmB

t1[

■D

*cl

90

■Q

C^IhL

91

量f亘至昔一已區一

[¥1-3s曲f>更回血罐卄liMpNb玖Qus*icp・暨j甦KflpH换]

饷D”

r^_rL_rL_rLn_rL_rLrLj*^"L_rLrLr_rLrL_rLrLrLrLrL_n_rL_rLj^iriTt

77TX

(niD

[n.3

「I_j_rzz^

说明:

高位为6进制,低位为10进制,ci为脉冲信号,当ql=9的时候,qh在下

时刻会增1,可以证明模块的正确性

5、模块名:

显示模块设计

(1)模块功能:

通过CHOICE莫块的输出信号来控制

(2)端口定义:

adr是选择模块结果的输入端

q_show是控制数码管段亮的输出端

(3)VHDL源程序

libraryieee;

useBCD_7is

port

 

q_show:

outstd_logic_vector(6downto0));

endBCD_7;

architecturebehaveofBCD7is

begin

process(adr)

begin

caseadris

when"0000"=>q_show<="1111110";

when"0001"=>q_show<="0110000";

when"0010"=>q_show<="1101101";

when"0011"=>q_show<="1111001";

when"0100"=>q_show<="0110011";

when"0101"=>q_show<="1011011";

when"0110"=>q_show<="1011111";

when"0111"=>q_show<="1110000";

when"1000"=>q_show<="1111111";

when"1001"=>q_show<="1111011";

whenothers=>null;

endcase;

endprocess;

endbehave;

(4)仿真结果

H

3-□u

1M>■fanH0M

St

•g

u4“

An

*2

*2M1■戒4■■w^fi■«

'SJr

1rm

m1cmJwu

V

nilI[m

amS'

CIUf

ILCIiLADsEOUEWJDILIIL

曲[ri!

i

11*1

11

-1

r-

Il

jT"

nnt_j—

4口1

91

1

1

J

L1

・4

1

1

btrbh

I0

1

JJLtiJD工K拠)i.nil

.V

*

ILIKiXIILXil

s

lOdJULJ

L^IIEht

ninwXiiiHii1ikjiir

11

r

II

1

c-ih

J0

1

1

1

1

LhL

■1

11

II

u

!

L11

1_・h

t1

11

11]1

»4

L

11

L-

1

11

11

11

说明:

随着adr的值增加,q_show输出相应的值,数码管相应的段会亮,证明模块是正确的

四、数字秒表整体组装

1、顶层原理图

1.工作情况

输入信号经过分频器输给计时模块,计时模块的各位输给选择(CHOICE)

模块,选择模块选择输出,再经过转码(BCD_7模块控制数码管段的亮灭;

输入信号的另一路经过分频器给扫描(SEL模块,SEL的输出信号一方面给CHOICE模块提供提供选择信号,另一方面又给译码器(decode3_8)模块提供译码信号来控制灯位的亮灭。

,Pause和reset分别控制暂停和复位。

2.模块间的连接关系:

扫描(SEL模块的输出端接译码(decode3_8)模块和选择(CHOICE模块,计

时模块接选择(CHOICE模块,选择(CHOICE模块将选到的信号给转码(BCD_7)模块控制数码管段的亮灭

2、仿真结果

■运詈巫益"一■一器豆咅一

说明:

确性

输入信号后,数码管会不停的被扫描,

段和位会选择亮,

可以证明模块的正

管脚分配:

 

,脚编号

管脚定义

管脚编号

管脚定义

153

Clk50MHZ

104

duan1

4

Pause

101

duan2

127

reset

100

duan3

86

Wei7

85

duan4

87

Wei6

84

duan5

88

Wei5

83

duan6

93

Wei4

82

dp

94

Wei3

95

Wei2

98

Wei1

99

Wei0

duanO

hout3

箱子接上电源,下载即可运行,数码管会开始计时

elk

分频器端的输入频率f=50MHZ

Pause

计时模块的暂停输入端

reset

计时模块的复位输入端

duan[0..6]

数码管段的控制端

wei[7..O]

数码管位的控制端

dp

数码管的“.“接地

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

当前位置:首页 > 工程科技 > 电力水利

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

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