EDA设计 数字钟.docx

上传人:b****8 文档编号:11089467 上传时间:2023-02-25 格式:DOCX 页数:14 大小:189.85KB
下载 相关 举报
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设计数字钟

摘要

利用MAX+PLUSⅡ软件,设计一个能进行时、分、秒计时的24制多功能数字钟,使其具有定时与闹钟功能,且能在设定的时间发出闹铃音,能非常方便地对时、分、秒进行手动调节以校准时间,每逢整点,产生报时音效,并在实验板上成功下载,验证后满足要求。

关键词:

EDA;MAX+PLUS2;数字钟;

0引言

随着科学技术的发展,现代电子设计技术已进入一个全新的阶段,传统的电子设计方法、工具和器件在更大的程度上被EDA所取代。

在EDA技术中,最为瞩目的是以现代电子技术为特征的逻辑设计仿真测试技术,该技术的出现,使电子系统设计发生了质的变化,设计速度快、体积小、重量轻、功耗小的集成电路已成为趋势。

本文利用EDA技术,选用ALTERA公司的CPLD器件EPF10K10LC84-4和软件MAX+PLUS2,设计了一个多功能数字钟,提高了系统的整体性能和可靠性,并通过编译、仿真、下载,经验证后已满足要求。

1多功能数字钟设计任务

1.1数字钟设计要求

(1)、设计一个能显示1/10秒、秒、分、时的12小时数字钟。

(2)、熟练掌握各种计数器的使用。

(3)、能用计数器构成十进制、六十进制、十二进制等所需进制的计数器。

(4)、能用低位的进位输出构成高位的计数脉冲。

1.2设计思路

此设计可分为主控电路、计数器模块和扫描显示三大模块。

1.2.1主控电路模块

主控电路状态用表格显示,如下表所列:

秒、时、分、

计数器脉

输出状态

Reset

Reset1

AB

Turn

LD-h

LD-m

LD-alert

0

X

XX

X

X

0

0

0

系统复位

1

X

00

X

CLK

0

0

0

系统计时

1

X

01

0

Change=

分计数器加1

0

1

0

手动

校时

1

X

01

1

Change=

时计数器加1

1

0

0

1

1

10

0

Change=

分计数器加1

0

1

1

设置闹钟

1

1

10

1

Change=

时计数器加1

1

0

1

1

0

XX

X

X

0

0

0

关闭闹钟

1.2.2计数器模块

计数器模块中,分钟和秒用带进位位的60进制功能模块,小时用不带进位位的24进制功能模块(如果考虑到日期的问题,在24进制模块加进位输出即可实现)。

计数器模块均用VerilogHDL语言编写,实现计数逻辑功能。

1.2.3扫描显示模块

扫描显示模块利用VerilogHDL语言编写实现,把三个计数器输出的时、分、秒从左至右依次显示在留个数码管上。

具体见设计部分。

1.3数字钟硬件系统示意图

2多功能数字钟的设计实现

2.1主控电路设计

将主控电路分为输入逻辑控制和输出逻辑控制两部分。

2.1.1输入逻辑控制

用原理图输入法,通过使用各种门电路,按照数字钟主控电路状态表中的逻辑关系,设计并实现具有表格中各种特殊功能的主控电路,设计原理图如下:

2.1.2输出逻辑控制

(1)闹铃比较电路

通过8个2输入同或门、一个8输入与门构成逻辑关系,实现比较功能,电路原理图如下:

若生成简洁的符号体,使用更方便,且电路图更清晰明了。

经编译、仿真、下载,满足要求,然后通过CreateDefaultSymbol,生成符号体,如下左图:

(2)整点报时比较电路

通过门电路来实现,原理图如下:

生成符号体如上右图:

(3)数码管输出比较电路

系统计时和闹铃设置状态均需使用扫描显示电路,该功能由两组扫描显示电路来实现。

因此,需要通过2个2输入与门和1个2输入或门电路对两组扫描显示电路进行控制,完整实现扫描显示功能,生成的符号体如下:

2.2计数器部分

EDA工具的重要特征之一是支持多种输入方式,如原理图输入方式、状态机输入方式、HDL高级语言输入方式等等。

MAX+PLUSⅡ软件平台对以上输入方式都能很好地支持。

此部分的设计即通过VerilogHDL输入方式来实现。

2.2.124进制计数器

用VerilogHDL实现时,代码如下:

modulehour(qh,ql,clk,reset);

output[3:

0]qh;

output[3:

0]ql;

reg[3:

0]qh;

reg[3:

0]ql;

inputclk,reset;

always@(posedgeclkornegedgereset)

begin

if(!

reset){qh,ql}<=0;

elsebegin

if({qh,ql}==8'h23){qh,ql}<=0;

elsebegin

if(ql==9)beginql<=0;

qh<=qh+1;

end

else

ql<=ql+1;

end

end

end

endmodule

输入完毕,经编译、仿真、下载,满足要求。

然后通过CreateDefaultSymbol,生成符号体如下:

2.2.2带进位位的60进制计数器

用VerilogHDL实现时,代码如下:

moduleminute(qh,ql,rco,clk,reset);

output[3:

0]qh;

output[3:

0]ql

outputrco;

reg[3:

0]qh;

reg[3:

0]ql;

regrco;

inputclk,reset;

always@(posedgeclkornegedgereset)

begin

if(~reset){qh,ql}<=0;

else

begin

if({qh,ql}==8'h59)

begin{qh,ql}<=0;rco<=1;

end

else

begin

if(ql==9)

beginql<=0;qh<=qh+1;

end

else

beginql<=ql+1;rco<=0;end

end

end

end

endmodule

输入完毕,经编译、仿真、下载,满足要求。

然后通过CreateDefaultSymbol,生成符号体如下:

同理,秒计时模块生成符号体如下:

2.2.3不带进位位的60进制计数器

用于闹钟的计数器,不需要进位位,另创建符号体如下:

2.3扫描显示模块

用VerilogHDL实现时,代码如下:

modulesel(in1,in2,in3,in4,in5,in6,in7,in8,clk,ms1,ms2,ms3,ms4,ms5,ms6,ms7,ms8,a,b,c,d,e,f,g);

inputclk;

input[3:

0]in1,in2,in3,in4,in5,in6,in7,in8;

outputms1,ms2,ms3,ms4,ms5,ms6,ms7,ms8,a,b,c,d,e,f,g;

regms1,ms2,ms3,ms4,ms5,ms6,ms7,ms8,a,b,c,d,e,f,g;

reg[3:

0]temp,flag;

always@(posedgeclk)

begin

{ms1,ms2,ms3,ms4,ms5,ms6,ms7,ms8}=8'b00000000;

flag=flag+1;

case(flag)

0:

begintemp=in1;ms1=1;end

1:

begintemp=in2;ms2=1;end

2:

begintemp=in3;ms3=1;end

3:

begintemp=in4;ms4=1;end

4:

begintemp=in5;ms5=1;end

5:

begintemp=in6;ms6=1;end

6:

begintemp=in7;ms7=1;end

7:

begintemp=in8;ms8=1;end

endcase

case(temp)

4'd0:

{a,b,c,d,e,f,g}=7'b1111110;

4'd1:

{a,b,c,d,e,f,g}=7'b0110000;

4'd2:

{a,b,c,d,e,f,g}=7'b1101101;

4'd3:

{a,b,c,d,e,f,g}=7'b1111001;

4'd4:

{a,b,c,d,e,f,g}=7'b0110011;

4'd5:

{a,b,c,d,e,f,g}=7'b1011011;

4'd6:

{a,b,c,d,e,f,g}=7'b1011111;

4'd7:

{a,b,c,d,e,f,g}=7'b1110000;

4'd8:

{a,b,c,d,e,f,g}=7'b1111111;

4'd9:

{a,b,c,d,e,f,g}=7'b1111011;

4'hA:

{a,b,c,d,e,f,g}=7'b1110111;

4'hB:

{a,b,c,d,e,f,g}=7'b0011111;

4'hC:

{a,b,c,d,e,f,g}=7'b1001110;

4'hD:

{a,b,c,d,e,f,g}=7'b0111101;

4'hE:

{a,b,c,d,e,f,g}=7'b1001111;

4'hF:

{a,b,c,d,e,f,g}=7'b1000111;

default:

{a,b,c,d,e,f,g}=7'b1111110;

endcase

end

endmodule

输入完毕,经编译、仿真、下载,满足要求。

然后通过CreateDefaultSymbol,生成符号体如下:

至此,三大模块设计工作基本完成,只需将各模块之间按连线规则严格进行连接,必要时添加相应的门电路,定义好相应的I/O管脚和信号线后,即可进行逻辑实现与综合。

多功能数字钟系统.gdf文件如下图:

3结论

EDA提供了良好的逻辑综合与优化功能,它能够将设计人员设计的逻辑级电路图自动地转换为门级电路,并生成相应的网表文件、时序分析文件和各种报表,若设计没有错误,最终可生成可以编程下载的.SOF文件。

本文给出的数字时钟基于MAX+plusⅡ设计,经过软件仿真并下载到硬件(电子EDA实验开发系统)实现,完成了基本的数字钟功能设计,表明本设计是合理可行的。

通过多功能数字钟的设计可知EDA技术及其工具在数字电路系统,包括模拟电路系统中正发挥着越来越重要的作用,有传统的电子设计方法无法比拟的优点。

本次EDA试验为期三天,整个过程紧凑,在仅有的三天时间里,我迅速的掌握了EDA与数字系统设计课程要求的内容,理解并能简单应用VerilogHDL语言。

在数字钟设计过程中,繁琐的主控电路,是整个设计的关键,耗费了我大量的时间和精力。

从许多次的尝试和失败中,我发现在数字电路中逻辑上能够实现的设计,实际应用中却未必正确。

最初设计时,我使用了一个自己利用门电路设计的2输入比较器,经编译、检验无错后,下载到实验板验证时,却无法完全实现数字钟逻辑功能,导致我的设计进度慢了下来。

又因为课程之间时间冲突,经刘春老师允许,我得以另外抽时间前往EDA实验室完成剩余课程设计任务。

经过后来的各种尝试,我终于发现问题恰恰在那个2输入比较器上,当我改用其他逻辑门电路实现它的逻辑功能后,经编译、仿真、下载,验证正确,我的设计才完全成功。

在此,衷心感谢刘春老师和胡存刚老师的指导,使我顺利完成了EDA与数字系统课程设计任务。

通过这门课程的学习,我真正懂得了一个道理:

不要轻易放弃,失败是成功之母!

 

参考文献:

[1]李国丽,朱维勇,栾铭.EDA与数字系统设计[M].北京:

机械工业出版社,2004.1.

[2]阎石.数字电子技术基础[M].北京:

高等教育出版社,1998.12.

[3]金孟树.基于EDA技术的现代数字系统设计[J].温州职业技术学院学报,2002(3).

[4]周红,刘光蓉,张红武.利用MAX+plusⅡ进行数字逻辑课程设计[J].武汉工业学院学报,2004(4).

[5]董守田,张志杰,欧阳斌林.基于JK2技术的数字系统的设计[J].东北农业大学学报.2003,34(3).

 

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

当前位置:首页 > 表格模板 > 合同协议

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

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