您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 数字电路课程设计-电子秒表的设计
目录1.引言1.1设计目的-------------------------------------------------------21.2设计内容-------------------------------------------------------21.3设计要求-------------------------------------------------------22.数字电子秒表设计2.1仪器设备-------------------------------------------------------32.2设计原理-------------------------------------------------------32.3电路设计及仿真-------------------------------------------------33.电路的硬件验证--------------------------------------------------104.心得体会---------------------------------------------------------125.参考文献---------------------------------------------------------121.引言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组成。VCCstart_stopINPUTVCCclrINPUTVCCclk_1INPUTLED[7..1]OUTPUTS[2..0]OUTPUTCLKDIV_10DIV_40clkgeninstcntenclkclrA[3..0]B[3..0]C[3..0]D[3..0]E[3..0]F[3..0]cntblkinst1CLRST_STCNTENctr1inst2A[3..0]B[3..0]C[3..0]D[3..0]E[3..0]CLKF[3..0]LED[7..1]S[2..0]dispinst3key_in1clkkey_in2key_out1key_out2keyininst4clkclk_fpdiv_50000inst5F[3..0]A[3..0]B[3..0]C[3..0]D[3..0]E[3..0]按键去抖电路VCCkey_in1INPUTVCCclkINPUTVCCkey_in2INPUTkey_out1OUTPUTkey_out2OUTPUTCLRNDPRNQDFF5NOT4CLRNDPRNQDFF6NOT7AND38CLRNDPRNQDFF14NOT13CLRNDPRNQDFF15NOT17AND318按键去抖电路keyin如图所示。任何按键在触点接触和断开的瞬间都会产生机械抖动,如果不进行处理,每一次按键有可能产生若干次的响应,一般抖动的时间小于20ms。Keyin模块能完成对输入信号的去抖动处理,它利用两个串接的边沿D触发器来消除高频的抖动,当在CLK端输入一个频率为25Hz的方波信号时,其输出信号就能得到宽度固定为20ms的单脉冲信号。下图为它的仿真波形图。从图中可见,存在于输入信号上的抖动被完全的消除了。控制器电路CLRNDPRNQDFF1VCCCLRINPUTVCCST_STINPUTCNTENOUTPUTNOT6NOT7控制器ctrl模块如上图所示。它在“启/停”信号ST_ST和复位信号CLR的作用下完成对计数使能信号CNTEN的控制。任何时候只要CLR=1,则CETEN=0,所以它是异步清零;ST_ST是一个反复键,当CLR无效时,每一个ST_ST脉冲都会使CETEN反向,该信号作用于控制计时器的计时,当取值为1时允许计时器计时,当取值为0时不允许计时器计时。下图为它的仿真波形图。时钟产生电路VCCCLKINPUTDIV_40OUTPUTDIV_10OUTPUTCOUNTERCLKENTABCDLDNENPCLRNQDQAQBQCRCO74160instVCCCOUNTERCLKENTABCDLDNENPCLRNQDQAQBQCRCO74160inst1VCCGNDNOTinst4AND3inst5时钟产生电路clkgen模块如上图所示。它完成对输入时钟信号分频,并输出四十分频信号DIV_40和十分频信号DIV_10,即25Hz去抖动时钟信号和100Hz计时器标准计时信号。clkgen模块可方便的由中规模TTL集成电路74160实现。下图为它的仿真波形图。计时电路VCCcntenINPUTVCCclkINPUTVCCclrINPUTA[3..0]OUTPUTB[3..0]OUTPUTC[3..0]OUTPUTD[3..0]OUTPUTE[3..0]OUTPUTF[3..0]OUTPUTNOT15COUNTERCLKENTABCDLDNENPCLRNQDQAQBQCRCO741601COUNTERCLKENTABCDLDNENPCLRNQDQAQBQCRCO741602COUNTERCLKENTABCDLDNENPCLRNQDQAQBQCRCO741603COUNTERCLKENTABCDLDNENPCLRNQDQAQBQCRCO741604COUNTERCLKENTABCDLDNENPCLRNQDQAQBQCRCO741605COUNTERCLKENTABCDLDNENPCLRNQDQAQBQCRCO741606NOT12AND213NOT11AND210A[0]A[1]A[2]A[3]B[0]B[1]B[2]B[3]C[0]C[1]C[2]C[3]D[0]D[1]D[2]D[3]E[0]E[1]E[2]E[3]F[0]F[1]F[3]F[2]计时电路cntblk模块如图所示。它在控制信号cnten和clr的作用下完成对输入的clk信号进行计数。由于clk信号是标准的100Hz信号,因此一百进制计数器的进位输出就是1秒,对秒进行六十进制计数就得到1分,对分又六十进制计数,所以最大计数值为59:59:59,因起始值是00:00:00,故其最大的计时长度为1小时。cntlk模块将输出计时结果。下图为cntblk模块的仿真波形图。50000分频电路因为系统要求输入的是1KHz频率,而开发板的系统频率为5MHz,所以要对系统频率进行50000分频。这里选择用VHDl设计。代码如下:libraryieee;--定义库文件useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entitydiv_50000isport(clk:instd_logic;clk_fp:outstd_logic);endentity;architectureoneofdiv_50000issignaln:integerrange0to24999;signalcp:std_logic;beginprocess(clk)beginifclk'eventandclk='1'thenifn24999thenn=n+1;elsen=0;cp=notcp;endif;endif;endprocess;clk_fp=cp;endone;其波形仿真如下:显示译码电路VCCA[3..0]INPUTVCCB[3..0]INPUTVCCC[3..0]INPUTVCCD[3..0]INPUTVCCE[3..0]INPUTVCCF[3..0]INPUTVCCCLKINPUTS[2..0]OUTPUTLED[7..1]OUTPUTOCTALBUF.1A21A41A11A31GN2A32GN2A12A42A21Y21Y42Y11Y12Y32Y41Y32Y274244inst7VCCVCCOCTALBUF.1A21A41A11A31GN2A32GN2A12A42A21Y21Y42Y11Y12Y32Y41Y32Y27424434OCTALBUF.1A21A41A11A31GN2A32GN2A12A42A21Y21Y42Y11Y12Y32Y41Y32Y27424438BCDTO7SEGACDBRBINBINLTNOCOEODOFOGOBOARBON744854COUNTERCLRNCLKENPLDNADENTBCQDQCQBQARCO7416151GNDVCC3:8DECODERABG1CG2ANG2BNY0NY1NY2NY3NY4NY5NY6NY7N7413856NAND2instY1A[1]Y2B[0]B[1]B[2]B[3]Y3C[0]C[1]C[2]C[3]Y4D[1]D[2]Y5Y6E[0]E[1]E[2]E[3]F[0]F[1]F[2]F[3]D[0]A[0]D[3]A[2]A[3]LED[1]LED[2]LED[3]LED[4]LED[5]LED[6]LED[7]Y1Y2Y3Y4Y5Y6显示译码电路disp模块如上图所示。该模块有三个功能,首先它完成对输入的6组向量信号的选择,其中被选择的信号由S[2..0]决定,即当S[2..0]=“00”时,选中A,“01”时选中B,“05”时选中F;其次它还对选中的信号进行BCD-七段显示的译码;再次要完成位选信号的产生于输出。下图为它的仿真波形图。disp模块中位选信号的产生只用了一个74161接成六进制计数器即可,为了实现对输入的6个信号的选择再用一个74244,利用它的三态功能实现该部分电路。3.电路的硬件验证如下图所示,把程序下载到开发板上并且将SW2拨到高电平,电子秒表开始工作。拨动SW1到高电平可以将电子秒表置零,如下图。把SW2拨到低电平再拨到高电平即可实现“暂停”,重复此操作即可继续计数。4.心得体会在此次课程设计中,我进一步了解并熟悉了数字
本文标题:数字电路课程设计-电子秒表的设计
链接地址:https://www.777doc.com/doc-5209650 .html