EDA数字秒表设计样本.docx

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

EDA数字秒表设计样本.docx

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

EDA数字秒表设计样本.docx

EDA数字秒表设计样本

电子设计自动化大作业

题目数字秒表设计

 

学院控制科学与工程学院

班级自动化0803

姓名

学号

二OO一一年五月十二日

题目:

数字秒表设计

一、设计规定:

(1)数字秒表计时精度是10ms;

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

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

(4)数字秒表计时范畴是0秒~59分59.99秒,显示最长时间为59分59秒

二、总体设计:

1、总体构造图

 

输入到CHOICE中

 

2、各模块功能

1)SEL模块:

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

2)选取模块:

按扫描信号指定选取输出

3)3-8译码模块:

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

4)计时模块:

分别对毫秒,秒,分计时

5)显示模块:

通过CHOICE模块输出信号来控制

三、单元模块设计

1、模块名:

sel模块设计

(1)模块功能:

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

(2)端口定义:

CLK为信号输入端

SELOUT[2..0]为选取到信号输出

(3)VHDL源程序

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityselis

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

count<="000";

else

count<=count+1;

endif;

endif;

endprocess;

selout<=count;

endone;

(4)仿真成果

阐明:

来一种上升沿,SELOUT值增1,可以证明模块是对的。

2、模块名:

选取模块设计

(1)模块功能:

按扫描信号指定选取输出

(2)端口定义:

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]为选取输出端。

(3)VHDL源程序

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitychoiceis

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_out<=data5;

when"101"=>ch_out<=data6;

whenothers=>null;

endcase;

endprocess;

endbehave;

(4)仿真成果

阐明:

abc值递增,ch_out选取输出data1,data2,data3,data4,data5,data6值,证明模块是对的

3、模块名:

3-8译码模块设计

(1)模块功能:

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

(2)端口定义:

输入端SEL[2..0]值大小来选取输出Q值

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

(3)VHDL源程序

LIBRARYieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

ENTITYdecode3_8IS

PORT(SEL:

INstd_logic_vector(2downto0);

Q:

OUTstd_logic_vector(7downto0)

);

ENDdecode3_8;

ARCHITECTUREaOFdecode3_8IS

BEGIN

Q<="11111110"whensel=0else

"11111101"whensel=1else

"11111011"whensel=2else

"11110111"whensel=3else

"11101111"whensel=4else

"11011111"whensel=5else

"11111111";

ENDa;

(4)仿真成果

阐明:

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

4.1模块名:

毫秒计时模块设计

(1)模块功能:

对毫秒位计数

(2)端口定义:

clk为信号时钟输入端

reset为复位端

pause为暂停端

co为进位信号输出端

qh:

毫秒信号高位输出端

ql:

毫秒信号低位输出端

(3)VHDL源程序

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitym100is

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)

begin

if(reset='0')then

qh<="0000";

ql<="0000";

elsif(pause='0')then

qh<=qh;

ql<=ql;

elsif(clk'eventandclk='1')then

if(ql="1001")then

ql<="0000";

if(qh="1001")then

qh<="0000";

elseqh<=qh+1;

endif;

elseql<=ql+1;

endif;

endif;

endprocess;

endbehave;

(4)仿真成果

阐明:

毫秒为100进制,高位和地位都是10进制,高位到10会有进位,可以证明模块对的性

4.2模块名:

秒计时模块设计

(1)模块功能:

对毫秒位计数

(2)端口定义:

clk为信号时钟输入端

reset为复位端

pause为暂停端

co为进位信号输出端

qh:

毫秒信号高位输出端

ql:

毫秒信号低位输出端

(3)VHDL源程序

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitym60_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

if(reset='0')then

qh<="0000";

ql<="0000";

elsif(pause='0')then

qh<=qh;

ql<=ql;

elsif(ci'eventandci='1')then

if(ql="1001")then

ql<="0000";

if(qh="0101")then

qh<="0000";

elseqh<=qh+1;

endif;

elseql<=ql+1;

endif;

endif;

endprocess;

endbehave;

(4)仿真成果

阐明:

秒进制为60进制,高位到6会有进位,低位为10进制,可以证明模块对的性

4.3模块名:

分计时模块设计

(1)模块功能:

对毫秒位计数

(2)端口定义:

clk为信号时钟输入端

reset为复位端

pause为暂停端

co为进位信号输出端

qh:

毫秒信号高位输出端

ql:

毫秒信号低位输出端

(3)VHDL源程序

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitym60_minis

port

(reset:

in

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

当前位置:首页 > 幼儿教育 > 幼儿读物

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

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