EDA数字钟设计报告.docx

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

EDA数字钟设计报告.docx

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

EDA数字钟设计报告.docx

EDA数字钟设计报告

湖南机电职业技术学院

实训报告

 

实训课题EDA设计技术及应用

班级电子0903班

小组第15小组

姓名湛虎刘慧

指导老师曾荣周

2011年06月11日

目录

1、设计要求

2、设计原理

3、数字钟各模块的VHDL程序

4、仿真波形图

5、数字钟顶层结构

6、总结

 

1.数字钟设计要求

(1)具有正确的时、分、秒计时功能。

(2)计时结果要求用6个数码管分别显示时、分、秒的十位和各位。

有校时功能。

当SB键按下时,时计数器以秒脉冲的速度递增,并按60min循环,及计时倒数到59min后再回00。

当sa按键按下时,时计数器以秒脉冲的速度递增,并按24h循环,即计数器到23h后再回00。

(3)利用扬声器整点报时。

当计数到达59’50”时开始报时,在59’50”52”54”56”58”时鸣叫,鸣叫声频为500Hz;到达59’60”时为最后一声整点报时,频率为1kHz。

2.设计原理

明确了数字钟的功能要求,就可以对数字钟按照功能进行模块划分。

下图是它的顶层电路原理图。

CLKK和三个FEN10共同构成分频器模块。

CLKK模块产生1KHz和500Hz两种频率信号,1KHz,的信号再经三个FEN10模块分频成为1Hz的方波信号。

1Hz信号作为秒脉冲送入60进制计数器CNT60进行秒计时,满60s产生一个进位信号co,它和1Hz信号经过2选1数据选择器21MUX由sb键控制选择其一送入分计数器进行计数。

即按下sb,将1Hz秒脉冲信号选送到分计数器,从而实现快速校分功能;正常状态下,sb键弹起,则将满60s产生的进位信号co作为时钟计数,实现正常计时功能,当分计数器计满60分时,将其进位信号送至时计数器。

3.数字钟各模块的VHDL程序及仿真波形图

(1)六十进制BCD码计数器的源程序

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYcnt60IS

PORT(clk,clr:

INSTD_LOGIC;

ten,one:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

co:

OUTSTD_LOGIC);

ENDcnt60;

ARCHITECTUREarcOFcnt60IS

SIGNALcin:

STD_LOGIC;

BEGIN

PROCESS(clk,clr)

VARIABLEcnt0:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

IFclr='1'THEN

cnt0:

="0000";

ELSIFclk'EVENTANDclk='1'THEN

IFcnt0="1000"THEN

cnt0:

=cnt0+1;cin<='1';

ELSIFcnt0="1001"THEN

cin<='0';cnt0:

="0000";

ELSEcnt0:

=cnt0+1;cin<='0';

ENDIF;

ENDIF;

one<=cnt0;

ENDPROCESS;

PROCESS(clk,clr,cin)

VARIABLEcnt1:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

IFclr='1'THEN

cnt1:

="0000";

ELSIFclk'EVENTANDclk='1'THEN

IFcin='1'THEN

IFcnt1="0101"THEN

cnt1:

="0000";co<='1';

ELSEcnt1:

=cnt1+1;co<='0';

ENDIF;

ENDIF;

ELSEcnt1:

=cnt1;

ENDIF;

ten<=cnt1;

ENDPROCESS;

ENDarc;

2)二十四进制计数器的VHDL源程序

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYcnt24IS

PORT(clk,clr:

INSTD_LOGIC;

ten,one:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

co:

OUTSTD_LOGIC);

ENDcnt24;

ARCHITECTUREarcOFcnt24IS

SIGNALt10:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALo1:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALcin:

STD_LOGIC;

BEGIN

ten<=t10;

one<=o1;

p1:

PROCESS(clk,clr)

BEGIN

IFclr='1'THEN

o1<="0000";

ELSIFclk'EVENTANDclk='1'THEN

IF(o1="1001")OR(t10="0010"ANDo1="0011")THEN

o1<="0000";cin<='0';

ELSIFo1="1000"THEN

o1<=o1+1;cin<='1';

ELSEo1<=o1+1;cin<='0';

ENDIF;

ENDIF;

ENDPROCESSp1;

p2:

PROCESS(cin,clk,clr)

BEGIN

IFclr='1'THEN

t10<="0000";

ELSIFclk'EVENTANDclk='1'THEN

IF(t10="0010"ANDo1="0011")THEN

t10<="0000";co<='1';

ELSEco<='0';

ENDIF;

IFcin='1'THEN

t10<=t10+1;

(3)整点报时模块ZDBS的VHDL程序源

libraryieee;

useieee.std_logic_1164.all;

entityzdbsis

port(clk:

instd_logic;

tenm,onem,tens,ones:

instd_logic_vector(3downto0);

q500,qlk:

outstd_logic);

endzdbs;

architecturebehavofzdbsis

begin

process(clk)

begin

ifclk'eventandclk='1'then

iftenm="0101"andonem="1001"andtens="0101"then

ifones="0000"orones="0010"or

ones="0100"or

ones="0110"orones="1000"then

q500<='1';

else

q500<='0';

endif;

endif;

iftenm="0000"andonem="0000"andtens="0000"then

qlk<='1';

endif;

endif;

endprocess;

endbehav;

 

(4)MUX24_4模块的程序源

libraryieee;

useieee.std_logic_1164.all;

entitymux24_4is

port(sel:

instd_logic_vector(2downto0);

tenh,oneh:

instd_logic_vector(3downto0);

tenm,onem:

instd_logic_vector(3downto0);

tens,ones:

instd_logic_vector(3downto0);

q:

outstd_logic_vector(3downto0));

endmux24_4;

architecturebehavofmux24_4is

begin

process(sel)

begin

caseselis

when"000"=>q<=ones;

when"001"=>q<=tens;

when"011"=>q<=onem;

when"100"=>q<=tenm;

when"110"=>q<=oneh;

when"111"=>q<=tenh;

whenothers=>q<="1111";

endcase;

endprocess;

endbehav;

(5)片选信号SEL模块的源程序

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityselis

port(clk:

instd_logic;

q:

outstd_logic_vector(2downto0));

endsel;

architecturearcofselis

begin

process(clk)

variablecnt:

std_logic_vector(2downto0);

begin

ifclk'eventandclk='1'then

cnt:

=cnt+1;

endif;

q<=cnt;

endprocess;

endarc;

(6)十分频模块FEN10的源程序

libraryieee;

useieee.std_logic_1164.all;

entityfen10is

port(clk:

instd_logic;

q:

outstd_logic);

endfen10;

architecturearcoffen10is

begin

process(clk)

variablecnt:

integerrange0to9;

begin

ifclk'eventandclk='1'then

ifcnt<9then

cnt:

=cnt+1;

q<='0';

elsecnt:

=0;

q<='1';

endif;

endif;

endprocess;

endarc;

(7)分频器CLKK模块的VHDL源程

libraryieee;

useieee.std_logic_1164.all;

entityclkkis

port(clk:

instd_logic;

clk500,clk1k:

outstd_logic);

endclkk;

architecturebehavofclkkis

signalx:

std_logic;

begin

process(clk)

variablecnt:

integerrange0to1999;

begin

ifclk'eventandclk='1'then

ifcnt<1999then

cnt:

=cnt+1;

elsecnt:

=0;

x<=notx;

endif;

endif;

clk1k<=x;

endprocess;

process(x)

variabley:

std_logic;

begin

ifx'eventandx='1'then

y:

=noty;

endif;

clk500<=y;

endprocess;

endbehav;

(8)BCD/7段译码器的VHDL程序

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYdispIS

PORT(d:

INSTD_LOGIC_VECTOR(3DOWNTO0);

q:

OUTSTD_LOGIC_VECTOR(6DOWNTO0));

ENDdisp;

ARCHITECTUREbehavOFdispIS

BEGIN

PROCESS(d)

BEGIN

CASEdIS

WHEN"0000"=>q<="0111111";

WHEN"0001"=>q<="0000110";

WHEN"0010"=>q<="1011011";

WHEN"0011"=>q<="1001111";

WHEN"0100"=>q<="1100110";

WHEN"0101"=>q<="1101101";

WHEN"0110"=>q<="1111101";

WHEN"0111"=>q<="0100111";

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

WHEN"1001"=>q<="1101111";

WHENOTHERS=>q<="0000000";

ENDCASE;

ENDPROCESS;

ENDbehav;

 

(9)扫描控制SCAM模块的VHDL源程序

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYscanIS

PORT(sel:

INSTD_LOGIC_VECTOR(2DOWNTO0);

led6:

OUTSTD_LOGIC_VECTOR(5DOWNTO0));

ENDscan;

ARCHITECTUREbehavOFscanIS

BEGIN

PROCESS(sel)

BEGIN

CASEselIS

WHEN"000"=>led6<="111110";

WHEN"001"=>led6<="111101";

WHEN"011"=>led6<="111011";

WHEN"100"=>led6<="110111";

WHEN"110"=>led6<="101111";

WHEN"111"=>led6<="011111";

WHENOTHERS=>led6<="111111";

ENDCASE;

ENDPROCESS;

ENDbehav;

(10)二选一多路选择器模块源程序:

libraryieee;

useieee.std_logic_1164.all;

entitymux21is

port(a,b,s:

instd_logic;

y:

outstd_logic);

endmux21;

architecturearofmux21is

begin

process(a,b,s)

begin

ifs='0'then

y<=a;

else

y<=b;

endif;

endprocess;

endar;

4.数字钟仿真波形图

Cnt24

4.数字钟顶层结构

5.数字钟的顶层结构:

明确了数字钟的功能要求,就可以对数字钟按照功能进行模块划分。

下图是它的顶层电路原理图。

CLKK和三个FEN10共同构成分频器模块。

CLKK模块产生1KHz和500Hz两种频率信号,1KHz,的信号再经三个FEN10模块分频成为1Hz的方波信号。

1Hz信号作为秒脉冲送入60进制计数器CNT60进行秒计时,满60s产生一个进位信号co,它和1Hz信号经过2选1数据选择器21MUX由sb键控制选择其一送入分计数器进行计数。

即按下sb,将1Hz秒脉冲信号选送到分计数器,从而实现快速校分功能;正常状态下,sb键弹起,则将满60s产生的进位信号co作为时钟计数,实现正常计时功能,当分计数器计满60分时,将其进位信号送至时计数器。

 

五.总结

通过这次设计,进一步加深了对EDA的了解,使我对它有了更加浓厚的兴趣。

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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