EDA课设——定时器_第1页
EDA课设——定时器_第2页
EDA课设——定时器_第3页
EDA课设——定时器_第4页
EDA课设——定时器_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、成 绩 评 定 表学生姓名班级学号专 业电子信息工程课程设计题目定时器设计评语组长签字:成绩日期 2015年 月 日 课程设计任务书学 院信息科学与工程学院专 业电子信息工程学生姓名班级学号课程设计题目定时器设计一、目的: 训练学生综合运用学过的基础知识,独立进行查找资料、选择方案、代码设计、撰写报告,进一步加深对EDA技术的理解。二、要求: 能正确划分设计层次;收集资料;独立思考,刻苦专研,严禁抄袭;按时完成设计任务,认真、正确地书写课程设计报告。三、功能要求: 通过设计,定时器可以整体清零;可以定时最高到99MIN;以秒速度递增至预定时间,以秒速度递减至零。三、进度安排:课程设计时间为10

2、天(2周)1、调研、查资料1天。2、总体方案设计2天。3、代码设计与调试5天。4、撰写报告1天。5、验收1天。指导教师: 2015年 月 日专业负责人:2015年 月 日学院教学副院长:2015年 月 日目 录1 概述1 1.1 设计背景和意义1 1.2 设计任务1 1.3 设计要求12 原理设计及层次划分12.1 工作原理12.2 层次划分23 软件设计23.1控制计数模块模块代码设计23.2 报警器模块代码设计43.3 译码器模块代码设计53.4 定时器原件例化模块代码设计54 仿真及测试64.1 控制计数模块仿真64.2报警器模块仿真84.3 译码器模块代码仿真94.4 定时器原件例化模

3、块代码仿真105 总结116 参考文献111 概述 1.1 设计背景和意义EDA技术是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。 利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。 EDA技术是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和

4、编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。 1.2 设计任务 通过设计,定时器可以整体清零;可以定时最高到99MIN;以秒速度递增至预定时间,以秒速度递减至零。 1.3 设计要求 具有整体清零(reset)功能,定时99分钟。以秒速度递增至99分钟停止,启动报警(cout)5秒钟。具有置位(cn)控制,即cn高电平时,clk脉冲上升沿到来,计数加一;cn低电平时,置位结束,进入倒计时阶段,以秒速度使输出计数减一至零结束,并同时报警(cout)5秒钟。时钟信号提供秒信号(1HZ);四位数码管静态显示,高位high(3 downto 0)显示分

5、,低位low(3 downto 0)显示秒2 原理设计及层次划分2.1 工作原理1.系统设计方案 时钟信号a 控制计时部分译码器数码管时钟信号b报警器 通过记数器控制中心输入秒信号,并输出两个四位的BCD码,可分别来表示各位与十位,也可整体复位清零。通过该记数器实现以秒速度递增至清零,该记数器以秒的速度递增至99来实现置位,而以秒的速度递减至零以实现定时功能。当以秒速度递增至99分钟停止,启动报警(cout)5秒钟。cn低电平时,置位结束,进入倒计时阶段,以秒速度使输出计数减一至零结束时也同时报警(cout)5秒钟。通过二选一选择器对个位和十位进行扫描输出,并将输出送到译码器,通过译码器对输入

6、的四位BCD码进行七段码编译,然后输出到数码管。2.2 层次划分 2.2.1控制计数模块Aaa控制计数模块,是该定时器的核心部分.res为复位端,用来清零,采用异步复位方式;cn用于置位,高电平有效。cout端将在定时结束时产生高电平。Low和high为四位BCD码输出端口,可用于显示。当cn有效时,clk脉冲上升沿到来,计数加1;当cn为低电平时,置位结束,进入计时阶段,每1个时钟周期发出一个脉冲,使输出记数减1,直到记时结束,令cout位为高电平为止。 2.2.2报警器模块主要功能是计数器以秒速度递增至99分钟停止时启动报警(cout)5秒钟。倒计时阶段,计时器以秒速度使输出计数减一至零结

7、束时也同时报警(cout)5秒钟。当始终把脉冲clk上升沿到来时count开始计数,同时speak置高电平开始报警,当计数达到5s后speak置0,停止报警。它的操作源程序如下:2.2.3 译码器模块 译码器yima是对四位BCD码进行七段码译码,其输出p0p6分别接数码管各段进行显示输出。2.2.4 定时器原件例化模块3 软件设计3.1 控制计数模块代码设计 Aaa控制计数模块,是该定时器的核心部分.res为复位端,用来清零,采用异步复位方式;cn用于置位,高电平有效。cout端将在定时结束时产生高电平。Low和high为四位BCD码输出端口,可用于显示。当cn有效时,clk脉冲上升沿到来,

8、计数加1;当cn为低电平时,置位结束,进入计时阶段,每1个时钟周期发出一个脉冲,使输出记数减1,直到记时结束,令cout位为高电平为止。该模块的源程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity jsq is port (cn,res,clk:in std_logic; cout :out std_logic; flow,fhigh,mlow,mhigh:out std_logic_vector(3 downto 0);end jsq;architecture art of

9、jsq issignal fdisplow,fdisphigh,mdisplow,mdisphigh:std_logic_vector(3 downto 0); -定义信号分别表示分钟和秒钟的十位和个位beginprocess(clk,cn,res)beginif(res='1')thenmdisplow<="0000"mdisphigh<="0000"fdisplow<="0000"fdisphigh<="0000" cout<='0' -res高电平

10、执行复位elsif (clk'event and clk='1')then if cn='1'then if mdisplow<9 then mdisplow<=mdisplow+1;-秒钟个位数小于9时执行计数加1 cout<='0' elsif mdisplow="1001" and mdisphigh<5 then mdisplow<="0000" mdisphigh<=mdisphigh+1;-秒钟十位进位加1 elsif mdisphigh="

11、0101" and fdisplow<9 then mdisplow<="0000" mdisphigh<="0000" fdisplow<=fdisplow+1;-满59秒后分钟个位加1 elsif fdisplow="1001" and fdisphigh<9 then mdisplow<="0000" mdisphigh<="0000" fdisplow<="0000" fdisphigh<=fdisphi

12、gh+1;-满9分59秒后分钟十位加1 elsif fdisplow="1000" and fdisphigh="1001" then mdisplow<="0000" mdisphigh<="0000" fdisplow<="1001"-计时至99分停止 elsif fdisplow="1001" and fdisphigh="1001" then cout<='1'-计时停止cout变为高电平 end if; e

13、lsif cn='0' then -cn为0进入倒计时 if mdisplow>0 then mdisplow<=mdisplow-1;-秒钟减1 cout<='0' elsif mdisplow="0000" and mdisphigh>0 then mdisplow<="1001" mdisphigh<=mdisphigh-1;-个位0时十位减1 elsif mdisphigh="0000" and fdisplow>0 then mdisplow<=

14、"1001" mdisphigh<="0101" fdisplow<=fdisplow-1;-分减1 elsif fdisplow="0000" and fdisphigh>0 then mdisplow<="1001" mdisphigh<="0101" fdisplow<="1001" fdisphigh<=fdisphigh-1;-分减10 elsif fdisphigh="0000"and fdisplow

15、="0000"and mdisphigh="0000"and mdisplow="0000"then cout<='1'-倒计时结束cout变为高电平 end if; end if;end if;end process;mhigh<=mdisphigh;mlow<=mdisplow;fhigh<=fdisphigh;flow<=fdisplow;end art;3.2 报警器模块代码设计主要功能是计数器以秒速度递增至99分钟停止时启动报警(cout)5秒钟。倒计时阶段,计时器以秒速度使输出

16、计数减一至零结束时也同时报警(cout)5秒钟。当始终把脉冲clk上升沿到来时count开始计数,同时speak置高电平开始报警,当计数达到5s后speak置0,停止报警。它的操作源程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cou5 isport(clk,reset,en:in std_logic; speak:out std_logic);end cou5;architecture behavior of cou5 issignal count:std_logic_

17、vector(2 downto 0);-定义计数信号beginprocess(reset,clk)beginif reset='1' or en='0' thencount(2 downto 0)<="000"speak<='0'-有复位信号或始能端低电平时输出0elseif(clk'event and clk='1')thencount<=count+1;speak<='1'-有时钟上升沿计数加1,报警信号speak高电平if count>5 thensp

18、eak<='0' -5秒之后停止报警speak为0end if;end if;end if;end process;end behavior;3.3 译码器模块代码设计译码器yima是对四位BCD码进行七段码译码,其输出p0p6分别接数码管各段进行显示输出,它的操作源程序如下:library ieee;use ieee.std_logic_1164.all;entity yima isport(a:in std_logic_vector(3 downto 0); p:out std_logic_vector(6 downto 0);end yima;architectur

19、e arc of yima isbeginprocess(a)begincase a iswhen"0000"=>p<="0111111"when"0001"=>p<="0000110"when"0010"=>p<="1011011"when"0011"=>p<="1001111"when"0100"=>p<="1100110"when&

20、quot;0101"=>p<="1101101"when"0110"=>p<="1111101"when"0111"=>p<="0000111"when"1000"=>p<="1111111"when"1001"=>p<="1101111"-七段译码器显示09when others=>p<="0000000"end

21、case;end process;end arc;3.4 定时器原件例化模块代码设计library ieee;use ieee.std_logic_1164.all;entity yjlh isport(sen,resa,clka,resb: in std_logic; myimal:out std_logic_vector(6 downto 0); -秒钟个位译码输出 myimah:out std_logic_vector(6 downto 0); -秒钟十位译码输出 fyimal:out std_logic_vector(6 downto 0); -分钟个位译码输出 fyimah:out

22、std_logic_vector(6 downto 0); -分钟十位译码输出 baoj:out std_logic );end entity yjlh;architecture art of yjlh iscomponent jsq isport (cn,res,clk:in std_logic; cout :out std_logic; flow,fhigh,mlow,mhigh:out std_logic_vector(3 downto 0);end component jsq; -jsq控制模块component yima isport(a:in std_logic_vector(3

23、downto 0); p:out std_logic_vector(6 downto 0);end component yima;-译码模块component cou5 isport(clk,reset,en:in std_logic; speak:out std_logic);end component cou5;-报警模块signal s1,s2,s3,s4:std_logic_vector(3 downto 0);signal s5:std_logic;beginu1:jsq port map(sen,resa,clka,s5,s1,s2,s3,s4);u2:yima port map(

24、s1,fyimal);u3:yima port map(s2,fyimah);u4:yima port map(s3,myimal);u5:yima port map(s4,myimah);u6:cou5 port map(clka,resb,s5,baoj);-各模块通过位置关联end architecture art;4 仿真及测试4.1 控制计数模块仿真该计数器生成的原件如下图所示: 图一 计数器原件生成图计数器波形仿真图如下图所示: 图二 计数器波形仿真 Aaa控制计数模块,是该定时器的核心部分.res为复位端,用来清零,采用异步复位方式;cn用于置位,高电平有效。cout端将在定时结

25、束时产生高电平。Low和high为四位BCD码输出端口,可用于显示。当cn有效时,clk脉冲上升沿到来,计数加1;当cn为低电平时,置位结束,进入计时阶段,每1个时钟周期发出一个脉冲,使输出记数减1,直到记时结束,令cout位为高电平为止。4.2 报警器模块仿真该报警器生成的原件图如下: 图三 报警器原件生成图该报警器波形仿真图如下: 图四 报警器波形仿真主要功能是计数器以秒速度递增至99分钟停止时启动报警(cout)5秒钟。倒计时阶段,计时器以秒速度使输出计数减一至零结束时也同时报警(cout)5秒钟。当始终把脉冲clk上升沿到来时count开始计数,同时speak置高电平开始报警,当计数达到5s后speak置0,停止报警。4.3 译码器模块仿真该译码器原件生成图如下: 图五 译码器原件生成图 该译码器波形仿真图如下: 图六 译码器波形仿真译码器yima是对四位BCD码进行七段码译码,其输出p0p6分别接数码管各段进行显示输出。4.4定时器原件例化模块

温馨提示

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

评论

0/150

提交评论