数字逻辑电路课程设计实验报告

数字逻辑电路课程设计

          ---------多功能数字时钟

班级:信息安全1002

                     姓名:潘祥熙

学号:3100604048

指导老师:袁晓云

时间:20##-6-25

目录

【封面】----------------------------------------------------------------------------       -1-

【目录】-----------------------------------------------------------------------------       -2-

【设计目的】----------------------------------------------------------------------        -3-

【设计要求】-----------------------------------------------------------------------       -3-

【数字钟的组成和基本工作原理】-------------------------------------------       3~4

【模块及模块功能】-------------------------------------------------------------        5~8

【总体设计模块设计】---------------------------------------------------------        8

【效果分析】      ------------------------------------------------------------         9-10

【心得体会】      ----------------------------------------------------------------        11

【参考文献】      ---------------------------------------------------------------         12

【设计目的】

掌握各类计数器以及它们相连的设计方法;

掌握多个数码管显示的原理与方法;

掌握MAX+plus技术的层次化设计方法:

掌握使用VHDL语言的设计思想;对整个系统的设计有一个了解。

【设计要求】

(1)   能进行正常的时、分、秒计时功能,分别由6个数码管显示24好、60min、60s。

(2)   按下k1键时,计数器迅速递增,并24h循环,计满23h后再回00.

(3)   按下k2键时,计数器迅速递增,并60min循环,计满59min后再回00,但不向“时”进位。

(4)   按下k3键,秒钟自动清零;

(5)   利用扬声器做整点报时;当计时到达59’59”时开始报时在59’50”、52”、54”、56”、58”鸣叫,鸣叫声频为500Hz;到达59’60”时为最后一声整点报时,频率为1kHz.

【数字钟的组成和基本工作原理】

数字钟实际上是一个对标准频率进行计数的计数电路。它的计时周期是24小时,由于计数器的起始时间不可能与标准时间(如北京时间)一致所以采用校准功能和报时功能。

数字钟电路主要由译码显示器、校准电路、报时电路、时计数、分计数、秒计数器,振荡电路和单次脉冲产生电路组成。其中电路系统由秒信号发生器、“时”、“分”、“秒”计数器、译码器及显示器、校准电路、整点报时电路组成。秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加分频器来实现,将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用60进制计数器,每累计60分钟,发出一个时脉冲信号,该信号将被送到时计数器。时计数器采用24进制计时器,可实现对一天24小时的计时。译码显示电路将“时”、“分”、“秒”计数器的输出状态通过显示驱动电路,七段显示译码器译码,在经过六位LED七段显示器显示出来。整点报时电路时根据计时系统的输出状态产生一个脉冲信号,然后去触发一音频发生器实现低、高音报时。校准电路时用来对“时”、“分”、“秒”显示数字进行校对调整的。如图1所示多功能数字钟的组成框图。

多功能数字时钟的总体设计框图

如下图所示

时显示器                分显示器            秒显示器

       校时                校分                 清零

                          多功能数字时钟的总体设计框图

设计方案:

根据总体设计框图,可以将整个系统分为5个模块来实现,分别是计时模块、校时模块、整点报时模块、分频模块、动态显示模块.

(1)计时模块

该模块的设计相对简单,使用一个二十四进制和两个六十进制计数器级联,构成数字钟的基本框架。二十四进制计数器用于计时,六十计时器用于计分和计秒。只要给秒计数器一个1Hz的时钟脉冲,则可以正常计时。分计数器以秒计数器的进位作为计数脉冲,小时计数器以分计数器的进位作为计数脉冲。

(2)校时模块

校时模块设计要求实现校时、校分以及秒清零的功能。

   1按下校时键,小时计数器迅速递增以调至所需要的小时位。

   2按下校分键,分数计数器迅速递增以调至所需要的分位。

   3按下清零键,将秒计数器清零。

可以选择实验板上的3个脉冲案件进行锁定。

对于此模块的设计,有3个需要注意的问题:

1在校分时,分数计数器的计数不应对小时位产生影响,因而需要屏蔽此时分计数器的进位信号以防止小时计数器计数。

2按键抖动的消除

所谓“抖动”是指一次按键时的弹跳现象,通常实验板中按键所用的开关为机械弹跳开关,由于机械点的弹性作用,按键开关在闭合时并不能马上接通,而断开时也并不能马上断开,使得闭合及断开的瞬间伴随着一系列的电压抖动,从而导致本来一次按键,希望计数一次,结果因为抖动多次计数多次,且计数随机,这样就严重影响了时间的校对。

3计数采用1Hz的脉冲驱动计数器计数,而校对时间对应选用相对高频率的信号驱动计数器以达到快速校对时间的目的。显然,这两种计数器脉冲之间需要进行相应的选择切换。于是将计时和校时模块合起来的电路是实现示意图所示。两种脉冲信号用两路选择器进行选择,选择条件为是否按键。按键输出经过了消抖处理。

                     多功能数字钟的计时和校时模块

(3)整点报时模块

该模块的功能要求是:计时到59分50秒时,每两秒一次低音报时,整点时进行高音报时,可以将报时信号接到实验板上的扬声器输出。而已不同频率的脉冲信号区分低音和高音报时。比如可以用500Hz信号进行低音报时,1kHz信号作为高音报时信号。

进行报时的条件是计数器计数至所需要的时间点,因而需要实现一个比较模块,将分计数器和秒计数器的输出连至比较输入端完成比较过程。

(4)分频模块

在本系统中需要用到多种不同频率的脉冲信号,上至高音报时信号,下至1Hz的计时脉冲。所有这些脉冲信号均可以通过一个基准分频分频器产生。基准频率分频器就是一个进制很大的计数器,利用计数器的分频功能,从不同的输出为得到所需要的脉冲信号。

(5)  动态显示模块

 时间的显示需要用到6个数码管,如果实验板上可用的静态显示数码管有6个或6个以上则很容易实现,只需要将小时高位到秒低位Ginger6组输出按顺序锁定到6个数码管上即可。

【模块及模块功能】

(1)60进制计数器

(2)24进制计数器

(3)分频电路

(4)报时电路

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity ALERT is

        port(f1:in std_logic_vector(3 downto 0);

             f2:in std_logic_vector(3 downto 0);

             m1:in std_logic_vector(3 downto 0);

             m2:in std_logic_vector(3 downto 0);

             sinlk: out std_logic;

             sin500: out std_logic);

end ALERT;

architecture arc of ALERT is

  begin

    sinlk<='1'when(f1="0000" and f2="0000" and m1="0000" and m2="0000")else'0';

    sin500<='1'when(f1="0101"and f2="1001"and m1="0101"and (m2="0000"or m2="0010" or m2="0100" or m2="0110" or m2="1000"))else'0';

end arc;

(5)扫描电路

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_arith.all;

use ieee.std_logic_unsigned.all;

entity scaner_60 is

  port(a,b,c,d,e,f:in  std_logic_vector(3 downto 0);

       cp         :in  std_logic;

       sel        :out std_logic_vector(5 downto 0);

       display    :out std_logic_vector(3 downto 0)

      );

end scaner_60;

architecture a of scaner_60 is

  signal count:std_logic_vector(3 downto 0);

begin

  process(cp)

  begin

    if(cp'event and cp='1') then

       if(count="0101") then

          count<="0000";

       else

          count<=count+1;

       end if;

    end if;

    if(count="0000") then 

       display<=a;

       sel<="100000";

    elsif(count="0001") then

       display<=b;

       sel<="010000";

    elsif(count="0010") then

       display<=c;

       sel<="001000";

    elsif(count="0011") then

       display<=d;

       sel<="000100";

    elsif(count="0100") then

       display<=e;

       sel<="000010";

    else

       display<=f;

       sel<="000001";

    end if;

  end process ;

end a;

(6)七段译码器

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_arith.all;

use ieee.std_logic_unsigned.all;

entity decoder_bcd is

  port(segin  :in  std_logic_vector(3 downto 0);

       segout :out std_logic_vector(6 downto 0)

      );

end decoder_bcd;

architecture arc of decoder_bcd is

begin

  segout<="1111110" when segin=0 else

          "0110000" when segin=1 else

          "1101101" when segin=2 else

          "1111001" when segin=3 else

          "0110011" when segin=4 else

          "1011011" when segin=5 else

          "0011111" when segin=6 else

          "1110000" when segin=7 else

          "1111111" when segin=8 else

          "1110011" when segin=9 ;

end arc;

【总体设计模块设计】

【效果分析】:

根据上述设计方案设计思想进行设计,完成设计后进行编译下载实现功能,下载后,时间从00:00:00开始计时,每次秒加一,到达59后回复到00,并产生进位,时分功能相似,按下校时键提供较高频率的脉冲信号,时计数器递增,可以选择需要校时的时间,按下校分键,分计数器递增,可以选择需要校分的时间,按下清零键,秒计数器被清零,当到达59分50秒时,开始报时,每隔2秒报时一次,整点时报时。

【心得体会】:

通过本次数字逻辑电路的设计,我学到了很多东西,最重要的是去做好一个东西的心态,也许在你拿到题目时会觉得困难,但是只要你充满信心,一步一个脚印去实现它,你就肯定会完成的。设计时最麻烦的就是联线了,有时候画的线和其它线重要合时会看不到,有时又会明明联的是这个端点,一移动时却联到任外一个端点了,再加上电路有这么大了,显示器的界面宽度又有限,所以做起来有点麻烦,一但搞不好就要重新来,这个时候就要你有足够的耐心了。从这次设计中我觉得我学到了以下东西:

1.对于数字逻辑一些基本知识有了更深的了解。

2.了解了很多集成门电路芯片的使用。

3.提高了自我的动手能力。

4.增强了面对困难勇于面对,勇于解决的信心。

5.进一步的掌握了Max+plus开发平台的使用。

6.对于时序电路的设计有了一定的深入了解。

参考文献:

鲍可进,赵不贿,赵念强,数字逻辑电路设计(第二版)清华大学出版社

王振红             VHDL数字电路设计与应用实践教程 机械工业出版社

 

第二篇:数字逻辑电路红绿灯课程设计实验报告

                                                                                                    

数字逻辑电路设计
总结报告

         题目: 红绿灯控制器
       指导教师:莫琳
       设计人员(学号): 谭晨曦 (1107200144)

       班级: 电信类111班
       日期:20##年5月25日

              

                                          目     录

一. 设计任务书


二.设计框图及整机概述


三.各单元电路的设计方案及原理说明


四.调试过程及结果分析


五.设计、安装及调试中的体会


六.对本次课程设计的意见及建议


七.附录(包括:整机逻辑电路图和元器件清单)

一、设计任务书

基本设计要求: EWB仿真实现,设计一个红绿灯控制器控制器设计应具有以下功能:

(1)东西方向绿灯亮,南北方向红灯亮。.

(2)东西方向黄灯亮,南北方向红灯亮。 

(3)东西方向红灯亮,南北方向绿灯亮。

  (4 )  东西方向红灯亮,南北方向黄灯亮。

要求有时间显示的(顺数、逆数皆可)时间自定(按学号:红灯时间(学号)=绿灯时间+黄灯时间(≥5)。

二.设计框图及整机概述

设计框图:

  电源             计数器            数码显示               

 

     脉冲              控制              红绿灯

                  红绿灯控制器设计框图

整机概述:

红绿灯控制器由电源模块、脉冲模块、计数模块、控制模块、红绿灯模块以及数码显示模块共六部分组成。电源模块为整机提供电源;脉冲模块提供给计数器作为时钟信号;计数模块为44进制计数器,分别输出到数码显示模块和控制模块作为数码显示信号和控制信号;数码显示模块接收来自计数器模块的信号,表明计数器工作状态;控制模块接收计数器模块输出的控制信号从而控制红绿灯的亮灭;红绿灯模块的亮灭情况见设计任务书。

三、各单元电路的设计方案及原理说明

电源模块:外接,略。

脉冲模块:外接,略。

计数模块:

    计数模块内两个计数器(74LS160)CLK外接时钟脉冲信号,A、B、C、D接地,LOAD接高电平。低位计数器(左)的进位信号通过RCO输送至高位计数器(右),使高位计数器仅在有进位时工作。因为我的学号为44,按照任务书要求,再通过将两个计数器的Qc分别接至与非门,以与非门的输出信号作为两个计数器的置零信号,至此,一个四十四进制计数器完成。

控制模块:

    控制模块根据以下设计表格,通过四进制计数表示四个时间段内灯的亮灭情况从而控制红绿灯模块,以计数器模块输出的控制信号作为脉冲输入。

由以上表格知:

    东西方向:绿=QB’QA’,黄=QB’QA,红=QB

南北方向:绿=QBQA’,黄=QBQA,红=QB

数码显示模块:

    译码器为74LS48,其中7、1、2、6分别接至计数器输出,3、5、4接至高电平,9~15分别通过电阻与数码管的ABCDEFG相连,H悬空。

红绿灯模块:

       各灯按方向放置,亮灭情况同任务书。实际电路中各LED灯应与一电阻串联以分压,以避免烧毁。

四.调试过程及结果分析

    按整机电路图接好线之后,便进入了调试环节。调试过程中没发现有虚焊现象,但通过万用表测量却发现有几处焊点短接在一起,在解决短接问题之后接上电源及脉冲后发现计数正常但红绿灯亮灭不符合任务书要求,经检测线路发现是74LS04芯片中非门恰好接反了位置,重新接线并经确认无误后,再次接入电源及脉冲,此时数码显示管计数为44s时复位,红绿灯亮灭符合要求,表明整机正常工作。

五.设计、安装及调试中的体会

本机设计时采用了模块化设计思想,将整机分为电源模块、脉冲模块、计数模块、控制模块、红绿灯模块以及数码显示模块共六部分。其中电源模块和脉冲模块外接,无需设计。设计的重点在计数模块与控制模块,重中之重则是控制模块。刚开始设计控制模块时有些无从下手,后来才懂得从红绿灯的亮灭要求入手进行设计,于是做出了上面单元电路中控制模块介绍的设计表格,控制模块就这样设计出来了。通过这个设计,我得到的最大的启示就是:做设计应该从最根本的要求出发,逐级向上设计,这样思路清晰,能避免像无头苍蝇一样乱撞,不但节省时间,而且更易成功。

焊接过程中为节省时间,焊接很匆忙,导致线路杂乱无章,焊点间出现短接情况,甚至接错线,给调试过程带来了很大麻烦,本来是想节省时间,最后却花费了更多的时间,还把自己弄得焦头烂额的。这是一个教训,一方面提醒我目光要放长远来,另一方面也告诉我能省则省,不能省就一定不要省,否则到头来吃亏的只有自己。

六.对本次课程设计的意见及建议

    本次课程设计期间,学院长时间开放实验室给学生做设计,并且提供了整套设备及学生需要的器件材料,总的来说是挺好的。为了能够有更好的课程设计环境,我有以下两点建议:

1.希望学院加强对实验室的设备及器件的管理,有些自觉性不高的同学会把一些器件带走,造成其他同学因无相应器件而无法完成调试,进而影响整个课程设计安排。

2.提供电源及脉冲的实验箱似乎工作不太稳定,希望改进。

七.附录

本机完整电路图及所焊接电路板实图:

整机用到的元器件清单:

相关推荐