EDA课设定时器.docx

上传人:b****6 文档编号:5127005 上传时间:2022-12-13 格式:DOCX 页数:15 大小:549.79KB
下载 相关 举报
EDA课设定时器.docx_第1页
第1页 / 共15页
EDA课设定时器.docx_第2页
第2页 / 共15页
EDA课设定时器.docx_第3页
第3页 / 共15页
EDA课设定时器.docx_第4页
第4页 / 共15页
EDA课设定时器.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

EDA课设定时器.docx

《EDA课设定时器.docx》由会员分享,可在线阅读,更多相关《EDA课设定时器.docx(15页珍藏版)》请在冰豆网上搜索。

EDA课设定时器.docx

EDA课设定时器

成绩评定表

学生姓名

班级学号

专 业

电子信息工程

课程设计题目

定时器设计

组长签字:

成绩

日期

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 downto0)显示分,低位low(3downto0)显示秒

2 原理设计及层次划分

2、1工作原理

1、系统设计方案           

时钟信号a

 

  

通过记数器控制中心输入秒信号,并输出两个四位得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位为高电平为止。

该模块得源程序如下:

libraryieee;

useieee、std_logic_1164、all;

useieee、std_logic_unsigned、all;

entityjsq is

port(cn,res,clk:

in std_logic;

 cout:

out std_logic;

  flow,fhigh,mlow,mhigh:

outstd_logic_vector(3downto0));

endjsq;

architectureart ofjsq is

signal fdisplow,fdisphigh,mdisplow,mdisphigh:

std_logic_vector(3 downto0);

--定义信号分别表示分钟与秒钟得十位与个位

begin

process(clk,cn,res)

begin

if(res='1')then

mdisplow<="0000";

mdisphigh<="0000";

fdisplow<="0000";

fdisphigh<="0000";

cout<='0'; --res高电平执行复位

elsif (clk'eventand clk='1')then

 ifcn='1'then

  if mdisplow<9then

   mdisplow<=mdisplow+1;--秒钟个位数小于9时执行计数加1

cout<='0'; 

 elsifmdisplow="1001"andmdisphigh<5then

 mdisplow<="0000";

 mdisphigh<=mdisphigh+1;--秒钟十位进位加1

  elsifmdisphigh="0101"and fdisplow<9 then

  mdisplow<="0000";

mdisphigh<="0000";

  fdisplow<=fdisplow+1;--满59秒后分钟个位加1

   elsiffdisplow="1001"andfdisphigh<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分停止

  elsiffdisplow="1001"and fdisphigh="1001"then

     cout<='1';--计时停止cout变为高电平

 endif;

 elsif cn='0'then --cn为0进入倒计时

if mdisplow>0then

 mdisplow<=mdisplow-1;--秒钟减1

cout<='0';

  elsifmdisplow="0000"andmdisphigh>0then

 mdisplow<="1001";

 mdisphigh<=mdisphigh-1;--个位0时十位减1

   elsif mdisphigh="0000" and fdisplow>0then

mdisplow<="1001";

     mdisphigh<="0101";

 fdisplow<=fdisplow-1;--分减1

  elsiffdisplow="0000"andfdisphigh>0 then

  mdisplow<="1001";

  mdisphigh<="0101";

    fdisplow<="1001";

  fdisphigh<=fdisphigh-1;--分减10

   elsiffdisphigh="0000"andfdisplow="0000"andmdisphigh="0000"andmdisplow="0000"then

 cout<='1';--倒计时结束cout变为高电平

  endif;

 end if;

endif;

endprocess;

mhigh<=mdisphigh;

mlow<=mdisplow;

fhigh<=fdisphigh;

flow<=fdisplow;

endart;

3、2 报警器模块代码设计

主要功能就是计数器以秒速度递增至99分钟停止时启动报警(cout)5秒钟。

倒计时阶段,计时器以秒速度使输出计数减一至零结束时也同时报警(cout)5秒钟。

当始终把脉冲clk上升沿到来时count开始计数,同时speak置高电平开始报警,当计数达到5s后speak置0,停止报警。

它得操作源程序如下:

libraryieee;

useieee、std_logic_1164、all;

useieee、std_logic_unsigned、all;

entitycou5is

port(clk,reset,en:

instd_logic;

 speak:

outstd_logic);

end cou5;

architecturebehaviorof cou5is

signal count:

std_logic_vector(2downto0);--定义计数信号

begin

process(reset,clk)

begin

ifreset='1'oren='0' then

count(2downto0)<="000";

speak<='0';--有复位信号或始能端低电平时输出0

else

if(clk'eventandclk='1')then

count<=count+1;

speak<='1';--有时钟上升沿计数加1,报警信号speak高电平

ifcount>5then

speak<='0';--5秒之后停止报警speak为0

end if;

endif;

endif;

end process;

end behavior;

3、3译码器模块代码设计

译码器yima就是对四位BCD码进行七段码译码,其输出p0~p6分别接数码管各段进行显示输出,它得操作源程序如下:

libraryieee;

use ieee、std_logic_1164、all;

entityyimais

port(a:

in std_logic_vector(3 downto0);

  p:

out std_logic_vector(6downto 0));

endyima;

architecturearcofyimais

begin

process(a)

begin

case ais

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

whenothers=>p<="0000000";

endcase;

endprocess;

endarc;

3、4定时器原件例化模块代码设计

libraryieee;

use ieee、std_logic_1164、all;

entityyjlh is

port(sen,resa,clka,resb:

instd_logic;

 myimal:

outstd_logic_vector(6downto0);--秒钟个位译码输出

myimah:

outstd_logic_vector(6downto0); --秒钟十位译码输出

  fyimal:

outstd_logic_vector(6downto0);--分钟个位译码输出

 fyimah:

outstd_logic_vector(6downto0);--分钟十位译码输出

baoj:

outstd_logic

 );

endentity yjlh;

architecture artof yjlhis

ponentjsq is

port(cn,res,clk:

instd_logic;

 cout:

outstd_logic;

flow,fhigh,mlow,mhigh:

outstd_logic_vector(3 downto0));

endponentjsq;--jsq控制模块

ponentyimais

port(a:

in std_logic_vector(3downto 0);

 p:

outstd_logic_vector(6 downto0));

endponentyima;--译码模块

ponentcou5 is

port(clk,reset,en:

in std_logic;

  speak:

outstd_logic);

endponentcou5;--报警模块

signals1,s2,s3,s4:

std_logic_vector(3 downto 0);

signals5:

std_logic;

begin

u1:

jsqportmap(sen,resa,clka,s5,s1,s2,s3,s4);

u2:

yima portmap(s1,fyimal);

u3:

yimaport map(s2,fyimah);

u4:

yimaport map(s3,myimal);

u5:

yima port map(s4,myimah);

u6:

cou5 portmap(clka,resb,s5,baoj);--各模块通过位置关联

endarchitectureart;

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学案例设计

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1