![第7章 综合计时系统的设计与分析.ppt_第1页](http://file1.renrendoc.com/fileroot2/2020-1/11/e1043a22-ac26-472a-8c58-8325ca9db8e8/e1043a22-ac26-472a-8c58-8325ca9db8e81.gif)
![第7章 综合计时系统的设计与分析.ppt_第2页](http://file1.renrendoc.com/fileroot2/2020-1/11/e1043a22-ac26-472a-8c58-8325ca9db8e8/e1043a22-ac26-472a-8c58-8325ca9db8e82.gif)
![第7章 综合计时系统的设计与分析.ppt_第3页](http://file1.renrendoc.com/fileroot2/2020-1/11/e1043a22-ac26-472a-8c58-8325ca9db8e8/e1043a22-ac26-472a-8c58-8325ca9db8e83.gif)
![第7章 综合计时系统的设计与分析.ppt_第4页](http://file1.renrendoc.com/fileroot2/2020-1/11/e1043a22-ac26-472a-8c58-8325ca9db8e8/e1043a22-ac26-472a-8c58-8325ca9db8e84.gif)
![第7章 综合计时系统的设计与分析.ppt_第5页](http://file1.renrendoc.com/fileroot2/2020-1/11/e1043a22-ac26-472a-8c58-8325ca9db8e8/e1043a22-ac26-472a-8c58-8325ca9db8e85.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第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 综合计时电路的设计 根据系统的设计要求,综合计时电路可分为计秒电路、计分电路、计时电路、计星期电路、计日电路、计月电路、计年电路等
2、7个子模块,这7个子模块必须都具有预置、计数和进位功能,设计思想如下:,(1) 计秒电路:以直接输入或由分频器产生的秒脉冲作为计秒电路的计数时钟信号,待计数至60瞬间,进位,计分电路加1,而计秒电路则清零并重新计秒。 (2) 计分电路、计时电路:其设计思想与计秒电路类似。 (3) 计星期电路:将计时电路产生的进位脉冲信号作为计星期电路的计数时钟信号,待计数至7瞬间,计星期电路返回1重新开始计数。,(4) 计日电路:将计时电路产生的进位脉冲信号作为计日电路的计数时钟信号,通过系统辨认,确定本月总天数X(包括28、29、30、31四种情况),待计数至X1瞬间,进位,计月电路加1,而计日电路返回1重
3、新开始计数。 (5) 计月电路:将计日电路产生的进位脉冲信号作为计月电路的计数时钟信号,待计数至12瞬间,进位,计年电路加1,而计月电路返回1重新开始计数。 (6) 计年电路:将计月电路产生的进位脉冲信号作为计年电路的计数时钟信号,待计数至100瞬间,计年电路返回0重新开始计数。,CNT60计数模块是一个多用计时模块,它既可作为计秒电路调用,又可作为计分电路、计时电路调用。图7.2是其输入、输出端口图。其中,输入信号LD为置数控制信号,低电平有效;输入信号CLK为计数时钟信号;输入信号DATA为待预置数;输出信号NUM为计数结果;输出信号CO为计数溢出信号。,图7.2 CNT60计数模块输入、
4、输出端口图,CNT60的主要VHDL程序段如下: IF(LD=0) THEN NUM=DATA; ELSIF CLKEVENT AND CLK=1 THEN IF NUM=111011 THEN -59 NUM=000000;CO=1; ELSE NUM=NUM+1;CO=0; END IF; END IF;,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 NU
5、M=NUM+1;CO=0; END IF; END IF;,图7.3 CNT30计数模块输入、输出端口图,7.2.2 显示控制电路的设计 本设计显示需要使用的是15个七段显示数码管。在计时结果显示电路中,七段数码管显示部分是一个不容忽视的环节,如若处理不得当,可能引起系统功率过大,产生散热问题,严重时甚至会导致系统的烧毁。为了解决好以上问题,下面就对七段数码管显示电路做简要的分析和介绍。,通常点亮一个LED所需的电流是550 mA,通电的电流愈大,LED的亮度愈高,相对的也会使其寿命缩短。一般以10 mA的导通电流来估算它所必须串联的阻值,其计算方式参考图7.4所示。 七段显示器可分为共阳极、
6、共阴极型两种,它们都可以等效成8个LED的连接电路,其中图7.5就是共阴极型七段显示器的等效电路和每节LED的定义位置图。,图7.4 单个LED的串接电阻计算方式,图7.5 共阴极型七段显示器的LED位置定义和等效电路,根据以上设计思想,本系统的数据显示电路可分为两个子模块: (1) 显示控制电路XSKZQ:负责完成数据选择扫描及数码管位选择信号的产生,数据扫描选择输出,对于选择的数据进行BCD码转换等功能; (2) 显示译码电路:将用于显示的BCD码数据进行译码。,XSKZQ的输入、输出端口如图7.6所示。其中,输入信号CLK_SCAN为用于产生数据选择扫描等控制信号的时钟信号;输入信号SE
7、C、MIN、HOUR、DAY、MON、YEAR、WEEK分别来自计秒电路、计分电路、计时电路、计日电路、计月电路、计年电路、计星期电路等计时电路的计时结果输出端;输出信号BCD为被选择进行显示的计秒/计分/计时/计日/计月/计年/计星期电路等计时电路的计时结果的8位BCD码,输出端SELOUT经外部的3-8译码电路译码后用于选择对应计时结果显示数码管的公共端COM。图7.7为15个共阴极型七段数码管驱动接线图。,图7.6 XSKZQ的输入、输出端口图,图7.7 15个共阴极型七段数码管驱动接线图,7.2.3 调整控制电路TZKZQ的设计 对于系统中的时间调整电路,拟通过模式和调整两个外部按键完
8、成。模式键负责切换正常时间计数模式和时间调整模式,调整模式切换顺序如图7.8所示。调整键负责在时间调整模式之下,对当前模式的计时结果进行调整。,图7.8 调整模式切换顺序,图7.9 TZKZQ的输入、输出端口图,7.2.4 系统总体组装电路的设计 此系统的总体组装电路图如图7.10(略)所示。,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 CNT
9、60 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
10、 AND CLK=1 THEN IF NUM=111011 THEN -59 NUM=000000;CO=1; ELSE,NUM=NUM+1;CO=0; END IF; END IF; END PROCESS; END ARCHITECTURE ART;,2CONT30计时电路的VHDL源程序 -CNT30.VHD LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT30 IS PORT(LD:IN STD_LOGIC; -置位信号(低电平有效) CLK:IN STD_LOG
11、IC; -时钟脉冲,NIAN:IN STD_LOGIC_VECTOR(6 DOWNTO 0); -当前年 YUE :IN STD_LOGIC_VECTOR(3 DOWNTO 0); -当前月 DATA:IN STD_LOGIC_VECTOR(4 DOWNTO 0); -预置数 NUM:BUFFER STD_LOGIC_VECTOR(4 DOWNTO 0); -计数结果 MAX_DAYS:OUT STD_LOGIC_VECTOR(4 DOWNTO 0); -本月总天数 CO:OUT STD_LOGIC); -进位信号 END ENTITY CNT30;,ARCHITECTURE ART OF C
12、NT30 IS SIGNAL TOTAL_DAYS:STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN PROCESS(CLK,LD) IS VARIABLE IS_RUNNIAN:STD_LOGIC; BEGIN CASE NIAN IS WHEN 0000000 = IS_RUNNIAN:=1;-0,-如当前年为00,则输出闰年确认信号 WHEN 0000100 = IS_RUNNIAN:=1;-4 WHEN 0001000 = IS_RUNNIAN:=1;-8 WHEN 0001100 = IS_RUNNIAN:=1;-12 WHEN 0010000 = IS_RUN
13、NIAN:=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_RUNNIA
14、N:=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:=
15、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_DAYSNULL; EN
16、D 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_11
17、64.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); -当前月 YE
18、AR: 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 DOW
19、NTO 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=CNT; PROCESS(CNT) BEGIN CASE CNT IS,WHEN 000 = TEMP TEMP TEMP TEMP TEMP TEMP TEMP TEMPNULL;,END CASE; CASE TEMP IS WHEN 0 =BCDBCDBCD
20、BCDBCDBCDBCDBCDBCDBCDBCD=00010000 ;,WHEN 11 =BCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCD=00100011 ;,WHEN 24 =BCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCD=00110110 ;,WHEN 37 =BCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCD=01001001 ;,WHEN 50 =BCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCD=01100011 ;,WHEN 64 =BCDBCDBCDBCD
21、BCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCD=01111000 ;,WHEN 79 =BCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCDBCD=10010001 ;,WHEN 92 =BCDBCDBCDBCDBCDBCDBCDBCDBCD=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_UNSI
22、GNED.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_L
23、OGIC_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_LOGI
24、C_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:STATE
25、TYPE; BEGIN PROCESS(KEY,CLK_KEY) BEGIN IF CLK_KEYEVENT AND CLK_KEY=1 THEN IF KEY=01 THEN -如果按下设置键,切换到下一个状态,SEC_EN MODE MODE=MIN_SET;MIN=MIN_CUR;SEC_EN=1;MIN_EN=0;,-切换到分设置模式,读入当前分,分异步并行置位使能有效, 同时秒异步并行置位使能复位 WHEN MIN_SET = MODE MODE MODE MODE=YEAR_SET;YEAR=YEAR_CUR; MON_EN=1;,YEAR_EN MODE MODE=NORMAL;
26、 END CASE; ELSIF KEY=10 THEN -如果按下调整键,则自加 CASE MODE IS,WHEN SEC_SET = SEC_EN MIN_EN=0; IF MIN=111011 THEN MIN=000000; ELSE MIN=MIN+1; END IF;,WHEN HOUR_SET= HOUR_EN DAY_EN=0; IF DAY=MAX_DAYS THEN DAY=00001; ELSE DAY=DAY+1; END IF;,WHEN MON_SET = MON_EN YEAR_EN=0; IFYEAR=1100011 THEN YEAR=0000000; EL
27、SE YEAR=YEAR+1; END IF;,WHEN WEEK_SET= WEEK_ENNULL; 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)的循环计数,每实现
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 全新单位委托代理合同
- 《dxc西点执行力》课件
- 高中地理 第五单元 第2节《自然地理环境的差异性》说课稿 新人教版必修1
- 第三人担保借款合同
- 股权转让合同(样本)
- 合同赔偿及和解协议书
- 八年级生物上册 第五单元 生物圈中的其他生物 第四章 细菌和真菌 第一节 细菌和真菌的分布说课稿 (新版)新人教版
- 《个性差异及其管理》课件
- 医药健康产品开发与销售合同
- 《髋关节患者的护理》课件
- 苏教版数学二年级下册《认识时分》教案(无锡公开课)
- 即兴口语(姜燕)-课件-即兴口语第四章PPT-中国传媒大学
- 报批稿20160301-浙江嘉化能源化工股份有限公司年产16万吨多品种脂肪醇(酸)产品项目
- 工程合同管理教材(共202页).ppt
- 市政道路改造工程施工组织设计(最新)11623
- 疑似预防接种异常反应(AEFI)监测与处理PPT课件
- 电缆生产所需原材料采购规范汇总
- 第十章运动代偿
- 《企业经营统计学》课程教学大纲
- 如何做好健康沙龙
- 交通安全设施养护技术.ppt
评论
0/150
提交评论