您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > 数字逻辑设计及应用课程设计报告自动打铃器
数字逻辑设计及应用课程设计报告姓名:学号:选课号:设计题号:1一.设计题目自动打铃器二.设计要求1.有数字钟功能;2.可设置六个时间,定时打铃;3.响铃5秒钟。三.设计过程1.总体方案数字钟系统可以分为以下几大模块:时钟信号发生模块,基本计时模块,动态显示模块,控制电路模块,报时电路模块。首先需要将系统时钟进行分频得到1HZ时钟信号进行计时。计时电路采用了74LS160二进制BCD码计数器构成了模24和模60的计数器,进行时分秒的计时。为了避免产生逻辑冒险,计数器尽量采用了同步计数器。译码显示电路采用的是动态显示的方案,动态显示使用数据选择器的分时复用功能,将任意多位数码管的显示驱动,由一个七段显示译码器来完成。闹钟的主要部分是4个7485构成的16位数据比较器。闹钟设定时间和时钟时间做比较,然后给蜂鸣器信号闹钟。2.各子模块设计原理2.1时钟信号发生模块为了便于实现秒表的计时功能和报时功能,时钟信号发生模块共2输出1HZ100HZ512HZ1KHZ的时钟信号,输入只有一个,就是系统时钟48MHZ。48MHZ分频的具体实现为,将48进制计数器和1K进制计数器级联。通过计数器的最高位产生1HZ信号,由于48不是2的整数次幂,所以分频得到的信号。占空比不为50%。各个模块的进位信号为各个模块的最高位。下面为48分频电路:下面为1000分频电路:32.2秒计数电路用两片74160模10计数器设计一个模60计数器,当计数值为59时,下一个时钟信号给计数器置数0。(1)秒计数的CLK时钟端用分频后的1hz输入。(2)秒十位的sec[6]取非后输出用于分计数的进位脉冲。(3)Clear输入用于清零端信号输入。(4)输出sec[7..0]作为秒计数器的值。4仿真波形如下:2.3分计数电路用两片74160模10计数器设计一个模60分计数器,当计数值为59时,因为要考虑到秒计时电路,所以还要输入一个当秒为59的信号,这样下一个时钟信号才能给计数器置数0。电路图如下:5仿真波形如下:2.4小时计数电路用两片74160以置数法设计一个模24计数器作为小时计数器电路。当秒计时为59,分计时为59时且小时计数为23时给置数端一个低电平信号置数.6仿真波形如下:2.5动态数码显示电路如上模块图,这个大的动态数码显示电路模块又分为4个小模块,7分别为24选4MUX,显示译码器,计数器,译码器74138。基本原理如下,由一个模6的计数器产生的3位信号输入到24选4MUX和译码74138上,分别选出4位BCD码,和8位译码器中的6位。BCD码通过显示译码器得到7位接到数码管的7段上。因为整个模块为动显,所以计数器的时钟信号需要输入1khz。2.6时钟校分电路通过在计时电路钟添加附加电路来实现校分电路功能8K1=1,K2=0,K3=1时设定时钟分钟,给时钟分钟模块的低位使能端一个高电平,同时再通过非门后给置零端一个信号,当分钟走到59时候置零,从而不会出现在校分的时候出现走到60或者之后的数字。K1=0,K2=0,K3=0时设定时钟小时,设计的原理和分钟类似,条件改变了,当走到23的时候置零。2.7时钟清零电路给计时电路的6个74160的清零端接到一个开关上控制就行。2.8闹钟模块闹钟模块共有六路闹钟设定和时间比较模块,实现六路定时打铃。2.8.1闹钟设定闹钟的设定又一个模60计数器和一个模24计数器构成。K1=1,K2=1,K3=0时设定闹钟分钟,原理和时钟校分电路一样。给闹钟分钟的低位使能端一个高电平,同时再通过非门后给置零端一个信号,当分钟走到59时候置零,从而不会出现在校分的时候出现走到60或者之后的数字。K1=0,K2=1,K3=1时设定闹钟小时,设计的原理和分钟类似,条件改变了,当走到23的时候置零。92.8.2时间比较将时钟的分钟和小时BCD码和闹钟的分钟和小时的BCD码输入到比较模块中,通过比较器得到信号,输给蜂鸣器,达到闹钟的效果。四.设计结论通过仿真,最终证明此设计能正常的工作,实验过程中,大多数问题在自己的仿真调试下都得到了解决,培养了独立思考解决问题10的习惯。学会了电路的故障排查,学会了怎样从问题出发,找到问题的根源,然后用相应的方法来解决问题。培养了严谨细心认真的品质。有些问题,看起来特别小,比如闹铃电路中模6计数器设计时误把“与非门”用成了“与门”,导致了无法正常的模6计数。但这些小的细节直接影响着实验的质量与结果。让我更加深刻地懂得了做任何事都要注意细节。附录:VHDL程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityszzisport(clk:instd_logic;clk1:instd_logic;md1:instd_logic;md2:instd_logic_vector(1downto0);speak:outstd_logic;dout:outstd_logic_vector(6downto0);selout:outstd_logic_vector(2downto0));endszz;architectureoneofszzissignalsel:std_logic_vector(2downto0);11signalhou1:std_logic_vector(3downto0);signalhou2:std_logic_vector(3downto0);signalmin1:std_logic_vector(3downto0);signalmin2:std_logic_vector(3downto0);signalseth1:std_logic_vector(3downto0);signalseth2:std_logic_vector(3downto0);signalsetm1:std_logic_vector(3downto0);signalsetm2:std_logic_vector(3downto0);signalsec1:std_logic_vector(3downto0);signalsec2:std_logic_vector(3downto0);signalh1:std_logic_vector(3downto0);signalh2:std_logic_vector(3downto0);signalm1:std_logic_vector(3downto0);signalm2:std_logic_vector(3downto0);signals1:std_logic_vector(3downto0);signals2:std_logic_vector(3downto0);-------------------------------------------------begin----------------------------------------------计数choice:process(clk1)beginifclk1'eventandclk1='1'thenifsel=101thensel=000;12elsesel=sel+1;endif;endif;endprocesschoice;-----------------------------------------------小时十位h110:process(clk,hou2,min1,min2,sec1,sec2,md1,md2)beginifclk'eventandclk='1'thenif(hou1=0010andhou2=0011)and(min1=0101andmin2=1001)and(sec1=0101andsec2=1001)thenhou1=0000;elsifhou1=0010andhou2=0011andmd1='0'andmd2=01then--当时间为23点且处于校时状态时hou1=0000;elsif(hou2=1001and(min1=0101andmin2=1001)and(sec1=0101andsec2=1001))or(hou2=1001andmd1='0'andmd2=01)thenhou1=hou1+1;endif;endif;endprocessh110;-----------------------------------------------小时个位h220:process(clk,min1,min2,sec1,sec2,md1,md2,hou1)beginifclk'eventandclk='1'then13if(hou1=0010andhou2=0011)and(min1=0101andmin2=1001)and(sec1=0101andsec2=1001)thenhou2=0000;elsifhou2=1001and(min1=0101andmin2=1001)and(sec1=0101andsec2=1001)thenhou2=0000;elsif(hou2=1001andmd1='0'andmd2=01)or(hou1=0010andhou2=0011)thenhou2=0000;--md='1';elsif((min1=0101andmin2=1001)and(sec1=0101andsec2=1001))or(md1='0'andmd2=01)thenhou2=hou2+1;--speak=clk;endif;endif;endprocessh220;-----------------------------------------------分钟十位m110:process(clk,min2,sec1,sec2,md1,md2)beginifclk'eventandclk='1'thenif(min1=0101andmin2=1001)and(sec1=0101andsec2=1001)thenmin1=0000;elsifmin1=0101andmin2=1001and(md1='0'andmd2=00)thenmin1=0000;elsif(min2=1001and(sec1=0101andsec2=1001))or(min2=1001andmd1='0'andmd2=00)thenmin1=min1+1;endif;14endif;--endif;endprocessm110;----------------------------------------------分钟个位m220:process(clk,sec1,sec2,md1,md2)beginifclk'eventandclk='1'thenifmin2=1001and(sec1=0101andsec2=1001)thenmin2=0000;elsifmin2=1001and(md1='0'andmd2=00)thenmin2=0000;elseif(sec1=0101andsec2=1001)or(md1='0'andmd2=00)thenmin2=min2+1;endif;endif;endif;endprocessm220;---------------------------------------------秒十位s110:process(clk)beginifclk'eventandclk='1'thenif(sec1=0101andsec2=1001)thensec1=0000;elseifsec2=1001thensec1=sec1+1;endif;15endif;endif;endprocesss110;--------------------------------------------秒个位s220:process(clk)beginifclk'eventandclk='1'thenifsec2=1001thensec2=000
本文标题:数字逻辑设计及应用课程设计报告自动打铃器
链接地址:https://www.777doc.com/doc-6314598 .html