收藏 分销(赏)

EDA课设——定时器.doc

上传人:丰**** 文档编号:4527174 上传时间:2024-09-26 格式:DOC 页数:13 大小:601KB
下载 相关 举报
EDA课设——定时器.doc_第1页
第1页 / 共13页
EDA课设——定时器.doc_第2页
第2页 / 共13页
点击查看更多>>
资源描述
成 绩 评 定 表 学生姓名 班级学号 专  业 电子信息工程 课程设计题目 定时器设计 评 语 组长签字: 成绩 日期 2015年 月  日  课程设计任务书 学  院 信息科学与工程学院 专 业 电子信息工程 学生姓名 班级学号 课程设计题目 定时器设计 一、目得: 训练学生综合运用学过得基础知识,独立进行查找资料、选择方案、代码设计、撰写报告,进一步加深对EDA技术得理解。 二、要求:   能正确划分设计层次;收集资料;独立思考,刻苦专研,严禁抄袭;按时完成设计任务,认真、正确地书写课程设计报告。 三、功能要求: 通过设计,定时器可以整体清零;可以定时最高到99MIN;以秒速度递增至预定时间,以秒速度递减至零。 三、进度安排: 课程设计时间为10天(2周) 1、调研、查资料1天。 2、总体方案设计2天。 3、代码设计与调试5天。 4、撰写报告1天。 5、验收1天。 指导教师: 2015年  月 日 专业负责人: 2015年 月  日 学院教学副院长: 2015年  月 日 目 录ﻩ 1 概述ﻩ1 1、1 设计背景与意义 1    1、2 设计任务 1     1、3 设计要求 1 2 原理设计及层次划分 1 2、1 工作原理ﻩ1 2、2 层次划分 2 3 软件设计ﻩ2 3、1控制计数模块模块代码设计ﻩ2 3、2 报警器模块代码设计ﻩ4 3、3 译码器模块代码设计ﻩ5 3、4 定时器原件例化模块代码设计ﻩ5 4 仿真及测试 6 4、1 控制计数模块仿真 6 4、2报警器模块仿真ﻩ8 4、3 译码器模块代码仿真 9 4、4 定时器原件例化模块代码仿真 10 5 总结 11 6 参考文献 11 1 概述      1、1 设计背景与意义 EDA技术就是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术得最新成果,进行电子产品得自动设计。    利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图得整个过程得计算机上自动处理完成。   EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线与仿真,直至对于特定目标芯片得适配编译、逻辑映射与编程下载等工作。EDA技术得出现,极大地提高了电路设计得效率与可操作性,减轻了设计者得劳动强度。 1、2 设计任务     通过设计,定时器可以整体清零;可以定时最高到99MIN;以秒速度递增至预定时间,以秒速度递减至零。 1、3 设计要求    具有整体清零(reset)功能,定时99分钟。以秒速度递增至99分钟停止,启动报警(cout)5秒钟。具有置位(cn)控制,即cn高电平时,clk脉冲上升沿到来,计数加一;cn低电平时,置位结束,进入倒计时阶段,以秒速度使输出计数减一至零结束,并同时报警(cout)5秒钟。时钟信号提供秒信号(1HZ);四位数码管静态显示,高位high(3 downto 0)显示分,低位low(3 downto 0)显示秒 2 原理设计及层次划分 2、1 工作原理 1、系统设计方案                  时钟信号a   控制计时部分 译码器 数码管 时钟信号b 报警器     通过记数器控制中心输入秒信号,并输出两个四位得BCD码,可分别来表示各位与十位,也可整体复位清零。通过该记数器实现以秒速度递增至清零,该记数器以秒得速度递增至99来实现置位,而以秒得速度递减至零以实现定时功能。当以秒速度递增至99分钟停止,启动报警(cout)5秒钟。cn低电平时,置位结束,进入倒计时阶段,以秒速度使输出计数减一至零结束时也同时报警(cout)5秒钟。通过二选一选择器对个位与十位进行扫描输出,并将输出送到译码器,通过译码器对输入得四位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秒钟。倒计时阶段,计时器以秒速度使输出计数减一至零结束时也同时报警(cout)5秒钟。当始终把脉冲clk上升沿到来时count开始计数,同时speak置高电平开始报警,当计数达到5s后speak置0,停止报警。它得操作源程序如下: 2、2、3 译码器模块    译码器yima就是对四位BCD码进行七段码译码,其输出p0~p6分别接数码管各段进行显示输出。 2、2、4 定时器原件例化模块 3 软件设计 3、1 控制计数模块代码设计 Aaa控制计数模块,就是该定时器得核心部分、res为复位端,用来清零,采用异步复位方式;cn用于置位,高电平有效。cout端将在定时结束时产生高电平。Low与high为四位BCD码输出端口,可用于显示。当cn有效时,clk脉冲上升沿到来,计数加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 jsq is signal fdisplow,fdisphigh,mdisplow,mdisphigh:std_logic_vector(3 downto 0); --定义信号分别表示分钟与秒钟得十位与个位 begin process(clk,cn,res) begin if(res='1')then mdisplow<="0000"; mdisphigh<="0000"; fdisplow<="0000"; fdisphigh<="0000"; cout<='0'; --res高电平执行复位 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="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<=fdisphigh+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;   elsif 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<="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="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秒钟。倒计时阶段,计时器以秒速度使输出计数减一至零结束时也同时报警(cout)5秒钟。 当始终把脉冲clk上升沿到来时count开始计数,同时speak置高电平开始报警,当计数达到5s后speak置0,停止报警。它得操作源程序如下: library ieee; use ieee、std_logic_1164、all; use ieee、std_logic_unsigned、all; entity cou5 is port(clk,reset,en:in std_logic;  speak:out std_logic); end cou5; architecture behavior of cou5 is signal count:std_logic_vector(2 downto 0);--定义计数信号 begin process(reset,clk) begin if reset='1' or en='0' then count(2 downto 0)<="000"; speak<='0';--有复位信号或始能端低电平时输出0 else if(clk'event and clk='1')then count<=count+1; speak<='1';--有时钟上升沿计数加1,报警信号speak高电平 if count>5 then speak<='0'; --5秒之后停止报警speak为0 end if; end if; end if; end process; end behavior; 3、3 译码器模块代码设计 译码器yima就是对四位BCD码进行七段码译码,其输出p0~p6分别接数码管各段进行显示输出,它得操作源程序如下: library ieee; use ieee、std_logic_1164、all; entity yima is port(a:in std_logic_vector(3 downto 0);    p:out std_logic_vector(6 downto 0)); end yima; architecture arc of yima is begin process(a) begin case a is when"0000"=>p<="0111111"; when"0001"=>p<="0000110"; when"0010"=>p<="1011011"; when"0011"=>p<="1001111"; when"0100"=>p<="1100110"; when"0101"=>p<="1101101"; when"0110"=>p<="1111101"; when"0111"=>p<="0000111"; when"1000"=>p<="1111111"; when"1001"=>p<="1101111";--七段译码器显示0—9 when others=>p<="0000000"; end case; end process; end arc; 3、4 定时器原件例化模块代码设计 library ieee; use ieee、std_logic_1164、all; entity yjlh is port(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 std_logic_vector(6 downto 0); --分钟十位译码输出 baoj:out std_logic   ); end entity yjlh; architecture art of yjlh is ponent 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 ponent jsq; --jsq控制模块 ponent yima is port(a:in std_logic_vector(3 downto 0);   p:out std_logic_vector(6 downto 0)); end ponent yima;--译码模块 ponent cou5 is port(clk,reset,en:in std_logic;    speak:out std_logic); end ponent cou5;--报警模块 signal s1,s2,s3,s4:std_logic_vector(3 downto 0); signal s5:std_logic; begin u1:jsq port map(sen,resa,clka,s5,s1,s2,s3,s4); u2:yima port map(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端将在定时结束时产生高电平。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码进行七段码译码,其输出p0~p6分别接数码管各段进行显示输出。 4、4定时器原件例化模块仿真 定时器原件例化后生成得原件图如下:             图七  定时器原件生成图 3、 定时器原件例化后波形仿真图如下:          图八 定时器原件例化后波形仿真 5 总结 在这次课程设计中,基本完成了99分钟定时器得设计,实现了其所有功能。但就是在此过程中,遇到了很多困难,如编写程序过程中出现错误语句,或者编写得语句不能完成预期得功能等。但经过反复修改与调试,程序没有了错误,尽管如此,该程序也未能编译成功,后来才发现只有把要编译得文件指成当前文件才可进行编译。又如在设计原理图过程当中保存该文件时名字命名得问题,又有了新得认识,进一步掌握了VHDL得命名规则。同时原理图设计必须要规范,连线必须要严谨,且每一个步骤与过程都必须要编译通过,才可逐步进行下一环节。当然还有很多问题都出现在设计过程中,但就是经过反复琢磨、推敲与老师得指导都完全解决了。最终完成了99分钟定时器得设计。 通过这本得VHDL课程设计,既锻炼了我得动手能力,也让我加深了对课堂上所学到得理论知识得理解,这给我提供了一个在学习生活中很难得得理论联系实际得机会,让了深刻体验到在对于设计时遇到得不同问题时,首先应该理解问题关键所在,因为用语言编写程序需要仔细认真得态度,一点点错误漏洞将导致整个源程序无法编译运行,阻碍下一步工作完成进度 6 参考文献 [[1] 赵全利,秦春赋、 EDA技术及应用教程 [M]、 北京: 机械工业出版社,2009、 [2] 江国强、 EDA技术与应用 [M]、 北京: 电子工业出版社,2007、 [3] 黄仁欣、 EDA技术实用教程 [M]、 北京: 清华大学出版社,2006、 [4] 王道宪、 CPLD/FPGA可编程逻辑器件应用与开发[M]、 北京: 国防工业出版社,2004、 [5] 崔秀敏、 EDA技术实验指导书 [M]、 沈阳: 沈阳理工大学出版社,2013 [6] 杨晓慧,杨永健、基于FPGA得EDA/SOPC技术与VHDL、北京:国防工业出版社,2007,7、 [7] 王诚,吴继华等,ALTERA FPGA/CPLD设计(基础篇)、北京:人民邮电出版社,2008,12
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

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

客服