数字电子钟EDA实验报告

电工电子实习

实验报告

姓  名               

     计科0901        

     200909010116    

一、    实验目的:

1、掌握多位计数器相连的设计方法。

2、掌握十进制、六十进制和二十四进制计数器的设计方法。

3、巩固数码管的驱动原理及编程方法。

4、掌握CPLD技术的层次化设计方法。

二、    实验要求:

基本要求:具有时、分、秒计数显示功能,以二十四小时循环计时。

扩展要求:具有调整时间的功能以及整点报时功能。

三、    实验原理:

?    必做部分:设计一个数字电子时钟。

通过分析实验要求得出:选用74LS163芯片共计6片,采用同步计数的方法来设计相关计时器(同一源输入脉冲接至CLK,控制ENT使能端实现计数),秒位计时器与分位计时器均为60进制,时位计时器为24进制。

?    选作部分:电子钟实现校时、清零和整点报时功能。

通过分析实验要求得出:1.控制数字电子钟分低位与时低位的使能端(ENT)输入(将使能端的输入分两部分,一种是自然输入,一种是输入相应电平信号手动控制使能信号)实现校时;2.控制验证当数字电子钟的输出为59分50秒时,与一个本电路所用的源输入脉冲信号,利用与门的特性输出相应的高低电平接通蜂鸣器实现整点报时。

1.    秒位计时电路设计(60进制)

秒低位计数用十进制计数器(74163改装)计数,由脉冲信号触发计数,9秒(秒低位输出1001B)时,秒低位清零;秒高位计数用六进制计数器(74163改装)计数,9秒时,秒高位芯片ENT输入高电平,由此触发计数,59秒(秒低位输出1001B,秒高位输出0101B)时,秒高位清零。

2.分位计时电路设计(60进制)

分位计时电路与秒位计时电路计时原理相差无几,只在触发计数的使能信号量上有一定差异。分低位计数用十进制计数器(74163改装)计数,59秒时触发计数,9分59秒(分低位输出为1001H,秒高位输出0101B,秒低位输出1001B)时,分低位清零;分高位计数用六进制计数器(74163改装)计数,9分59秒时,分高位芯片ENT输入高电平,由此触发计数,59分59秒(分高位输出为0101B,分低位输出为1001B,秒高位输出0101B,秒低位输出1001B)时,分高位清零。

3.时位计时电路设计(24进制)

时低位计数用十(或四)进制计数器(74163改装)计数,59分59秒时触发计数,9时59分59秒(时低位输出为1001B,分高位输出为0101B,分低位输出为1001B,秒高位输出0101B,秒低位输出1001B),或者23时59分59秒(时高位输出为0010B,时低位输出为0011B,分高位输出为0101B,分低位输出为1001B,秒高位输出0101B,秒低位输出1001B)时,时低位清零;时高位计数用三进制计数器(74163改装)计数,9时59分59秒时,时高位芯片ENT输入高电平,由此触发计数,23时59分59秒时,时高位清零。

1. 校时电路

 利用与门、或门和非门的基本特性,通过分析实验要求得出:控制数字电子钟分低位与时低位的使能端(ENT)输入(将使能端的输入分两部分,一种是自然输入,一种是输入相应电平信号手动控制使能信号)实现校时。

2. 整点报时电路

控制验证当数字电子钟的输出为59分50秒时,与一个本电路所用的源输入脉冲信号,利用与门的特性输出相应的高低电平接通蜂鸣器实现整点报时。

四、    实验结果(电路图、仿真波形以及说明):

 

说明: C:\Users\MD\Documents\Tencent Files\641743819\Image\BSZ(9(A`){%DT]D`X66R(PK.jpg

说明:

本次实验基本达到预期目标。通过本次实验中综合运用学过的数字电子、可编程逻辑器件等基本知识,培养了我独立设计比较复杂的数字逻辑的能力。同时,我熟悉并初步掌握了使用EDA(电子设计自动化)工具设计数字逻辑的方法,包括设计输入、编译、软件仿真、下载和硬件仿真等全过程。在实验的过程中,由于思维受限,自己遇到了一系列问题,幸得各位实验指导老师的悉心指导与同学们的热心帮助,实验得以顺利进行。

设计是一个循序渐进的过程。电路的设计中,自己深切体会到了“欲速则不达”之理。起初,自己并未统筹全局,却因部分基本模块设计的较快而洋洋自得,却忽视了综合的优化完善。一次,计时电路在编译无误后却无法显示正确的波形,认为自己逻辑无误的我顿时产生了疑惑,在仔细观察后,我发现了逻辑欠缺,在秒计时电路与分计时电路的连接处仅仅注意到了本部分的使能,而忽略了衔接。找出了错误,我静下心来,先设计每一个功能模块,用软件仿真,调试每个功能模块,以实现各种功能模块的具体功能,再将各种功能模块连接起来,调试总的系统,完成总体功能的实现。

电路的搭建中,我亦是意识到不能急于求成。当有了设计雏形,搭建电路便也简单,但由于自己对软件使用的不太上手,稍不留神,便错接了导线、重叠了节点,在编译时出现错误,自己构图的凌乱使得发现不妥难时不得重新来过,这极大延缓了实验的进度。

在接下来的硬件仿真时,遗憾的是由于实验板导线数量有限,我只是与同学一起合作完成了硬件连线,且硬件仿真时间不够充裕,但是可喜的是在硬件仿真时既验证了基本计时电路设计的正确性,同时又发现了一些问题,诸如辅助功能校位在实现时影响到了进位,通过反复地修改,电路得以不断完善。

通过本次实验,我被自主设计电路的趣味性所吸引,同时认识到了知行结合,独立实验的重要性,更是知道了闭门造车的弊端(实验中,由于软件使用得不太上手,极大地影响了实验进度,幸得老师指导)。本次实验结束了,但是将知识应用于实践的脚步是不可停歇的。

 

第二篇:EDA电子钟实验报告

    华北水利水电学院

                  

EDA课程设计(电子钟)报告

名    称:  EDA综合实验设计 

  题    目:    电子钟          

院    系:    信息工程        

班    级:     

学    号:     

学生姓名:    

指导教师:   

                20##年 1月 7日-----18日

一、课程设计(综合实验)任务

设计一个综合性的计时系统,要求能实现时、分、秒计数等综合计时功能,同时将计时结果通过6个七段数码管显示。能够对时和分进行设置,并能一键复位,重新计数。

1.      计秒电路:以直接输入或由分频器产生的秒脉冲作为计秒电路的计数时钟信号,待计数至60瞬间,进位,计分电路加1,而计秒电路则清零并重新计秒。

注:本组实验所用的计秒时钟是用实验箱上1KHZ信号经分频器产生的。

2.      计分电路、计时电路:其设计思想与计秒电路类似。计时电路是24进制的,计满24产生进位。

3.      时间设置电路:负责对时分秒进行调整,并能够产生进位。

4.      显示控制电路的设计,本设计显示需要使用的是6个七段显示数码管。

注:本组实验在EDA6000上运行时,所用的是内部含有4-16译码器的八段数码管。

二、 试验目的

1. 掌握时十进制、六十进制和二十四进制计数器的设计方法。

2. 掌握多位计数器相连的设计方法。

3. 掌握多位共阴极扫描显示数码管的驱动及编码。

三、总体设计方案

1.  问题分析:

1.1          计时及显示功能:计时模块实际为对一个标准1Hz时钟脉冲进行计数。秒计数器满60后向分计数器进位,分计数器满60向时计数器进位,时计数器为24进制。6个七段显示数码管分别显示时、分、秒的十位和个位。

1.2    时间设置电路:对于系统中的时间调整电路,可以通过三个外部按键“set”,“chang”,“rst”来完成。

“rst“为复位键,按下之后时钟清零,重新开始计数。

“set”为时间设置控制键,按第一下对分进行设置(用min发光二极管亮标示);按第二下对时进行设置,(用hour发光二极管亮标示);按第三下,重新开始计数。

 “chang”键为在“set”键按下对时间进行设置时,对时或分进行加1操作,直至到达满意时间。

2.  层次化设计具体方案:

2.1时分秒计数器模块

本数字钟的实现可分为以下几个模块:

(1) 频率产生模块:用EDA6000实验箱产生1kHz的计数频率 ,通过分频得到1Hz信号;

(2) 秒计数模块:秒计数,在频率为1Hz的时钟下以60次为循环计数,并产生进位信号影响分计数; 
  (3) 分计数模块:分计数,在秒进位信号为高电平时,计数一次,同样以60次为一个循环计数,同时产生分进位信号影响时计数;
(4)  时计数模块:时计数,在分进位信号为高电平时,计数一次,以24次为一个循环计数;
(5)  时间显示模块:数码管通过动态显示,同时进行一定频率的扫描显示时,分,秒。
(6)  时间设置模块:设置调试使能端,可以调时,分。基本功能是在使能端chang为高电平时,可以使时和分循环计数;
     2.2 电路组成:

一个基本的数字钟电路主要由译码显示器、“时”,“分”,“秒”计数器组成。干电路系统由秒信号发生器(分频器)、“时”,“分”,“秒”计数器、译码器显示器电路组成。

分频器电路通常,数字钟的晶体振荡器输出频率较高,为了得到1Hz的秒信号输入,需要对振荡器的输出信号进行分频。通常实现分频器的电路是计数器电路,当计数满时则产生相应的跳变,从而得到想要的的分频后频率。

时间计数单元:时间计数单元有时计数、分计数和秒计数等几个部分。时计数单元一般为12进制计数器或24进制计数器。

译码驱动及显示单元计数器实现了对时间的累计以8421BCD码形式输出,为了将计数器输出的8421BCD码显示出来。试验箱上有几种模式可供选择,选择自带有4-16译码器的显示器,代码中就可以直接送四位bcd码给相应端口就行。

本设计的总体设计原理结构框图如下:

   

四.实验程序:

顶层模块用的原理图输入法,剪切图如下:

各功能模块程序:

module div(clk1k,clk);      //分频模块,用1 kHZ的信号产生1HZ的计数(秒)时钟

input clk1k;

output clk;

reg clk;

integer n;

always@(posedge clk1k)

if(n<500)                 //每计满500个输入时钟时,clk取反一次,即产生1HZ的信号

n<=n+1;

else

       begin

       clk<=~clk;

       n<=0;

       end

Endmodule

module ctr(set,so);       //时间设置有效信号“set”的产生模块

input set;

output [1:0]so;

reg [1:0]so;

always@(posedge set)     //set有两个值,1和2;set为1时对“分”进行设置,为2时对“时”进行设置;上升沿触发

if(so<2)

so<=so+1;

else

so<=0;

Endmodule

module mux2(in,so,co1,co2);      //二选一模块,用于区分对“分”和“时”的设置

input in;

input [1:0] so;

output co1,co2;

reg co1,co2;

always@(so)

case(so)

1:co1<=in;               //当set输出s0为1时,将in(chang输入)给co1,对分进行设置;

2:co2<=in;             //当set输出s0为2时,将in(chang输入)给co2,对时进行设置;

default:begin

              co1<=0;

              co2<=0;

              end

endcase

endmodule

module cnt60(clr,clk,clken,upclk,a,b,cen);          //分和秒的计数模块,60进制

input  clk,clr,clken,upclk;    //clr为清零信号,低电平有效;upclk为“分”的时间设置信号

                                       //clken为使能信号

output [3:0]a,b;                           //a为个位,b为十位

output cen;

reg    [3:0]a,b;

reg      CenInside;

wire   ClkInside,cen;

assign ClkInside = (clken & clk)|upclk;         //当使能信号与clk同时有效,或时间设置信//号有效时,触发计数程序,开始计数

assign cen = CenInside & clken;     //cen为高一级计数的时钟信号,由CenInside(本级计数//计满)和clken(上级计数计满)同时有效时产生     

always @(posedge ClkInside or negedge clr) //计数语句块,同时用于时间设置时的时间加操作

 begin

    if(!clr)  begin a=0; b=0; end

    else if(a==9) 

      begin

              a=0;

              if(b==5) b=0;

              else b=b+1;

      end

    else

     begin

          a=a+1;

              b=b;

        end

 end

always @(negedge clk or negedge clr)      //此程序块产生本级计数计满信号CenInside

begin

       if(!clr) CenInside=0;

       else

              if((a==9)&(b==5)) CenInside=1;

              else CenInside=0;

end

endmodule

module cnt24(clr,clk,clken,clkup,a,b);      //“时”的计时为24进制,计满24小时复位为零

input  clk,clr,clken,clkup;

output [3:0]a,b;                   //a为“时”显示的个位,b为“时”显示的十位

reg    [3:0]a,b;

wire clkinside;

assign clkinside = (clken & clk) | clkup;

always @(posedge clkinside or negedge clr)     //产生24进制计数输出

 begin

    if(!clr)  begin a=0; b=0; end

    else

        begin

                     if(b<2) 

                            if(a==9)

                           begin

                                   a=0;b=b+1;

                          end

                        else

                         begin

                               a=a+1;

                                   b=b;

                            end

                     else

                            if(a==3) begin a=0;b=0;end

                            else begin a=a+1; b=b;end

       end

 end

Endmodule

五、Quartus调试仿真与EDA6000上下载运行

1、时序仿真

1.1对时分设置的仿真

原理:“set”高电平有效,其第一个脉冲有效时,S0为1开始对“分”进行设置,“chang”键执行分设置的加1操作,上升沿有效;同理,“set”的第二个有效脉冲来了之后,S0为2,开始对“时”进行设置;“set”的第三个脉冲到来之后,S0清零,退出时间设置开始正常计数。

仿真图中,“set”第一个脉冲之后,来一个“chang”有效脉冲“分”加1,四个“chang”脉冲之后,将“分”计数设置为4分。分设置仿真正确。“set”第二个脉冲之后,来一个“chang”有效脉冲“时”加1,四个“chang”脉冲之后,将“分”计数设置为4时。时设置仿真正确。

1.2对计数模块的仿真

原理:来一个有效的CLK1HZ脉冲(高电平有效),“秒”加1,秒计满60向“分”进1,“分”计满60向“时”进1。

   仿真图中,时间宽度我们设置为70S,加上先前设置的四4时4分,时间显示为4时5分09秒,显示正确,故时间仿真正确

1.3总程序RTL

2.EDA6000上下载运行

2.1管脚分配

2.2.sof文件下载到试验箱

注:本次实验用的Alter公司的FPGA芯片,型号为ACEX1P1K30TC144--3

2.3装入模式

2.4连接试验箱开始运行

对“分”进行设置时,“min”发光二极管亮,按一下“chang”分加1,加满60后自动复位为零,然后重新计数,运行正确。

对“时”进行设置时,“hour”发光二极管亮,按一下“chang”分加1,加满24后自动复位为零,然后重新计数,运行正确。

六、课程设计

通过这次课程设计,我觉得学到了很多东西,对Quartus的了解更多了,因为EDA的学习是这个学期,面临着考研的压力,所以对软件的操作很不熟悉,很多东西都不知道怎么做,这次课程设计,我觉得自己的进步好大,知道了一整套的步骤,也学会了编写程序,调试,综合,波形仿真,建立顶层模块,作图等等。这种亲眼看着自己在书本上学到的知识被运用到了具体的事务上,而且结果还挺不错,EDA结课也有一段时间了,好多知识都有点生疏了,用到了得重新再看,不看的话这个报告写不下去,慢慢地也巩固了知识。

我觉得EDA这门课程很实用,以后工作的时候用处也会挺大的,所以在以后的时间里我会好好掌握这门软件,现在也知道了段老师对我们的严格要求了,正是因为段老师的严格要求,同学们才可以做的这么顺利,真是严师出高徒,在这里很感谢段老师。我做的电子钟的设计,功能不是太全,老师要求的功能没有加进去完,有很多不完整的地方需要改进。尽管功能不全,但的确我也花费了很长时间的努力,看到自己的程序在实验板上显示出来我觉得很有成就感。我知道我还有很多的地方需要努力,我也会继续努力。

参考文献:(五号,宋体加粗)

[1]       潘松,《EDA实用教程》,科学出版社,20##年

相关推荐