《EDA技术及其应用》实验.docx

上传人:b****6 文档编号:8252772 上传时间:2023-01-30 格式:DOCX 页数:13 大小:163.38KB
下载 相关 举报
《EDA技术及其应用》实验.docx_第1页
第1页 / 共13页
《EDA技术及其应用》实验.docx_第2页
第2页 / 共13页
《EDA技术及其应用》实验.docx_第3页
第3页 / 共13页
《EDA技术及其应用》实验.docx_第4页
第4页 / 共13页
《EDA技术及其应用》实验.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

《EDA技术及其应用》实验.docx

《《EDA技术及其应用》实验.docx》由会员分享,可在线阅读,更多相关《《EDA技术及其应用》实验.docx(13页珍藏版)》请在冰豆网上搜索。

《EDA技术及其应用》实验.docx

《EDA技术及其应用》实验

学生实验报告

系别

课程名称

《EDA技术及其应用》实验

班级

实验名称

电子钟设计

姓名

实验时间

2012年11月20日

学号

指导教师

报告内容

一、实验目的和任务

1、设计电子钟,学习较复杂的数字系统设计方法;

2、熟悉掌握之前学过的知识应用。

二、实验原理介绍

完成一个带有时分秒显示的电子钟,时间可以设定。

可12、24小时调节,能作秒表计时,可倒计时,可做闹钟。

实验步骤

1、为本项设计建立文件夹;

2、输入设计项目和存盘

3、将设计项目设置成工程文件

4、定制6进制计数器文件,下面是其程序,然后生成控制器原理图

modulecnt6(q,clk,cout,rst,en,add_sub);

inputclk,rst,en,add_sub;

output[3:

0]q;

outputregcout;

regcout1,cout2;

reg[3:

0]q;

reg[3:

0]q1;

reg[3:

0]q2;

always@(posedgeclkorposedgerst)

begin

if(rst)q1<=0;

elseif(add_sub)

if(q1==4'b0101)

begin

q1<=0;

cout1<=1;

end

else

begin

q1<=q1+1;

cout1<=0;

end

else

if(q1==4'b0000)

begin

q1<=4'b0101;

cout1<=1;

end

else

begin

q1<=q1-1;

cout1<=0;

end

end

always@(posedgeclkorposedgerst)

begin

if(rst)q2<=0;

elseif(en)

begin

if(q2==4'b0101)

begin

q2<=0;

cout2<=1;

end

else

begin

q2<=q2+4'b0001;

cout2<=0;

end

end

end

always@(en,q1,q2,cout1,cout2)

begin

if(en)

beginq<=q2;cout<=cout2;end

else

beginq<=q1;cout<=cout1;end

end

endmodule

5、定制10进制计数器文件,下面是其程序,然后生成计数器原理图

modulecnt10(q,clk,cout,rst,en,add_sub);

inputclk,rst,en,add_sub;

output[3:

0]q;

outputregcout;

regcout1,cout2;

reg[3:

0]q;

reg[3:

0]q1;

reg[3:

0]q2;

always@(posedgeclkorposedgerst)

begin

if(rst)q1<=0;

elseif(add_sub)

if(q1==4'b1001)

begin

q1<=0;

cout1<=1;

end

else

begin

q1<=q1+1;

cout1<=0;

end

else

if(q1==4'b0000)

begin

q1<=4'b1001;

cout1<=1;

end

else

begin

q1<=q1-1;

cout1<=0;

end

end

always@(posedgeclkorposedgerst)

begin

if(rst)q2<=0;

elseif(en)

begin

if(q2==4'b1001)

begin

q2<=0;

cout2<=1;

end

else

begin

q2<=q2+4'b0001;

cout2<=0;

end

end

end

always@(en,q1,q2,cout1,cout2)

begin

if(en)

beginq<=q2;cout<=cout2;end

else

beginq<=q1;cout<=cout1;end

end

endmodule

6、利用已定制好的6进制及10进制原理图生成60进制原理图:

图:

秒输出的原理框图

图:

分输出的原理框图

7、定制24进制计数器文件,含12—24小时转换,下面是其程序,然后生成计数器原理图

modulecnt24(q,clk,cout,rst,en,add_sub,switch);

inputclk,rst,en,add_sub,switch;

output[4:

0]q;

outputregcout;

regcout1,cout2;

reg[4:

0]q;

reg[4:

0]q1;

reg[4:

0]q2;

reg[4:

0]q3;

always@(posedgeclkorposedgerst)

begin

if(rst)q1<=0;

elseif(add_sub)//实现倒计时

if(q1==5'b10111)

begin

q1<=5'b00000;

cout1<=1;

end

else

begin

q1<=q1+1;

cout1<=0;

end

else

if(q1==5'b00000)

begin

q1<=5'b10111;

cout1<=1;

end

else

begin

q1<=q1-5'b00001;

cout1<=0;

end

end

always@(posedgeclkorposedgerst)//实现秒表功能

begin

if(rst)q2<=0;

elseif(en)

begin

if(q2==5'b10111)

begin

q2<=0;

cout2<=1;

end

else

begin

q2<=q2+5'b00001;

cout2<=0;

end

end

end

always@(en,q1,q2,cout1,cout2)//秒表和倒计时互相转换

begin

if(en)

beginq3<=q2;cout<=cout2;end

else

beginq3<=q1;cout<=cout1;end

end

always@(q3,switch)//12小时和24小时互相转换

begin

if(switch)

begin

if(q3>4'd12)q<=q3-4'd12;

elseq<=q3;

end

elseq<=q3;

end

endmodule

图:

小时输出的原理框图

8、定制十进制的小时在数码管上显示器件,下面是其程序,然后生成计数器原理图

modulebcd(a,hour);

input[4:

0]a;

output[7:

0]hour;

reg[7:

0]hour;

always@(a)

begin

if(a>19)hour<=a+8'b00001100;

elseif(a>9)hour<=a+8'b00000110;

elsehour<={4'b0000,a};

end

endmodule

图:

十进制的小时在数码管上显示

9、完成原理图设计,具体步骤如下:

(1)选择File文件里的新生成文件newfile,然后选择BlockDiagram/SchematicFile,点击确定;

(2)进入原理图设计面,双击空白处,弹出Symbol框,选择Project文件包,选择已生成的原理图,并完成原理图;

10、时序仿真,测试设计项目的正确性,即逻辑仿真;

11、引脚锁定;

12、编程下载。

三、设计代码(或原理图)、仿真波形及分析

图:

电子钟原理图

原理图中:

rst:

复位键,异步复位,高电平有效。

en:

秒表计时键,高电平有效,启动秒表计时功能。

add_sub:

倒计时键,当add_sub=1时,正常计时;add_sub=0时,启动倒计时功能。

switch:

12-24小时显示转换键,当switch=1时,时钟为12小时制;当switch=0时,小时为24小时制

 

图:

加了闹钟功能的电子钟原理图

图:

正常显示时分秒的仿真波形

 

图:

复位功能仿真波形

图:

秒表计时的仿真波形

从上面两图可以貌似正常显示时间与当秒表计算的效果是一样的,其实不然,正常显示时间是真正的时间显示,当秒表使用的计时只是采用了24时的计算方法,才导致其仿真效果一样,下载到硬件上实现时,其效果就明显不同了。

图:

倒计时的仿真波形

当倒计时用时,因为这个电子钟没有设定可以设置时间的程序,因此,只能在当前显示的时间进行倒计时,这点需要改进。

四、实验结论与心得

1、设置6进制、10进制的程序时,使我明白了不是所有程序都是可以直接运用,要符合自己的设计要求才行,如直接调用10进制异步复位和同步时钟时能的程序,则与时间60进制的个位向十位进位不一样,这时就需要改进了。

2、由于这个时钟的程序上设计存在一定的缺陷:

①仿真及下载实现时,均必须令倒计时功能键处在高电平,才可以让时钟正常显示时间。

②没有独立正常显示时钟的模块,即复位键有效时,正常显示的时间也为零,不符合实际应用。

五、实验评价(教师)

1.实验步骤正确,完成了本实验的全部内容。

很好( ) 一般( ) 否( )

2.实验数据全面,调试步骤准确,结果正确。

很好( ) 一般( ) 否( )

3.实验报告格式规范,图表清晰。

很好( ) 一般( ) 否( )

教师签名

王红航

批改时间

年月日

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

当前位置:首页 > IT计算机 > 互联网

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

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