EDA综合计时系统设计_第1页
EDA综合计时系统设计_第2页
EDA综合计时系统设计_第3页
EDA综合计时系统设计_第4页
EDA综合计时系统设计_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、江西理工大学应用科学学院江西理工大学应用科学学院 SOPC/EDASOPC/EDA 综合课程设计报告综合课程设计报告 设计题目:设计题目: 综合计时系统综合计时系统 设设 计计 者:者: 唐斌强唐斌强 学学 号:号: 班班 级:级: 电气电气 092 指导老师:指导老师: 王忠锋王忠锋 完成时间:完成时间: 2010 年年 1 月月 4 日日 设计报告设计报告综合测试综合测试总评总评 格式格式 (10) 内容内容 (40) 图标图标 (10) 答辩答辩 (20) 平时平时 (20) 目目 录录 1. 综合计时系统设计与分析.2 1.1 系统设计要求.2 1.2 系统设计方案.2 1.2.1 综

2、合计时电路的设计.2 1.2.2 显示控制电路 XSKZQ 的设计 .5 1.2.3 调整控制电路 TZKZQ 的设计.9 1.2.4 综合计时系统 ZHJSQ 的设计.12 1.3 系统单元仿真与分析 .13 1.3.1 综合计时电路的仿真.13 1.3.2 显示控制电路的仿真.14 1.3.3 调整控制电路的仿真.15 1.3.3 综合计时系统电路的仿真.15 2. 改进方法.16 3. 收获与体会.16 参考文献.17 1. 综合计时系统设计与分析 1.1 系统设计要求 设计一个综合性的计时系统,要求能实现年、月、日、时、分、 秒及星期的计数等综合计时功能,同时将计时结果通过 15 个七

3、段数 码管显示,并且可通过两个设置键,对计时系统的有关参数进行调 整。具体系统功能面板如图 1.1 所示。 图 1.1 系统功能面板 1.2 系统设计方案 1.2.1 综合计时电路的设计 根据系统的设计要求,综合计时电路可分为计秒电路、计分电 路、计时电路、计星期电路、计日电路、计月电路、计年电路等 7 个子模块,这 7 个子模块必须都具有预置、计数和进位功能,设计 思想如下: (1) 计秒电路:以直接输入或由分频器产生的秒脉冲作为计秒 电路的计数时钟信号,待计数至 60 瞬间,进位,计分电路加 1,而 计秒电路则清零并重新计秒。 (2) 计分电路、计时电路:其设计思想与计秒电路类似。 (3)

4、 计日电路:将计时电路产生的进位脉冲信号作为计日电路 的计数时钟信号,通过系统辨认,确定本月总天数 X(包括 28、29、30、31 四种情况),待计数至 X1 瞬间,进位,计月电路 加 1,而计日电路返回 1 重新开始计数。 (4) 计星期电路:将计时电路产生的进位脉冲信号作为计星期 电路的计数时钟信号,待计数至 7 瞬间,计星期电路返回 1 重新开 始计数。 (5) 计月电路:将计日电路产生的进位脉冲信号作为计月电路 的计数时钟信号,待计数至 12 瞬间,进位,计年电路加 1,而计月 电路返回 1 重新开始计数。 (6) 计年电路:将计月电路产生的进位脉冲信号作为计年电路 的计数时钟信号,

5、待计数至 100 瞬间,计年电路返回 0 重新开始计 数。 (注:由于本系统的计年范围仅为 20002099 年,所以计年模 块只对年份的后两位进行计数,年份的前两位始终保持为20。 ) 下面介绍 CNT60、CNT30 计数模块的设计。 LD CLK DATA5.0 NUM5.0 CO CNT60 inst14 图 2.1 CNT60 计数模块输入、输出端口图 CNT60 计数模块是一个多用计时模块,它既可作为计秒电路调用, 又可作为计分电路、计时电路调用。图 2.1 是其输入、输出端口图。 其中,输入信号 LD 为置数控制信号,低电平有效;输入信号 CLK 为 计数时钟信号;输入信号 DA

6、TA 为待预置数;输出信号 NUM 为计数结 果;输出信号 CO 为计数溢出信号。 LD CLK YEAR6.0 MON3.0 DAY4.0 NUM4.0 MAX_DAYS4.0 CO CNT30 inst 图 2.2 CNT30 计数模块的输入、输出端口图 1CNT30 计数模块是一个计日模块。由于该计数模块涉及到大小 月及闰年问题,所以 CNT30 的计数范围并非固定变,而是存在 128、129、130 及 131 这四种情况。图 2.2 是其输入、输 出端口图。其中输入信号 LD 为置数控制信号,低电平有效;输入信 号 CLK 为计数时钟信号;输入信号 DATA 为待预置数;输入信号 Y

7、EAR 为当前计时的年份数;输入信号 MON 为当前计时的月份数;输 出信号 NUM 为计数结果;输出信号 CO 为计数溢出信号,输出信号 MAX_DAYS 为当前月的天数。 2(1)CNT60 的主要 VHDL 程序段如下: 3 IF(LD=0) THEN 4 NUM=DATA; 5 ELSIF CLKEVENT AND CLK=1THEN 6 IF NUM= THEN 7 NUM=;CO=1; 8 ELSE 9 NUM=NUM+1;CO=0; 10 END IF; 11 END IF; 12分析:这段程序可用来被计秒、计分、计时电路调用。当置数 控制模块低电平有效时,待预置数送入计数结果。

8、此时当计数时钟 信号上升沿有效时,如果计数结果输出的是,代表此周期内计数 到第 60 次(即若是计分电路,代表计数到第 59 分钟),将产生进 位信号并且计数从 0 开始;若计数范围在 058 之间时,计数结果 只在下次计数时钟到来时加 1,并不产生进位信号。 13拓展:可以利用 CNT60 的理论设计出计年(CNT100)、计月 (CNT12)、计星期(CNT7)的 VHDL 程序段,只需修改对应的最大 计时数、复位值(复位值为 1)以及对应的向量范围。 14(2)CNT30 的主要 VHDL 程序段如下: 15 IF(LD=0) THEN 16 NUM=DAY; 17 ELSIF CLKE

9、VENT AND CLK=1 THEN 18 MAX_DAYS=TOTAL_DAYS; 19 IF NUM=TOTAL_DAYS THEN 20 NUM=00001;CO=1; 21 ELSE 22 NUM=NUM+1;CO=0; 23 END IF; 24 END IF; 25分析:这段程序用来实现计日模块。当置数控制模块低电平有 效时,待预置数送入计数结果。此时当计数时钟信号上升沿有效时, 将 TOTAL_DAYS 的信号送入 MAX_DAYS(在结构体中定义 SIGNAL TOTAL_DAYS:STD_LOGIC_VECTOR(4 DOWNTO 0)),如果 TOTAL_DAYS 的计数

10、结果和 NUM 的结果一致,表明已到当前月份的最后一天,则 产生进位信号,并从 1 开始计数;否则,计数信号加 1,不会产生 进位信号。 1.2.2 显示控制电路 XSKZQ 的设计 本设计显示需要使用的是 15 个七段显示数码管。在计时结果显 示电路中,七段数码管显示部分是一个不容忽视的环节,如若处理 不得当,可能引起系统功率过大,产生散热问题,严重时甚至会导 致系统的烧毁。为了解决好以上问题,下面就对七段数码管显示电 路做简要的分析和介绍。 通常点亮一个 LED 所需的电流是 550 mA,通电的电流愈大, LED 的亮度愈高,相对的也会使其寿命缩短。一般以 10 mA 的导通 电流来估算

11、它所必须串联的阻值,其计算方式参考图 2.3 所示。 图 2.3 单个 LED 的串接电阻计算方式 七段显示器可分为共阳极、共阴极型两种,它们都可以等效成 8 个 LED 的连接电路,其中图 2.4 就是共阴极型七段显示器的等效 电路和每节 LED 的定义位置图。 图 2.4 共阴极型七段显示器的 LED 位置定义和等效电路 由于本设计的目标是设计一个综合的计时系统,要求同时显示 年(在这里年份的前两位固定为 20) 、月、日、时、分、秒及星期 共 15 个数字,依照图 2-4 的计算方式,同时点亮一个七段显示器的 8 节 LED,结果将需要电流为 10mA8=80mA。若再进一步同时点亮 1

12、5 个七段显示器,这时所需的电流为 80mA15=1200 mA=1.2A。这 对于一般的电子电路来说,是一个不小的电源。不但 CPLD 和 FPGA 芯片无法负载这样的电流驱动,而且这个功率也太大,散热也是问 题,电路容易被烧毁。因此显示电路部分不能直接实现各个计时结 果同时显示,只能另外通过一个扫描电路对计时输出进行逐个扫描, 使七段数码管以个位一组,逐个进行显示,只要每个扫描频率不超 过人的眼睛的视觉暂留频率 24HZ,就可以达到点亮两个七段数码管, 却能享有所有七段数码管同时显示的视觉效果,而且显示也不致闪 烁抖动,从而间接实现计时结果同时显示。 根据以上设计思想,本系统的数据显示电路

13、可分为两个子模块: b c g f e d dp dp gfedcba a (1) 显示控制电路 XSKZQ:负责完成数据选择扫描及数码管位选 择信号的产生,数据扫描选择输出,对于选择的数据进行 BCD 码转 换等功能; (2) 显示译码电路 YMQ:将用于显示的 BCD 码数据进行译码。 XSKZQ 的输入、输出端口如图 2.5 所示。 CLK_SCAN SEC5.0 MIN5.0 HOUR4.0 DAY4.0 MON3.0 YEAR6.0 WEEK2.0 SELOUT2.0 BCD7.0 XSKZQ inst17 图 2.5 XSKZQ 计数模块的输入、输出端口图 YMQ 的输入、输出端口

14、如图 2.6 所示。 DATA7.0HIGHT_SEG6.0 LOW_SEG6.0 YMQ inst1 图 2.6 YMQ 显示译码模块的输入、输出端口图 其中,输入信号 CLK_SCAN 为用于产生数据选择扫描等控制信号 的时钟信号;输入信号 SEC、MIN、HOUR、DAY、MON、YEAR、WEEK 分 别来自计秒电路、计分电路、计时电路、计日电路、计月电路、计 年电路、计星期电路等计时电路的计时结果输出端;输出信号 BCD 为被选择进行显示的计秒、计分、计时、计日、计月、计年、计星 期电路等计时电路的计时结果的 8 位 BCD 码,输出端 SELOUT 经外部 的 3-8 译码电路译码

15、后用于选择对应计时结果显示数码管的公共端 COM。 图 2.7 为 15 个共阴极型七段数码管驱动接线图。 图 2.7 15 个共阴极型七段数码管驱动接线图 显示控制电路 XSKZQ 的 VHDL 部分程序: IF CLK_SCANEVENT AND CLK_SCAN=1 THEN IF CNT=111 THEN CNT=000; ELSE CNT=CNT+1; END IF; END IF; SELOUT TEMP TEMP TEMP TEMP TEMP TEMP TEMP TEMP NULL; END CASE; CASE TEMP IS WHEN 0 = BCD BCD BCD BCD

16、BCD BCD BCD BCD BCD TEMP=CONV_INTEGER(HOUR)表 明扫描小时信号;第二个 CASE 语句用于判断 BCD 输出信号应在数码 管显示电路中所显示的数字。 显示控制电路 YMQ 的 VHDL 部分程序: HIGHT=DATA(7 DOWNTO 4); LOWS HIGHT_SEG HIGHT_SEG HIGHT_SEG HIGHT_SEG HIGHT_SEG HIGHT_SEG HIGHT_SEG HIGHT_SEG HIGHT_SEG HIGHT_SEG HIGHT_SEG LOW_SEG LOW_SEG = ; END CASE; END PROCESS

17、; END ARCHITECTURE BEHAV; 分析:将 BCD 的高 4 位赋值给 HIGHT,低 4 位赋值给 LOWS,分别 对 HIGHT、LOWS 译码。 1.2.3 调整控制电路 TZKZQ 的设计 对于系统中的时间调整电路,拟通过模式和调整两个外部按键 完成。模式按键负责切换正常时间计数模式和时间调整模式,调整 模式切换顺序如图 2.8 所示。调整键负责在时间调整模式之下,对 当前模式的计时结果进行调整。 图 2.8 调整模式切换顺序 在模式选择的过程中,被选择到的调整模式所对应的发光二极 管会被点亮。例如,按动模式键,选定“2010 年 5 月 7 日 09:09:09 星

18、期 5”的分钟数“09” ,对应的调分模式发光二极管 将会被点亮,剩下的 6 个调整模式发光二极管不被点亮。当处于正 常模式时,7 个发光二极管均不被点亮。被调整的计时结果之间相 互独立。调整过程中,只有被选择到的计数结果才会被接收调整, 例如上述的“09”分钟数部分,它可能会有的调整范围为 059, 其余的数字将固定显示不动。 TZKZQ 模块是负责各个模块之间的相互切换以及对被选中的模式 进行时间调整的。图 2.9 是其输入、输出端口图。 KEY1.0 CLK_KEY MAX_DAYS4.0 SEC_CUR5.0 MIN_CUR5.0 HOUR_CUR4.0 DAY_CUR4.0 MON_

19、CUR3.0 YEAR_CUR6.0 WEEK_CUR2.0 SEC_EN MIN_EN HOUR_EN DAY_EN MON_EN YEAR_EN WEEK_EN SEC5.0 MIN5.0 HOUR4.0 DAY4.0 MON3.0 YEAR6.0 WEEK2.0 TZKZQ inst16 图 2.9 TZKZQ 计数模块的输入、输出端口图 其中输入信号 KEY1.0为键盘信号,当 KEY=“01”时,表示 按下了设置键,系统切换到下一个状态,当 KEY=“10”时表示按下 了调整键,系统进行自加;输入信号 CLK_KEY 为按键扫描时钟信号; 输入信号 YEAR_CUR、MON_CUR、

20、DAY_CUR、HOUR_CUR、MIN_CUR、SEC_CUR、WEE K_CUR、MAX_DAYS 均为来自各自计时电路输出的当前计时结果的反 馈值;输入信号 YEAR_EN、MON_EN、MON_EN、HOUR_EN、MIN_EN、SEC_EN、WEEK_EN 均为对应的计时电路的一部并行置数使能信号;输出信号 YEAR、MON、DAY、HOUR、MIN、SEC、WEEK 则为调整后的对应时间需 预置的数。该模块的 VHDL 程序主要通过一个状态机来实现12。 调整控制电路 TZKZQ 的 VHDL 部分程序: TYPE STATETYPE IS(NORMAL,SEC_SET,MIN_S

21、ET, HOUR_SET,DAY_SET,MON_SET, YEAR_SET,WEEK_SET); SIGNAL MODE:STATETYPE; 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 MODESEC_EN=0; IF SEC= THEN SEC=; ELSE

22、SECDAY_EN=0; IF DAY=MAX_DAYS THEN DAY=00001; ELSE DAYWEEK_EN=0; IF WEEK=111 THEN WEEK=001; ELSE WEEKNULL; END CASE; END IF; END IF; 分析:先利用状态机的概念生成状态变量 MODEL,当按键扫描信 号 CLK_KEY 上升沿到来时,若 KEY =01,则表明按下了设置键, 使系统切换到下一个状态。语句 WHEN NORMAL = MODE = SEC_SET;SEC=SEC_CUR;SEC_ENMODE=MIN_SET;MIN=MIN_CUR;SEC_EN=1;MI

23、N_EN SEC_EN=0表示异步并行置位使能有效。当 SEC 信号 输出时,表明秒计数到 59,则返回 0 重新计数,否则继续计数; 以下情况依次类推。 1.2.4 综合计时系统 ZHJSQ 的设计 图 2.9 ZHJSQ 综合计时系统的输入、输出端口图 分析:对整个系统进行封装,外接输入口 KEY1.0接两个控制 按钮,CLK_SEC 接秒脉冲信号,CLK_TAKZ 接适当频率的脉冲信号用 于扫描按键的情况,CLK_SCAN 接大于人眼的频率的HZHZ192824 脉冲信号; 外接输出口接 SELOUT2.0用于选中个数码管的 COM 端, BCD7.0经译码输出接个数码管,高低位接线如图

24、 2.6 所示。 1.3 系统单元仿真与分析 各部分模块完成后,用 QUARTUS 对程序进行编译仿真,以得 到相应的仿真波形。 1.3.1 综合计时电路的仿真 CNT60.VHD 模块仿真波形如下: 图 3.1 CNT60.VHD 模块仿真图 从图 3.1 可以看出,CNT60.VHD 实现了从 0 到 59 的循环计数, 每实现一次 59 到 0 的计数动作,计数模块输出一个进位信号。当 LD 端有低电平输入时,说明置数信号(LD)有效,模块将预置数 (DATA)56 送入计数结果(NUM)中去,计数模块从 56 开始重新计数。 当计数结果(NUM)从零开始计数时,产生一个进位信号(CO)

25、 。 CNT30.VHD 的仿真波形如下: 图 3.2 CNT30 模块仿真图 从图 3.2 可以看出,该模块首先要读取当前年月(YEAR 和 MON), 再对该月的最大天数(MAX_DAYS)进行判断并将结果向外输出。在正 常计数过程中,模块实现了从 0 到最大天数(MAX_DAYS)的循环计数, 每实现一次最大天数(MAX_DAYS)到 0 的计数动作,计数模块输出一 个进位信号。当 LD 端有低电平输入时,说明置数信号(LD)有效,模 块将预置数(DAY)20 送入计数结果(NUM)中去,计数模块从 20 开始 重新计数。 1.3.2 显示控制电路的仿真 XSKZQ.VHD 的仿真波形如

26、下: 图 3.3 XSKZQ.VHD 的仿真图 从图 3.3 可以看出,当 SELOUT 分别等于 0,1,2,3,4,5,6,7 时,分别选择对应的输入数据输出。 SELOUT 等于 0 时,BCD 显示秒输出,为07秒;SELOUT 等于 1 时, BCD 显示分输出,为10分;以此类推。时间显示为 2020 年 10 月 26 日 02:10:07 星期六,达到了设计要求。 YMQ.VHD 的仿真波形如下: 图 3.4 XSKZQ.VHD 的仿真图 从图 3.4 可以看出,当 DATA 输入 ,HIGHT_SEG 输出 (数 码管显示 2) ,LOW_SEG 输出 (数码管显示 9) ,

27、达到了设计要求。 1.3.3 调整控制电路的仿真 TZKZQ.VHD 的仿真波形如下: 图 3.5 TZKZQ.VHD 仿真图 从图 3.5 可以看出,键盘产生“01”信号时,CLK_KEY 有八次上 升沿,调整模式依次经过了正常、调秒、调分、调时、调日、调月、 调年、调星期再回到正常这 8 种模式的循环,即 MODE 依次从 0 到 7,再从 7 回到 0 的循环。在按键过程中,根据按键持续时间,相应 地被调整模式的异步并行置位使能置“0” ,同时通过一个非门点亮 该调整模式所对应的发光二极管,作为该调整模式的指示信号。 键盘产生“10”信号时,调整模式切换到了调分模式,然后又 根据 CLK

28、_KEY 的上升沿次数决定增加的值,实现了在调分模式下对 当前分的值进行调整(从 31 调到 39)。 1.3.3 综合计时系统电路的仿真 ZHJSQ.VHD 的仿真波形如下: 图 3.6 ZHJSQ.VHD 仿真图(1) 从图 3.6 可知,综合计时系统经过了初始化过程,并显示输出, 显示时间为 2000 年 01 月 01 日 00:00:00 星期一,达到了设 计要求。 图 3.7 ZHJSQ.VHD 仿真图(2) 从图 3.7 可知,综合计时系统经过了秒进位并显示输出的过程, BCD 从1秒跳变到2秒,并显示输出,达到了设计要求。 2. 改进方法 由于本系统采用的是利用秒计时器(CNT

29、60)的进位来作为分计 时器(CNT60)的脉冲信号,利用分计时器(CNT60)的进位来作为 时计时器(CNT24)的脉冲信号,以此类推,这样的设计虽然减少了 器件的使用,却会导致误差呈几何倍数的增加。 可以考虑对于系统的各种控制时钟信号,通过分频电路对一个 给定的合适频率信号进行分频来产生,这样就能适当的减少误差的 产生。 3. 收获与体会 第一眼看到题目-综合计时系统的设计,由于以前尝试国用单片 机控制数码管,以及其他些小型系统,再加上本学期刚技术 EDA 的 课程,对 EDA 还有比较大的印象,觉得本次课程设计可以利用自己 所学的知识全部完成。 可真正开始做这个课题时,发现不是和想象中那样简单,由于 以前尝试的都是小型系统,从没有尝试过制作个单独的系统,而且 EDA 的编程思想还是与 C、汇编的编程方式存在很多的不同,从一开 始我就用着错误的思想去做这个事,结果是显当然,毫无结果。 终于真正的开始重视本次课程设计,参考过王老师的课程设计 指导书

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论