分享
分销 收藏 举报 申诉 / 73

类型第7章--综合计时系统的设计与分析.ppt

  • 上传人:w****g
  • 文档编号:14650926
  • 上传时间:2026-10-25
  • 格式:PPT
  • 页数:73
  • 大小:2.03MB
  • 下载积分:10 金币
  • 配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    综合 计时 系统 设计 分析
    资源描述:
    ,第二级,第三级,第四级,第五级,第,7,章,综合计时系统的设计与分析,第7章 综合计时系统的设计与分析,7.1 系统设计要求,7.2 系统设计方案,7.3 主要VHDL源程序,7.4 系统仿真/硬件验证,7.5 设计技巧分析,7.6 系统扩展思路,7.1 系统设计要求,设计一个综合性的计时系统,要求能实现年、月、日、时、分、秒及星期的计数等综合计时功能,同时将计时结果通过15个七段数码管显示,并且可通过两个设置键,对计时系统的有关参数进行调整。具体系统功能面板如图7.1所示。,图7.1 系统功能面板,7.2 系统设计方案,7.2.1 综合计时电路的设计,根据系统的设计要求,综合计时电路可分为计秒电路、计分电路、计时电路、计星期电路、计日电路、计月电路、计年电路等7个子模块,这7个子模块必须都具有预置、计数和进位功能,设计思想如下:,(4)计日电路:将计时电路产生的进位脉冲信号作为计日电路的计数时钟信号,通过系统辨认,确定本月总天数X(包括28、29、30、31四种情况),待计数至X1瞬间,进位,计月电路加1,而计日电路返回1重新开始计数。,(5)计月电路:将计日电路产生的进位脉冲信号作为计月电路的计数时钟信号,待计数至12瞬间,进位,计年电路加1,而计月电路返回1重新开始计数。,(6)计年电路:将计月电路产生的进位脉冲信号作为计年电路的计数时钟信号,待计数至100瞬间,计年电路返回0重新开始计数。,CNT60计数模块是一个多用计时模块,它既可作为计秒电路调用,又可作为计分电路、计时电路调用。图7.2是其输入、输出端口图。其中,输入信号LD为置数控制信号,低电平有效;输入信号CLK为计数时钟信号;输入信号DATA为待预置数;输出信号NUM为计数结果;输出信号CO为计数溢出信号。,图7.2 CNT60计数模块输入、输出端口图,CNT30的主要VHDL程序段如下:,IF(LD=0)THEN,NUM=DATA;,ELSIF CLKEVENT AND CLK=1 THEN,MAX_DAYS=TOTAL_DAYS;,IF NUM=TOTAL_DAYS THEN-99,NUM=00001;CO=1;,ELSE,NUM=NUM+1;CO=0;,END IF;,END IF;,图7.3 CNT30计数模块输入、输出端口图,通常点亮一个LED所需的电流是550 mA,通电的电流愈大,LED的亮度愈高,相对的也会使其寿命缩短。一般以10 mA的导通电流来估算它所必须串联的阻值,其计算方式参考图7.4所示。,七段显示器可分为共阳极、共阴极型两种,它们都可以等效成8个LED的连接电路,其中图7.5就是共阴极型七段显示器的等效电路和每节LED的定义位置图。,图7.5 共阴极型七段显示器的LED位置定义和等效电路,根据以上设计思想,本系统的数据显示电路可分为两个子模块:,(1)显示控制电路XSKZQ:负责完成数据选择扫描及数码管位选择信号的产生,数据扫描选择输出,对于选择的数据进行BCD码转换等功能;,(2)显示译码电路:将用于显示的BCD码数据进行译码。,图7.6 XSKZQ的输入、输出端口图,图7.7 15个共阴极型七段数码管驱动接线图,7.2.3 调整控制电路TZKZQ的设计,对于系统中的时间调整电路,拟通过模式和调整两个外部按键完成。模式键负责切换正常时间计数模式和时间调整模式,调整模式切换顺序如图7.8所示。调整键负责在时间调整模式之下,对当前模式的计时结果进行调整。,图7.8 调整模式切换顺序,图7.9 TZKZQ的输入、输出端口图,7.3 主要VHDL源程序,7.3.1 综合计时电路的VHDL源程序,1CONT60计时电路的VHDL源程序,-CNT60.VHD,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,USE IEEE.STD_LOGIC_UNSIGNED.ALL;,ENTITY CNT60 IS,PORT(LD:IN STD_LOGIC;-置位信号(低电平有效),CLK:IN STD_LOGIC;-时钟脉冲,DATA:IN STD_LOGIC_VECTOR(5 DOWNTO 0);,-预置数,NUM:BUFFER STD_LOGIC_VECTOR(5 DOWNTO 0);-计数结果,CO:OUT STD_LOGIC);-进位信号,END ENTITY CNT60;,ARCHITECTURE ART OF CNT60 IS,BEGIN,PROCESS(CLK,LD)IS,BEGIN,IF(LD=0)THEN,NUM=DATA;,ELSIF CLKEVENT AND CLK=1 THEN,IF NUM=111011 THEN-59,NUM=000000;CO IS_RUNNIAN:=1;-4,WHEN 0001000=IS_RUNNIAN:=1;-8,WHEN 0001100=IS_RUNNIAN:=1;-12,WHEN 0010000=IS_RUNNIAN:=1;-16,WHEN 0010100=IS_RUNNIAN:=1;-20,WHEN 0011000=IS_RUNNIAN:=1;-24,WHEN 0011100=IS_RUNNIAN:=1;-28,WHEN 0100000=IS_RUNNIAN:=1;-32,WHEN 0100100=IS_RUNNIAN:=1;-36,WHEN 0101000=IS_RUNNIAN:=1;-40,WHEN 0101100=IS_RUNNIAN:=1;-44,WHEN 0110000=IS_RUNNIAN:=1;-48,WHEN 0110100=IS_RUNNIAN:=1;-52,WHEN 0111000=IS_RUNNIAN:=1;-56,WHEN 0111100=IS_RUNNIAN:=1;-60,WHEN 1000000=IS_RUNNIAN:=1;-64,WHEN 1000100=IS_RUNNIAN:=1;-68,WHEN 1001000=IS_RUNNIAN:=1;-72,WHEN 1001100=IS_RUNNIAN:=1;-76,WHEN 1010000=IS_RUNNIAN:=1;-80,WHEN 1010100=IS_RUNNIAN:=1;-84,WHEN 1011000=IS_RUNNIAN:=1;-88,WHEN 1011100=IS_RUNNIAN:=1;-92,WHEN 1100000=IS_RUNNIAN:=1;-96,WHEN OTHERS =IS_RUNNIAN:=0;,END CASE;,CASE YUE IS,WHEN 0001 =TOTAL_DAYS TOTAL_DAYS TOTAL_DAYS TOTAL_DAYS TOTAL_DAYS TOTAL_DAYS TOTAL_DAYS TOTAL_DAYS TOTAL_DAYS TOTAL_DAYS TOTAL_DAYS -2,IF(IS_RUNNIAN=1)THEN,TOTAL_DAYS=11101;-如是闰年2月则总天数为29,ELSE,TOTAL_DAYSNULL;,END CASE;,IF(LD=0)THEN,NUM=DATA;,ELSIF CLKEVENT AND CLK=1 THEN,MAX_DAYS=TOTAL_DAYS;,IF NUM=TOTAL_DAYS THEN-99,NUM=00001;CO=1;,ELSE,NUM=NUM+1;CO=0;,END IF;,END IF;,END PROCESS;,END ARCHITECTURE ART;,3其他计时电路的VHDL源程序,请读者参照前述程序自行完成。,7.3.2 显示控制电路XSKZQ的VHDL源程序,-XSKZQ.VHD,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,USE IEEE.STD_LOGIC_UNSIGNED.ALL;,USE IEEE.STD_LOGIC_ARITH.ALL;,ENTITY XSKZQ IS,PORT(CLK_SCAN:IN STD_LOGIC;-扫描时钟,SEC,MIN:IN STD_LOGIC_VECTOR(5 DOWNTO 0);-当前秒、分,HOUR:IN STD_LOGIC_VECTOR(4 DOWNTO 0);-当前时,DAY:IN STD_LOGIC_VECTOR(4 DOWNTO 0);-当前日,MON:IN STD_LOGIC_VECTOR(3 DOWNTO 0);-当前月,YEAR:IN STD_LOGIC_VECTOR(6 DOWNTO 0);-当前年,WEEK:IN STD_LOGIC_VECTOR(2 DOWNTO 0);-当前星期,SELOUT:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);-扫描信号,BCD:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);,-七段显示码输出,END ENTITY XSKZQ;,ARCHITECTURE ART OF XSKZQ IS,SIGNAL TEMP:INTEGER RANGE 0 TO 99;,SIGNAL CNT:STD_LOGIC_VECTOR(2 DOWNTO 0);,BEGIN,PROCESS(CLK_SCAN)IS,BEGIN,IF CLK_SCANEVENT AND CLK_SCAN=1 THEN,-对各个输出信号进行扫描,IF CNT=111 THEN,CNT=000;,ELSE,CNT=CNT+1;,END IF;,END IF;,END PROCESS;,SELOUT TEMP TEMP TEMP TEMP TEMP TEMP TEMP TEMPNULL;,END CASE;,CASE TEMP IS,WHEN 0 =BCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCD=00000000;,END CASE;,END PROCESS;,END ARCHITECTURE ART;,7.3.3 调整控制电路TZKZQ的VHDL源程序,-TZKZQ.VHD,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,USE IEEE.STD_LOGIC_UNSIGNED.ALL;,ENTITY TZKZQ IS,PORT(KEY:IN STD_LOGIC_VECTOR(1 DOWNTO 0);-按键信号,CLK_KEY:IN STD_LOGIC;-键盘扫描信号,MAX_DAYS:IN STD_LOGIC_VECTOR(4 DOWNTO 0);-本月最大天数,SEC_EN,MIN_EN,HOUR_EN,,DAY_EN,MON_EN,YEAR_EN,WEEK_EN:OUT STD_LOGIC;-异步并行置位使能,HOUR_CUR:IN STD_LOGIC_VECTOR(4 DOWNTO 0);,MIN_CUR,SEC_CUR:IN STD_LOGIC_VECTOR(5 DOWNTO 0);,YEAR_CUR:IN STD_LOGIC_VECTOR(6 DOWNTO 0);,MON_CUR:IN STD_LOGIC_VECTOR(3 DOWNTO 0);,DAY_CUR:IN STD_LOGIC_VECTOR(4 DOWNTO 0);,WEEK_CUR:IN STD_LOGIC_VECTOR(2 DOWNTO 0);,SEC,MIN:BUFFER STD_LOGIC_VECTOR(5 DOWNTO 0);,HOUR:BUFFER STD_LOGIC_VECTOR(4 DOWNTO 0);,DAY:BUFFER STD_LOGIC_VECTOR(4 DOWNTO 0);,MON:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);,YEAR:BUFFER STD_LOGIC_VECTOR(6 DOWNTO 0);,WEEK:BUFFER STD_LOGIC_VECTOR(2 DOWNTO 0);,END ENTITY TZKZQ;,ARCHITECTURE ART OF TZKZQ IS,TYPE STATETYPE IS(NORMAL,SEC_SET,MIN_SET,HOUR_SET,DAY_SET,MON_SET,,YEAR_SET,WEEK_SET);,SIGNAL MODE:STATETYPE;,BEGIN,PROCESS(KEY,CLK_KEY),BEGIN,IF CLK_KEYEVENT AND CLK_KEY=1 THEN,IF KEY=01 THEN -如果按下设置键,切换到下一个状态,SEC_EN=1;MIN_EN=1;HOUR_EN=1;,DAY_EN=1;MON_EN=1;YEAR_EN=1;,WEEK_EN MODE=SEC_SET;SEC=SEC_CUR;SEC_EN MODE=MIN_SET;MIN=MIN_CUR;SEC_EN=1;MIN_EN MODE=HOUR_SET;HOUR=HOUR_CUR;MIN_EN=1;HOUR_EN MODE=DAY_SET;DAY=DAY_CUR;HOUR_EN=1;DAY_EN MODE=MON_SET;MON=MON_CUR;DAY_EN=1;MON_EN MODE=YEAR_SET;YEAR=YEAR_CUR;MON_EN=1;,YEAR_EN MODE=WEEK_SET;WEEK=WEEK_CUR;YEAR_EN=1;WEEK_EN MODE SEC_EN=0;,-异步并行置位使能有效,IF SEC=111011 THEN SEC=000000;,-如果秒计数到59,返回到0重新计数,ELSE SEC MIN_EN=0;,IF MIN=111011 THEN MIN=000000;,ELSE MIN HOUR_EN=0;,IF HOUR=11000 THEN HOUR=00000;,ELSE HOUR DAY_EN=0;,IF DAY=MAX_DAYS THEN DAY=00001;,ELSE DAY MON_EN=0;,IF MON=1100 THEN MON=0001;,ELSE MON YEAR_EN=0;,IFYEAR=1100011 THEN YEAR=0000000;,ELSE YEAR WEEK_EN=0;,IF WEEK=111 THEN WEEK=001;,ELSE WEEKNULL;,END CASE;,END IF;,END IF;,END PROCESS;,END ARCHITECTURE ART;,7.3.4 系统总体组装电路的VHDL源程序,请读者根据图7.10 综合计时系统的总体组装电路原理图自行完成。,7.4 系统仿真/硬件验证,7.4.1 系统的有关仿真,1CNT60.VHD的仿真,从图7.11可以看出,CNT60.VHD实现了从0到59的循环计数,每实现一次59到0的计数动作,计数模块输出一个进位信号。当LD端有低电平输入时,说明置数信号(LD)有效,模块将预置数(DATA)56送入计数结果(NUM)中去,计数模块从56开始重新计数。,图7.11 CNT60.VHD模块仿真图,2CNT30.VHD的仿真,从图7.12可以看出,该模块首先要读取当前年月(NIAN和YUE),再对该月的最大天数(MAX_DAYS)进行判断并将结果向外输出。在正常计数过程中,模块实现了从0到最大天数(MAX_DAYS)的循环计数,每实现一次最大天数(MAX_DAYS)到0的计数动作,计数模块输出一个进位信号。当LD端有低电平输入时,说明置数信号(LD)有效,模块将预置数(DATA)24送入计数结果(NUM)中去,计数模块从24开始重新计数。,图7.12 CNT30模块仿真图,3TZKZQ.VHD的仿真,从图7.13(不完整)可以看出,调整键被按下了8次(键盘产生“01”信号即为调整键按下一次),调整模式依次经过了正常、调秒、调分、调时、调日、调月、调年、调星期再回到正常这8种模式的循环,即MODE依次从0到7,再从7回到0的循环。在按键过程中,每按下一次按钮,相应地被调整模式的异步并行置位使能置“0”,同时通过一个非门点亮该调整模式所对应的发光二极管,作为该调整模式的指示信号。,图7.13 TZKZQ.VHD仿真图(一),从图7.14可以看出,在按动了两次模式键(01)后,调整模式切换到了调分模式,然后又按动了两次调整键(10),实现了在调分模式下对当前分的值进行调整(从34调到36)。,图7.14 TZKZQ.VHD仿真图(二),4XSKZQ.VHD的仿真,从图7.15可以看出,当SELOUT分别等于0,1,2,3,4,5,6,7时,分别选择对应的输入数据输出,达到了设计要求。,图7.15 XSKZQ.VHD的仿真图,7.4.2 系统的硬件验证,请读者根据自己所拥有的实验设备自行完成。,7.5 设计技巧分析,(1)在显示控制电路XSKZQ的设计中,利用动态扫描显示的原理,既简化了显示译码驱动电路的设计,又节约了硬件的I/O口,同时还减小了系统的驱动电流及功耗等,在实际使用中非常有价值。,(2)在调整控制电路TZKZQ的设计中,通过读入系统当前工作的各种时间信息进行自加调整,简化了预置值的设计,利用状态机非常简洁地实现了8种调整的循环变化。,7.6 系统扩展思路,(1)对于系统的各种控制时钟信号,可通过分频电路对一个给定的合适频率信号进行分频来产生。,(2)设计系统工作的外围电路:系统用方波信号源、直流工作电源、彩灯控制的驱动电路。,(3)若为毕业设计,除要求设计调试程序、外围电路外,还可要求设计制作整个系统,包括PCB的制作。,
    展开阅读全文

    开通VIP折扣优惠下载文档

    提示  咨信网声明:本文档由用户上传并分享,仅供学习交流、研究之用,未经授权,严禁复制、发行、汇编、翻译或网络传播等,侵权必究。

    咨信网小贴示:
    1、浏览或下载可查看了解,请点击【咨信网告知】。
    2、下载文件中如有侵权或不适当内容,将立即纠正。
    3、如果因为网速或其他原因下载失败请重新下载,重复下载[60天内]不扣币。
    4、开具发票登录电脑端申请,请点击【索取发票】。

    咨信网客服组:【微信客服】

    自信AI创作助手
    关于本文
    本文标题:第7章--综合计时系统的设计与分析.ppt
    链接地址:https://www.zixin.com.cn/doc/14650926.html

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork