数字电路课程设计电子秒表的设计_电子秒表课程设计
数字电路课程设计电子秒表的设计由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“电子秒表课程设计”。
目录
1.引言
1.1设计目的------------------------2 1.2设计内容------------------------2 1.3设计要求------------------------2 2.数字电子秒表设计
2.1仪器设备------------------------3 2.2设计原理------------------------3 2.3电路设计及仿真------------------3 3.电路的硬件验证-------------------10 4.心得体会--------------------------12 5.参考文献--------------------------12
1.引言
1.1设计目的:
(1)掌握同步计时器74160、74161的使用方法,并理解其工作原理。(2)掌握74160、74161进行计数器、分频器的设计方法。
(3)掌握用三态缓冲器74244和74160,74138,7448进行动态显示扫描电路设计的方法。(4)掌握电子秒表的设计方法。
(5)掌握在EDA系统软件MAX+plusII环境下用FPGA/CPLD进行数字系统设计的方法,掌握该环境下功能仿真、时序仿真、管脚锁定的芯片下载的方法。(6)掌握用EDA硬件开发系统进行硬件验证的方法。
1.2设计任务内容:
(1)设计可控的计数器(定时器)、分频器、按键去抖电路和动态扫描显示电路;(2)设计系统顶层电路;
(3)进行功能仿真和时序仿真;
(4)对仿真结果进行分析,确认仿真结果达到要求;
(5)在EDA硬件开发系统上进行硬件验证与测试,确保设计电路系统能正确地工作。
1.3设计要求
(1)计时精度不小于1/100秒;(2)输入时钟:1khz;
(3)计时器最长计时时间为1小时;(4)具有复位和启/停开关;
(5)显示控制:动态六位七段LED显示,位选以三位编码输出。要求显示稳定,扫描显示的频率大于50hz;
(6)完成硬件验证测试工作;
2.数字电子秒表设计
2.1仪器设备
(1)十进制计数器74LS160,十六进制计数器74LS161;(2)3-8译码器74138(3)BCD-七段译码器7448(4)三态缓冲器74244(5)各种门电路,触发器 2.2设计原理
电子秒表的输入时钟为1KHz,将其十分频后得到100Hz的信号作为标准信号进行计数,则技术值得分辨率为1/100秒,正好满足系统的要求。计数器分为3级,第1级是一百进制计数器作1/100秒的计数,第2级是六十进制计数器作秒的计数,第3级是六十进制计数器作分的计数。电子秒表的计数受控制模块的控制,控制模块接收“起/停”按键则停止输入,当停止计数时,接收到“起/停”键是一个反复键。为了保证系统操作的可靠性,还设计了一个按键去抖动电路。2.3 电路设计及仿真
下图为电子秒表的顶层逻辑图,它由一个按键去抖电路keyin,一个控制器ctrl,一个时钟产生电路clkgen,一个计时电路cntblk,一个50000分频电路div_50000和显示译码电路disp组成。
keyinstart_stopclrINPUTVCCINPUTVCCctr1CLRCNTENST_STinst2key_in1key_out1clkkey_out2key_in2inst4cntblkdiv_50000clk_1INPUTVCCdispA[3..0]B[3..0]C[3..0]D[3..0]E[3..0]F[3..0]clkgenCLKDIV_10DIV_40instclkclk_fpinst5cntenA[3..0]clkB[3..0]clrC[3..0]D[3..0]E[3..0]F[3..0]inst1A[3..0]LED[7..1]B[3..0]S[2..0]C[3..0]D[3..0]E[3..0]CLKF[3..0]inst3OUTPUTOUTPUTLED[7..1]S[2..0]
按键去抖电路
DFFDFFNOTAND3OUTPUTkey_in1INPUTVCCDPRNQDPRNQkey_out178CLRN56CLRNclkINPUTVCCNOT4DFFDFFkey_in2INPUTVCCDPRNQDPRNNOTAND3OUTPUTQkey_out21718CLRN1415CLRNNOT13 按键去抖电路keyin如图所示。任何按键在触点接触和断开的瞬间都会产生机械抖动,如果不进行处理,每一次按键有可能产生若干次的响应,一般抖动的时间小于20ms。Keyin模块能完成对输入信号的去抖动处理,它利用两个串接的边沿D触发器来消除高频的抖动,当在CLK端输入一个频率为25Hz的方波信号时,其输出信号就能得到宽度固定为20ms的单脉冲信号。
下图为它的仿真波形图。
从图中可见,存在于输入信号上的抖动被完全的消除了。
控制器电路
6NOTDFFDPRNQOUTPUTCNTENST_STINPUTVCCCLRN1CLRINPUTVCCNOT7
控制器ctrl模块如上图所示。它在“启/停”信号ST_ST和复位信号CLR的作用下完成对计数使能信号CNTEN的控制。任何时候只要CLR=1,则CETEN=0,所以它是异步清零;ST_ST是一个反复键,当CLR无效时,每一个ST_ST脉冲都会使CETEN反向,该信号作用于 控制计时器的计时,当取值为1时允许计时器计时,当取值为0时不允许计时器计时。
下图为它的仿真波形图。
时钟产生电路
VCCVCCNOT74160LDNABCDENTENPCLRNCLKINPUTVCCinst74160LDNABCDENTENPCLRNGNDinst4QAQBQCQDRCOQAQBQCQDRCOAND3OUTPUTDIV_40inst5CLKCOUNTERCLKinst1COUNTERDIV_10OUTPUT
时钟产生电路clkgen模块如上图所示。它完成对输入时钟信号分频,并输出四十分频信号DIV_40和十分频信号DIV_10,即25Hz去抖动时钟信号和100Hz计时器标准计时信号。clkgen模块可方便的由中规模TTL集成电路74160实现。
下图为它的仿真波形图。
计时电路
NOTAND2111074160LDNABCDENTENPCLRNCLK174160A[0]A[1]A[2]A[3]74160B[0]B[1]B[2]B[3]74160C[0]C[1]C[2]C[3]cntenINPUTVCCQAQBQCQDRCOLDNABCDENTENPCLRNCLK2QAQBQCQDRCOLDNABCDENTENPCLRNCLK3QAQBQCQDRCOLDNABCDENTENPCLRNCLK4QAQBQCQDRCOD[0]D[1]D[2]D[3]COUNTERCOUNTERCOUNTERCOUNTERclkINPUTVCCclrINPUTVCCNOT74160LDNABCDENTENPCLRNCLK5E[0]E[1]E[2]E[3]74160LDNABCDENTENPCLRNCLK6F[0]F[1]F[2]F[3]NOTAND2151213QAQBQCQDRCOQAQBQCQDRCOOUTPUTA[3..0]OUTPUTOUTPUTOUTPUTOUTPUTOUTPUTB[3..0]C[3..0]D[3..0]E[3..0]F[3..0]COUNTERCOUNTER 计时电路cntblk模块如图所示。它在控制信号cnten和clr的作用下完成对输入的clk信号进行计数。由于clk信号是标准的100Hz信号,因此一百进制计数器的进位输出就是1秒,对秒进行六十进制计数就得到1分,对分又六十进制计数,所以最大计数值为59:59:59,因起始值是00:00:00,故其最大的计时长度为1小时。cntlk模块将输出计时结果。
下图为cntblk模块的仿真波形图。
50000分频电路
因为系统要求输入的是1KHz频率,而开发板的系统频率为5MHz,所以要对系统频率进行50000分频。这里选择用VHDl设计。代码如下:
library ieee;--定义库文件 use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;
entity div_50000 is port(clk:in std_logic;clk_fp:out std_logic);
end entity;
architecture one of div_50000 is signal n:integer range 0 to 24999;
signal cp:std_logic;
begin proce(clk)
begin
if clk'event and clk='1' then
if n
n
n
end if;end if;end proce;clk_fp
显示译码电路
Y1742441GN1A11A21A31A4A[3..0]INPUTVCCA[0]A[1]A[2]A[3]Y274481Y11Y21Y31Y4ABCDLTNRBINBIN54B[3..0]INPUTVCCB[0]B[1]B[2]B[3]342GN2Y12A12Y22A22Y32A32Y42A4OCTAL BUF.OAOBOCODVCCOEOFOGRBONLED[1]LED[2]LED[3]LED[4]LED[5]LED[6]LED[7]OUTPUTLED[7..1]OUTPUTBCD TO 7SEGNAND2S[2..0]Y3C[3..0]INPUTVCC742441GN1A11A21A31A41Y11Y21Y31Y4instC[0]C[1]C[2]C[3]Y4D[0]D[1]D[2]D[3]74161LDNABCDENTENPCLRN74138QAQBQCQDRCOY0NAY1NBY2NCY3NG1Y4NG2ANY5NG2BNY6NY7N563:8 DECODERD[3..0]INPUTVCC2GN2Y12A12Y22A22Y32A32Y42A4OCTAL BUF.38Y1Y2Y3Y4Y5Y6VCCVCCY5742441GN1A11A21A31A41Y11Y21Y31Y4CLK51E[3..0]INPUTVCCE[0]E[1]E[2]E[3]Y6F[0]F[1]F[2]F[3]CLKCOUNTERGNDF[3..0]INPUTVCC2GN2Y12A12Y22A22Y32A32Y42A4OCTAL BUF.inst7INPUTVCC 显示译码电路disp模块如上图所示。该模块有三个功能,首先它完成对输入的6组向量信号的选择,其中被选择的信号由S[2..0]决定,即当S[2..0]=“00”时,选中A,“01”时选中B,“05”时选中F;其次它还对选中的信号进行BCD-七段显示的译码;再次要完成位选信号的产生于输出。下图为它的仿真波形图。disp模块中位选信号的产生只用了一个74161接成六进制计数器即可,为了实现对输入的6个信号的选择再用一个74244,利用它的三态功能实现该部分电路。
3.电路的硬件验证
如下图所示,把程序下载到开发板上并且将SW2拨到高电平,电子秒表开始工作。
拨动SW1到高电平可以将电子秒表置零,如下图。
把SW2拨到低电平再拨到高电平即可实现“暂停”,重复此操作即可继续计数。
4.心得体会
在此次课程设计中,我进一步了解并熟悉了数字电子器件的使用。同时在设计过程中也遇到了不少困难,比如50000分频电路中VHDL语言的编写与应用,对于VHDL我很是陌生,还好有同学的帮助,是我克服了这个困难。所以我认为要想做好这个课程设计,就必须认认真真地去做,不要怕麻烦。而且本次课程设计巩固和加深了我对电子线路基本知识和理解,提高了综合运用所学知识的能力。增强了根据课程需要选学参考资料,查阅手册,图表和文献资料的自学能力。通过独立思考,深入研究有关问题,学会自己分析解决问题的方法。本次的课程设计对我来说,是第一次自己运用所学的知识,理论联系实际,动手去做东西,对我来说,这将是一次宝贵的经历。
5.参考文献
[1]何伟 《现代数字系统实验及设计》 重庆大学出版社 2010 [2]阎石 《数字电子技术基础》 清华大学出版社 2006